playground

The world is a playground.

crypto 系ライブラリの中に出てくる iv ってなんぞや

iv は initialization vector のことらしい。

 

Wikipedia 先生 によると

 初期化ベクトル(英: initialization vector、IV)はビット列であり、ストリーム暗号またはブロック暗号を任意の暗号利用モードで実行するとき、同じ暗号鍵でストリームを生成しても毎回異なるストリームを生成するのに必要とされる。これにより、毎回暗号鍵を替えるといった時間のかかる作業を省くことができる。

 

eccrypto というライブラリでは、iv にランダムな 16 Bytes を設定しているようだ。

 

iv はあらかじめ共有しておければ、ハンドシェイク時のデータ量を減らせるからいいかなあ。とおもったけど、そもそもよりセキュアにするために存在しているっていう理解なので、毎回ランダムな値をセットして渡すのがいいよなあ。もしくは何らかの方法で iv を生成する方法を共有しておくとか。