12,925
回編集
81行目: | 81行目: | ||
<br><br> | <br><br> | ||
== | == 初期化ベクトル == | ||
==== カウンタモード (CTR) ==== | |||
CTRモードでは、カウンタ値を初期化ベクトルとして使用する。<br> | |||
各ブロックごとにカウンタをインクリメントすることにより、一意の値を生成する。<br> | |||
<br> | |||
==== GCMモード ==== | |||
GCMモード等では、ナンス (使い捨ての数値) とカウンタを組み合わせて初期化ベクトルを生成する。<br> | |||
<br> | |||
==== 初期化ベクトル生成時の注意点 ==== | |||
* 予測可能性 | |||
*: 自動生成されたIV (初期化ベクトル) が予測可能であってはいけない。 | |||
*: 例えば、単純なインクリメント方式は避けるべきである。 | |||
*: <br> | |||
* 一意性 | |||
*: 同じキーで同じIV (初期化ベクトル) を再利用しないことが重要である。 | |||
*: 特にストリーム暗号的なモード (CTRモード, GCMモード) では致命的な脆弱性につながる。 | |||
*: <br> | |||
* ランダム性 | |||
*: 可能な限り、暗号学的に安全な乱数生成器を使用してIV (初期化ベクトル) を生成すべきである。 | |||
*: <br> | |||
* 通信 | |||
*: IV (初期化ベクトル) は、一般的に、暗号文と一緒に送信する必要がある。 | |||
*: 多くの場合、暗号文の先頭に付加される。 | |||
*: <br> | |||
* 長さ | |||
*: IV (初期化ベクトル) の長さは、使用する暗号化モードに応じて適切に設定する必要がある。 | |||
*: 多くの場合、ブロックサイズと同じである。 | |||
自動生成されたIVを使用することで、同じ平文でも毎回異なる暗号文が生成され、セキュリティが向上します。ただし、適切な生成方法と管理が重要です。 | |||
<br><br> | |||
== サンプルコード: CBCモード == | |||
以下の例では、<code>QCrypto</code>クラスを使用して、CBCモードでの暗号化と復号を行っている。<br> | 以下の例では、<code>QCrypto</code>クラスを使用して、CBCモードでの暗号化と復号を行っている。<br> | ||
<br> | <br> |