あなたのシステムはハッキングされやすいか?

パスワードキーストレッチングは、どのようにあなたのシステムをより安全にするのか?

著者: F-Secure Business Security Insider
日付: 2016年05月10日
読了時間: 1 分

あなたのシステムはハッキングされやすいか?

パスワードキーストレッチングはどのようにあなたのシステムをより安全にするのか?

パスワードの盗難は目新しいことではないが、常にニュースのヘッドラインを賑わせている。悪名高いアシュレイ・マジソンの被害は誰もが記憶している。この不倫サイトのユーザの個人情報詳細が盗み見られ、ダークウェブ上に売りに出された後に、インターネット上に公開され一般の目にさらされた。

しかしながら、これはどのようなあらゆるビジネスにおいていかなる企業にも起こりうること - つまり個人データはサイバー攻撃の重要な標的の一つなのだ。実際、あなたの個人情報詳細はわずか1ドルで、ダークウェブ上に売りに出される可能性がある。

アップルiPhoneの事例もあり、パスワードは今やトップヘッドラインを飾っている。アップルは、テロ容疑者が持っていたiPhoneのセキュリティ機能の解除を支援するよう要求したFBIから訴えられた。このアップルの事例は、テクノロジー企業が政府の調査のために暗号化機能を迂回できるよう設計すべきか否かの論争を呼び起こした。

明白なテロ事件を解決するためのFBIのバックドア要求は、多くの人々にとっては理にかなったことのように思えるかもしれないが、一方で、そのようなバックドアが存在する可能性があることは非常に怖いことだ。もしそれが、正当な理由でバックドアを手に入れようとしたFBIではなく、それを見つけたハッカーだったらどうだろうか。バックドアは、広範囲にわたるハッカー達がデバイスやデータを侵害することを許すセキュリティ脆弱性を生み出す。そして、暗号化こそが犯罪を隠蔽することを許さない。

アップルiPhoneの事例では、FBIがiPhone上のデータをフルアクセスすることを防ぐのに、デフォルトの暗号化が十分に効果的だった。

もしあなたの会社が次にヘッドラインを飾るような、機密情報や、従業員、パートナー、顧客の個人情報が漏洩されるパスワード盗難事件を起こさないようにしたいのなら、また、個々のパスワードを破る手段はないということを確信したいのなら、最初から正しいことを行う必要がある。それは要求仕様書を作成する時からを意味する。その時だけがコーダーがあなたのシステムを保護するために実際に適切な仕事ができる。

 

それでは、パスワードに対しどのようにアプローチすべきか?

人々は、適切なツールと計算能力があれば破られてしまうような非常に単純なパスワードを設定する傾向がある。セキュリティを向上させるために、暗号学的ハッシュ関数をともなうキーワードストレッチングがシステムレベルで使用できる。キーストレッチングを使うことで、ユーザがパスワードを入力するのと同じほど同程度のスピードで、それを検証しなければならないという現実に対応することができる。

F-Secure Labs研究チームリーダのヤルノ・ニーメラはこう説明している:

総当たり攻撃(ブルートフォースアタック)を使う攻撃者は、毎秒数百億回もパスワードが推測できるという事実に依存しており、たとえば、2012年以来このデモシステムが、毎秒680億回もSHA1を試みており、最近のカードを使えばより高速により簡単にアクセスできる。また最近では、GPUクラスターを構築する代わりに、アマゾンクラウドを使って、希望する金額相当でどんなスピードでも簡単に得られる。

キーストレッチングを使うことで毎秒数10億回の試みが何万回にまで削減される。たとえば、2012年以来、25-GPUクラスターが630億回もSHA1を試みたが、Bcyptを使うと、たったの7万1千回で済む。

 

ヤルノは、あなたが読みたいと思うような、または、あなたの技術的な管理者と共有したいと思うような、パスワードハッシュ化とsaltingに関する2つの記事を執筆した。

(“「SHA-1+salt」はパスワードに十分だと思うか?”, および “いや、パスワードをしっかりSaltingしても十分ではない。CUDA Accelerated PBKDF2を使用すべし”).

これらは数年前の記事だが、今でも有効である。

これらの投稿でヤルノが指摘したのは、単純なハッシュ化とsaltingでは十分ではないということだ。コンピュータが稼動時間を要する、数学的な、高度なアルゴリズムによりパスワード入力の回数を制限する必要があり、これを避けることはできない。単にクロック(たとえば毎秒1回)により試みを制限することではごまかせない。また、2つの異なる型のアルゴリズムを使うことは良いアイデアだろう。すなわち、一つがメモリー使用制限を迂回することを防ぎ、もう一つが誰かがより効率的な計算方法を使うことを防ぐのだ。

ヤルノが個人的に好きな方法は、BcryptかPBKDF2と、Scrypt機能とを組み合わせること。それにより、割り当てられた時間の半分がBcryptかPBKDF2に費やされ、あとの半分がScryptに費やされる。ScryptはGPUまたはCUDA-accelerated password crackingに対して非常に強力な防御手段になるし、万一Scryptに脆弱性が見つかった場合でも、BcryptかPBKDF2により依然としてパスワードは強力に防御される。

ヤルノはこう結論付ける:

もう一つ重要なことは、キーストレッチ機能のために十分な反復回数を選択すること。一人のユーザのログインを検証できる時間幅に一致した反復回数を測定する必要がある。たとえば、モバイル機器やPCでは500msで、サーバーであれば1-10msだ。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中