密码学入门笔记一

密码学入门笔记一

本篇是可汗学院公开课:现代密码学的笔记

公开密匙学

随着通信技术的发展,对信息加密有了要求。问题是A与B之间的消息是公开的,可以被C看到,那么如何做到使C不知道该信息。

1976年Whitefield和Martin提出了一个基于单向函数的方法,叫做Diffie-Hellman key exchange。单向函数指从一侧到另一侧过程简单,反向过程困难的函数。以颜色为例,A,B均有各一种私有颜色a和b,公开传递信息为另一种颜色c与各自私有颜色混合后的颜色,那么A获得b+c后,与自己的颜色a混合,得到a+b+c,同样B也可以得到a+b+c,但C只能获得a+c和b+c。可以看到,这种方法的前提必须是混合颜色很难反向推导出组合的颜色。单向函数的强度取决于反向过程的求解时间。

数学上这类称为离散对数问题(Discrete Logarithm Problem),一个例子是3取幂次后模17这个函数的结果是在0-17上均匀分布,正向很简单,反向用余数求原来的幂次很困难,当数字达几百位时反向就无法求解了。对于这个例子,还是A和B两人,假定A的数字是15,B的数字是13,公共信息是质模数17和生成数3。A给B发的数字是6,B给A发的数字是12,A计算12的15次方模17后的结果为10,同样B用6的13次方模17后也为10。两者均是计算3的15*13次方模17。

RSA加密

前面所说的Diffie-Hellman key exchange需要双方都知道质模数和生成数,会造成很大的额外信息开销。1970年James Elite提出一种公开密匙加密的思路(non secret encryption),不需要密匙交换。还是以颜色为例,假定每种颜色都有互补色,即两者混合后成白色。假设A手中为颜色a1,发给B的是a1的互补色a2,B希望发给A为颜色b,只需要将b与a2混合后得到c发回给A,那么A通过将c与手中的a1混合,便能还原出颜色b。这种方法相当于将密匙分为了两个部分,加密密匙和解密密匙,只需要将加密密匙发送给他人,他人将加密后的信息传送回来即可,而不需要额外发送信息来得到一个公有的密匙。

Cocks发明了一种单向函数(trap door one way function),这种函数正向计算很简单,但反向解码很困难除非有特殊的信息,即trap door。加密方法是将手中数字m取e次方后模N得到c,c、e、N是公开的信息,反推m是很困难的。那么我们需要一个特殊信息d来使得c的d次方模N后可以得到m,即 m e ∗ d   m o d   N = m {m^{e*d} \ mod \ N=m} med mod N=m

为了构造d,我们利用一个函数 ϕ ( n ) {\phi(n)} ϕ(n)为小于等于n的正整数中与n没有公共质因数的数字的数目,以8为例,1,3,5,7与8无公共质因数,所以 ϕ ( 8 ) = 4 {\phi(8) = 4} ϕ(8)=4 ϕ ( n ) {\phi(n)} ϕ(n)有个性质 ϕ ( A B ) = ϕ ( A ) × ϕ ( B ) {\phi(AB)=\phi(A) \times \phi(B)} ϕ(AB)=ϕ(A)×ϕ(B),且对于质数m来说 ϕ ( m ) = m − 1 {\phi(m) = m -1} ϕ(m)=m1。我们只需要取N为两个数百位质数m1和m2的乘积,那么这个只有A知道,可以简单计算出 ϕ ( N ) = ( m 1 − 1 ) ( m 2 − 2 ) {\phi(N)= (m1-1)(m2-2)} ϕ(N)=(m11)(m22)。这个即为我们想要构造的trap door。

欧拉定理表示 m ϕ ( n )   m o d   n = 1 {m^{\phi(n)} \ mod \ n = 1} mϕ(n) mod n=1,其中m与n不能有公共质因数。这等价于 m k ϕ ( n ) + 1   m o d   n = m {m^{k\phi(n)+1} \ mod \ n = m} mkϕ(n)+1 mod n=m,那么就可以得到d的表达式为 d = k ϕ ( n ) + 1 e {d = \frac{k\phi(n)+1}{e}} d=ekϕ(n)+1。当其他人不知道N的因数分解时,反向推导 ϕ ( N ) {\phi(N)} ϕ(N)非常困难。

可以看到这种方法的强度取决于质因数分解的难度。

数字签名和数字证书

前面提到了两种加密的方式,第一种是对称加密算法,加密和解密使用相同的密匙,常见的是DES等,优点是加密速度很快,但安全性很差,第二种是非对称加密算法,加密和解密用不同的密匙,即公匙和私匙,优点是安全性高,缺点是加密速度慢。还有第三种加密算法,是哈希散列算法,将一篇明文印射到固定长度的散列码h,生成其独有的摘要,碰撞概率一般来说非常低,并且这种散列算法是公开的,常用的有MD4,MD5,SHA等。

如果用私匙加密后,就生成了数字签名,将原文和数字签名一起发给对方,对方收到后用公匙解开数字签名,与通过信件hash之后的结果对比,如果一致,表示信件内容未被修改。

那么如果你的信息被人篡改,收到的是一个伪造的公匙,那么他就可以随意伪造信件内容。因此就诞生了数字证书,公证公司用自己的私匙对信件和数字签名一起加密,对方收到后用公证公司的公匙先进行解密核对自己拿到的公匙是不是正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值