問題タブ [initialization-vector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cryptography - 初期化ベクトルのサイズは将来大きくなりますか?
現在、データの暗号化にCBCモードのAES(256)を使用しています。初期化ベクトルを暗号化されたデータとともに保存します。今、私は暗号化されたデータの最初にIVを追加し、次に復号化して、ハードコードされたバイト長として読み込みています。
将来、初期化ベクトルの長さが変更された場合、このメソッドは機能しなくなります。
だから私の質問は:
将来、AESキーサイズが長くなる= IVが長くなるでしょうか?つまり、AESのブロックサイズは将来変更されますか?
もしそうなら、これに対処するための最良の方法は何でしょうか?IVの長さの指標として最初のバイトを使用し、次にそのバイト数を読み取りますか?
java - AESの間違ったIV長の解決策が必要
私はJavaでAESを実装しようとしていますが、これは私が使用するコードです。
テスト目的でこの固定キーとIVが必要ですが、次の例外が発生します。
この固定IVをこのAESの実装でどのように使用できますか?方法はありますか?
cocoa - ランダムバイトココアを生成しますか?
暗号化のためにファイルに追加するランダムデータを生成する必要があります。どうすればこれを行うことができますか?ランダムな文字列を生成するのと同じような考えでしょうか?
何かのようなもの:
次に、rand()関数を使用してデータをランダム化しますか?
あなたの助けは大歓迎です
cocoa - ソルトとIVAES暗号化の両方を含む優れたココアライブラリはありますか?
暗号化ツールを磨き上げているところですが、暗号化をより安全にするために重要なソルトが不足していることに気付きました。いくつかの組み込みのココアメソッドを使用していますが、どちらも含まれていません。正しく理解するのは難しいので、これを最初から書きたくありません。AES暗号化用のソルトとIVを含む優れたココアライブラリはありますか?
助けてくれてありがとう
php - phpass が同じ入力文字列に対して異なるハッシュを返すのはなぜですか?
私は、ハッシュアルゴリズムが常に同じハッシュを返すことに慣れています。
phpass ライブラリが常に異なるハッシュを返すのはなぜですか?
IVと何か関係あるの?(私はその概念を完全には理解していませんでした)
iphone - IV を使用した AES 暗号化、Salt、RFC2898 反復、iPhone の SHA1 アルゴリズムを使用したキー生成
AES 暗号化に関連する問題があります。問題は、初期化ベクトル、ソルト、RFC2898 反復を使用した AES 暗号化技術を使用して文字列を暗号化し、sha1 アルゴリズムを使用してキーを生成する必要があることです。
このコードを使用しました
sha1 キー生成の場合、この手法は .net と Android で行うため、まったく異なる生成が行われます。
Androidと.netにはすでにこれを行うためのクラスとライブラリがあり、iPhoneでそれを行う方法をそのままにしておきました。
c# - 一意の初期化ベクトルの利点は何ですか?
RijndaelクラスでAES暗号化を使用してパスワードを暗号化し、構成ファイルに保存します。
初期化ベクトルとは何か知っています。SOに関するスレッド(暗号化と一緒に初期化ベクトル(IV)を使用する必要があるかなど)とウィキペディアの記事を読んだことがあります。
ただし、私にはわからない点が1つあります。暗号化中に使用されるものと同じIVを復号化に使用する必要があるため、暗号化されたテキストとともにIVを保存する必要があります。では、暗号化ごとに一意のIVを使用する利点は何ですか?攻撃者が暗号化されたテキストを取得すると、IVも取得します。
c# - 優れたAES初期化ベクトルの実践
私の質問によると、Aes Encryption ...重要な部分が欠けていますが、文字列に可逆暗号化を作成するという私の仮定が少しずれていることを学びました。私は今持っています
これにより、一貫した結果が得られます。ただし、初期化ベクトルを知らない/設定しないと復号化できません。このメソッド(IVの場合はオン)に3つの値を渡したくないので、IVをハードコーディングしたり、キーから派生させたりする必要があります。これが良い習慣なのか、それとも暗号化された値が何らかの形で攻撃に対して脆弱になるのかを知りたいのですが...それとも私はこれを本当に考えすぎて、IVをハードコーディングする必要がありますか?
更新 イリジウムの提案に従って、私は代わりに次のようなものを試しました:
ただし、これは私の単体テストで奇妙なことを示しています。
復号化されたテキストは「92ʪ�F」と表示されます。hpv0��暗号化しています。似たようなものはたくさんありますが、これは私の暗号化です。」これはほぼ正しいように見えますが、もちろん完全に間違っています。しかし、私は近くにいるようです。メモリストリームのオフセットが欠落していますか?
cryptography - AES 暗号化 IV の転送方法
周波数解析などの攻撃を防ぐための暗号化において、固有の IV が重要であることは理解しています。質問: AES CBC 暗号化の場合、IV の重要性は何ですか? IVの重要性を説明するかなり明確な答えがあります。
IV をクリア テキストで送信すると、セキュリティ ホールが発生しますか? それとも、対称キーの送信に使用されたのと同じ公開/秘密キーで暗号化する必要がありますか?
IV を暗号化して送信する必要がある場合は、毎回新しい対称キーを生成し、IV をキーの一部と見なしてみませんか? 対称鍵の生成にコストがかかりすぎるということですか? それとも、転送されるデータの量を最小限に抑えるためですか?
シークレットと非シークレットの初期化ベクトルに対する一番の答えは次のように述べています。
典型的な鍵確立プロトコルでは、両方の関係者がデータの一部を計算することになりますが、両者が知っているのは彼らだけです。Diffie-Hellman (またはその楕円曲線の変種) では、共有されたデータは固定長であり、その値を制御することはできません (どちらも同じように見えるランダムなビット シーケンスを取得するだけです)。
2 つのエンティティは、共有された情報を持たずに、「同じように見えるランダムな一連のビット」をどのように導出しますか? 共有情報が暗号化されて送信されたという仮定はありますか? また、共有情報が暗号化されて送信される場合は、IV を暗号化して送信してみませんか?
アプリケーションは対称キーを安全に転送する必要があるため、IV をキー自体から分離することは本質的に最適化のように思われます。または、何か不足していますか?
java - 暗号化の初期化ベクトル
初期化ベクトルが暗号化でどのように機能するかについて質問があります。
IVの作成について少し知識があり、質問はこれです。SecureRandom
クラス
について知っているので、これを使用してIVを作成すると、データが完全に暗号化されます。理解できないのは、同じIVを取得する方法です。復号化プロセスのために?(割り当てのアルゴリズムを作成するには、これについて知っておく必要があることを説明してください)