现代密码学 第四章

一、公钥密码的基本概念:
1、对称密码体制的缺陷:

每个用户需要与其余的N-1个用户共享私钥;一个有N个用户的系统就需要管理N(N-1)/2个密钥。
2、公钥密码体制:(非对称密码体制)
每个用户生成一个密钥对,一个公钥pk和一个对应的私钥sk;私钥由用户本人使用,公钥由系统中其他用户使用。

特点:
(1)密钥分发:公钥能够采用公开信道进行传输;
(2)密钥管理:整个系统仅仅需要维护N个公钥;
(3)开放系统:即使是没有预先建立关系的用户也能通过对方的公钥建立安全通信

二、完全剩余系:
1、等价关系:
设 R 是集合 A 上的一个二元关系,若R满足:
自反性:∀ a ∈A, => (a, a) ∈ R
对称性:(a, b) ∈R∧ a ≠ b => (b, a)∈R
传递性:(a, b)∈R,(b, c)∈R =>(a, c)∈R
则称R是定义在A上的一个等价关系。
2、同余关系:
给定正整数m,全体整数可按照模m是否同余分为若干个两两不相交的集合,使得每一个集合中的任意两个正整数对模m一定同余,而属于不同集合的任意两个整数对模m不同余,每一个这样的集合称为模m的同余类剩余类
3、完全剩余系:

mm个剩余类可分别记为[i]i为该剩余类中整数除m所得的余数。
定义:在整数模m的所有剩余类中各取一个代表元a_{1},a_{2},...,a_{m},则称a_{1},a_{2},...,a_{m}为模m的完全剩余系。完全剩余系0,1,2,...,m-1称为最小非负完全剩余系
4、相关定理:
定理1:

对于给定的正整数m,有且恰有m个不同的模m的剩余类。
定理2:
m是正整数,整数a满足gcd(a,m)=1b是任意整数。若x遍历模m的一个完全剩余系,则ax+b也遍历模m的一个完全剩余系。
定理3:
m_{1},m_{2}是两个互素的正整数。如果x遍历模m_{1}的一个完全剩余系,y历模m_{2}的一个完全剩余系,则m_{1}y+m_{2}x遍历模m_{1}m_{2}的一个完全剩余系。

三、简化剩余系:
1、简化剩余系:
在模m的一个剩余类当中,如果有一个数与m互素,则该剩余类中所有的数均与m互素,这时称该剩余类与m互素
定义1:
m互素的剩余类的个数称为欧拉函数,记为\varphi (m)\varphi (m)等于Z_{m}(Z_{m}是完全剩余类)当中与m互素的数的个数。对于任意一个素数p\varphi (p)=p-1
定义2:
在与m互素的\varphi (m)个模m的剩余类中各取一个代表元a_{1},a_{2},...,a_{\varphi (m)},它们组成的集合称为模m的一个简化剩余系Z_{m}中与m互素的数构成模m的一个最小非负简化剩余系
Ex:设m=12,则1,5,7,11构成模12简化剩余系(最小非负简化剩余系)
2、相关定理:
定理1:

m是正整数,整数a满足gcd(a,m)=1b是任意整数。若x遍历模m的一个简化剩余系,则ax+b也遍历模m的一个简化剩余系。
定理2:
m_{1},m_{2}是两个互素的正整数。如果x遍历模m_{1}的一个简化剩余系,y历模m_{2}的一个简化剩余系,则m_{1}y+m_{2}x遍历模m_{1}m_{2}的一个简化剩余系。
推论1:设m,n是两个互素的素数,则\varphi (mn) = \varphi (m)\varphi (n)

四、欧拉定理:
1、定理1:

m=p_{1}^{e_{1}}p_{2}^{e_{2}}...p_{k}^{e_{k}}(任何正整数都可以表示为若干个素数的幂乘积),则
\varphi (m)=m\prod _{i=1}^{k}(1-\frac{1}{p_{i}})

Ex:\varphi (11)=10\varphi (121)=110\varphi (143)=120\varphi (120)=32
2、欧拉定理:

m是正整数,r \in Z_{m},若gcd(r,m)=1,则r^{\varphi (m)} \equiv 1(mod\ m)

五、RSA加密算法:(利用了大数难分解的原理)
1、密钥生成:

(1)选择两个大素数p,q(例如每个1024位)
(2)计算n=pqz=(p-1)(q-1)     这里\varphi (n) = z
(3)随机选取ee<n),ez没有公因数
(4)选取d,使得ed\ mod\ z=1
(5)公钥是(n,e),私钥是(n,d)
2、加密/解密算法:
加密:
c=m^{e}\ mod\ n,将明文m转变为密文c,注意m<n
解密:m=c^{d}\ mod\ n
核心思想:{\color{Red} {\color{Red} }m=(m^{e}\ mod\ n)^{d}\ mod\ n}

六、群的概念:
1、群的定义:

G是一个具有代数运算\bigcirc的非空集合,且满足:
(1)封闭性:\forall a,b \in G,有a\bigcirc b \in G

(2)结合律:\forall a,b,c \in G,有(a\bigcirc b)\bigcirc c = a \bigcirc (b \bigcirc c)
(3)有单位元:即G中存在一个元素e\forall a \in G,有e\bigcirc a = a \bigcirc e = a
(4)有逆元:\forall a \in G,存在一个元素a^{-1} \in G,使得a\bigcirc a^{-1} = a^{-1} \bigcirc a = e
Ex:模正整数n的最小非负完全剩余系Z_{n},对于模n的加法构成一个群,单位元为0,逆元为n-a
2、交换群:
若群G上的运算还满足交换律,即对于群G中的任意元素a,b \in G都有:ab=ba,则为交换群
3、群的阶:
一个有限群G(群中元素个数有限)中的元素个数称为群的阶,记为\left | G \right |
4、群的判定:(有限群)
 定理1:

一个有乘法的有限集合G,若其乘法在G中封闭,且满足结合律和消去律,则G是群。
Ex:取模m的最小非负简化剩余系,记为Z_{m}^{*},其中元素个数为\varphi (m)个,定义其上的乘法为模m的乘法。显然其乘法在Z_{m}^{*}上封闭,且满足结合律。由扩展欧几里得算法可知,Z_{m}^{*}中的元素均存在模m的乘法逆元。

七、循环群:
1、元素的方幂:

乘法:
a^{n} = \overbrace{aa...a} ; a^{0} = ea^{-n} = (a^{-1})^{n}a^{n}a^{m} = a^{m+n}(a^{n})^{m} = a^{mn}
加法:
nxa = \overbrace{a+a+...+a}0xa=e(-n)xa=nxa^{-1}nxa+mxa=(m+n)xanxmxa=(mn)xa
2、循环群:
G是一个群,若存在一个元素a,使得G=<a >(G中的所有元素都能用给定元素a的指数运算来表示),则称G循环群,元素a称为G生成元。若o(a)=\inftya的阶无穷大),G称为无限循环群;若o(a)=nn是某个正整数,则称G为有限循环群。
3、循环群中的离散对数问题:
定义:
G=<a >是循环群,群G中的离散对数问题是指:给定G中的一个元素h,找到正整数k,使得h=a^{k},我们把k称为h相对于生成元的离散对数,记作k=log_{a}h

八、ElGamal加密:(利用循环群离散对数问题)
1、密钥生成:
p
,一个较大素数
gZ_{p}^{*}中的生成元
\alpha \in Z_{p-1}\beta =g^{\alpha }mod\ p (\beta其实就是Z_{p}^{*}中的一个元素)
p,g,\beta为公钥;\alpha为私钥
2、加密/解密算法:x是明文;r,s是密文)
加密:
随机生成一个秘密数kk\in Z_{p-1}
E(x,k)=(r,s),其中:
r=g^{k}mod\ p
s=x\beta ^{k}mod\ p
解密:
D(r,s)=s(r^{\alpha })^{-1}mod\ p=xg^{ak}g^{-ak}mod\ p=x 

九、实数域上的椭圆曲线:
1、椭圆曲线:

椭圆曲线并非椭圆,之所以称他为椭圆曲线是因为它的曲线方程与计算椭圆周长的方程相似
(1)一般的,椭圆曲线指的是由维尔斯特拉斯方程:
y^{2}+axy+by=x^{3}+cx^{2}+dx+e
所确定的曲线。它是由方程的全体解(x,y)再加上一个无穷远点O构成的集合,其中a,b,c,d,e是满足一些简单条件的实数,xy也在实数集上取值。
(2)上述曲线方程可以通过坐标变化转化为下列形式:y^{2}=x^{3}+ax+b
整个方程的特性完全依赖于a,b的取值,因此由它确定的椭圆曲线常记为E(a,b)
Ex:

2、基于实数域椭圆曲线的交换群:
(1)
4a^{3}+27b^{2}\neq 0时,称E(a,b)是一条非奇异椭圆曲线,对于非奇异椭圆曲线,可以基于集合E(a,b)定义一个具有重要"加法规则"的交换群
(2)加法规则的几何描述:
如果椭圆曲线E(a,b)上的三个点位于同一直线上,那么它们的和为O。从这个定义出发,可以定义椭圆曲线的加法规则:
\textcircled{1}O为加法的单位元,对于椭圆曲线上的任何一点P,有P+O=P
\textcircled{2}对于椭圆曲线上的一点P=(x,y),它的逆元为-P=(x,-y),注意到P+(-P)=O 
\textcircled{3}P,Q时椭圆曲线上x坐标不同的两点,P+Q定义如下:作一条通过PQ的直线l与椭圆曲线相交于R,然后过R点作y轴的平行线l^{'}l^{'}与椭圆曲线相交的另一点就是P+Q
\textcircled{4}上述几何解释也适用于具有相同x坐标的两个点P-P的情形,此时l与椭圆曲线相交于O
\textcircled{5}为计算点Q的两倍,在Q点作一条切线并找到与椭圆曲线的另一个交点T,则Q+Q=2Q=-T
以上定义的"加法规则"满足加法运算的一般性质,满足交换律,结合律等
(3)加法规则的代数描述:
对于椭圆曲线上不互为逆元的两点P=(x1,y1)Q=(x2,y2)S=P+Q=(x3,y3)由以下规则确定:
x_{3}=\lambda ^{2}-x_{1}-x_{2}
y_{3}=\lambda (x_{1}-x_{3})-y_{1}

式中:
\lambda = \left\{\begin{matrix} \frac{y_{2}-y_{1}}{x_{2}-x_{1}},P\neq Q & \\ \frac{3x_{1}^{2}+a}{2y_{1}}P=Q & \end{matrix}\right.

十、有限域上的椭圆曲线:
1、定义:

有限域GF(p)上的椭圆曲线是指满足方程:y^{2}\equiv x^{3}+ax+b\ (mod\ p)的所有点(x,y)再加上一个无穷远点O构成的集合,其中,a,b,x,y均在有限域GF(p)上取值,p是素数。这里把该椭圆曲线记为E_{p}(a,b)。该椭圆曲线只有有限个点,其点数N由Hasse定理决定。
2、Hasse定理:
E_{p}(a,b)是有限域GF(p)上的椭圆曲线,NE上点的个数,则:
p+1-2\sqrt{p}\leq N\leq p+1+2\sqrt{p}
3、基于有限域椭圆曲线的交换群:
(1)
4a^{3}+27b^{2}\neq 0时,称E_{p}(a,b)是一条非奇异椭圆曲线,对于非奇异椭圆曲线,可以基于集合E_{p}(a,b)定义一个具有重要"加法规则"的交换群,其加法规则与实数域上描述的代数方法一致。
(2)倍点运算定义为重复加法,如4P= P+P+P+P  
(3)
E_{p}(a,b)是一个具有生成元 (无限远点OE_{p}(a,b)中出现最晚的元素)的循环群,也就存在循环群中的离散对数问题
Ex:


十一、椭圆曲线密码学:
1、点P的阶:

椭圆曲线E_{p}(a,b)上点P的阶是指满足:nP=P+P+...P=O的最小正整数,记为ord(P),其中O是无限远点。(无限远点OE_{p}(a,b)中出现最晚的元素)
2、椭圆曲线上的离散对数问题:
设G是椭圆曲线E_{p}(a,b)上的一个循环子群,P是G的一个生成元,Q\in G。已知P和Q,求满足:mP=Q的整数m0\leq m\leq ord(P)-1,称为椭圆曲线上的离散对数问题。计算mP的过程称为点乘运算。
3、椭圆曲线上的ElGamal密码体制:
在使用该密码体制时,首先需要将发送的明文编码为有限域椭圆曲线上的点P_{m}=(x_{m},y_{m}),然后再对点做加密解密变换。
(1)密钥生成:
在椭圆曲线E_{p}(a,b)上选取一个阶位n(n为一个大素数)的生成元P。随机选取整数x(1<x<n),计算Q=xP,公钥为Q,私钥为x
(2)加密:(P_{m}
为明文
随机选取一个整数k1<k<n,计算C_{1}=kPC_{2}=P_{m}+kQ,(C_{1},C_{2}都是有限域椭圆曲线上的点)则密文c=(C_{1},C_{2})
(3)解密:
计算:C_{2}-xC_{1}=P_{m}+kQ-xkP=P_{m}+kxP-xkP=P_{m}
攻击者想要从c=(C_{1},C_{2})计算出P_{m},就必须知道k。而要从PkP中计算出k将面临求解椭圆曲线上的离散对数问题。

十二、SM2公钥加密算法:
1、符号:
A,B
:使用公钥密码系统的两个用户;
a,bF_{q}中的元素,它们定义了F_{q}上的一条椭圆曲线E
d_{B}:用户B的私钥;
P_{B}:用户B的公钥;
E(F_{q})F_{q}上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合;
\#E(F_{q})E(F_{q})上点的数目,称为E(F_{q})的阶;
F_{q}:包含q个元素的有限域;
G:椭圆曲线的一个基点,其阶为素数;
Hash( ):密码杂凑函数;
H_{v}():消息摘要长度为v比特的密码杂凑函数;
KDF():密码派生函数;
M:待加密的消息;
M^{`}  :解密得到的消息;
n:基点G的阶,(n\#E(F_{q})的素因子);
O:椭圆曲线的特殊点,是椭圆曲线加法群的单位元;
q:有限域F_{q}中元素的数目;
x\parallel yxy的拼接,其中x,y可以是比特串或字节串;
\left [ k \right ]P:椭圆曲线上点Pk倍点,k是正整数;
\left \lceil x \right \rceil:顶函数;
\left \lfloor x \right \rfloor:底函数;
2、基于素数域F_{p}的SM2算法参数:(SEED(种子)和a,b(曲线)的产生算法略)
(1)F_{p}的特征p:为m比特长的素数p,要尽可能大,通常选择160比特大小;
(2)长度不小于192比特的比特串:SEED
(3)F_{p}上的两个元素a,b,满足4a^{3}+27b^{2}\neq 0,定义:E(F_{p}):y^{2}=x^{3}+ax+b(mod\ p)
(4)基点:G=(x_{G},y_{G})\in E(F_{p}),G\neq O
(5)G的阶nm比特长的素数,满足n>2^{191}n>4\sqrt{p}
(6)h=\frac{\#E(F_{p})}{n}称为余因子,其中\#E(F_{q})是 E(F_{q})上点的数目;
3、基于素数域F_{p}的SM2算法描述:
(1)SM2密钥产生:
私钥:
接收方B的密钥取为\left \{ 1,2,...n-1 \right \}的一个随机数d_{B},记为d_{B}\leftarrow _{R}\left \{ 1,2,...,n-1 \right \},其中n是基点G的阶。
公钥:B的公开钥取为椭圆曲线上的点:P_{B}=d_{B}G,其中G=(x_{G},y_{G})是基点
(2)SM2加密算法:(椭圆曲线系统参数,长度为klen比特的消息M,公钥P_{B})
\textcircled{1}选择随机数k\leftarrow _{R}\left \{ 1,2,...,n-1 \right \}
\textcircled{2}计算椭圆曲线点C_{1}=kG=(x_{1},y_{1}),将(x_{1},y_{1})表示为比特串;
\textcircled{3}计算椭圆曲线点S=hP_{B},若S是无穷远点,则报错并退出;
\textcircled{4}计算椭圆曲线点kP_{B}=(x_{2},y_{2}),将(x_{2},y_{2})表示为比特串;
\textcircled{5}计算t=KDF(x_{2}\parallel y_{2},klen),若t为全0的比特串,则返回\textcircled{1}
\textcircled{6}计算C_{2}=M\oplus t(异或运算);
\textcircled{7}计算C_{3}=Hash(x_{2}\parallel M\parallel y_{2})
\textcircled{8}输出密文:C=(C_{1},C_{2},C_{3})
注:其中第\textcircled{5}KDF(\cdot )是密钥派生函数,其本质上就是一个伪随机数产生函数,用来产生密钥。建议使用哈希函数SM3,第\textcircled{7}步Hash函数也建议使用哈希函数SM3
(3)SM2解密算法:(椭圆曲线系统参数,密文C=C_{1}\parallel C_{2}\parallel C_{3},私钥d_{B}
\textcircled{1}C中取出比特串C_{1},将C_{1}表示为椭圆曲线上的点,验证C_{1}是否满足有椭圆曲线方程,若不满足则报错并退出;
\textcircled{2}计算椭圆曲线点S=hC_{1},若S是无穷远点,则报错并退出;
\textcircled{3}计算d_{B}C_{1}=(x_{2},y_{2}), 将(x_{2},y_{2})表示为比特串;
\textcircled{4}计算t=KDF(x_{2}\parallel y_{2},klen),若t为全0的比特串,则返回报错并退出;
\textcircled{5}C中取出比特串C_{2},计算M^{`}=C_{2}\oplus t
\textcircled{6}计算u=Hash(x_{2}\parallel M^{`}\parallel y_{2}) ,从C中取出比特串C_{3},若u\neq C_{3},则报错并推出;
\textcircled{7}输出明文M^{`}

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值