关于安全:加密原理详解对称式加密VS非对称式加密

86次阅读

共计 5070 个字符,预计需要花费 13 分钟才能阅读完成。

一、前言

在理解加密原理前,咱们来看看这样一个故事。

小红和小明是情侣,一天,小红给小明发短信说:“敬爱的,我银行卡上没有钱了,你给我转 1 万块吧。”有过上当受骗经验的人都晓得这有可能是小偷偷了小红手提包,而后拿手机发的短信。不过咱们小明学过加密原理,于是他回复说:“你间接拿我的银行卡刷吧,明码加上咱们第一次约会的日期就是 663156。”很显著,只有小明和小红晓得他们第一次约会是什么时候,假如是 2008 年 4 月 1 号,那么小红就能够依据计算 663156-200841=462315 失去银行卡明码,就能够生产了。

这就是加密的实质,将信息与密钥相加失去加密后的信息。只有晓得密钥的人才能解密。

二、什么是秘钥

既然加密须要密钥,那么密钥是什么呢?

密钥是作用于加密时的一串明码,通过密钥进行信息加密,传输,达到接收者和监听者,因为接收者也有密钥,所以接收者能够依据密钥进行解密。从而避免通信信息泄露。

三、什么是对称加密

前言讲的故事就是一个对称式加密,小明和小红都晓得第一次约会的日期。所以传统的对称式加密须要通信单方都保留同一份密钥,通过这份密钥进行加密和解密。所以非对称加密也称为单密钥加密。

对称加密的劣势在于加解密速度快,然而安全性较低,密钥一旦泄露,所有的加密信息都会被破解。同时密钥的传输和窃密也成为难题。为了解决密钥传输的问题,呈现通过密钥替换建设共享密钥的技术。具体如何建设共享密钥呢?咱们往下看。

3.1 建设共享密匙

在小明、小红和小偷的三人世界中,因为小明是学过加密原理的,晓得迪菲–赫尔曼密钥替换(Diffie-Hellman Key Exchange),所以他晓得如何建设共享密钥。

3.1.1 颜料混合花样:

接下来咱们看看如何通过颜料混合花样建设共享密钥吧。

假如在房间中有小明、小红和小偷三个人,每个人各自领有雷同色彩的颜料。在房间的正中间也有这些颜料。接下来,小明要和小红建设共享密钥了。此时,小明对大家说:“我要用蓝色。”而后小明从本人的颜料里抉择了黄色,这个黄色就是小明的私钥,小红和小偷都不晓得。小明将本人的私钥黄色与公钥蓝色混合后,失去了一种不能分解的色彩,咱们就叫“小明 - 蓝色”吧(尽管大家都晓得黄 + 蓝变绿,然而这里咱们为了晓得是谁的混合色,还是以名字加公钥色彩来称说),而后小明将“小明 - 蓝色”颁布了进去。同样,小红听到了小明说用蓝色后,也抉择了本人的私钥红色与公钥蓝色混合,失去了“小红 - 蓝色”并颁布了进去。

此时,房间中小明、小红、小偷三人都晓得了几个信息。

1. 他们都用了蓝色

2. 小明颁布了“小明 - 蓝色”(小红和小偷不晓得是什么颜料与蓝色的混合)

3. 小红颁布了“小红 - 蓝色”(小红和小偷不晓得是什么颜料与蓝色的混合)

接下来,见证奇观的时刻到了,小明拿到“小红 - 蓝色”与本人的私钥“黄色”混合,失去“小红 - 蓝色 - 小明”的新颜料。同样的,小红拿到“小明 - 蓝色”与本人的私钥“红色”混合,失去“小明 - 蓝色 - 小红”。大家发现了吗?“小红 - 蓝色 - 小明”和“小明 - 蓝色 - 小红”是截然不同的色彩。而小偷不晓得小明和小红的私钥色彩,无奈混合出与他们雷同的色彩。

至此,共享密钥建立起来了。在理解了共享密钥的建设过程后,咱们将辞别实体颜料,采纳数字的形式来建设共享密钥。

注:大家可能想到了,小偷能够依据本人的颜料与公钥“蓝色”混合,尝试得出“小明 - 蓝色”和“小红 - 蓝色”。这样的办法称之为穷举法,也就是尝试所有的可能性,进行信息破解,所以加密算法在实践上都是能够通过穷举法破解的,只不过实际上,超级计算机都须要计算万亿年能力穷举出所有可能性。

3.1.2 乘法花样:

首先,咱们假如乘法如同颜料混合一样,是不能分解的,看看如何用乘法与数字建设共享密钥。

小明公开了一个数字 5,而后小明抉择了一个私人数字 4,而后利用乘法将两者混合起来,失去“小明 -5”(20),接下来小红也抉择了一个私人数字 7 失去“小红 -5”(35),小明拿到 35*4=140,小红拿到 20*7=140。共享密钥建立实现。

大家也发现了,小偷晓得 20,35,5 这三个数字后,用除法就能算出小明和小红的私钥。所以,接下来咱们将理解理论应用中的如何应用乘法花样来避免私钥被计算出来的。

3.2 迪菲–赫尔曼密钥替换算法

咱们都晓得幂运算,然而要让计算机计算就比拟难了。所以,咱们会用幂运算作为建设共享密钥的乘法花样。同时,咱们还要理解钟算的原理,这里的钟能够了解成咱们常常看到的时钟,咱们常见的时钟最大是 12,如果以后是 10 点,过了 4 个小时后,就变成了下午 2 点。也就是(10+4)mod12=2。理解了钟算和幂运算后,就开始进入正题吧。

还是小明、小红和小偷的房间,小明申明了钟为 11,幂运算的底为 2,接下来小明和小红别离抉择了本人的私钥 4 和 7。

第一步,小明混合本人的“小明 -11,2”失去,小红混合本人的“小红 -11,2”失去。

第二步,小明拿到“小红 -11,2”(7)进行计算,小红拿到“小明 -11,2”(5)进行计算。

大家留神到了吗,小明和小红建设了共享密钥 3,而小偷无奈依据已知的 11,2,5,7 这几个数字计算出密钥或小明小红的私钥。有了共享密钥后,小明和小红就能够平安进行加密传输了。

3.3 AES 对称加密过程

AES 的全称是 Advanced Encryption Standard,是最风行的对称加密算法,其加解密速度快。AES 反对 128 位,192 位,256 位三种长度的密钥,密钥越长安全性越高。AES 加密时会把明文切分成许多小块的明文,而后对每块明文独自加密,将加密后的密文传送进来,接管方再将密文切块解密,失去明文。

如下图所示:

上一步中小明和小红曾经协商好了密钥 3。接下来就能够通过对称加密进行通信了。

在小明、小红和小偷的房间中,小明想把明码“462315”通知小红,于是:

第一步:将明码依照一位的长度进行切分(理论中通常按 128 位进行切分);就变成了“4”“6”“2”“3”“1”“5”;

第二步:对每块明文通过密钥 3 进行加密,后果就是“795648”,而后小明通知小红和小偷:“我的明码是 795648”;

第三步:小红拿到密文后,对密文进行切块,对每块通过密钥 3 进行解密,就失去了正确的明码“462315”,而小偷因为不晓得密钥,就无奈解密出正确的信息。

四、什么是非对称加密

在对称加密中,加密和解密应用的是同一份密钥。所以,在非对称加密中,加密和解密应用的是不同的密钥。非对称加密中的密钥分为公钥和私钥。公钥顾名思义就是公开的,任何人都能够通过公钥进行信息加密,然而只有用户私钥的人才能实现信息解密。非对称加密带来了一个益处,防止了对称式加密须要传输和保留同一份密钥的苦楚。

当初最风行的非对称加密算法就是 RSA 加密算法,具体是怎么做的呢,咱们持续往下看。

4.1 AES 对称加密过程

维基百科是这么解释的:RSA 加密算法是一种非对称加密算法,在公开密钥加密和电子商业中被宽泛应用。RSA 是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在 1977 年一起提出的。过后他们三人都在麻省理工学院工作。RSA 就是他们三人姓氏结尾字母拼在一起组成的。

后面咱们讲了如何通过钟算和幂函数建设不可逆(计算机能够通过穷举法计算出私钥,理论场景中就算是超级计算机也要计算几万亿年之久)的共享密钥。因为小红是小明的女朋友,小今天天在小红背后给她讲 RSA 加密算法的原理,所以小红也晓得怎么得出本人的公钥和私钥。接下来咱们一起跟着小红的脚步,看看 RSA 加密的公钥和私钥是怎么计算出来的。

第一步:小红抉择了两个很大的质数 p 和 q,这里为了便于计算,抉择 2 和 11;

第二步:计算 p 和 q 的乘积 n =p*q=2*11=22;

第三部:计算 n 的欧拉函数 φ(n)=(p-1)*(q-1)=10;

第四步:抉择一个小于 φ(n)且与 φ(n)互质的整数 e,{1,3,7,9},这里抉择 e =7;

第五步:计算 e 对于 φ(n)的模反元素(ed mode φ(n) = 1)d,d=3

到这里小红就失去了他本人的公钥 (n,e) 和私钥(n,d)。其中 n 就是钟大小,e 和 d 就是幂函数的幂。接下来就通过计算出来的公钥和私钥进行数据的加解密。

还是小明、小红和小偷三个人,小红对大家说,我的公钥是(22,7),小明晓得了小红的公钥后,想讲本人的信息“14”通知小红,于是就用小红公开的公钥进行加密。

具体步骤如下:

第一步:小明依据要加密的信息 14 进行计算,失去加密后的信息 20,而后将 20 通知小红和小偷;

第二步:小红有本人的私钥,将加密信息 20 进行解密,,失去了小明想传递给小红的信息。而小偷呢,晓得 22,7,20,然而不晓得小红的密钥(22,3),无奈解密出正确的信息。

RSA 加密算法在数字签名中也施展着微小的作用,假如小偷能够混充小红,说小红的公钥是(22,9),而小明不晓得是小偷假扮的,依照小偷的公钥加密后,后果被小偷解密了。数字签名的作用就是避免信息被篡改,小红说她的公钥是(22,7)的同时,应用私钥给这段信息(通常应用 MD5 值计算签名)加上签名,小明失去公钥(22,7)和签名 13,小明拿到签名后利用公钥计算出信息是否被篡改。

五、加密的理论作用

本文应用的很小的数来进行加密原理的解说,为了是读者能够不便进行计算。在理论应用中(n,e)都是特地大的数,其中 n 的长度都在 768 以上,1024 长度被认为是根本平安的。

(1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413=
 
33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489
 
×
 
36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917)

六、总结

最初总结一下,首先咱们通过一个欺骗短信的例子,引出了加密的原理就是信息 + 密钥,密钥就是对信息进行加解密的一串数字。而后通过颜料混合花样形象的演示了如何建设共享密钥。在应用乘法建设共享密钥的过程中,学习了钟算和幂运算,接着咱们理解了 RSA 加密算法的过程,通过两个质数生成公钥和私钥,最初,咱们依据公钥进行信息加密,再通过私钥实现信息解密。

七、写在最初

或者看到这里,大家心里还有许多纳闷。为什么小明和小红建设共享密钥时,通过几次幂运算和钟算就能失去一样的共享密钥?为什么 RSA 加密算法要用两个质数?为什么通过公钥加密的信息能够通过私钥解开?

加密算法的背地,是一道道迷人的数学难题,而 RSA 加密算法之所以被宽泛使用,是因为一个名为整数合成的古老数学问题,你能够轻易找到两个很大的质数相乘失去一个后果 n,然而要将这个后果 n 合成回两个质数就变得极其艰难。只管这个所谓的“整数合成”问题被钻研了数个世纪,还没人能找到一个足够高效的通用办法解决它,并对规范 RSA 钟大小造成危害。

数学史中充斥了未解决的问题,只管这些迷人的问题不足任何理论利用,却单靠其美学特质就吸引了数学家进行深刻探索。令人颇感诧异的是,许多这类迷人但显然无用的问题起初都有了很大的实用价值,这一价值只有在问题被钻研数个世纪后才得以破解。整数合成这一问题由来已久。对其最早的庄重钻研仿佛是在 17 世纪,由数学家费马(Fermat)和梅森(Mersenne)进行的。欧拉(Euler)和高斯(Gauss)两位数学“泰斗”也在接下来的世纪里对这一问题做出了奉献。但直到公钥加密于 20 世纪 70 年代被创造,合成大数字的艰难才成为一个理论利用的要害。

八、参考资料

1.《RSA 算法原理》

2.《RSA 加密》

3.《RSA 加密算法》

4.《扭转将来的九大算法》

作者:vivo 互联网服务器团队 -Deng Qian

正文完
 0