鍵導出関数

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

暗号理論でいう、鍵導出関数(かぎどうしゅつかんすう)は、パスワード、パスフレーズなどといった秘密の値を、あたかも「マスターキー」のごとく用い、pseudorandom function(PRF)[1]を使ってを導出する関数である[2][3]

鍵導出関数の使用[編集]

鍵導出関数は、共通の秘密の値から、秘密ではない値を混ぜて評価することもできる。こうする事で、攻撃者がある値を入手しても他の情報に結び付きにくくなる。 鍵導出関数は、パスワードを保管する際のハッシュ関数として使われる場合が多い。このことから鍵導出関数は、本来の目的とは異なるにもかかわらず「パスワードハッシュ関数」として表現される場合もある。この場合、秘密ではない値のことを「salt」と呼ぶ。 総当たり攻撃や辞書攻撃を困難にするため、鍵導出関数の動作は意図的に遅くなっている。関数の反復回数が多ければ、総当たり攻撃がしにくくなり、saltを使えば、辞書攻撃に強くなる[4]

歴史[編集]

1978年に、「crypt」というパスワードベースの鍵導出関数が登場したが、パスワードの文字数の上限が8文字であることや、saltが弱い[5]など問題があった。 PBKDF2などの現代的なバスワードベースの鍵導出関数は、より強いsaltを使い、動作も良い意味で遅い。 ただしGPUやFPGAなどを使った並列処理による総当たり攻撃が問題になってきており、これに対処するために、bcryptscrypt、より新しいものではargon2などが登場している。

脚注[編集]

  1. ^ これは、一般的な「擬似乱数の関数」のことではなく、暗号学上の概念で pseudorandom function family(en:Pseudorandom function family)と呼ばれる関数の族に含まれるような、ランダムオラクルをエミュレートするefficiently-computableな関数、のこと。
  2. ^ Bezzi, Michele (2011). “Data privacy”. In Camenisch, Jan. Privacy and Identity Management for Life. Springer. pp. 185–186. ISBN 9783642203176. https://books.google.com/books?id=vYxzh3C6OPUC&pg=PA185. 
  3. ^ Kaliski, Burt. “RFC 2898 -- PKCS #5: Password-Based Cryptography Specification, Version 2.0”. IETF. 2017年3月19日閲覧。
  4. ^ Salted Password Hashing - Doing it Right”. 2015年1月29日閲覧。
  5. ^ Password Security: A Case History.”. Bell Laboratories (1978年4月3日). 2011年5月9日閲覧。

外部リンク[編集]