AES-128-CTRは、Ethereumキーストアファイル形式を使用してあらゆる種類のデータを暗号化するのにどの程度安全ではありませんか?
On 11月 18, 2020 by adminプレーンテキストやJSONなどの他のデータを暗号化するためにEthereumキーストアファイル形式を使用しています。
これはの例です。実装の疑似コード:
MY_PASSWORD = "VeryDifficultPasword432131!@!#%" MY_TEXT = "This is my secret text" iv = randomBytes(16) kdfparams = { dklen: 32, n: 262144, r: 1, p: 8, salt: randomBytes(32) } key = scrypt(MY_PASSWORD, kdfparams) ciphertext = encryptCipheriv("aes-128-ctr", MY_TEXT, key, iv) mac = sha3(key[16:32], ciphertext)
このコードを使用して、次のようなキーストアファイルを生成できます:
{ "crypto" : { "cipher" : "aes-128-ctr", "cipherparams" : { "iv" : "83dbcc02d8ccb40e466191a123791e0e" }, "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c", "kdf" : "scrypt", "kdfparams" : { "dklen" : 32, "n" : 262144, "r" : 1, "p" : 8, "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19" }, "mac": "102aedfe8c308c735a76295f9908d9b7de40fb1c07f2f71e05de7a0b2f323a12" } }
これは、何百万ドルもの人々をEthersに保存する標準ファイルです。
質問:
- これは安全ですか?
- そうでない場合、その理由は?
- はいの場合、プレーンテキストまたはJSON(16進形式なし)の暗号化も安全ですか?
- 小さい値を設定しても安全です
kdfparams.n
?
編集:なぜ私がこれを求めているのかを明確にするために、他の人がこれを言ったからです:
これはまったく安全ではありません。この実装には多くの基本的なエラーが含まれています。1つの例は、暗号化のセキュリティを完全に破壊する安全でない乱数ジェネレーターを使用しています。別の例は、AESを使用しています- 128-認証なしのCTR。
コメント
- まず、
secure " 。ただし、その合理的な定義によれば、 1234 '、大きくて冗長な平文で、使用できるものは何も安全ではありません。
エキゾチックな攻撃。
回答
最悪純粋に暗号化の弱点はパスワードです(1)。最悪の(そしてはるかに悪い)実際的な弱点は、実装(6)(7)、および暗号化の範囲外として暗号学者が却下するもの(4)(5)にある可能性があります(質問の目的のみが述べられています)。
暗号化(ただしまだ検討中)から実装までの弱点の候補:
- パスワード:約48ビットを超えるエントロピーを持つパスワードを覚えるのは難しい(これは、3141592653589793や2718281828459045などの16桁の数字とほぼ同等であり、必須の XKCD で想定されている以上のものです。 N = 262144 = 2 18 、r = 1、p = 8 = 2 3 を使用して、少なくとも18 + 3 + 1 = 22ビットで購入します(
this )ストレートSHA-256ハッシュとそれに続くAES-128と比較すると、約32ビット強いと思います。したがって、キーは約80ビット良好である可能性があります。 ブルートフォースによって完全に破壊できないわけではありませんが、それでも非常に安全です。
- AES-128:これには128ビットのキーがあり、純粋な暗号分析は知られていません総当たり攻撃よりも攻撃が優れているため、パスワードよりもはるかに優れています。
- CTRモード:AESの128ビットブロックでは、キーストリームの再利用が開始される唯一の方法は不正なランダム番号です。 IVのジェネレーター(6を参照)
- 平文のサイズは、暗号文のサイズから簡単に推測できます。これは、長さがあるため、暗号化の理論上の弱点ではありません。 は、暗号が平文について隠すことになっているものから除外されますが、それは実際的な弱点である可能性があります。暗号文の分析は、それが17267095423オクテット;そして、検察のどこかに、正確にそのサイズのファイルがあり、暗号文の検索と押収に明らかに先行しており、単なる拘留は違法です。
- 平文の予測可能な変更に対応する(意図的または偶発的な)暗号文の変更の検出の欠如:これも暗号化の理論上の弱点ではありませんが、一部の攻撃を許可する可能性があります 攻撃者が暗号文を変更できる場合(例:平文が実行可能ファイルまたは既知の割合のPDFである場合、実行可能ファイルの動作を何にでも変更したり、PDFを何にでも表示したりできます)。 認証付き暗号化( AES-GCM ..)はそれを解決します。
- 乱数ジェネレーター:これが悪い場合、またはさらに悪い場合は多少行き詰まります(必須の XKCD および Dilbert これは非常に頻繁に現実になります)。これにより、同じパスワードで異なる英語のテキストまたは電子メールアドレスを繰り返し暗号化するなど、多くのシナリオで平文を復元できるようになります。
- サイドチャネル。実装または使用のコンテキストで、予期しない、または軽減されていない情報の漏洩について話す。
- 手続き型グーフ(ポストイットノートのパスワード、マスターパスワードリスト)、ラバーホース暗号分析(必須 XKCD )、法的変形(法廷の軽蔑の調子での表現の使用を含む)、賄賂、化学物質の含浸..
-
ショルダーサーフィン、キーロガー(ソフトウェアまたはハードウェア)、カメラ、マイク(パスワードを入力するときのキーの音は、パスワードに関する多くの情報を漏らします。特に、同じ条件で同じオペレーターによる既知のキーボード入力と関連付けられている場合はそうです。
- 画面に表示されるプレーンテキストのストレートな侵害( TEMPEST のバリエーション)、印刷、プリンターへの送信中、ネットワークからのリモートアクセス、または単に「一時的に」保存。
- マッハのOSの真っ直ぐな妥協暗号化または復号化を実行します(一時的なルートアクセスを取得するだけで十分です。つまり、7.7では攻撃者にとってゲームです)。
- を含む離れた場所にある暗号解読サイドチャネルDPA と電磁バリアントDEMA、および暗号化/復号化を実行するマシンがネットワークからアクセスされ、iv id =を使用しない場合は、仮想的にタイミング “fdf33bb454″>
AES命令。
コメント
- パスワードをハッシュするともっと便利です暗号化の前?shaやmd5を使用するのと同じように?
key = scrypt(sha(MY_PASSWORD), kdfparams)
- @EnZo:scryptに入力する前にパスワードをハッシュしても、パスワードの攻撃の難易度はそれほど変わりません(ポイント1)これを改善するには、より優れたパスワード、暗号化のためのより優れたパラメータ化、またはより優れたパスワードベースのキー導出スキーム(Argon?Balloon?)
回答
上記のスキームで攻撃される可能性のある主なセキュリティ要素は、もちろん、パスフレーズです。レインボーテーブル攻撃を回避するには、ソルトが重要ですが、それ以外の場合は、それほど多くのセキュリティを追加しません。ソルトとパスワードが適度に一意である場合、キーも一意です。その場合、IVはそれほど重要ではありません。
したがって、安全でない乱数ジェネレーターを使用することは悪いことですが、実際のセキュリティにそれほど大きな影響を与えることはおそらくないでしょう。 、それは悪い慣行が実際に展開されたことを示しています。パスフレーズが同じ安全でないランダムジェネレータを使用して生成された場合はどうなりますか?他の実装エラーが表面化した場合はどうなりますか?
認証されていない暗号文の使用は、より問題になります。攻撃者はビットごとに平文を変更できます。攻撃者は暗号文ビットを反転するだけで、同じ位置にある平文ビットも反転します。これは、ウォレットの使用時にエラーまたは問題が発生することを意味します。ウォレットのコンテンツの機密性は失われない可能性がありますが、認証された暗号化を使用することは確かにベストプラクティスです。
コメント
- ありがとうございます!説明してくださいこのモードで認証された暗号文を実現する方法はほとんどありませんか?編集します上記の例は、元のキーストアファイルから削除した元のmacプロパティに関連していると思うためです。
- CTRモードは、CCM、GCM、EAX、SIV、およびその他の認証済みモードの基盤となるモードです。暗号。ただし、CTRモードと(H)MACの組み合わせも確実に安全です。どちらも、ほぼ同じサイズ/セキュリティの認証タグを生成します。 CCMとEAXは、CTRとMACの特定の組み合わせにすぎず、暗号とMACに同じキーを使用できます。
- I ' ve暗号の一般的な知識(それほど多くのイーサリアムではない)を使用して、私の能力の及ぶ限りではこの質問に答えました。 Ella Roseは、質問で提供された情報からシステムのセキュリティを結論付けることはできないということは正しいです。そのため、私は'クリック率の使用のみに焦点を当てました。
- まあ、ランダムは、最終的にはシステムのランダムに依存しているようです。多くの場合、システムのランダムソースは比較的安全であり、CSPRNGという用語は実際にソースによって言及されています。したがって、システムランダムが適切に実装またはシードされていない限り、ランダムではないという主張は誤りです。
- SHA-3からMACを直接作成することはお勧めしません。代わりに、KMACを使用する必要があります(おそらく単に'その時点ではまだ指定されていませんでした)。しかし、キーと暗号文の連結を使用すると問題が発生するような状況は考えられません。
コメントを残す