📖
『SSL/TLS実践入門』の気になったところ
初めに
『SSL/TLS実践入門』で間違いや誤植と思われる箇所をいくつか見つけたので列挙しておきます。
なお、そのうち本家で正誤表が出ると思いますが、自分の備忘録のために作りました(Xで発言したのは文字数制限もあったし)。
もちろん、私自身の解釈が間違っていることもあると思いますので何かあればご指摘お願いします。
間違いと思われる部分
- p.115 3行目 : 「
は鍵生成時にd とp から計算することができます。」q - 当然公開鍵
も必要ですね。e
- 当然公開鍵
- p.120 3行目 : 「点の集合
は位数\Set{G, 2G, 3G, \dots, O} の有限体である」n - この集合は加減算しかできないので有限群ですね。加法群、(加法)巡回群でもよいと思います。
- 他にも同様に「巡回群」とすべき所が「有限体」になってるのがちらほらありました。列挙してみます。
- p.128下からL7 「
を元とした有限体」G - その次の文「有限体から鍵ペア、秘密鍵
、公開鍵d_A を決めておく」も微妙に変かと。d_A G
「有限体から秘密鍵 を選び、公開鍵d_A を計算する」でしょうか。d_A G
- その次の文「有限体から鍵ペア、秘密鍵
- p.130下からL6 「この曲線上に有限体の演算を定義する」
- p.132のL8 「
は位数B の有限体」l - p.151の「曲線とパラメータの関係」の段落の2行目「位数
の有限体」n
- p.107 : 「有限体は…四則演算が排他的論理和(XOR)やビットシフトで実行できる」
- それは標数
か、その拡大体の話だと思います。コラム注の例にもでてるp=2 以上の素数については多倍長演算の実装が必要で、それはなかなか大変です(cf. 多倍長整数の実装1(C/C++))。p>2
- それは標数
- p.116一番下 「
より小さい値」(P-2) - 間違いとはいえませんが普通は
より小さい値から選びます。Q より大きいとQ で割った余りと同じになってしまいます。Q - 同様にp.117の表2.9の「Private-value」の値も「0 < priv_key < p-1」ではなく「0 < priv_key < q」でしょう。
- ちなみに
とp はよく間違えますね。『暗号技術のすべて』でも同様の間違いがありました。q
- 間違いとはいえませんが普通は
- p.117 表2.9の「巨大な素数
」の範囲が512~1024ビットというのは小さ過ぎると思います.P
脚注に挙げられているRFC 7919では2048ビット以上の素数が提示されてますね。
楕円曲線の鍵長と演算コスト
- p.120 「ECDHE」節の4行目ぐらい : 「楕円曲線暗号を使ったアルゴリズムは鍵長の増加に対して処理時間の増え方が線形」
- 線形よりももっと増えます。たとえば256ビットと384ビットでは後者は1.5倍よりずっと重たいです。
以下、もう少し詳しく説明しましょう。
楕円曲線暗号で使われる有限体は大体256ビットから512ビットぐらいです。ビット長を
その有限体の加減算は概ね
この場合、乗算回数は
標準的な楕円曲線暗号で一番コストが高いのは点のスカラー倍算です。これはaddやdblの回数が
したがってCPUの乗算命令の呼び出し回数で数えると
というわけで処理時間は線形よりもずっと大きく増えるのです。
誤植と思われる部分
- p.114 下から3行目右の n のフォントが数式フォントでない。
- p.137 : 「一つ」
- 他では「1つ」の表記揺れ
Discussion