web-dev-qa-db-ja.com

Blowfishは何らかの基準に対して検証されていますか?

OWASP ASVS 3.0 V7.7 は次のように述べています。

アプリケーションで使用される暗号化アルゴリズムがFIPS 140-2または同等の標準に対して検証されていることを確認します。

Blowfish は含まれていません NISTsデータベースFIPS 140検証済みモジュール 。別の標準に対して検証済みですか?

2
Anders Frey

Blowfishはアルゴリズムです。アルゴリズムは何に対しても検証されません。検証されるのは、アルゴリズムの実装です。

Blowfishは、私が知る限り、それ自体を標準と呼ぶテキストによって定義されていません。 オリジナル紙 は公式仕様に最も近いものです。著者はテストベクターも公開しています。

一部のアプリケーションには弱いため、Blowfishは使用しないでください。 AES、CAMELLIA、ChaCha ...より良い代替案が存在します... Blowfishの主な欠点は、64ビットのブロックサイズであるため、 Sweet32 DESの場合。


あなたは塩の粒でこの特定のアドバイスを取るべきです。公式のFIPS 140準拠スタンプが付属する実装は実際には悪いことです!その理由は、公式のスタンプを取得するのは遅くて高価であり、バグ修正にはこのプロセスを再度実行する必要があるためです。 。したがって、公式のFIPS 140準拠のスタンプがあると、コードに既知のバグがあることが実質的に保証されます。

さらに、FIPS 140にはいくつかのレベルがあり、レベル1は、適切な入力が与えられたときに実装が計算を正しく実行することのみを示しています。それだけです。レベル2以上のみに、いくつかのセキュリティ要件が含まれています。 FIPS 140-2の「2」は、仕様のバージョンであり、レベルではありません。

重要なのは:

  1. よく知られているアルゴリズムを選択します。これは、いくつかの標準によって体系化されています。これは、NISTの出版物などの政府の標準、IEEEの標準、IETF RFCなどにすることができます。社内または最近公開されたアルゴリズムを使用しないでください。アルゴリズムを使い始める前に、暗号研究コミュニティに数年かけてアルゴリズムを破るようにしてください。
  2. セキュリティパラメータとセキュリティプロパティ(キーサイズ、ブロックサイズ、一般的な攻撃手法に対する耐性など)に注意してください。一部の標準では、下位互換性のために廃止または非推奨の選択を許可しています。
  3. 少なくとも公式テストベクトルに対して機能的に検証された実装を選択してください。実装には、アルゴリズムの作成者による実装などのよく知られた実装に対して実行される相互運用性テストが付属していることが望ましいです。
  4. セキュリティレビューを受けた実装を選択します。
  5. ソフトウェアのすべてのコピーを最新のバグ修正で更新し続けるプロセスがあることを確認してください。

NISTは管理組織であり、すでに承認されたアルゴリズムに基づいて構築されたものは何でも好きです。 Blowfishは、NIST、ISO、または他の誰からも、いかなる種類の祝福も受けていません。ほとんどの場合、これは「既知の」構成に基づいていないためです。

プロダクションアプリケーションで* fishを使用する場合、選択を元に戻すためにどのソースを使用するかに関係なく、他の「標準」を選択しないことで非難されることは確実です。 (とはいえ、最近までずっと* fishを使っていました)

1
b degnan