Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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公開鍵を調査した
❖ リスクのある鍵を使っているユーザーが実在する
❖ 攻撃者有利な時代だと再認識した
❖ 実装、データ、計算機いずれも簡単に手に入る
懇親会にも参加します
❖ アドバイス・雑談などお待ちしております
ご静聴
ありがとう
ございました

More Related Content

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