素体 (192, 224, 256 、384および521)。
2 に答える
「名前付き曲線」のいずれかを使用する場合、公開鍵のサイズは固定され、基になる曲線の「フィールド サイズ」に依存します。
圧縮表現と非圧縮表現
公開鍵のサイズは、「非圧縮」表現または「圧縮」表現のどちらが使用されるかによってさらに異なります。secp256r1
非圧縮形式では、公開鍵のサイズはフィールド サイズ(バイトNIST P-256
単位X9.62 prime256v1
) + 1 の 2 倍に等しく、圧縮形式ではフィールド サイズ + 1 です。フィールド サイズは 256 ビットまたは 32 バイトです。したがって、公開鍵は、圧縮されていない形式では正確に 65 バイト (32*2 +1) の長さになり、圧縮された形式では 33 バイト (32 +1) の長さになります。
圧縮されていない形式は、0x04 ( DER OCTET STRING タグに類似) と、x 座標のビッグ エンディアン バイナリ表現とパブリック ポイントの y 座標のバイナリ表現の連結で構成されます。
GF(p) ケース
基になるフィールドが GF(p) で、p が大きな素数 (P-256 の場合、256 ビットの素数) である場合、x と y は [0, p-1] の要素と考えることができます。これらは通常の方法で ((log2(p)+1)/8) バイトの整数としてエンコードされ、必要に応じて MSB がゼロで埋められます。
GF(2^m) ケース
GF(2^m) の場合、x と y は、係数 a_i が 0 または 1 の多項式 a_0 + a_1x + a_2x^2 + ... + a_{m-1}x^{m-1} と考えることができます。 . それらのバイナリ表現は、単に係数を連結したものです。
参考文献
正確な詳細はSEC1v2にあります。(特にセクション2.3.3 楕円曲線ポイントからオクテット文字列への変換(10 ページと 11 ページ)。)