-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tanaka Akira wrote:
>> Randomクラスでは、Random#randになっていたものですね。こちらの命名は移行
>> のし易さ優先で提案したものでした。
>>
>> rand()からSecureRandomへの移行を必要以上に促す必要はないですから、randと
>> いう名称にこだわりはありません。移行を促す必要がない、という観点からする
>> と、いっそのことrandom_numberも不要なのでは。
> 
> 必要がある程度には促す必要があるので、不要とは思いません。

なるほど。必要性の認識の違いですね。

本来暗号学的に強度のある乱数を使うべき人には、移行してきて欲しいです。
これはOK。再現可能な乱数系列が欲しかった人は移行できない。これもOK。

それ以外の乱数利用者には、1.9のRandomクラス(いずれ)に移行して欲しい。
なので無理にSecureRandomに移行する必要はない、と思ってます。でも、1.8に
はRandomクラスが入ることはないだろうから、SecureRandomに移行せざるを得な
いのかな。。。

それほど強い意図ではなかったので、「不要なのでは」は取り下げます。

>> OpenSSL::Random.random_bytesも、それほど考えられて作られたメソッドじゃな
>> さそうですから、由来というほどのことはないと思います(ちなみにOpenSSLの
>> 関数名はRAND_bytes())。最初に実装したミカロコとしても、田中さんの指摘同
>> 様、「bytesじゃ簡単すぎるかな」と思ったのかもしれません。
> 
> 「ミカロコ」ってなんですか?

隠語でしたすいません。Michal Rokos。最初にext/opensslを実装した人です。

>> ただ、個人的には、hex、base64があまりピンとこないので(後述)、
>> SecureRandom.bytesという短い名称にして、こちらこそ推奨にしたいところで
>> す。SecureRandom.random_bytes(256/8)とか、長くて悲しい。
> 
> バイナリの文字列を生成するのってそんなに使いますかねぇ?
> あまり使われないと予想しているのですが。

私のOpenSSL::Random.random_bytesの用途では、hexやbase64にすることはほと
んどなく、そのまま共有鍵にしたり、巨大整数とみなしてMPI(*)などの巨大整数
表現に変換する。

(*) OpenPGPで定義されたフォーマット。

という私には、「secureなrandomとして」hexやbase64を使う、というのはピン
とこないのです。やったことあるかな。記憶にない。

ここでの私と田中さんの認識の違いは、[ruby-dev:30939][ruby-dev:30940]
あたりから続いているのだと思います。私としては、session idの生成という、
secure randomの一用途のために、secure randomクラスにメソッドを追加するの
が気になる。メソッドの必要性は理解してますし、標準添付するのにも賛成。こ
れがcgi/session.rbの中だったり、sessionidgenerator.rbという名前なら気に
ならない。

# 名前長いけど。

>>> binary_string, string は別名としてありうると思います。
>> (ここで1.9のことを考えてもしょーがないですが)stringという名称は混乱を
>> 招きそうな。
> 
> 1.9 とどう関係するのでしょう?
> 
> バージョンはいずれあがっていくわけですから、懸念があれば教え
> てください。

説明不足ですいません。1.9でstringというメソッド名だと、バイナリでない
encodingを持った文字列が返ってきそうに感じました。

>> 私としては、以下の理由から、hexとbase64にはあまりピンときてません。
>>
>> 1. hexやbase64がエンコードフォーマットであり、
>>    「暗号学的に強度のある乱数」というクラスの本質との結び付きが弱い。
> 
> session id という用法において強い結び付きがあります。
> 
> 使いやすいライブラリをデザインするには想定される用法を十分に
> 支援することが重要です。

上で書いた通り、session id生成という用法において便利なのは理解できます。

>> 2. 従来の乱数APIで、そのようなものを見たことがない。
>>    知ってるのはJava、.NET、python、PKCS#11くらいですけど。
>>
>> ま、2はあまり重要視すべきことではないですし、「どうせ多くの人は、hexか
>> base64するんだから」というのはわかるんですけど。欲しい人が要るのに反対は
>> しませんが、推奨というのはなぁ。
> 
> なんで random_bytes を推奨したいんですか?
> 推奨すると hex や base64 よりも便利になりますか?

bytesを推奨する意図はそれほどありませんでした。hexやbase64を推奨すること
により、SecureRandom.base64で取得したものをbase64 decodeして共有鍵に使
う、などという事例が起こらないで欲しい、という程度です。

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRwyQkx9L2jg5EEGlAQI3MAf/Y8mPuUU2vhrNRKKiLHUGDAN2n0f/hFv/
KcSbA44dDhcP9oLlF2uZa2wMYhKppAYNNPBYrmi/BXepS4hFrbqOb2kq5IY7R6gV
yaSHSeY78QfrM+AHAkN7++hPInUal+Ppi78y2QaayNugWVZzueCGbxkDdJC2p/9V
UBN+b1RspIieoiNI59rVlrTrE5795YJmjLhZdLpESXAuKSWJLs4t9HZk6bHT3bIw
dCIqb3kOeAZ9k5SVCv07dJCRYozPbG5Rw1GH/ENAgFBmNEHalhRWB9eLbQzJbEur
Ys/5G8ONW9J32VLWf4mQyi4AcJM1zd9g0upe6sxmlhFW20qvtgOiBQ==
=qd+q
-----END PGP SIGNATURE-----