問題タブ [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.

0 投票する
5 に答える
33216 参照

encryption - openssl iv とは何ですか? なぜキーと iv が必要なのですか?

次のスクリプトを使用して、一部のデータを暗号化および復号化しようとしています。現在の暗号化が新しいサーバーで機能しないため、これを使用しています。現在mcryptを使っているのでopensslに変更したいです。

私たちのデータベースでは、128 ビット キーを使用する aes 暗号化を使用しているため、キーが何であるかはわかりますが、openssl iv が何であるかはわかりません。そして、なぜ鍵とivが必要なのですか?

私が使用しようとしているコードはこれです。私は暗号化をよく理解していないため、Web サイトで見つけました。

明らかに、キーが別の場所に保持されるように変更します。

0 投票する
1 に答える
96 参照

linux - 固有の IV ヘッダーを生成する

一意のIV (Initialization Vector)ヘッダーを生成する必要があります。

IVは、年 (16 ビット、0 ~ 65535 )、現在時刻 (64 ビット、今年はナノ秒)、および 96 ビット IV を生成するためのカウンター (16 ビット) で構成される 96 ビット長でなければなりません。

でこの一意の識別子を生成するにはどうすればよいCGI bash scriptですか?

0 投票する
1 に答える
595 参照

java - Cipher を再利用するが、IV を変更する

パフォーマンス上の理由から、可能な限り特定のキーに対して Cipher オブジェクト (java) を再利用したいと考えています。ただし、適切な暗号衛生に従い、暗号化する平文のすべてのセットでランダム IV を使用したいと考えています。同じ暗号オブジェクトを再利用し、IV を変更して、暗号オブジェクトを毎回再初期化せずに (つまり、最初に 1 回だけ初期化するだけで) 行うことは可能ですか? doFinal 呼び出しのたびに新しい IV を使用したい。必要に応じて、毎回の doFinal 呼び出しの後に手動で設定できます。

IVParameterSpec を拡張し、getIV メソッドをオーバーライドして毎回ランダムなメソッドを生成することを考えましたが、それには 2 つの問題があります。

  1. おそらく実際には問題にならないでしょうが、特定の CipherSpi オブジェクトが特定の平文に対してこれを 2 回呼び出していないことをどのように知ることができますか? 特定の平文に対しては同じ IV を返す必要がありますが、別の平文に対しては別の IV を返す必要があります。ほとんどのプロバイダーはこれを 2 回呼び出すことはないと思いますが、確かなことはわかりません。

  2. CipherSpi のドキュメントを見ると、初期化時に IVParameterSpec が渡されたように見えます。プロバイダーがすぐに IV を取得し、オブジェクトの存続期間中それをキャッシュするかどうかはわかりません。その場合、暗号化する平文が異なるかどうかに関係なく、IV は常に同じになります。

Cipher オブジェクトを再利用し、再初期化を必要としない doFinal 呼び出しごとに IV を変更する別の方法はありますか? SIV のような一部のモードでは IV 要件がそれほど厳しくないことは承知していますが、現時点ではそれを選択することはできません。また、上記のソリューションをサポートする可能性のある特定のプロバイダーを選択できることは承知していますが、プロバイダーに依存しないソリューションを望んでいました。

ありがとう!

0 投票する
1 に答える
6852 参照

node.js - Node.js 暗号: IV の長さが無効です

次の node.js コードは、ECB モードで AES 128 を使用し、0 バイトで満たされた初期化ベクトル (IV) を使用して暗号を作成しようとします。<< 暴言 >> ECB モードでの暗号化は何としても避けるべきであることは承知していますが、第二次世界大戦 (ECB モードでの暗号化の危険性が最初に発見されたとき) より前に構築されたレガシー システムをサポートするためには、それでも機能する必要があります。 << /暴言 >>。

createCipheriv (または createDeciperiv) が呼び出されると、node.js コードは「Invalid IV length」をスローします。

128 ビット (16 バイト) 暗号の場合、AES には 16 バイトの初期化ベクトル (IV) が必要です。

これはバグですか、それとも何か間違っていますか?

0 投票する
1 に答える
962 参照

java - 後で復号化するために、暗号化されたファイルに IV を追加する

暗号化された後、書き込まれる前に、安全に生成された 16 バイトの IV を各ファイルに追加しようとしています。これは、後でファイルから IV を取り出して復号化できるようにするためです。これまでの私のコードは次のとおりです。

これを行う方法に関する提案はありますか?