ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

现代密码学(五) 数论和密码学困难性假设

2021-07-17 17:29:33  阅读:453  来源: 互联网

标签:函数 数论 元素 算法 困难性 素数 mod 密码学 运算


文章目录

预备知识和基本群论

素数与可除性

  • 算数基本定理:任何大于1的整数都可由若干素数乘积获得
  • 令α为整数, b为正整数, 贝!J存在唯一的整数q, r满足α = qb + r
  • 设α, b为正整 数, 则存在整数X, Y满足Xα + Yb = gcd (α, b)
  • 如 果c|ab伪 , 且gcd(a, c) = 1 , 则c|b
  • 如果p|N, q|N, 且gcd (p, q) = 1, 则pq | N

模算术

  • 若a = qN+r,则r =a(mod N)
  • 同余:a(mod N)=b(mod N),则称a,b同余,同余是一个等价关系(自反,对称,传递)
  • 可逆:对于a存在a^ -1有aa^-1=a(modN),称a和a ^-1关于N互逆
  • 设α, N为整数, N > 1, 则当且仅当gcd (a, N)=1时α关于模N可逆。

定义:群是一个集合G和其上的二元运算◦, 满足下列条件:

  1. 封闭性:g, h ∈ G, g ◦ h ∈ G.
  2. 存在单位元:e ◦ g = g = g ◦ e.
  3. 存在逆元:g ◦ h = e = h ◦ g
  4. 结合律:(g1 ◦ g2) ◦ g3 = g1 ◦ (g2 ◦ g3)
  5. 交换律:g ◦ h = h ◦ g

那么当运算◦为已知时,称集合G为群。通常情况下,并不用◦来表示群运算 。根据所讨论的群的情况用加号+,或者乘号 * 来表示。 当用加法符号时, 群运算应用到两个元素g, h时表示为g + h; 单位元用 0 表示 , 元素g的逆元素用-g表示 。当用乘法符号时,群运算应用到两个元素g, h,时表示为g· h或者简写为gh,单位元用1表示,元素g的逆元素用g^-1表示。 这并不意味着群运算对应于整数加法和整数乘法

  • 一个集合在某种运算上可能是一个群, 但在其他运算上可能不是
  • 实数集合R在乘法运算上不能构成群, 因为 0 没有乘法逆元
  • 设整数 N>=2。 如 果集合{0· · · , N - 1 }满足加法模N运算(也就是说α +b=α + b (mod N)), 则此群是阶为 N的阿贝尔群,记为Z< N>
  • 设G为群, 且α,b, c ∈ G。 如果时 ac=bc , 则α = b. 特别地, 如果αc = c, 则α是G的单位元。
  • 设G是一个有限群, 其阶m = lGI, 则对任意元素g ∈G, 有g^m= 1。证明:任选g∈G,令g1,g2。。。。gm为G中的所有元素,则g1g2gm=(g1g)(g2g)…(gm*g)因为都表示了群中的所有元素,那么就有g^m= 1
    ----所以有个很重要的结论,在幂运算中可以通过对群的阶取模来运算
    改为加法,则变成了如果g是阶为m群的一个元素 ,则 有i · g = (i modm)· g
  • 令G是一个有限群 ,m=|G|> 1 。 令e > 0是一个整数 , 并且定义函数fe :G→G 通过fe (g)=g^e。 如果gcd (e, m) = 1 ,则fe是一个置换

Z*< N>群

定义:
在这里插入图片描述

  • 令N > 1且为整数 , 则Z< N>在关于模N的模乘运算下为阿贝尔群
  • 群的阶:![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210715102754406.png
  • 在这里插入图片描述

群同构与中国剩余定理

群同构定义:在这里插入图片描述注意:若f是G到H的同构,那么函数f^-1是H到G的同构

  • 叉乘G×H:运算后有|G|*|H|个元素
    在这里插入图片描述

  • 中国剩余定理:若N=pq,且p,q互素。则在这里插入图片描述
    此外f为Z< N>到Z< p>×Z< q>的同构以及Z*< N>到Z*< p>×Z*< q>的同构,其中f为在这里插入图片描述
    证明同构:+N为模N的加运算,田为Zp×Zq的群运算
    在这里插入图片描述注意其中q,p只要求互素,不要求是素数,且中国剩余定理在多个分解数下仍然成立
    -----中国剩余定理的应用。如果两个群同构,则代表它们有相同的“代数结构”。选择不同表示方法会影响群运算的计算效率。

  • 元素对N取模的表示法和元素对p或q取模的表示法之间来回转换的方法:将(xp,xq)转换到x
    在这里插入图片描述

素数、 大数分解和 RSA

弱因子分解实验:在这里插入图片描述

随机素数的产生

在确定范围内选取随机素数的一般方法:在这里插入图片描述注意高位拼接确定为1,变固定了输出位nbit

  • 存在常量c,满足对任意的n > 1,n位素数的个数至少为c· 2n-1/n,(即一个n位数为素数的概率为c/n)。所以当t取n^2/c时,在算法执行t次中 仍没有素数被选中的概率为e^-n,该值是可以忽略的

素数判定

  • 概率素数测试算法: Miller-Rabin算法:有两个输入参数,1.用于素性测试的整数p 2.一个确定错误概率的参数t
    概率: 在这里插入图片描述算法:
    在这里插入图片描述
    那么将Miller-Rabin算法代入随机素数生成算法中,就可以得到一个完整的生成算法
  • 设G为有限群,且H∈G。假设H包含G的单位元,并且对于任意a, b ∈H,有ab ∈H。则H是G的一个子群。
  • 设H为有限群G的严格子群(也就是说G≠H)。则|H|≤|G|/2。
  • 在这里插入图片描述即要测试N是不是合数,如若有1个数a属于Zn,有a^N-1=1(mod N)则将它归到集合Bad中,1∈Bad,且Bad是一个严格子群,表明|Bad|≤|ZN|/2,所以ZN中至少一半元素不属于Bad。所以选定一个测试数来检验N,在任何t迭代中都没有找到证人的概率(因此算法错误输出“素数”的概率)最多为2^−t
    但有例外:没有任何证据的合数N有无穷多个 ,具有此特性的N称 为 Carmichael 数
  • 若设N-1 =u2^r,其中u为奇数且r>=1.那么a ^N-1=a ^(u2 ^r)=1(mod N),考察r+1项(a ^ u,a ^ 2u…,a ^(u*2 ^r)).因此如果其中出现了一个1或-1,之后全是1了

在这里插入图片描述

  • 强证据:如果①a^u!=士1 mod N,且②对于所有i ∈ {1,…,r - 1},有a ^(u*2 ^t)!=-1 mod N,则称a ∈Zn是“N为合数的强证据”

  • 设N为奇合数,则Z*< N>中至少一半的元素为N是合数的强证据。设Bad为不是强证据集合,定义Bad’有1️⃣Bad为Bad’的子集2️⃣Bad’为Zn的严格子群,所以有在这里插入图片描述
    因此,Zn中至少一半的元素为强证据,其中Bad’定义为在这里插入图片描述
    这里i表示满足a ^(u*2 ^i)=-1 mod N的最大的整数

  • 完整的 Miller–Rabin算法
    在这里插入图片描述

因子分解假设

设GenModulus为多项式时间算法,满足输入1",输出(N,p ,q),其中N= pq
实验如下:大数分解是困难的,即输出1的概率可忽略不计
在这里插入图片描述

RSA 假设

RSA实验:在这里插入图片描述
其中的GenRSA(1^n)算法如下:在这里插入图片描述
即给出pq找到(p-1)(q-1)是有难度的,RSA的困难性来源于此

关联 RSA 和分解假设

  • 有一种概率多项式时间算法,输入一个复合整数N和整数e,d,其中ed=1modφ(N),输出一个N因子,的概率可以忽略不计。
    证明:
    1. 若N=pq,则有4个模1的平方根,其中两个为±1,还有两个其他平方根
    2. 其他平方根可用于计算q和p,因为0=y^2-1=(y-1)(y+1)modN又因为y!=±1modN所以gcd(y-1,N)=N的质因子之一

循环群中的密码学假设

循环群和生成元

  • 设G为有限群,g∈G。g的阶为满足g^i= 1的最小整数i。
  • 设G为有限群,g ∈G且其阶为i。则对任意整数x,有g^x= g^(x modi)。
  • 设G为有限群,g ∈G是阶为i的元素。则当且仅当x= y mod i时,有g^x= g^y。
  • 设G是阶为n的有限群,若元素g ∈G的阶为i,则i|m。
  • 如 果G是一个阶为素数p的群, 则G为循环群。 此外G中的元素除单位元外都是G的生成元

离散对数和 Diffie-Hellman 假设

  • 离散对数定义:如果G是阶为q的循环群,则存在一个生成元g∈G满足{g^ 0 g^1,…, g^(q-1)} =G。等价的,对任意h ∈G,存在唯一x ∈Z满足g^x= h。当群G已知,称x为h关于g的离散对数,记为x=log< g>h。注意,对任意整数x’,如果g^x’=h,则log< g>h =[x’mod q]。强调这种情况下的对数称为“离散”,因为值在有限范围内,相反“标准”对数是因为值的范围为无穷集合

  • 离散对数问题:给随机h∈G作为输入,计算log< g>h,离散对数实验就是基于这之上,成功的概率可以忽略不计

  • 计算Diffie-Hellman问题(CDH):给定h1和h2在这里插入图片描述

  • 判定Diffie-Hellman问题(DDH):给出一个h,判断h是随机选取的还是,有h=DH< g>(h1,h2),即区分{h,h1,h2}和{DH< g>(h1,h2),h1,h2}

在Zp(的子群 )中工作

  • p为素数的群Z,是一类循环群,在该群中离散对数问题被认为是困难的。具体而言,设g为一个算法,其输入为1^n,输出随机选择的一个n位素数p,群Zp的阶q=p- 1,其生成元为g。它没有素数阶并且判定Diffie - Hellman问题在这些群中并不是困难的

  • x∈Z,满足x^2=y mod p,则元素y ∈Z*为模p平方剩余

  • 若p是一个强素数,即p=2q+1,q为素数,则模p的二次剩余正好有q个,又因为q是素数,所以这个二次剩余群是一个循环群,除单位元之外全是生成元(这里的2可以换做3,4。。。。)
    在这里插入图片描述

椭圆曲线群

椭圆曲线:其中A和B满足条件4A^3 + 27B^2 = 0,(x,y)为定义在椭圆曲线上的点,O称为无穷远处

在这里插入图片描述若我们从图形的角度来看
在这里插入图片描述
有以下结论:

  1. 如果直线和曲线在P点相切 ,则点P计算两次
  2. 无穷远处的点也要计算在内(当直线垂直时)
  3. 可以定义一个二元运算,称为 “加 ” 并用符号 “ + ” 表示,有P+O = O+P = P 。和P1 + P2十P3 = O
  4. 取反:P + (-P) = 0,在图中表示为-P=(x,-y)
  5. 加法:P1,P2为曲线上任意两点,连接这两点得到一条直线,找到这条直线与曲线的第三个焦点P3然后找到此点关于x轴的对称点即为和
  6. 计算两点和的方法:在这里插入图片描述

点E(ZP)的集合和上面定义的加法规则形成了一个交换群,称为E的椭圆曲线群,从加法的定义方式开始,O作为恒等式,我们已经看到E(Zp)上的每个点在E(ZP)中都有一个逆

  • Hasse bound:这意味着在给定的椭圆曲线y^2=f(x)modp上找到一个点总是很容易的:简单地选择均匀的x∈Zp,检查f(x)是0还是二次剩余,如果是的话,令y=f(x)的平方根。
    在这里插入图片描述- 一种生成椭圆曲线的方法:在这里插入图片描述

对于椭圆曲线的改进

  • 点压缩:一个点所需的比特数可以减少一半,因为对于椭圆曲线E : y^2 = f(x)modp,最多有两点的x的值是一样的,即(x,y)和(x,-y),那么我们就可以set b = 0 if y < p/2and b = 1 otherwise。所以我们就可以通过x和b的值来恢复y
  • 投影坐标: (x, y)来表示椭圆曲线上的点称为仿射坐标,那使用(X,Y,Z)来表示椭圆曲线上的点称为射影坐标,其中x=X/Z,y=Y/Z。好处:我们可以添加点,而不必计算模p的逆在这里插入图片描述

密码学应用

单向函数和置换

  • 单向函数正式定义:如果满足下面两个条件,则函数f ∶{0,1}*→{0,1}*是“单向函数”

    1. (容易计算)存在一个多项式时间算法,输入x,输出f (x)。
      定义
    2. (求逆困难)对任意概率多项式时间算法A,存在一个可忽略函数negl,满足Pr[Invert<A,f(n)>= 1] ≤negl(n)
  • 使用Gen用作单向函数的函数f< Gen>:在这里插入图片描述

  • 定义:如果分解问题与Gen相关是困难的 ,则f< Gen>是一个单向函数

  • 三元组Il = (Gen, Samp,j)如果满足下列条件 ,则其为一个函数簇z

    1. 参数产生算法Gen:输入为1^n,输出参数I,满足|l|>=n。每一个由Gen输出的I值定义了集合D< L>和R< L>,分别构成函数f 的定义域和值域。
    2. 取样算法Samp:输入为I,输出一个均匀分布的集合D< L>中的元素
    3. 确定性评估算法f:输入为I,x ∈ D< L>,输出一个元素y ∈ R。记为y = f< l>(x)。ll是一个置换簇:如果对Gen(1")输出的I的每个值,满足D< L>=R< L>且函数f < L>:D< L> →R< L>为双射。
    4. 反转实验:在这里插入图片描述
    5. 所以若RSA如果RSA问题对GenRSA而言是困难的,则此函数簇实际上为单向函数
  • 使用离散对数的思想构造单向函数:在这里插入图片描述

构造抗碰撞的散列函数

现在介绍一个基于素数阶群离散对数假设构造的抗碰撞散列函数

设G为多项式时间算法:输入1^n,输出一个循环群G,其阶为q(|q|=n),和一个生成元g。定义一个定长散列函数如下:在这里插入图片描述需要注意的是:

  1. Hs以Zq×Zq作为输入。可视为将长度为 2(n 一1)的比特串作为输入。原因是输入x ∈ {0,1}^2(n-1)可拆分成两个串x1, x2,且每个长度为n -1
  2. 输出固定为G中元素,意识有可能需要填充
  3. 当G中元素可以用少于2^n-2位表示的时候才可使用
  • 如果离散对数问题与G相关是困难的, 则上面的构造方法是一个定长抗碰撞散列函数,证明方法如下(将碰撞的困难规约到离散对数分解的困难):若有方法使其碰撞,那么离散对数问题也就解决了
    在这里插入图片描述

标签:函数,数论,元素,算法,困难性,素数,mod,密码学,运算
来源: https://blog.csdn.net/c630843901/article/details/118731988

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有