信息來(lái)源:企業(yè)網(wǎng)
公共密鑰加密用于網(wǎng)絡(luò)安全,并且在工業(yè)自動(dòng)化領(lǐng)域得到越來(lái)越多的應(yīng)用。
大多數(shù)人都熟悉加密,加密本質(zhì)上涉及到對(duì)數(shù)據(jù)進(jìn)行拼接,并使有意義的數(shù)據(jù)顯示為位、字節(jié)或字符的隨機(jī)序列。
這是一個(gè)簡(jiǎn)單的過(guò)程,通過(guò)這個(gè)過(guò)程對(duì)數(shù)據(jù)進(jìn)行加密、傳輸,然后使用共享私鑰進(jìn)行解密。由于采用相同的密鑰用于加密和解密數(shù)據(jù),因此這被稱為對(duì)稱密鑰加密。另外,由于密鑰對(duì)公眾保密,因此也被稱為私鑰加密。
為什么工業(yè)領(lǐng)域不使用這樣一個(gè)簡(jiǎn)單而安全的方法呢?因?yàn)檫@個(gè)模型有問(wèn)題。發(fā)送方和接收方都必須共享密鑰的副本。如果雙方相距很遠(yuǎn),比如說(shuō)分布在兩個(gè)半球上,那交換密鑰將很困難。
當(dāng)然,發(fā)送方可以將密鑰副本"郵寄"給接收方,但在這個(gè)過(guò)程中可能會(huì)有人攔截該密鑰,為自己制作副本,并開始 "監(jiān)聽" 對(duì)話。而這就是被稱為非對(duì)稱密鑰加密的公鑰加密發(fā)揮作用的地方。
公鑰加密的原理
公鑰加密指的是由對(duì)應(yīng)的一對(duì)唯一性密鑰(即公開密鑰和私有密鑰)組成的加密方法。它解決了密鑰的發(fā)布和管理問(wèn)題,是目前商業(yè)密碼的核心。要解釋公鑰加密,請(qǐng)讓我們以信件和保險(xiǎn)箱為例。
假設(shè)愛(ài)麗絲想給鮑勃寄一封保密的信。她可以把信鎖在保險(xiǎn)箱里,把上鎖的保險(xiǎn)柜寄給鮑勃。鮑勃用鑰匙打開保險(xiǎn)柜,然后就可以看到信。這本質(zhì)上是對(duì)稱 (私鑰) 加密。但是,愛(ài)麗絲和鮑勃如何安全地共享密鑰副本?
愛(ài)麗絲有沒(méi)有辦法在不交換密鑰副本的情況下,安全地把信寄給鮑勃?有的。解決方案包括創(chuàng)建兩個(gè)密鑰,一把是給保險(xiǎn)箱上鎖的公鑰,一把是用于打開保險(xiǎn)箱的私鑰。
繼續(xù)以此為例,鮑勃拿起解鎖的保險(xiǎn)箱,創(chuàng)建了兩把密鑰,一把是私鑰 (他保留的) 和一把公共密鑰 (他寄給了愛(ài)麗絲)。鮑勃接下來(lái)拿著公鑰和空的、解鎖的保險(xiǎn)箱,把它們都郵寄給愛(ài)麗絲。愛(ài)麗絲把她的信放在保險(xiǎn)柜里,然后用鮑勃郵寄的公共秘鑰鎖上保險(xiǎn)柜。愛(ài)麗絲把保險(xiǎn)柜寄回給鮑勃,鮑勃用他的私人密鑰打開保險(xiǎn)柜,看信。假設(shè)有人復(fù)制了鮑勃發(fā)給愛(ài)麗絲的公鑰。他無(wú)法打開保險(xiǎn)柜,也看不了信。鮑勃給愛(ài)麗絲的公鑰只能用來(lái)給保險(xiǎn)柜上鎖,而不能開鎖。
身份驗(yàn)證替代方法
無(wú)論誰(shuí)能訪問(wèn)公鑰,愛(ài)麗絲都可以安全地將她的信發(fā)送給鮑勃。如果查理攔截了公鑰,假裝是愛(ài)麗絲打開安全鎖,這樣他就可以給鮑勃發(fā)送假信息了嗎?這就是公鑰加密的另一個(gè)好處,即身份驗(yàn)證。
鮑勃?jiǎng)?chuàng)建了私鑰和公鑰。但是,為了說(shuō)明身份驗(yàn)證的工作原理,讓我們舉一個(gè)新例子。鮑勃仍然創(chuàng)建私鑰和公鑰。但是,愛(ài)麗絲也創(chuàng)建了自己的私鑰和公鑰。接下來(lái),鮑勃和愛(ài)麗絲交換他們的公鑰。愛(ài)麗絲把她的公鑰寄給鮑勃,鮑勃把他的公鑰寄給了愛(ài)麗絲。和以前一樣,鮑勃把未上鎖的保險(xiǎn)箱發(fā)給愛(ài)麗絲。愛(ài)麗絲把她的信放在保險(xiǎn)柜里,用鮑勃提供的公鑰上鎖。
然而,這一次,愛(ài)麗絲還做了其它事情。她拿著自己的鎖,把它應(yīng)用到保險(xiǎn)柜上,用她創(chuàng)建的私鑰鎖住。愛(ài)麗絲然后把保險(xiǎn)箱寄回給鮑勃。這一次,在鮑勃用他的私鑰打開保險(xiǎn)柜之前,他首先拿了愛(ài)麗絲發(fā)給他的公鑰,并試圖打開愛(ài)麗絲的鎖。如果鮑勃可以使用公鑰打開鎖,這個(gè)鎖是愛(ài)麗絲使用她的私鑰鎖上的,那么鮑勃就知道這封信來(lái)自愛(ài)麗絲。此過(guò)程稱為身份驗(yàn)證。愛(ài)麗絲應(yīng)用于保險(xiǎn)箱的鎖可以被視為簽名。
更多的工業(yè)自動(dòng)化設(shè)備正在采用公鑰加密。此外,許多基于網(wǎng)絡(luò)瀏覽器的監(jiān)控和數(shù)據(jù)采集系統(tǒng)(SCADA)開始集成了HTTPs 網(wǎng)頁(yè)支持功能,這也是基于公鑰加密的。
選擇安全設(shè)備
在現(xiàn)實(shí)世界中,我們?nèi)绾蝿?chuàng)建公鑰加密?有一種方法,與數(shù)學(xué)中一個(gè)有趣且非常困難的問(wèn)題有關(guān),將大數(shù)分解為素?cái)?shù)。例如,考慮以下簡(jiǎn)單的加密算法: me mod N=c
在這個(gè)方程中,m 是要加密的消息,e 是用于加密消息的公鑰,N 是兩個(gè)質(zhì)數(shù) (N= P1*P2) 的乘積,c 是加密的消息。在我們的示例中,鮑勃選擇主要整數(shù)P1和P2,將它們相乘以計(jì)算出N。他還選擇了公鑰e。鮑勃隨后將 e 和 N 發(fā)送給愛(ài)麗絲,同時(shí)他自己保留了P1和P2。愛(ài)麗絲將她的消息 m 以及鮑勃發(fā)送的數(shù)字 (e和N) 代入上述方程中,以生成她的加密消息c,她將這些消息發(fā)送回鮑勃。一旦鮑勃收到來(lái)自愛(ài)麗絲的加密消息c,他只需使用以下公式對(duì)其進(jìn)行解密: cd mod N=m即可找回原始消息。
在這個(gè)等式中,他沒(méi)有使用他發(fā)給愛(ài)麗絲的公鑰e,而是使用他的私鑰d來(lái)解密消息。如果鮑勃且只有鮑勃能弄清楚d是什么,那么這就行得通了。正好可以使用歐拉函數(shù) j(N)計(jì)算 d,其中d * e =k jN+1。 歐拉函數(shù)j(N) 的重要屬性是被稱為陷阱門的函數(shù)。對(duì)我們的示例這意味著,如果P1和P2 是已知的,計(jì)算j(P1*P2)很容易,但如果P1和P2不知道,則很難計(jì)算 。
試圖解密消息的人可能會(huì)考慮獲取 N (因?yàn)?N 是鮑勃已發(fā)送給愛(ài)麗絲的公開信息),將 N 分解為兩個(gè)質(zhì)數(shù)P1和P2,然后解密消息。然而,將大數(shù) N分解為素?cái)?shù)是非常耗時(shí)的。事實(shí)上很難實(shí)現(xiàn),即使是使用超級(jí)計(jì)算機(jī)解決起來(lái)也不現(xiàn)實(shí)。這就是公鑰加密背后的真正力量所在。鮑勃可以用多個(gè) P1*P2來(lái)生成允許愛(ài)麗絲用于加密消息的數(shù)字N。但N是否公開并不重要。解密消息還需要了解P1和P2。只要鮑勃不公開這數(shù)字。
在選擇安全設(shè)備和配置安全設(shè)備時(shí),對(duì)公鑰加密的理解也很有幫助。了解安全性有助于消除不必要的恐懼。相反,還可以對(duì)網(wǎng)絡(luò)安全采取更主動(dòng)的方法。