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

104,596 views

Published on

2015/1/24 江戸前セキュリティ勉強会のLT発表資料です

Published in: Software
1 Comment
209 Likes
Statistics
Notes
No Downloads
Views
Total views
104,596
On SlideShare
0
From Embeds
0
Number of Embeds
48,079
Actions
Shares
0
Downloads
110
Comments
1
Likes
209
Embeds 0
No embeds

No notes for slide

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

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

×