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

PDF
GitHubにバグ報告して賞金$500を頂いた話
PDF
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
PDF
エンタープライズブロックチェーン構築の基礎
PDF
ウェーブレット木の世界
PPTX
zk-SNARKsの仕組みについて
PDF
katagaitai CTF勉強会 #5 Crypto
ODP
Format string Attack
PDF
初心者向けCTFのWeb分野の強化法
GitHubにバグ報告して賞金$500を頂いた話
OpenIDConnectを活用したgBizID(法人共通認証基盤)の現状と今後の展望 - OpenID Summit 2020
エンタープライズブロックチェーン構築の基礎
ウェーブレット木の世界
zk-SNARKsの仕組みについて
katagaitai CTF勉強会 #5 Crypto
Format string Attack
初心者向けCTFのWeb分野の強化法

What's hot (20)

PDF
猫にはわかる暗号技術 1
PPTX
paizaのオンラインジャッジを支えるDockerとその周辺
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PDF
CTF超入門 (for 第12回セキュリティさくら)
PDF
RSA暗号運用でやってはいけない n のこと #ssmjp
PDF
MCC CTF講習会 pwn編
PDF
暗号文のままで計算しよう - 準同型暗号入門 -
PDF
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
PDF
暗号技術の実装と数学
PDF
楕円曲線入門 トーラスと楕円曲線のつながり
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
PDF
【暗号通貨輪読会#14】confidential transaction
PDF
LINE Login総復習
PDF
Post-quantum zk-SNARKs on Hyperledger Fabric​
PDF
Flutter移行の苦労と、乗り越えた先に得られたもの
PDF
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
PDF
外部キー制約に伴うロックの小話
PDF
Neural networks for Graph Data NeurIPS2018読み会@PFN
PDF
ブロックチェーン系プロジェクトで着目される暗号技術
PDF
ブロックチェーンを用いた自己主権型デジタルID管理
猫にはわかる暗号技術 1
paizaのオンラインジャッジを支えるDockerとその周辺
SPAセキュリティ入門~PHP Conference Japan 2021
CTF超入門 (for 第12回セキュリティさくら)
RSA暗号運用でやってはいけない n のこと #ssmjp
MCC CTF講習会 pwn編
暗号文のままで計算しよう - 準同型暗号入門 -
Master Canary Forging: 新しいスタックカナリア回避手法の提案 by 小池 悠生 - CODE BLUE 2015
暗号技術の実装と数学
楕円曲線入門 トーラスと楕円曲線のつながり
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
【暗号通貨輪読会#14】confidential transaction
LINE Login総復習
Post-quantum zk-SNARKs on Hyperledger Fabric​
Flutter移行の苦労と、乗り越えた先に得られたもの
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
外部キー制約に伴うロックの小話
Neural networks for Graph Data NeurIPS2018読み会@PFN
ブロックチェーン系プロジェクトで着目される暗号技術
ブロックチェーンを用いた自己主権型デジタルID管理
Ad

Viewers also liked (20)

PPTX
技術選択とアーキテクトの役割
PDF
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
PDF
運用に自動化を求めるのは間違っているだろうか
PDF
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
PDF
MySQLテーブル設計入門
PDF
実践イカパケット解析
PDF
ウェブパフォーマンスの基礎とこれから
PPTX
Webアプリケーション負荷試験実践入門
PDF
オンラインゲームの仕組みと工夫
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
中の下のエンジニアを脱出するための仕事術
PDF
SSL/TLSの基礎と最新動向
PDF
MySQL 5.7の罠があなたを狙っている
PDF
フーリエ変換と画像圧縮の仕組み
PDF
エンジニアのための経営学
PDF
インフラエンジニアがUnityをやるべきたった一つの理由
PDF
プログラムを高速化する話
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
技術選択とアーキテクトの役割
プログラム組んだら負け!実はHTML/CSSだけでできること2015夏
運用に自動化を求めるのは間違っているだろうか
「内積が見えると統計学も見える」第5回 プログラマのための数学勉強会 発表資料
MySQLテーブル設計入門
実践イカパケット解析
ウェブパフォーマンスの基礎とこれから
Webアプリケーション負荷試験実践入門
オンラインゲームの仕組みと工夫
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
中の下のエンジニアを脱出するための仕事術
SSL/TLSの基礎と最新動向
MySQL 5.7の罠があなたを狙っている
フーリエ変換と画像圧縮の仕組み
エンジニアのための経営学
インフラエンジニアがUnityをやるべきたった一つの理由
プログラムを高速化する話
インフラエンジニアの綺麗で優しい手順書の書き方
Ad

More from Yoshio Hanawa (20)

PPTX
自宅の消費電力をリアルタイムに グラフ化してみた
PDF
Zend VMにおける例外の実装
PDF
Zend VMにおける例外の実装
PDF
ぼくのかんがえる
さいきょうの銀行振込
PDF
「OKグーグル! 銀行振込1000円」
PDF
浮動小数点数とOSSのバグの話
PDF
PHP拡張をPECLに登録してわかったこと
PDF
GitHubからお金をもらった話
PDF
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
PDF
realpathキャッシュと OPcacheの面倒すぎる関係
PDF
家庭用ブロードバンドルータ上でWordPressを動かそう
PDF
Laungage Update PHP編
PDF
PHPの拡張モジュールをGoで作る
PDF
php-buildがいかに便利かを力説する
PDF
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PDF
PHP7の拡張モジュール事情
PDF
PHP7の内部実装から学ぶ性能改善テクニック
PDF
PHPの正規表現と最長一致
PDF
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PDF
PHP7はなぜ速いのか
自宅の消費電力をリアルタイムに グラフ化してみた
Zend VMにおける例外の実装
Zend VMにおける例外の実装
ぼくのかんがえる
さいきょうの銀行振込
「OKグーグル! 銀行振込1000円」
浮動小数点数とOSSのバグの話
PHP拡張をPECLに登録してわかったこと
GitHubからお金をもらった話
iOS/macOSとAndroid/Linuxのサンドボックス機構について調べた
realpathキャッシュと OPcacheの面倒すぎる関係
家庭用ブロードバンドルータ上でWordPressを動かそう
Laungage Update PHP編
PHPの拡張モジュールをGoで作る
php-buildがいかに便利かを力説する
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
PHP7の拡張モジュール事情
PHP7の内部実装から学ぶ性能改善テクニック
PHPの正規表現と最長一致
PHP7で変わること ——言語仕様とエンジンの改善ポイント
PHP7はなぜ速いのか

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