暗号化-PBKDF 2、scrypt、bcrypt、アルゴン2



前回の記事[認証と承認(bcrypt,JWT)]では、bcryptライブラリを使用したユーザーパスワード暗号化について説明します.
この記事では、暗号化ツールの違いについて説明します.
Key Derivation Functions
一方向ハッシュ関数の概念や問題は既に議論されているので,他の内容のみが補足されている.
  • キーガイド関数は、ブラシめっきとキー引張りによって一方向ハッシュ関数の弱点を補う
  • Digestを作成すると、ブラシめっきとキーストレッチを繰り返し、ブラシめっきとパスワードの外に入力値を追加することができ、攻撃者が簡単にDigestを推定して安全強度を選択できない.
  • これらの関数は、GPUなどのデバイスを並列化しにくい機能を提供する.プログラム言語のみで提供されるライブラリでは、これらの機能を実装することは困難です.
  • 代表的なKeyDerivation Function
  • PBKDF2
  • scrypt
  • bcrypt
  • Aro 2(出現したKDF)
  • PBKDF2
  • Password-Based Key Derivation Function
  • Hash関数のコンテナPBKDF 2は、ソリューションを適用した後、Hash関数の繰り返し回数を任意に選択することができる.
  • PBKDF 2は非常に軽く、かつ容易に実現され、SHAのような経験的なハッシュ関数のみが使用される.

  • PBKDF 2の基本パラメータには以下の5つのパラメータがあります.
    DIGEST = PBKDF2(PRF, Password, Salt, c, DLen)  
  • PRF:トラブルシューティング(例えばHMAC)
  • Password:パスワード
  • Salt:暗号学キット
  • c:必要な反復回数
  • Dlen:所要要約長
  • Scrypt
  • 2009年に公開された鍵派生機能(KDF)関数

  • オフラインの暴力攻撃はもっと強いが、メモリとCPUを大量に使用している.
  • サマリーを作成するために設計されたメモリオーバーヘッド

  • ハードウェア実装の規模とコストはずっと高価であるため、特定のリソースで攻撃者が使用できる並列処理量は限られている.

  • OpenSSL 1.1以降のシステムでのみ実行されます.

  • 複数言語のライブラリとして提供されます.

  • scryptのパラメータには以下の6つのパラメータがあります.
    DIGEST = scrypt(Password, Salt, N, r, p, DLen)  
  • Password:パスワード
  • Salt:暗号学キット
  • N:CPUコスト
  • r:メモリコスト
  • p:並列化
  • Dlen:所要要約長
  • Bcrypt
  • 1999年に発表されたblowfishパスワードに基づく暗号化ハッシュ関数-パスワードの保存を目的としています
  • gensalt()の「動作要因」は、調整するだけでシステムのセキュリティを向上させることができます.

  • Blowfish暗号に基づいて設計された暗号化関数は,現在最も強力なハッシュメカニズムの一つである.

  • 安全志向で有名なOpenBSDで使用されています.(コンピュータセキュリティ専用のオープンソースオペレーティングシステム)

  • SaltingとKey Stretchingを使用するとRainbow Table攻撃と暴力攻撃に対応できます.

  • C、Javaなど多くのプラットフォーム、言語で使用できます.

  • ただし、bcryptは、PBKDF 2やcryptとは異なり、72バイトの文字を入力値として使用する制限がある.
  • blowfishパスワードは何ですか?
  • 対称ブロック暗号(鍵)
  • 非特許汎用アルゴリズム
  • 処理時間とリソース消費量を最適化し、主に各種ネットワークゲームのパケット暗号化、パケット復号化に用いられる.
  • スピードが速く、スマートフォンプラットフォームにぴったりです.鍵が頻繁に変更されない場合に最適なパフォーマンスが表示されます.
  • スマートフォンのメモリからサブキーを盗むのは脆弱かもしれません.
  • 何を使いますか.
  • PBKDF 2は、サードパーティ製ライブラリに依存せずにユーザパスワードの要約を生成することができる.
  • 実装するシステムに非常に機密な情報が含まれており、セキュリティシステムの実装に多くの資金を投入できる場合はcryptを使用します.
  • 強力なパスワードのサマリーを生成するシステムを簡単に実現するには、bcryptを使用することが望ましい.
  • argon2
  • 2015年暗号解読大会で優勝作品に選ばれた鍵誘導関数

  • 最近の暗号解読技術はGPUやASICなどの技術を採用し,高い計算能力で並列にアクセスしている.
  • 技術の発展に伴い、いつか弱点が発見される->新しいアルゴリズムが必要

  • 使用目的に応じてパラメータ変更が可能で、3種類あります.

  • 復号に要する時間またはメモリ量を設定します.

  • Argon 2 d:より高速でデータ依存メモリアクセス

  • Argon 2 i:速度は遅いが、データとは独立したメモリアクセスを使用

  • Argon 2 id:password hashingとpasswordベースの鍵ブート

  • コメントリスト
    安全なパスワード記憶-NAVERD 2
    Argon 2-次世代ユーザパスワードハッシュアルゴリズム-Python
    暗号化はこれさえ分かればいい