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

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

什么是公鑰加密?

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

什么是加密密鑰?

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

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

純文本+密鑰=密文:

你好+ 2jd8932kd8 = X5xJCSycg14 =

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

X5xJCSycg14 = + 2jd8932kd8 =你好

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

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

公鑰加密如何運作?

對于初學者來說,公鑰加密似乎很復雜;幸運的是,一位名為 Panayotis Vryonis 的作者做過一個比喻,大致如下。

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

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

A.鎖定,鑰匙一直旋轉到左側

B.解鎖,鑰匙旋轉到中間。

C.鎖定,鑰匙一直旋轉到右側。

微信圖片_20210324115820.png

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

1號鑰匙只能向左轉

2號鑰匙只能向右轉

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

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

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

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

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

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

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

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

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

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

立即登錄,閱讀全文
版權說明:
本文內容來自于Cloudflare,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家