system: [SYSTEM]

user: 2. 基础知识 2.1. 定义与符号 本文将用粗体小写字母表示矢量，大写字母表示矩阵。比如，a 1 ，a 2 是Z n 的两个元素， A = ( a 1 ， a 2 ) 。默认情况下，所有向量都是列向量。对于一个向量a (或矩阵A)，我们用a T (或A T )表示它的转置。对于实数 x ∈ R ，我们使用 ⌊ x ⌋ 表示向下取整，即 ⌊ x ⌋ 表示不大于x的最大整数。定义x的四舍五入表示： ，当x为向量、矩阵或者多项式运算时，上面所定义的四舍五入和向下取整均是对分量或系数进行的运算。 设 Z 是有理整数环，设 R = Z [ X ] / ( Φ m ( X ) ) 是第m个割圆数域的整数环， Φ m ∈ Z [ X ] 是m次割圆多项式。本文中采用 Φ m = x n + 1 ， n = 2 r ， r > 0 ， m = 2 n 。本文规定q是素数且 q ≡ 1 ( mod 2 n ) ， R q = R / q R ≅ Z q [ X ] / ( X n + 1 ) ，其中 Z q = Z / q Z 。 y ← R q ，表示y的每个分量或系数均独立地服从分布 R q ，且y的系数属于集合 [ − ( q − 1 ) / 2 ， ( q − 1 ) / 2 ] 。用符号 x ′ = x mod q ，q为正整数，表示 x ′ 的系数属于集合 [ 0 ， q − 1 ] ， x ′ = x mod ± q ，q为正整数，表示 x ′ 的系数范围属于集合 [ − ⌊ ( q − 1 ) / 2 ⌋ ， ⌊ ( q − 1 ) / 2 ⌋ ] 。a的无穷范数写做 ‖ a ‖ ∞ ，对于 A = ( a 1 ， a 2 ， ⋯ ， a m ) ， ‖ A ‖ ∞ = max i ‖ a ‖ ∞ 。最后本文采用与Kyber [ 12 ] 原算法中同样的噪声分布B η ，其定义如下： ( a 1 ， ⋯ ， a η ， b 1 ， ⋯ ， b η ) ← ( 0 ， 1 ) 2 η 输出 ∑ i = 1 η ( a i − b i ) (1) 2.2. 格 定义：设 x 1 ， x 2 ， ⋯ ， x m 是n维空间 R n 上线性无关的向量，m维格 L ( x 1 ， x 2 ， ⋯ ， x m ) 是由向量 x 1 ， x 2 ， ⋯ ， x m 生成的一个向量集，形式表示为 L ( x 1 ， x 2 ， ⋯ ， x m ) = ∑ i = 1 m a i x i ， a i ∈ Z (2) 其中， { x 1 ， x 2 ， ⋯ ， x m } 是格L的一组基，记为 Dim ( L ) = m ，(m， n)分别为格L的维数和秩，当m = n时称为格L是满秩。同样的一个格可以采用不同的基底来表示，但是从m维格中选出m个线性无关的向量却不一定能成为这个格的一组基。一个格基通过左乘一个特定矩阵可以转化成另一个格基，这个特定的矩阵是由整数构成，且其行列式为±1。因此格具有离散性和格基多样性。 2.3. 基于格的困难性假设 2009年REGEV O首先提出了LWE (learning with errors)问题 [ 15 ]，是对最坏情况格困难问题如GAPSVP和SIVP的一个简化，并证明LWE的安全性基于GAPSVP和SIVP最坏情况的困难问题，近年来它已经成为很多密码应用的基础。 LWE可看作随机线性码的译码问题，给出如下定义： x ∈ Z p n 是某个向量矩阵，存在矩阵 Q ∈ Z p m × n ，使得 y = Q x + e ，e是一个服从 e ∈ Z p m 的干扰信号，LWE问题就是已知Q和y，求x。由于LWE在实际生产应用过程中效率较低，Lyubashevsky，C. Peikert和 O. Regev在LWE的基础上变形出了一种效率更高，安全性和复杂性规约为SVP问题的新问题R-LWE (Learning with Errors over Rings) 困难问题 [ 16 ]。R-LWE问题和LWE问题的定义很相似，可以视为一个样本结构固定了的LWE问题。现R-LWE困难问题是基于格密码学一个活跃的研究领域，在这个困难问题上产生了很多优秀成果 [ 17 ] [ 18 ] [ 19 ]。 2.4. 基于格R-LWE的数字签名算法 数字签名是一种以电子形式给一个消息签名的过程，只有消息发送方可以对自己信息进行签名，任意知道公钥的验证者都可以对其进行验证。数字签名可以起到身份认证，保证信息完整性，不可否认性以及匿名性等作用，具有不可伪造性和不可抵赖性。 一个数字签名的形式化定义如下： 系统初始化过程：数字签名含有基本元素为(P， M， K， S， V)，其中P为消息集，M为签名集，K为密钥集合，S为签名算法集合，V为验证算法集合。 签名产生过程： k ∈ K 对于每一个消息 p ∈ P 和 m ∈ M ，存在 s i g k ∈ S ， s i g k : P → M 。将签名消息组(p， m)发送给消息验证者进行验证。 签名认证过程：对于每一个 k ∈ K 存在一个相应的验证算法 v e r k ∈ V ，对收到的签名消息组进行验证， v e r k : P × M → { T ， F } ， v e r k ( p ， m ) = { T ， m = s i g k ( p ) F ， m ≠ s i g k ( p ) (3) 若 v e r k ( p ， m ) = T ，则签名验证通过，签名有效，否则签名无效。 本文要用的是基于格R-LWE的数字签名方案。构造格的数字签名算法大部分分为两种途经，一种是利用限门函数 [ 20 ] 进行设计的，另一种是基于Fiat-Shamir方法进行转化，后者具有简单高效的特点，因此成为这个算法的首要选择方案。由于格的特殊代数结构，如果直接输出算法的签名，会泄露密钥，为解决这个问题VadimLyubashevsky提出“异常终止”的概念 [ 21 ]。中止协议的目的是，验证方可以选择中止协议，以保护有关其密钥的一些信息。本文使用的是均匀分布拒绝抽样格签名，使用的技术为Filtering引理。 Filtering引理，即涉及均匀分布的拒绝抽样算法。只有签名者输出的签名当且仅当落在一个固定的区间之内，签名的输出分布就会服从该区间上的均匀分布，故不会泄露私钥的信息。 Filtering引理定义：设k是一个正整数， a ∈ { v ∈ Z k : ‖ v ‖ ∞ ≤ A } ，随机均匀地选取 b ← { v ∈ Z k : ‖ v ‖ ∞ ≤ B } ，其中B > A。设随机变量c = a + b，那么c服从于集合 { v ∈ Z k : ‖ v ‖ ∞ ≤ B − A } 的均匀分布。 基于格R-LWE的数字签名算法的步骤如下： 签名者 密钥产生Gen: ( s ， e ) ← S η L × 1 × S η L × 1 ，且其系数服从某个窄的分布 a ← R q L × L t : = a s + e ∈ R q L × 1 返回公钥 p k = ( a ， t ) 和私钥 s k ( s ， e ) 验证者 事实上， a z 1 + z 2 − t c = a ( s c + y 1 ) + e c + y 2 − t c = a s c + a y 1 + e c + y 2 − t c = ( a s + e ) c + a y 1 + y 2 − t c = t c + a y 1 + y 2 − t c = a y 1 + y 2 = w 故， H ( w ， μ ) = H ( a z 1 + z 2 − t c ， μ ) 本方案的安全性主要取决于它的可靠性和在哈希函数中发现冲突的难度，只要我们设置合适的参数，以目前的已知技术在哈希函数中寻找冲突是不可行的。 2.5. 密钥协商机制 密钥协商机制是指两人或者多人，在不需要可信第三方的情况下，所有参与者在一个开放网络环境中，利用自己长期密钥对等信息，通过某种密钥协商协议，生成一个共享的临时会话密钥。密钥协商协议是一类极其重要的基础性安全协议。现存的比较高效成熟的密钥协商机制主要是利用 RSA公钥体制、传统椭圆曲线公钥体制ECC和Diffie-Hellman密钥协商体制来实现的。这些传统的算法大都基于大数分解问题，椭圆曲线等数学问题。随着量子的不断发展，计算速度的不断加快，这些算法抵制不了量子计算机时代的带来。基于后量子密码的密钥协商问题也成为热门话题。本文使用的是密钥共识与格困难问题相结合的方法，在这里我们先介绍一种带噪音的四舍五入密钥共识算法。 密钥共识算法KC如下定义： KC = (parameters， com， che)，其中参数 parameters = ( q ， r ， b ， e ， a u p a ) ，q控制安全性和效率，r控制共识密钥的范围，b控制带宽，e控制错误率，aupa表示辅助参数，且满足 2 r e ≤ q ( 1 − 1 / b ) ， r ≥ 2 ， b ≤ q ， 0 ≤ e ≤ | q / 2 | KC算法正确性证明：对于任意 σ 1 ， σ 2 ∈ Z q ，且 | σ 1 − σ 2 | q ≤ e ，都有 k 1 = k 2 。 证明：假设 | σ 1 − σ 2 | q ≤ e ，存在 θ ∈ Z 并且 δ ∈ [ − e ， e ] 使得 σ 2 = σ 1 + θ q + δ 。从算法KC的第5行到第7行可知，存在 θ ′ ∈ Z ，使得 α σ 1 + w + θ ′ q ′ = σ A = k 1 β + v ′ 。从α和β的定义中，我们有 α / β = r / q 。将这两个等式带入到Che (算法1的第15行)中k 2 的等式中可知 注意到 | v ′ / β − v ″ / b | = | v ′ b − β v ″ | / β b ≤ 1 / 2 b ，故 | ( v ′ / β − v ″ / b ) − w / β + α δ / β | ≤ 1 / ( 2 b ) + α / β ( e + 1 / 2 ) 由假设的条件 2 r e ≤ q ( 1 − 1 / b ) ，我们可以得到右边的严格小于1/2，因此，在取整之后，有 k 1 = k 2 。 KC算法安全性证明：当变量满足 ，k 1 ，v是相互独立且k 1 均匀分布，因此KC算法具有安全性。 证明：定义一个映射 ， 显然f满足一一映射关系，有KC算法第7行可以知道 ，因此 服从 中均匀分布。所以 服从 中均匀分布，且相互独立，而v只受 影响不受k 1 影响，可证明k 1 ，v是相互独立且k 1 均匀分布。