...

偶然にも500万個のSSH公開鍵を手に入れた俺たちは

by yoshio-hanawa

on

Report

Category:

Software

Download: 0

Comment: 0

89,971

views

Comments

Description

Download 偶然にも500万個のSSH公開鍵を手に入れた俺たちは

Transcript

  • Attacking against 5 million SSH public keys 偶然にも500万個の SSH公開鍵を 手に入れた俺たちは hnw 江戸前セキュリティ勉強会 (2015/1/24)発表資料
  • 自己紹介 ❖ @hnw ❖ カレーとバグが大好物 ❖ PHPの方から来ました
  • アジェンダ ❖ SSH公開鍵の集め方 ❖ 弱い鍵を見つけた ❖ 公約数を探す
  • ❖ SSH公開鍵の集め方 ❖ 弱い鍵を見つけた ❖ 公約数を探す
  • SSH公開鍵を集める ❖ github.comで集めました ❖ GitHub APIでユーザーIDが全件取れる ❖ https://github.com/[ユーザーID].keys ❖ 登録しているSSH公開鍵が誰でも取得できる ❖ obsoleteらしいが、長いこと使えている
  • SSH公開鍵を集める ❖ github.com全850万ユーザー(昨年10月当時) ❖ 鍵の取得だけで2日くらいかかった ❖ 約500万個のSSH公開鍵が手に入った
  • ❖ SSH公開鍵の集め方 ❖ 弱い鍵を見つけた ❖ 公約数を探す
  • 弱い鍵ペア ❖ 理屈上、公開鍵暗号では秘密鍵がバレなければ安全 ❖ 公開鍵が500万件もあるとヘマする人もいる ❖ 秘密鍵を特定できる公開鍵が実際に見つかった
  • 鍵長が短すぎる鍵 ❖ 攻撃可能そうな鍵が35個みつかった ❖ 256bit DSA鍵 1個 ❖ 512bit DSA鍵 11個 ❖ 256bit RSA鍵 11個 ❖ 512bit RSA鍵 12個 ❖ 鍵長を明示的に指定して鍵ペア生成しているはず ❖ 公開鍵暗号についての理解が足りない?
  • 鍵長が短すぎる鍵 ❖ 短いRSA鍵は素因数分解で破れる ❖ 256bit RSA鍵の場合 ❖ p,qともに128bit(10進39桁)の素数 ❖ n(=pq)だけをもとにnを素因数分解すればよい ❖ 素因数分解の実装はネット上に落ちている ❖ 256bit RSA鍵なら3秒で素因数分解できた
  • 古いDebianで作られた脆弱な鍵 ❖ CVE-2008-0166 ❖ Debian系distroのOpenSSL実装にバグが混入した ❖ 作られるSSH鍵ペアが32767パターンになる ❖ 全パターンのSSHユーザー鍵を公開している人がいる ❖ 208件が一致した
  • ❖ SSH公開鍵の集め方 ❖ 弱い鍵を見つけた ❖ 公約数を探す
  • RSAに対する既知の攻撃 ❖ 論文「Mining Your Ps and Qs: Detection of Widespread Weak Keys in Network Devices」 ❖ 乱数生成器の偏りを利用したRSAに対する攻撃 ❖ 多数の公開鍵から公約数を見つけるもの ❖ SSL証明書とSSHホスト鍵あわせて1100万個を調査 ❖ 約6万個の鍵を素因数分解できた
  • ここに公開鍵がたくさんあるじゃろ? ❖ 論文の筆者が作ったプログラムは公開されている ❖ fastgcd ❖ https://factorable.net/resources.html
  • SSHユーザー鍵でGCD計算 ❖ メモリとストレージが必要 ❖ いったん全部の積を求めるため ❖ 500万個のGCD計算がAWSなら100円 ❖ c3.4xlarge(メモリ30GB)で40分
  • SSHユーザー鍵でGCD計算 ❖ 期待通りに素因数分解できたものは無かった ❖ 乱数生成器の偏りは見つからなかった
  • SSHユーザー鍵でGCD計算 ❖ 155個について約数が見つかった ❖ 16進1桁から7桁の数で割り切れる ❖ 割ってもまだ合成数 ❖ コピペミスした公開鍵が登録されている?
  • コピペミスした鍵のリスク ❖ 正しい秘密鍵でもログインできない状態 ❖ nの素因数分解さえできれば秘密鍵は作れる ❖ nの素因数が偶然小さい素数ばかりだと危険 ❖ あまり指摘されていないリスクなのでは?
  • まとめ ❖ 多数のSSH公開鍵を調査した ❖ リスクのある鍵を使っているユーザーが実在する ❖ 攻撃者有利な時代だと再認識した ❖ 実装、データ、計算機いずれも簡単に手に入る
  • 懇親会にも参加します ❖ アドバイス・雑談などお待ちしております
  • ご静聴 ありがとう ございました
Fly UP