Cloudflare:什么是公鑰加密?什么是加密密鑰?

來源: Cloudflare
作者:Cloudflare
時(shí)間:2021-03-24
17355
公共密鑰加密是一種使用兩個(gè)不同的密鑰對(duì)數(shù)據(jù)進(jìn)行加密,并讓其中一個(gè)密鑰(公共密鑰)可供任何人使用的方法。另一個(gè)密鑰稱為私鑰。用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰加密的數(shù)據(jù)只能用公鑰解密。公鑰加密也稱為非對(duì)稱加密。它被廣泛采用,尤其是對(duì)于 TLS SSL ,這使得 HTTPS 成為可能。

什么是公鑰加密?

公共密鑰加密是一種使用兩個(gè)不同的密鑰對(duì)數(shù)據(jù)進(jìn)行加密,并讓其中一個(gè)密鑰(公共密鑰)可供任何人使用的方法。另一個(gè)密鑰稱為私鑰。用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰加密的數(shù)據(jù)只能用公鑰解密。公鑰加密也稱為非對(duì)稱加密。它被廣泛采用,尤其是對(duì)于 TLS / SSL ,這使得 HTTPS 成為可能。

什么是加密密鑰?

在密碼學(xué)中,密鑰是用于打亂數(shù)據(jù)以便使其顯得隨機(jī)的一條信息;它通常是一個(gè)很大的數(shù)字,或者是一串?dāng)?shù)字和字母。當(dāng)使用密鑰將未加密的數(shù)據(jù)(也稱為明文)放入加密算法中時(shí),明文會(huì)從另一面看似隨機(jī)數(shù)據(jù)。但是,任何擁有正確密鑰解密數(shù)據(jù)的人都可以將其放回純文本格式。

例如,假設(shè)我們有一條純文本消息,”你好“, 然后用密鑰*加密;假設(shè)密鑰是" 2jd8932kd8“。使用此密鑰加密后,簡(jiǎn)單的一句”你好“現(xiàn)在會(huì)成為密文 "X5xJCSycg14 = " ,這似乎是隨機(jī)的垃圾數(shù)據(jù)。但是,通過使用相同的密鑰對(duì)其進(jìn)行解密,我們將能轉(zhuǎn)回成”你好" 。

純文本+密鑰=密文:

你好+ 2jd8932kd8 = X5xJCSycg14 =

密文+密鑰=純文本明文:

X5xJCSycg14 = + 2jd8932kd8 =你好

(這是對(duì)稱加密的示例,其中僅使用一個(gè)密鑰。)

*使用Blowfish算法、CBC模式和Base64編碼。

公鑰加密如何運(yùn)作?

對(duì)于初學(xué)者來說,公鑰加密似乎很復(fù)雜;幸運(yùn)的是,一位名為 Panayotis Vryonis 的作者做過一個(gè)比喻,大致如下。

想象一下,鮑勃和愛麗絲這兩個(gè)人用一個(gè)帶鎖的箱子來回運(yùn)送文件。通常來說鎖只有兩種狀態(tài):上鎖和解鎖。任何有鑰匙的人都可以打開上鎖的箱子,反之亦然。當(dāng)鮑勃鎖上箱子并將其運(yùn)送給愛麗絲的時(shí)候,他知道愛麗絲可以使用復(fù)制的鑰匙來解開箱子。從本質(zhì)上講,這就是所謂的對(duì)稱加密的工作方式:一個(gè)秘鑰同時(shí)用于加密和解密,對(duì)話的雙方都使用相同的密鑰。

現(xiàn)在,想象一下,鮑勃制作了一種帶有特殊鎖的行李箱。此鎖具有三個(gè)狀態(tài),而不是兩個(gè):

A.鎖定,鑰匙一直旋轉(zhuǎn)到左側(cè)

B.解鎖,鑰匙旋轉(zhuǎn)到中間。

C.鎖定,鑰匙一直旋轉(zhuǎn)到右側(cè)。

微信圖片_20210324115820.png

該鎖帶有兩把鑰匙,而不是一把鑰匙:

1號(hào)鑰匙只能向左轉(zhuǎn)

2號(hào)鑰匙只能向右轉(zhuǎn)

這意味著如果后備箱被鎖定并且鑰匙轉(zhuǎn)到位置A,只有2號(hào)鑰匙可以通過向右轉(zhuǎn)到位置B(解鎖)來解鎖。如果行李箱鎖定在位置C,則只有1號(hào)鑰匙可以通過將鎖向左轉(zhuǎn)動(dòng)到位置B來解鎖。

換言之,兩把鑰匙任選其一都可以鎖定箱子,但是一旦鎖定后,只有另一把鑰匙可以解鎖箱子。

現(xiàn)在,假設(shè)鮑勃制作了幾十個(gè)只能向右旋轉(zhuǎn)的2號(hào)鑰匙,然后為他認(rèn)識(shí)的并且想要這把鑰匙的每個(gè)人都配了一把,并將其作為他的公共鑰匙。而他為自己保留了1號(hào)鑰匙,作為他的私鑰。這有什么作用?

愛麗絲可以通過箱子給鮑勃鮑勃發(fā)送機(jī)密數(shù)據(jù),并確信只有鮑勃可以將其解鎖。 一旦愛麗絲用從左到右旋轉(zhuǎn)的公共鑰匙鎖定了箱子,只有可以從右到左旋轉(zhuǎn)的鑰匙才能解鎖它。這意味著只有鮑勃的私鑰才能對(duì)其進(jìn)行解鎖。

如果箱子是用鮑勃自己的私鑰來上鎖,那愛麗絲就能確信這個(gè)箱子的確來自鮑勃而不是有人冒充。 只有一把鑰匙可以讓箱子鎖定在位置A或者說能向左旋轉(zhuǎn),那就是鮑勃的私鑰。的確,任何人都可以通過只能向右旋轉(zhuǎn)的公共鑰匙來解鎖,但這可以保證箱子的確來自鮑勃。

以此類推,在這個(gè)比喻中,純文本信息就是箱子,密鑰就等同于實(shí)體鑰匙,這就是公共密鑰加密的運(yùn)作方式。只有私鑰的所有者才能加密數(shù)據(jù),讓公鑰對(duì)其進(jìn)行解密;同時(shí),任何人都可以使用公鑰加密數(shù)據(jù),但是只有私鑰的所有者才能解密它。

因此,任何人都可以安全地將數(shù)據(jù)發(fā)送給私鑰所有者。此外,任何人都可以驗(yàn)證從私鑰所有者那里收到的數(shù)據(jù)確實(shí)是來自該人而非冒充者。

TLS / SSL如何使用公共密鑰加密?

公鑰加密對(duì)于在互聯(lián)網(wǎng)(通過 HTTPS)建立安全通信非常有用。網(wǎng)站公開共享的SSL/TLS 證書包含公鑰,而私鑰安裝在源站,并由網(wǎng)站所“保有"。

TLS握手使用公共密鑰加密技術(shù)對(duì)源站的身份進(jìn)行身份驗(yàn)證,并交換用于生成對(duì)話密鑰的數(shù)據(jù)。諸如RSA或Diffie-Hellman之類的密鑰交換算法,使用公私鑰對(duì)來協(xié)商會(huì)話密鑰,一旦握手完成,會(huì)話密鑰將用于對(duì)稱加密。客戶端和服務(wù)器能夠?yàn)槊總€(gè)通信會(huì)話約定新的會(huì)話密鑰,從而即使惡意角色識(shí)別或竊取了會(huì)話密鑰之一也無法解密通信。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Cloudflare,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家