本当は怖い情報科学スマートフォン用の表示で見る本当は怖い情報科学HPC屋の趣味&実益ブログ2010-09-01SSH秘密鍵のパスフレーズは(つけるなら)11文字以上にしましょうねという話twitter上で、「SSHの秘密鍵って、盗まれて.bash_history見られたらアクセスし放題だから危ないからパスフレーズを付けるべき」という話があった。個人的には、パスフレーズは気休め程度にしかならないと思っているので付けていない。そもそも、SSH秘密鍵のパスフレーズは、ネットワーク越しのパスワードとは違うもので(だから違う名前がついているのだが)、ZIPファイルのパスワードと似たようなものだ。攻撃者がファイルをローカルにコピーしてじっくり解析できる。素早くすべての接続先ホストにおいて盗まれた秘密鍵を無効にするという場合だ。このシナリオなら、攻撃者によって接続先に不正にアクセスされるのを防ぐことができる。パスフレーズによって、どれくらいの猶予が生まれるのか?パスフレーズによって、どれくらいの猶予が生まれるのだろうか?言い換えれば、秘密鍵のパスワードをクラックするのにどれくらいの時間がかかるのだろうか?実験してみた。LTSパスフレーズをクラックする方法は・・・、調べれば数分でわかるが、書かないでおくことにする。上記環境で実験したところ、5文字のパスフレーズを破るのに561秒かかった(ちなみに、手元のOpenSSHでは、5文字がパスフレーズの長さの下限である)。道具にちょっと工夫をすれば、複数台のマシンに分散することは容易だ。4コアのマシンを16台使って解析する場合を考えてみよう。簡単のために、使えるアルファベットが60文字だとすると、以下のようになる。上の計算は計算機の進歩をまったく考えてないから、計算機速度が100倍なら10文字でも2年で破れることになる。2年なら秘密鍵を取り替えるには十分な時間ではないかと思われるかもしれないが、秘密鍵を取り替えるためにはそもそも「盗難に気づく」必要がある。これはかなり難しいと思う。盗難には気づかないという前提での強度を考えるなら、2年あるいは3年というのは短い。結果、パスフレーズの長さは11文字以上欲しいところである。※当たり前だが、辞書アタックでヒットする場合はもっと速く破れる。そのようなパスワードは避けるべき。言えば、秘密鍵にパスフレーズをつける場合と言うのは、接続先が秘密鍵認証しか受け付けない場合だろうと思う。秘密鍵を置くホスト自体が信頼できない場合(ホストの管理者を信頼できない場合)や、ノートパソコン等のハード的な紛失・盗難の危険がある場合は、秘密鍵というシステム自体を使うべきではない。それに、秘密鍵が漏れている時点で、ホームディレクトリ全部漏れているわけで、他に心配することが山ほどある。それ以外の強固なセキュリティを必要としない場面(組織内のクラスタとか)では、パスフレーズなしで良い秘密鍵のパスフレーズを11文字も打つくらいならパスワード認証+ホスト制限の方がいいと思う。関連記事2016-10-08ドイツに旅行に行ってきたので鉄道の乗り方をまとめました先日、旅行でドイツに行ってきました。はてなブログをはじめよう!keisukefukudaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。