LoginSignup
0
0

[翻訳転載] Golang Tip #12: 鍵作成時はmath/randの使用を避ける

Posted at

はじめに

本記事は以下のツイートの翻訳転載です。

鍵作成時はmath/randの使用を避ける

暗号化や一意な識別子の作成など、鍵の生成が必要なプロジェクトでは、鍵の品質とセキュリティは重要になります。

なぜmath/randを避けるべきなのでしょうか。

math/randパッケージは擬似的に乱数を生成します。

つまり、乱数の生成方法(と生成時に使用されるシード)を知っていれば、生成される乱数は予測されてしまいます。

image

現在時刻をシードとして使用したとしても、実行ごとに現在時刻が大きく変動することはないため、予測不可能性(unpredictability (entropy))は低いままです。

ではcrypto/randはどうでしょうか。

crypto/randは、暗号的に安全な数値を生成する方法を提供します。
(OSが提供するランダム性のソースを使用することで、予測しにくいように設計されています)

image

暗号化、認証、その他セキュリティが重視される処理においては、crypto/randの方が適しているでしょう。

おわりに

math/rand, crypto/randについては以下にまとめられているのがわかりやすかった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0