随笔-156  评论-223  文章-30  trackbacks-0
 
符号含义 
    E            表示满足椭圆曲线Weierstrass方程上的点群
    K            代数闭域,用来限制Weierstrass方程的系数与E中的点
    E(K)        定义在K上的点群E
    E/K         定义在K上的椭圆曲线E
    End(E)    E上的自同态环


域扩张分析 
  

End(E)模与Z代数 
  

极点首项系数 
  
  

除子映射及同构
  
  

同种映射同态性的解释 
  
  
  

Hasse定理之引理证明的补充  
  

挠曲线及其个数   
  

有限域上的椭圆曲线  
  一种确定型群阶计算法 
    
 
  奇素域上的算法应用 
    
   

 GF域上的群阶计算  
   
   

Schoof算法正确性根本   
    一种计算椭圆曲线群的阶的确定型多项式时间算法,确定型是因为算法内部没有随机选择/概率抛币操作,多项式时间是因为域k的乘法与求逆总次数是O((logq)^6)
qk的大小,乘法与求逆相对加减运算显著耗时)。具体原理及流程详见参考文献[1]中5.2节。这里给出笔者的一些思考
​     1. Hasse定理(Frobenius自同态方程式)在扭点群上的限制亦成立,这决定了tl的一个同余方程成立,且在模l的最小非负剩余系下解是唯一的
​     2. 孙子定理保证了某取值范围内的一个tLL为各素因子l的乘积)的唯一解,即由tL各个素因子l的同余方程构成的同余方程组的解是唯一的
​     3. L必须大于t取值上限的2倍。这是为了算法求得的解满足上述2(否则在更小的L内得到的解不唯一,因Lt上限或下限间的某数可以与tL同余)
​     4. 素因子l的选择排除2与椭圆曲线特征p。这是因为算法构造所依赖的一个引理之前提条件:为奇素数保证l次除子多项式属于k[X],即引理论断有意义;
       不等于p保证检测一个多项式f是否零多项式的充要条件成立,即可以用l次除子多项式去整除f来判断。另l为素数保证了与其它除子多项式(及其幂次)互素
     另外发现了算法的一处瑕疵,即第4步预计算除子多项式与Frobenius自同态的复合少了两个值,这导致第5步可能崩溃,当依赖的后续两个复合多项式没被计算时。
  这个纠正可通过修改第4步扩大2个值,或第5步通过除子多项式的递推公式按需计算

扭点的阶计算正确性根本  
    

在密码学中的应用  
    选取原则  
        1. 排除超奇异椭圆曲线。这是为避免MOV等约化攻击,约化攻击时间复杂度是亚指数
        2. 有限域的选择要使E(Fq)的群阶足够大。这是为了缓解ShanksPollard ρ攻击
        3. E(Fq)存在阶为大素数的子群。这是为了抵抗Pohlig-Hellman攻击
      对于第1点,就排除了char(K)=2或3且j(E)=0对应的如下标准形式曲线
           Y23Y=X34X+α6(α3≠0) 与  Y2=X34X+α6 
     
     一种典型方案 
           椭圆曲线及有限域的选择使得|E(Fq)|=cm,且char(Fq) ∤ q+1-cm。其中m是一个大素数(通常不低于256位二进制长度,提供中长期安全性),c小于m
         m阶子群的生成元可通过以下方法确定:随机选择E上的一个有理点P,如果Q=cP为零元(即无穷远点),则重复选择,直到其不等于零元。
         一旦找到了生成元,那么子群就可以构造出来了。下面分析正确性  
          


参考文献
  [1] 椭圆曲线及其在密码学中的应用—导引      Andreas Enge
  [2] 算法数论                                           裴定一、祝跃飞 
  [3] The Arithmetic of Elliptic Curves        Joseph H. Silverman
  [4] 标识密码学                                        程朝辉
  [5] 代数学基础与有限域                             林东岱
  [6] 抽象代数I                                          赵春来 徐明曜
  [7] 代数与数论                                        李超   周悦
posted @ 2024-11-10 21:45 春秋十二月 阅读(105) | 评论 (0)编辑 收藏
原本算法
    摘抄参考文献1中附录的算法流程如下
    

例子测验
   
    

改正后的算法
       改正之前,先理清原本算法判别不可约多项式所用的原理。其原理是若f(x)可约,当且仅当存在次数i<=d=[deg(f(x))/2]的不可约因子g(x),而此时gcd(xq^i-x, f(x))≠1。
   根据参考文献2(详见如下定理),xq^i-x是所有i次不可约多项式的乘积,因此它必定包含g(x)而与f(x)存在公因子。不可约判别算法的思想应该是遍历次数1到d的所有不可约多项式
 (没必要检测大于d的不可约多项式,因为若f(x)可约则其分解因子中必定存在不大于d的不可约多项式),检测输入多项式与它们是否存在公因子。所以这个原理是正确的,只是实现不对,
   略作改正如下(类c语言描述)
   

重新测验
   

   


参考文献
   [1] 算法数论                 裴定一、祝跃飞
   [2] 代数学基础与有限域   林东岱
posted @ 2024-09-07 23:07 春秋十二月 阅读(230) | 评论 (0)编辑 收藏
通用算法
   先摘抄参考文献[1]中的算法流程如下
   

   正确性分析
     
下面证明以上算法用到的事实结论,提炼为如下几个引理
      
     

   算法构造思想
         用到二次剩余知识,即一个待求平方元ɑ可以且只能表示为两个平方因子的乘积,其中一因子为任意随机选取的非平方因子β的偶数幂,
      另一因子为叶子群H的一元素r,H作为陪集划分根群(有限域乘法群)得到β生成的集合即商群G/H的一个代表元系。这样一来,将开方转化为β与r的乘方运算,
      迭代的过程就是为求那个具体的代表元βe中的指数e(注意e必为偶数),从Gs-2到G0=H,迭代结束后r被唯一确定,r的开方等于r的(t+1)/2次方(因为t是H的阶且为奇数,rt+1=r)

   例子测验
      
      

特殊算法
   
当q是素数且q≡3(mod 4)时,存在更快的算法及测验如下 
   


参考文献
   [1]  算法数论   裴定一、祝跃飞
posted @ 2024-08-30 22:22 春秋十二月 阅读(340) | 评论 (0)编辑 收藏
基本原理  
   

   再来看Terr算法用到的如下定理
     定理 (基于参考文献1改正后的描述)对每一正整数t,存在唯一确定的一组整数k和j,0<=k<j,使得t=Tj+1-k,其中T0=0,Tn=Tn-1+n-1,n>=1
    
     如果t=0,那么j在区间[0,1),故只能取0,此时k=0与条件k<j矛盾,若允许k=j,则不保证唯一,比如t=1 => j=1, k=0 或 j=2, k=2。
     所以参考文献1中原来定理的描述“对每一非负整数t”是错误的。下面列举一些实例验证j与k的唯一解
               t=1  =>  j=1, k=0
               t=2  =>  j=2, k=1
               t=3  =>  j=2, k=0
               t=4  =>  j=3, k=2
               t=5  =>  j=3, k=1
               t=6  =>  j=3, k=0
   

算法伪代码

      


例子测验
     


参考文献
   [1] 代数学基础与有限域   林东岱
posted @ 2024-08-15 22:35 春秋十二月 阅读(618) | 评论 (0)编辑 收藏
私钥分组加密  
  
  
   
上图的证明中,r(j)两两不同的概率计算是关键,下面给出详细过程
       
    另外两个分布统计的不同意味着计算可分辨(反之则计算不可分辨),亦即r(j)至少两个相同的概率。
  Construction 5.3.9一次只能加密与密钥等长的明文,如果要加密更长的明文,怎么办?一个简单直接
  的方法是将明文分成多个大小为n的块,对每个块调用上述加密步骤,那么就得到形如下的密文块序列
       
  
密文块序列从Proposition 5.3.10的证明中可知是计算不可分辨的,满足多组消息安全性。但对于解密
  需要存储每一块的随机数,因此比较占空间,所以衍生出下面更高效的方案Construction 5.3.12

私密通用加密
    
     
     语义安全性分析
    
         
          

抗主动攻击安全性
       以上两种构造因满足多组消息安全性,故满足CPACCA1,具体的证明可参考Oded Goldreich《密码学基础》的Proposition 5.4.12Proposition 5.4.18
   但不满足CCA2,因为攻击者拿到挑战密文后,可以修改它再发出解密质疑,得到回答的明文从而异或求解fk(ri),最后与挑战密文异或求解挑战明文
   对于通用加密构造的CCA2攻击细节如下
           
posted @ 2024-06-29 17:00 春秋十二月 阅读(550) | 评论 (0)编辑 收藏
定义
    

Berlekamp分解算法
    

AES有限域
   

  不可约性证明
       

  非本原性验证
      

  
找出本原元
      

  不可约多项式个数
       

线性移位寄存器m序列
     
根据参考文献1知线生移位寄存器产生m序列的充要条件是特征多项式f(x)为本原多项式。而确立有限域上的本原多项式,主要有两种方法:
      一种方法是根据Fq上所有次数为n的本原多项式的乘积正好等于割圆多项式Qe,其中e=qn-1,从而所有次数为n的本原多项式可以通过分解Qe得到。
      另一种方法是通过构造本原元再求本原元的极小多项式,先素因子分解qn-1=p1p2...pk,如果对每一pi都有ord(αi)=pi,那么α=α1α2...αk的阶就是qn-1,
      因此是Fq上的本原元,则f(x)=(x-α)(x-α2)...(x-αr),r=qn-1(因为α是本原元,所以n是使αq^n=α成立的最小正整数)。
   
    求解本原多项式
       假设线性移位寄存器的级数为4,这里使用上述二种方法求F16上的本原多项式,过程如下
       分解割圆多项式法
          

       构造极小多项式法
          
        
         
   
  本原多项式个数
        

   
m序列示例
       


参考文献
    
[1] 代数学基础与有限域    林东岱
posted @ 2024-05-16 13:41 春秋十二月 阅读(835) | 评论 (0)编辑 收藏
【适用前提】大整数N=pq的素因子p<q<2p,解密指数d<(1/3)N1/4

【攻击方法】 
     1)用欧几里得算法计算e/N的各个渐近分数ki/di,i>=1,直至di>=(1/3)N1/4,记录此时的i为m。令i=1  
     2)计算T=(e*di-1)/ki,若T不为整数则转到4),否则转到3)  
     3)解方程f(x)=x2-(N-T+1)x+N=0的根,如果有正整数根且两个根皆小于N,则输出p、q,并返回成功。否则转到4)  
     4)递增i,若i<m则转回2),否则返回失败
   该方法即Wiener算法用到了关于连分数的一个定理:α为任一实数,有理数p/q适合|α-(p/q)|<1/(2q2),则p/q必为α的某一渐近分数。证明详见参考文献[2]。
   由定理可知攻击方法是可行的,必能找到使f(x)=0有合理解的某渐近分数。下面证明:攻击迭代次数的上界为

【证明】
     


【例子】N = 9449868410449,e = 6792605526025,d<(1/3)N1/4≈584,试分解N
     

参考文献
     [1] 公钥密码学的数学基础  王小云、王明强、孟宪萌
     [2] 算法数论                   裴定一、祝跃飞
posted @ 2024-04-04 18:19 春秋十二月 阅读(562) | 评论 (0)编辑 收藏
群结构  
  定理1
:若G为一个循环群,则G内每个满足ord(α)=s的元素α都是拥有s个元素的循环子群的生成元
  证明
      

  定理2:若G为一个阶为n的有限循环群,g为对应的生成元,则对整除n的每个整数k,G都存在一个唯一的阶为k的循环子群H。
    这个子群是由gn/k生成的。H是由G内满足条件αk=1的元素组成的,且G不存在其它子群
  证明
     

  推论:从上述两定理可知有限循环群、子群及生成元的关系如下
      
  例子:依据上述推论得如下
      

生成元判定算法
  输入:循环群G、某子群的阶k  
    1)若k=1,则直接输出e。否则转到2)
    2)随机从G-{e}中选择一元素x
    3)若xk≠e,则转回2)。否则若k为素数,则跳到5);若k为合数,则转到4)  
    4)遍历整除k的真因子d,若xd=e,则转回2)    
    5)输出x
posted @ 2024-03-20 22:49 春秋十二月 阅读(554) | 评论 (0)编辑 收藏
混合线性同余发生器(MLCG)      
      Xn ≡ αXn-1 + c mod m    0<X0, α, c<m,X0为种子,n=1、2、3...

定理 如果下列3个条件都满足,则 MLCG达到满周期(即周期d=m)
     (1) (c, m)=1,即 c、m互素
     (2) 对 m的任一素因子p,有α≡1 mod p
     (3) 如果4|m,则 α≡1 mod 4
  该定理的证明在参考文献[2]中证明并用到如下两个引理:
  引理5 设p为素数,α∈Z+且pα>2,如果 x=1(mod pα),x≠1(mod pα+1);则xp=1(mod pα+1), xp≠1(mod pα+2)
    该引理给出了求一个整数的阶的判别方法,是理解MLCG周期等于m的充要条件之关键。
    本文阐述为什么p是使xp=1(mod pα+1)成立的最小正整数,以及一般情形m=pw(w≥1)是使xm=1(mod pα+w)成立的最小正整数;为什么前提条件是pα>2。

    ◆ 先论证不存在一个整数1≤b<p使得xb=1(mod pα+1)成立
       
    ◆ 再证不存在一个整数1≤b<m使得xb=1 (mod pα+w)成立
       
    
     ◆ 为什么前提条件是pα>2
       如果pα=2,x=1(mod 2)且x≠1(mod 22)。令x=1+2q,2 ∤ q。有x2=(1+2q)2=1+4q+4q2,注意到q是奇数,则x2=1(mod22),x2=1(mod23)。故得不到引理的结论

  引理6(改写的等价形式) 如果 α=1(mod 4),则(αm - 1)/(α - 1)=0(mod m) ,m=2w,w>1
     其实这里当α=1(mod 2)且α≠1(mod 4),结论也是成立的。比如取α=3,m=16,则 (316 -1)=814 -1=(-15)4 -1=-15×-7×-7 -1=-15×-15 -1=9×-7 -1=0(mod 32),
     即(316 -1)/(3-1)=0(mod 16)。但只有当α=1(mod 4)时,m才是使结论成立的最小正整数。论证如下
         

参考文献    
     [1] 现代密码学第4版 杨波    
     [2] 混合线性同余发生器的周期分析 张广强、张小彩
posted @ 2024-03-12 17:30 春秋十二月 阅读(652) | 评论 (0)编辑 收藏
【定义】设整数N=P×Q,P与Q皆为素数,如果P≡Q≡3 (mod4),则N为一个Blum(布卢姆)数

【定理】设N为Blum数,N ∤ d,若同余方程x2≡d (mod N)有解,则d的平方根中有一半的Jacobi符号为1,另一半Jacobi符号为-1;且仅有一个平方根为模N的二次剩余
    证明:
    

【推论】设N为Blum数,N=P×Q,令
    
   证明:
    

例子由定义知N=21=3×7为Blum数,则相关乘法群、二次剩余子群、Jacobi集合如下
   


【应用一】
Blum-Goldwasser公钥加密
      
    解密正确性是因为步骤1用到了欧拉定理及求平方根的如下算法,步骤2用到了中国剩余定理

       
       从上可得x=s(P+1)/4 mod P或x=P-s(P+1)/4 mod P,因(-1)(P-1)/2等于-1 mod P,故前者为模P的二次剩余。从加密流程可知{s1,s2,...,sn+1}正是模N二次剩余类的子集。
    所以从密文中r=sn+1求它的(p+1)/4次幂、(q+1)/4次幂,迭代n次就得到了s1模p的解、s1模q的解,又因p、q、n在迭代中不变,故用欧拉定理预计算dp mod (p-1)、dq mod (q-1)。
    另一种(不太高效而直接的)解密如下
       
    另加密与明文异或的那部分实际是伪随机比特发生器,因为平方模N构成二次剩余类上的单向陷门置换,其最低有效位是核心断言,故从si+1求出lsb(si)是不可行的。简单证明如下
       
      由于均匀选择一个种子s0,所以为概率加密,进而由可证明安全定理(每个概率公钥加密都是多项式安全的,及每个多项式安全的公钥加密都是语义安全的)知满足IND-CPA安全性
    易知IND-CCA2安全性是不满足的,因为敌手可用如下攻击方法获取明文:已知目标密文C=(r, m⊕σ1σ2σn),构造新密文C’=(r, m’⊕m⊕σ1σ2σn),将C’发给解密预言机得到m’’,则m=m’’⊕m’
    由于加密产生的r与σ1σ2σn都是伪随机的,所以密文(r, x⊕σ1σ2σn)的分布是伪随机的,在目标密文前的解密询问会得到若干密文与明文对,无论怎么构造一对明文,任选其一加密得到的密文都不可区分。因此IND-CCA1安全性是满足的

【应用二】无爪函数/置换构造
      
      
    如上构造用到Blum数的上述推论,及基于大整数因子分解的困难假设。这里主要解释下为什么由两个Jacobi符号不同的平方根可计算大整数的素因子
      

【应用三】伪随机数发生器
                Xn+1=Xn2 mod N      n=0、1、2...,X0为种子
     显然种子不为1。若为一个非二次剩余,则从X1开始就为二次剩余子群的元素,但最后必回到X1而非X0;若为二次剩余,则为了安全需要考究随机数数列的周期是否整周期(二次剩余子群的大小减1)。
  下面具体分析周期。先举例几个很小的Blum数
      
     从上面例子可以发现,由二次剩余子群构成的随机数数列不一定是整周期的,对于N=33无论种子怎么选,都是整周期4;对于N=57若种子选-8或7则周期为2,选其它则为6。
  现在一般化考虑,什么情况下才产生整周期?论证如下
       
posted @ 2024-02-25 23:29 春秋十二月 阅读(555) | 评论 (0)编辑 收藏
仅列出标题
共16页: 1 2 3 4 5 6 7 8 9 Last