/ / IVなしで.NETでAES暗号化する方法-.net、asp-classic、cryptography、rijndael、initialization-vector

IV - .net、asp-classic、暗号、rijndael、初期化ベクトルなしで.NETでAES暗号化する方法

Rijndael(AES)で文字列を暗号化/復号化することになっているコードを使用するClassicASPアプリケーションのレガシー部分があります。このコードはで見つかりました ここのインターネット (Rijndael AESブロック暗号(VBバージョン))。この正確なライブラリを参照しているSOに関する質問をすでに見つけました。 私とほぼ同じことを聞いてください、しかし私は行く少なくとも1つのことを疑う間違っています(バイト配列の先頭に暗号化するデータの長さを追加する以外)。 vbScriptの実装は、暗号化するデータにIVを追加するようには見えません。したがって、同じ暗号化をRijndaelManagedと一致させることはできません。

  1. 毎回異なるIVを自動的に生成します
  2. 絶対にIVが必要です

IV(空)を指定せずに.Netで何かをAES暗号化できるかどうか誰かが知っていますか?

回答:

回答№1の場合は7

使用しているコードと問題の解決策はどちらも完全に安全ではありません。 最初、 *いかなる状況下でも、暗号ライブラリを使用するべきではありませんいくつかのランダムな男が書いた* 期間、話の終わり。ウィンドウと。ネットには、信頼できる、精査された暗号化ライブラリがあります。彼らには、タイミング攻撃の問題、裏口の外、または暗号について何も知らない人が試みるような単なるモロニックなものはありません。

あなたが言及したライブラリは、適切な例として、サポートしているだけのようです ECBモード。これは完全に安全ではなく、彼らが何をしているのかを知っている人は誰もそれをしません。それにはたくさんの理由がありますが、それをしない理由の最良のデモンストレーションはこれです:

ここに画像の説明を入力

これは、Linuxペンギンのecb暗号化画像です。あまり安全ではありませんか?


回答№2については2

いいえ、IVなしではCBCモードで何も暗号化できません。ただし、 IVを明示的にゼロに設定します。。 IVは最初のプレーンブロックとXORされるため、IVをすべてゼロに設定することはIVがないことと同じです。

これはあなたの質問に対する単なる答えです、あなたこれまでに提供された他のすべてのセキュリティアドバイスに注意する必要があるかもしれません。コードが実際にIVを必要とするCBCモード暗号化を使用しているかどうかを確認することもできます。

CBCモード暗号化のIVは、常に正確に1ブロックのサイズです(AESの場合は16バイトですが、 getBlockSize() 可能な限りメソッド。


回答№3の場合は1

明示的に Mode あなたの暗号の特性 ECB.

暗号化するプレーンテキストが短く、ランダムで、一意の文字列でない限り、ECBは安全ではありません。たとえば、セッションキーまたは別の暗号化キーを暗号化すると便利です。