什么是公钥加密?说明结构与RSA的计算方法

2024-04-02分类:区块链技术 阅读(

在前述章节中,以传送者与接收者持有相同密钥的加密方式为前提,说明了替换式密码。

此原理即是当文字转变为密码的时候,只要双方持有相同的密钥,便可将密码正确破解恢复。

但是其中存在着一个问题,即是一旦不慎泄漏密钥,第三者就能够解读密码。

由于至少会将密钥资讯以普通文字(尚未加密的文字)传送给对方一次,因此传送时就有可能遭到窃听导致密钥外流。

另外,当发生战争时,若载有密码表与密钥的船只或飞机落入敌方手中,敌人便可借此破解密码。

公钥加密的方式即是为了解决这样的问题而被研发诞生,在现代也广泛运用于各种场合。

在区块链的技术领域中,公钥加密的角色亦被视为相当重要的技术。

加密公钥虽然公开,但奇怪的是不能被第三者解读

公钥加密的使用方式如图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卡电子证书等领域中。

Tags: