2. Notation and Conventions (符号和约定)
2. Notation and Conventions (符号和约定)
本文档中使用以下符号:
p - 表示定义底层域的素数
GF(p) - 具有 p 个元素的有限域 (Finite field)
x^y - x 自乘 y 次
B - 感兴趣的群或子群的生成元 (Generator)
[n]X - X 自加 n 次
h[i] - 八位字节串 h 的第 i 个八位字节
h_i - h 的第 i 个比特
a || b - (比特)字符串 a 与 (比特)字符串 b 连接
a <= b - a 小于或等于 b
a >= b - a 大于或等于 b
i+j - i 和 j 的和
i*j - i 和 j 的乘积
i-j - j 从 i 中减去
i/j - i 除以 j
i x j - i 和 j 的笛卡尔积 (Cartesian product)
(u,v) - 具有 x 坐标 u 和 y 坐标 v 的椭圆曲线点
SHAKE256(x, y) - 输入 x 的 SHAKE256 [FIPS202] 输出的前 y 个八位字节
OCTET(x) - 值为 x 的八位字节
OLEN(x) - 字符串 x 中的八位字节数
dom2(x, y) - 在签名或验证 Ed25519 时为空八位字节串。否则为八位字节串: "SigEd25519 no Ed25519 collisions" || octet(x) || octet(OLEN(y)) || y, 其中 x 在 0-255 范围内, y 是最多 255 个八位字节的八位字节串。"SigEd25519 no Ed25519 collisions" 是 ASCII 格式 (32 个八位字节)。
dom4(x, y) - 八位字节串 "SigEd448" || octet(x) || octet(OLEN(y)) || y, 其中 x 在 0-255 范围内, y 是最多 255 个八位字节的八位字节串。"SigEd448" 是 ASCII 格式 (8 个八位字节)。
括号 (即 '(' 和 ')') 用于组合表达式, 以避免描述依赖于运算符之间的绑定顺序。
比特串通过从左到右取比特, 将它们从每个八位字节的最低有效位打包到最高有效位, 并在每个八位字节填满时移动到下一个八位字节, 从而转换为八位字节串。从八位字节串到比特串的转换是此过程的逆过程。例如, 16 比特的比特串
b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15
按此顺序转换为两个八位字节 x0 和 x1:
x0 = b7*128+b6*64+b5*32+b4*16+b3*8+b2*4+b1*2+b0
x1 = b15*128+b14*64+b13*32+b12*16+b11*8+b10*4+b9*2+b8
小端编码 (Little-endian) 到比特中将比特从左到右以及从最低有效位到最高有效位放置。如果与上面定义的比特串到八位字节串的转换结合使用, 这将导致小端编码到八位字节 (如果长度不是 8 的倍数, 最后一个八位字节的最高有效位保持未使用)。
本文档中的关键词 "MUST" (必须), "MUST NOT" (绝对不能), "REQUIRED" (必需), "SHALL" (应), "SHALL NOT" (不应), "SHOULD" (应该), "SHOULD NOT" (不应该), "RECOMMENDED" (推荐), "MAY" (可以), 和 "OPTIONAL" (可选) 应按 [RFC2119] 中的描述进行解释。