04密码学与网络安全第四讲.docx

上传人:b****7 文档编号:23377293 上传时间:2023-05-16 格式:DOCX 页数:15 大小:207.06KB
下载 相关 举报
04密码学与网络安全第四讲.docx_第1页
第1页 / 共15页
04密码学与网络安全第四讲.docx_第2页
第2页 / 共15页
04密码学与网络安全第四讲.docx_第3页
第3页 / 共15页
04密码学与网络安全第四讲.docx_第4页
第4页 / 共15页
04密码学与网络安全第四讲.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

04密码学与网络安全第四讲.docx

《04密码学与网络安全第四讲.docx》由会员分享,可在线阅读,更多相关《04密码学与网络安全第四讲.docx(15页珍藏版)》请在冰豆网上搜索。

04密码学与网络安全第四讲.docx

04密码学与网络安全第四讲

 

密码学与网络安全

第四讲密码学基础(三)

 

⏹讨论议题

•密钥分配

•公钥密码算法

–Diffie-Hellman密钥交换算法

–背包算法

–RSA算法

–EIGamal算法

–椭圆曲线密码算法ECC

⏹密钥分配(KeyDistribution)

建立密钥分本协议必须考虑两个因素:

1)传输量和存储量就尽可能的小;

2)每一对用户U和V都能独立计算一个秘密密钥。

对于通信方A和B来说密钥分配方式由以下几种方式:

1)A选择密钥并手工传递给B;

2)第三方C选择密钥分别手工传递给A,B;

3)用A、B原有共享密钥传送新密钥(采用旧密作用于+新密钥方式);

4)与A、B分别有共享密钥的第三方C的加密连接,C就可以用加密连接传送新密钥给A和/或B。

•N个用户集需要N(N-1)/2个共享密钥。

简单的密钥分配:

1)A产生公/私钥对{PUa,PRa}并将PUa和其标识IDa的消息发送给B;

2)B产生秘密钥KS,并用A的公钥对KS,加密后发送给A;

3)A计算D(PUaE(PUa,KS)得出秘密钥KS。

因为只有A能解密该消息,只有A和B知道KS;

4)A丢掉PUa,PRa,B丢掉PUa。

A和B可以用传统的密码和会话密钥KS安全通信。

●KeyDistributionCenter密钥分发中心

●问题的提出

1)密钥管理量的困难

传统密钥管理:

两两分别用一对密钥时,则n个用户需要C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空间急剧增大。

如:

n=100时,C(100,2)=4,995

n=5000时,C(5000,2)=12,497,500

(2)数字签名的问题

传统加密算法无法实现抗抵赖的需求。

密钥分发

1)每个用户与KDC有共享主密钥(MasterKey);

2)N个用户,KDC只需分发N个MasterKey;

3)两个用户间通信用会话密钥(SessionKey);

(会话密钥:

端系统之间的通信使用一个临时的密钥进行加密,这个密钥叫会话密钥)

4)用户必须信任KDC;

5)KDC能解密用户间通信的内容

⏹公开密钥密码起源

1)公钥密码又称为双钥密码和非对称密码,是1976年由Diffie和Hellman在其“密码学新方向”一文中提出的,见划时代的文献:

W.DiffieandM.E.Hellman,NewDirectrionsinCryptography,IEEETransactiononInformationTheory,V.IT-22.No.6,Nov1976,PP.644-654;

2)RSA公钥算法是由Rivest,Shamir和Adleman在1978年提出来的,CommunitionsoftheACM.Vol.21.No.2.Feb.1978,PP.120-126

⏹公开密钥密码的重要特性

1.加密与解密由不同的密钥完成;

加密:

X→Y:

Y=EKU(X);加密密钥是公开的;

解密:

Y→X:

X=DKR(Y)=DKR(EKU(X));解密密钥是保密的;

2.知道加密算法,从加密密钥得到解密密钥在计算上是不可行的;

3.两个密钥中任何一个都可以用作加密而另一个用作解密(不是必须的);

X=DKR(EKU(X))=EKU(DKR(X))

⏹基于公开密钥的加密过程

⏹基于公开密钥的鉴别过程

⏹用公钥密码实现保密

•用户拥有自己的密钥对(KU,KR);

•公钥KU公开,私钥KR保密;

•A→B:

Y=EKUb(X)

•B:

DKRb(Y)=DKRb(EKUb(X))=X

⏹用公钥密码实现鉴别

•条件:

两个密钥中任何一个都可以用作加密而另一个用作解密

•鉴别:

A→ALL:

Y=EKRa(X)

ALL:

DKUa(Y)=DKUa(EKRa(X))=X

⏹公钥密钥的应用范围

•加密/解密:

发送方用接收方的公开密钥加密报文;

•数字签名(身份鉴别):

发送用自己的私有密钥“签署”报文;

•密钥交换:

两方合作以便交换会话密钥。

⏹基本思想和要求:

•涉及到各方:

发送方、接收方、攻击者;

•涉及到数据:

公钥、私钥、明文、密文;

•公钥算法的条件:

1)产生一对密钥是计算可行的;

2)已知公钥和明文,产生密文是计算可行的;

3)接收方利用私钥来解密密文是计算可行的;

4)对于攻击者,利用公钥来推断私钥是计算不可行的;

5)已知公钥和密文,恢复明文是计算不可行的;

6)(可选)加密和解密的顺序可交换。

这些要求最终可以归结为一个叫陷门单向函数:

单向陷门函数是满足下列条件的函数f:

(1)给定x,计算y=fk(x)是容易的;

(2)给定y,计算x使x=fk-1(y)是不可行的。

(3)存在k,已知k时,对给定的任何y,若相应的x存在,则计算x使fk-1(x)是容易的。

⏹公钥密码基于的数学难题

1)背包问题;

2)大整数分解问题(TheIntegerFactorizationProblem,RSA体制);

3)有限域的乘法群上的离散对数问题(TheDiscreteLogarithmProblem,ElGamal体制);

4)椭圆曲线上的离散对数问题(TheEllipticCurveDiscreteLogarithmProblem,类比的ElGamal体制)

⏹经典例子:

1)Diffie-Hellman密钥交换算法;

2)背包算法;

3)RSA算法;

4)EIGamal算法;

5)椭圆曲线密码算法ECC

一、Diffie-Hellman密钥交换

Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。

简言之,可以如下定义离散对数:

首先定义一个素数p的原根,为其各次幂产生从1到p-1的所有整数根,也就是说,如果a是素数p的一个原根,那么数值

amodp,a2modp,...,ap-1modp

是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。

对于一个整数b和素数p的一个原根a,可以找到惟一的指数i,使得

b=aimodp其中0≤i≤(p-1)

指数i称为b的以a为基数的模p的离散对数或者指数。

该值被记为inda,p(b)。

基于此背景知识,可以定义Diffie-Hellman密钥交换算法。

该算法描述如下:

1、有两个全局公开的参数,一个素数P和一个整数a,a是P的一个原根。

2、假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA

A对XA的值保密存放而使YA能被B公开获得。

类似地,用户B选择一个私有的随机数XB

B对XB的值保密存放而使YB能被A公开获得。

3、用户A产生共享秘密密钥的计算方式是K=YbXamodp。

同样,用户B产生共享秘密密钥的计算是K=YaXbmodp。

这两个计算产生相同的结果:

K=(YB)XAmodP

=(aXBmodP)XAmodP

=(aXB)XAmodP(根据取模运算规则得到)

=aXBXAmodP

=(aXA)XBmodP

=(aXAmodP)XBmodP

=(YA)XBmodP

因此相当于双方已经交换了一个相同的秘密密钥。

4、因为XA和XB是保密的,一个敌对方可以利用的参数只有P、a、YA和YB。

因而敌对方被迫取离散对数来确定密钥。

例如,要获取用户B的秘密密钥,敌对方必须先计算

XB=inda,P(YB)

然后再使用用户B采用的同样方法计算其秘密密钥K。

Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:

虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。

对于大的素数,计算出离散对数几乎是不可能的。

下面给出例子。

密钥交换基于素数P=97和97的一个原根a=5。

A和B分别选择私有密钥XA=36和XB=58。

每人计算其公开密钥

YA=536=50mod97

YB=558=44mod97

在他们相互获取了公开密钥之后,各自通过计算得到双方共享的秘密密钥如下:

K=(YB)XAmod97=4436=75mod97

K=(YA)XBmod97=5058=75mod97

从|50,44|出发,攻击者要计算出75很不容易。

–下图给出了一个利用Diffie-Hellman计算的简单协议。

用户A用户B

 

`

 

2、Diffie-Hellman密钥交换的攻击

二、背包问题

•背包问题描述:

给定重量分别为a1,a2,…an的n个物品,装入一个背包中,要求重量等于一个给定值那么,究竟是那些物品?

•0-1背包问题:

–给定一个正整数S和一个背包向量A=(a1,…,an),其中ai是正整数,求满足方程

S=∑aixi的二进制向量X=(x1,…,xn)。

1、背包问题用于公钥密码学

•做法:

明文为X,S为密文;

•奥妙在于有两类背包,一类可以在线性时间内求解,另一类则不能;

•把易解的背包问题修改成难解的背包问题;

1)公开密钥使用难解的背包问题;

2)私钥使用易解的背包问题;

2、易解的背包问题——超递增背包

•满足下列条件的背包:

ai>∑aj(j=1,…,i-1),这样的背包也被称为简单背包

•求解:

–从最大的ai开始,如果S大于这个数,则减去ai,记xi为1,否则记xi为0

–如此下去,直到最小的ai

•例如背包序列{2,3,6,13,27,52}:

求解70的背包;

结果为{2,3,13,52};

所以,密文70对应的明文为110101。

3、基于背包问题的公钥密码系统——MH公钥算法

•加密

–将明文分为长度为n的块X=(x1,…,xn)

–然后用公钥A'=(a1',…,an'),将明文变为密文S=E(X)=∑ai'xi

•解密

–先计算S'=w-1Smodm,再求解简单背包问题S'=∑aixi

4、Eaxmple-从私钥计算公钥

•私钥{2,3,6,13,27,52},且n=31,m=105

2*31mod105=62

3*31mod105=93

6*31mod105=81

13*31mod105=88

27*31mod105=102

52*31mod105=37

•公钥{62,93,81,88,102,37}

5、Eaxmple-加密

6、Eaxmple-解密

7、背包密码系统的意义:

1)是第一个公钥密码系统;

2)有较好的理论价值;

3)在实践过程中,大多数的背包方案都已被破解,或者证明存在缺陷。

三、RSA算法

•1977年由RonRivest、AdiShamir和LenAdleman发明,1978年公布

•是一种分组加密算法。

–明文和密文在0~n-1之间,n是一个正整数

•应用最广泛的公钥密码算法

•只在美国申请专利,且已于2000年9月到期

1、RSA算法描述

RSA加、解密算法(1978Rivest,Shamir,Adelman)

•分组大小为k,2k

•公开密钥n(两素数p和q的乘积)(推荐p,q等长)

e(与(p-1)(q-1)互素)

ed≡1(mod(p-1)(q-1))

•私人密钥d(e-1mod(p-1)(q-1))

•加密c=memodn

•解密m=cdmodn

2、RSA密钥生成原理

3、RSA密码体制的实现(p139)

实现的步骤如下:

Bob为实现者

(1)Bob寻找出两个大素数p和q

(2)Bob计算出n=pq和ϕ(n)=(p-1)(q-1).

(3)Bob选择一个随机数e(0

(4)Bob使用辗转相除法计算d=e-1(modϕ(n))

(5)Bob在目录中公开n和e作为她的公开钥。

选好这些参数后,将明文划分成块,使得每个明文报文P长度m满足0

加密P时,计算C=Pe(modn),解密C时计算P=Cd(modn)。

由于模运算的对称性,可以证明,在确定的范围内,加密和解密函数是互逆的。

为实现加密,需要公开(e,n),为实现解密需要(d,n)。

4、example

(1)若Bob选择了p=101和q=113

(2)那么,n=11413,ϕ(n)=100×112=11200;

(3)然而11200=26×52×7,一个正整数e能用作加密指数,当且仅当e不能被2,5,7所整除。

假设Bob选择了e=3533,

(4)那么用Euclidean算法将求得:

d=e-1≡6597(mod11200),于是Bob的解密密钥d=6597.

(5)Bob在一个目录中公开n=11413和e=3533

(6)现假设Alice想发送明文9726给Bob,她计算:

97263533(mod11413)=5761,且在一个信道上发送密文5761。

(7)当Bob接收到密文5761时,他用他的秘密解密指数(私钥)d=6597进行解密:

57616597(mod11413)=9726

5、实现要求

若使RSA安全,p与q必为足够大的素数,使分析者没有办法在多项式时间内将n分解出来。

建议选择p和q大约是100位的十进制素数。

模n的长度要求至少是512比特。

EDI攻击标准使用的RSA算法中规定n的长度为512至1024比特位之间,但必须是128的倍数。

国际数字签名标准ISO/IEC9796中规定n的长度位512比特位。

至1996年,建议使用768位的模n。

6、素数的选取

•为了抵抗现有的整数分解算法,对RSA模n的素因子p和q还有如下要求:

(1)|p-q|很大,通常p和q的长度相同;

(2)p-1和q-1分别含有大素因子p1和q1

(3)P1-1和q1-1分别含有大素因子p2和q2

(4)p+1和q+1分别含有大素因子p3和q3

7、加密指数e的选取

•为了提高加密速度,通常取e为特定的小整数,如EDI国际标准中规定e=216+1,

ISO/IEC9796中甚至允许取e=3。

这时加密速度一般比解密速度快10倍以上。

e=216+1优于e=3之处在于它能够抵抗对RSA的小加密指数攻击

8、RSA加密算法的缺点

  1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

  2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。

  3)速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

9、已公开的的攻击方法

  针对RSA最流行的攻击一般是基于大数因数分解。

1999年,RSA-155(512bits)被成功分解,花了五个月时间和224CPUhours在一台有3.2G中央内存的CrayC916计算机上完成。

  2002年,RSA-158也被成功因数分解。

Reference

•书

–WilliamStallings,Cryptographyandnetwork

security:

principlesandpractice,SecondEdition.

–BruceShneier,Appliedcryptography:

protocols,

algorithms,andsourcecodeinC,SecondEdition.

•文章

–密码学的新方向

•Web站点

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1