币圈活动项目早知道今日讯:在前述章节中,以传送者与接收者持有相同密钥的加密方式为前提,说明了替换式密码。
此原理即是当文字转变为密码的时候,只要双方持有相同的密钥,便可将密码正确破解恢复。
但是其中存在着一个问题,即是一旦不慎泄漏密钥,第三者就能够解读密码。
由于至少会将密钥资讯以普通文字(尚未加密的文字)传送给对方一次,因此传送时就有可能遭到窃听导致密钥外流。
另外,当发生战争时,若载有密码表与密钥的船只或飞机落入敌方手中,敌人便可借此破解密码。
公钥加密的方式即是为了解决这样的问题而被研发诞生,在现代也广泛运用于各种场合。
在区块链的技术领域中,公钥加密的角色亦被视为相当重要的技术。
加密公钥虽然公开,但奇怪的是不能被第三者解读
公钥加密的使用方式如图1所示。
接收密码的人会准备自己专属的公钥(a,b)与密钥(p,q),并使用电脑先行计算,公钥会公布于网站页面等处,密钥则作为自己的机密资讯。
公钥与密钥为配对组合,如未使用相符的密钥,就无法透过公钥破解加密的文字。
如欲制作密码并传送给对方,就必须复制并利用对方公开的公钥(a,b)制作密码,再将该密码传送给对方。
对方在接收讯息之后,可透过自己才有的密钥(p,q)进行计算,进而将密码破解恢复成原本的文字来阅读。
既然已经得知了密钥,那么是否可以使用该密钥来做反向计算并破解密码呢?
若能够如此,第三者便能够轻易破解密码,因此发明了被称为RSA的不可思议演算法,此方法将无法进行反向计算。
其基本的原理在于,虽然对两个质数(1以及其他除了该数字本身以外无法除尽的整数)进行乘法相当简单,但无论如何尝试,却都无法透过反向计算得出「乘法的结果数值」(因需要耗费庞大的计算时间,故难以实际计算完成)。
多亏此一发明,用于解密的密钥泄漏给他人的可能性能降至为零,即使密码被窃听也无需担心内容遭到破解。
公钥加密「RSA」的计算方式示意图
有鉴于RSA密码的计算方式极为复杂,以下将以图解加以说明。
(针对计算方式的细节,建议可参考网站上的其他说明页面。)
利用RSA密码将原文的文字编码(整数值)进行多次乘法,再将除不尽的数值(余数)除以适当数值,并以此作为密码的文字编码。
图2即是对原文的文字编码直接透过余数计算来进行加密。
整数值文字65代表文字「A」,除以29后得出余数7。
若使用其他的数值、例如41作为除数,则A的余数就会变成24。
当同时出现余数8的时候,将29的余数以文字「B」表示,而41的余数则是文字「Z」。
如此运用余数之后,将无法确认进行除法之前的数值为何。
此处还有一个更有趣的特质,即是在每次计算余数时,若将文字编码的数值进行多次乘法,就会恢复成原本的数字。
由于恢复成原本文字的条件极为复杂,因此将于其它的文献资料中加以说明,在此将先以f代表成立此特质的「某种计算方式」,并在图3解释加密演算的流程。
此特质便是将原文A透过f算法重复计算N次,就会恢复成原文A。
虽然N的次数取决于对f进行余数计算时所使用的数值b,但因b来自于两个质数的乘法结果,故只要不知道这两个质数,就无法算出N的次数。
若两个质数为非常庞大的数值,便会如同先前所述地难以透过b来破解质数。
如此一来N就变成了机密。
(a,b)的两个数字虽然作为公钥而公诸于世,但是b会在f的算式中用于余数计算,而a则是代表重复进行f的次数。
将f算法重复N次就会恢复成原本的文字,但重复a次却会变成杂乱无章的数值而难以理解。
如此也就完成了密码B。
由于无法进行f的反向计算,因此如欲破解密码B,便需要确认计算的次数,并执行共计N次的f算法。
公钥出现的时候也会同时产生密钥(p,q),并能透过此p,q的数值算出剩余的次数。
因为p,q只有密码接收者才会知道,所以第三者无法破解密码。
公钥加密的方式最初是由RSA研发而生,但如今亦有被称为椭圆曲线密码学的其他方式可用。
其目前被广泛运用于网站的SSH连线与IC卡电子证书等领域中。