5.1.5 Key Generation (鍵生成)
5.1.5 Key Generation (鍵生成)
秘密鍵は, 暗号学的に安全な乱数からなる 32 octet (256 ビット, b に対応) である. 乱数については [RFC4086] を参照のこと.
32 バイトの公開鍵は, 次の手順で生成する.
-
32 バイトの秘密鍵を SHA-512 でハッシュし, digest (ダイジェスト) を 64 octet のバッファ h に格納する. 公開鍵の生成には下位 32 バイトのみを用いる.
-
バッファを prune (剪定) する: 最初の octet の下位 3 ビットをクリアし, 最後の octet の最上位ビットをクリアし, 最後の octet の次点の最上位ビットをセットする.
-
バッファを little-endian 整数として解釈し, secret scalar (秘密スカラー) s を得る. fixed-base scalar multiplication (固定基底スカラー乗算) [s]B を実行する.
-
公開鍵 A は点 [s]B の encoding (符号化) である. まず y 座標 (0 <= y < p の範囲) を 32 octet の little-endian 列として符号化する. 最終 octet の最上位ビットは常に 0 である. 点 [s]B の符号化を得るには, x 座標の最下位ビットを最終 octet の最上位ビットにコピーする. それが公開鍵である.