web-dev-qa-db-ja.com

「デモ」scryptはファイルの暗号化に適していますか?

Scryptコマンドラインユーティリティ( http://www.tarsnap.com/scrypt.html を参照)は、実際にはスクリプトパスワードハッシュアルゴリズムのデモにすぎません。

ただし、ファイルの単純なコマンドライン暗号化の場合は、最も安全な方法の1つであると思われます。すべての対称暗号化ユーティリティ(gpg、openssl、ccrypt)はpasswordのセキュリティにほぼ完全に依存しており、基礎となるファイルの暗号化はほとんど関係ありません。

私がscryptデモで実際の暗号化にsslを使用していることがわかる限り、誰かがこれを確認できますか?

したがって、scryptは、使いやすいコマンドラインファイル暗号化ツールに適していると思われます。私は正しいですか?

6
Chris Green

背景:Tarsnapのscryptコマンドは、独自の libcperciva によって実装されたAES暗号化を使用します。 scrypt アルゴリズムは、 鍵導出関数 として使用されます。

良い:scryptアルゴリズムは、私たちが知っている最も暗号的に安全な鍵導出関数の1つです。つまり、パスワードのブルートフォース攻撃中に、考えられるパスワードからキーを計算することは非常にコストがかかります。 scryptも、キーの作成時に32バイトのソルトを使用します。 scryptenc.c から:

crypto_entropy_read(salt, 32)

これにより、レインボーテーブルに対する保護が提供されます。

異常:scrypt AES実装は、独自の libcperciva を介して行われます。これは、Tarsnapの創設者であり、 scryptアルゴリズムの作成者であるColin Percival によって作成され、その名前が付けられたカスタム実装です。自作の暗号化実装は一般に安全性が低いと考えられていますが、かなり有名な作者であるその作者によるscrypt実装は反証となる可能性があります。したがって、作成者が実装にもたらす利点を、ライブラリが一般的に使用されていないという事実と比較する必要があります(つまり、 Github統計 が低く、 OpenHUB 、および Googleで1Kヒットのみ )。

要約:キー導出関数として強力なソルトを使用したscryptアルゴリズムを使用することは、暗号的に安全な戦略であることは明らかです。独自のAES実装を使用することにはリスクが伴いますが、作成者のスキルによって多少軽減されます。 3つのオプションがあり、すべてが妥当な選択のように見えます。

  1. 鍵の導出にscrypt関数を使用するコマンドラインAES暗号化ツールが必要な場合は、十分にテストされたAES実装を使用して独自に作成することを検討してください。

  2. bcrypt キーストレッチアルゴリズムを使用できます。使用するランダムパスワードの長さを長くすることで、より安全になります。つまり、覚えておくべきことは他にもありますが、既知の測定可能な量のセキュリティが提供されます(libcpercivaの未知数と比較して)。

  3. Colin Percivalの実装を信頼してそのまま使用できます。ほとんどの人にこれを提案することを夢見ませんが、ほとんどの人について話しているのではありません。

注:Colin Percivalの悪名を指摘してくれた@StephenTousetに感謝します。

1
Neil Smithline