暗号的に強い乱数

擬似乱数を使うときに暗号などで使うときによい機能のメモ。

  • Unixシステムでの/dev/random特殊ファイルを用いる。
  • Javaでは、java.security.SecureRandomクラスを用いる。
  • WindowsシステムでのCryptGenRandom関数を用いる。(WinCrypt.h)

/dev/randomについてはhttp://ja.wikipedia.org/wiki//dev/randomに書いてあるような問題もあるようです。

また、CryptGenRandom関数は詳細な実装がわからないそうです。(つまりどれくらいの安全性かわからないということ。)

それほど安全性に考慮しない場合、Unixシステムでは/dev/urandom特殊ファイルを用いる方法もあるそうです。


ちょっと前に書いたエルガマル暗号のコードの問題もこの辺で浮き彫りに・・・。
という感じですが、あれはほとんどアルゴリズム的な確認のために動かしただけですし、アレを実際の暗号として使うには無理があるのは明らかです。

次に暗号化復号化プログラムで乱数を使うときは上記のようなものを使ってみたいと思います。
以上、メモでした。

広告を非表示にする