【网络安全技术】公钥密码体制

一、两种基本模型

1.加密模型

A要给B发信息,那就拿B的公钥加密,传给B,B收到后会拿他自己的私钥解密得到明文。

2.认证模型(数字签名)

A用自己的私钥加密,传输之后,别人拿A的公钥解密,如果解密成功,那就可以说明这条信息是A发的。

二、公钥密码体制数学基础

1.单向函数

1)给定x,正着计算y=f_{k}(x)是容易的

2)给定y,逆着计算y=f{_{k}}^{-1}(x)是不可行的

就比如说大整数分解,在数很大的时候,要遍历所有所有比它小的素数,这被认为是困难的。

三、Diffie-Hellman

这个和上面提到的标准的公钥模型有区别,这个算法简单来说,就是双方通过一个公共的信息(q,a),计算得到一个只有他们两人知道的共享密钥k。

1.首先a和b共享两个全局参数q和a,q是个素数,a是q的本原根。

本原根:a是q的本原根,那么a的1到q-1次方分别模q,分别得到不同的数。

2.然后a和b分别各自选一个数X_{A}X_{B},都小于q,作为各自的私钥。

3.他们分别用X_{A}X_{B}算各自的公钥,公钥=a的密次幂模q

Y_{A}=a^{X_{A}}\ mod\ qY_{B}=a^{X_{B}}\ mod\ q,并发送给对方,这个计算就相当于单向函数中的正着算,被认为是容易的。

4.a和b收到对方的发来的公钥后,计算共享密钥,共享密钥=公共的密次幂模q

对于a来说,K=(Y_{B})^{X_{A}}\ mod\ q

对于b来说,K=(Y_{A})^{X_{B}}\ mod\ q 

这两个算出来的k是相等的,双方就有了共享密钥,这个密钥可以用来例如作为AES的密钥。

四、中间人攻击Man in the Middle attack

先看左半边,a选定私钥之后,计算自己的公钥发给b,这个信息被大司截获,大司选定一个私钥,用这个私钥计算公钥,还给a。a用大司给他的公钥计算出k2来,之后就用k2来加密例如AES了。

然后右半边,b选定私钥之后,计算自己的公钥发给a,大司也把他截获了,自己选定另一个私钥,计算公钥还给b。b拿大司给他的公钥算出来k1,之后就用k1来加密了。

这样,大司要计算k1=b的公钥的密次幂,k2=a的公钥的密次幂,所以它是有k1和k2的,之后a和b所有的数据通信对大司来说都是透明的了。

这个问题的根本在于,a和b分别不能知道收到的公钥是否是对方发来的,如果a能验证收到的公钥是b发来的,b反之也可以,那么就不会被大司截胡了,因为大司发来的一验证就直接露馅了。

五、RSA算法

这个算法是生成自己的私钥和公钥的算法,就像一开始提到的标准的公钥密码体制,生成自己的私钥和公钥后,别人要给自己发消息,就拿自己的公钥加密,自己收到后拿自己的私钥解密。

1.密钥产生流程

1)选p,q两个不相等的素数。

2)算n=p*q。

3)算phi(n)=(p-1)*(q-1)。

4)选一个和phi(n)互质的数e,1<e<phi(n)

5)拿phi(n)和e算d,de和1模phi(n)同余,简单来说就是d*e模phi(n)=1。这样能算出很多个d,取最小的那个。

6)这样就有了公钥PK={e, n}, 私钥SK={d, n}

别人有了公钥,e和n是算不出来d的,因为d是拿e和phi(n)算的,要求phi(n)就得分解n,这被认为是不可能的。

2.加密:

1)将明文转换为一个数M,M<n

2)密文C=M^{e}\ mod\ n

3.解密:

明文M=C^{d}\ mod\ n

4.与对称加密结合

RSA加密速度比DES慢1000倍,那么加密大量明文就不适用。

考虑用RSA加密密钥,再用对称加密例如AES加密。

考虑以下场景,a要和b通信,那么a就通过RSA生成自己的公私钥,b生成AES加密用的密钥。b将密钥用a的公钥加密,发送给a,a用自己的私钥解密,拿到密钥。

之后双方通信就有共享密钥了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值