TOP Server OPC Server教程:探索OPC UA之對稱與非對稱加密
TOP Server OPC Server采用業(yè)界領先的Kepware技術,是Software Toolbox's OPC和原生HMI設備的連接軟件,也是一款多線程應用程序,能夠利用最新的雙核處理器和多處理器技術最大化您的性能。其靈活而強大的功能可最大程度降低項目的生命周期成本;模塊化架構和通用用戶界面可以降低您的培訓成本,因為在不同的驅動程序中使用了100種常用方法,幫助您學習TOP Server,并快速應用與其他驅動程序相同的知識。
點擊下載TOP Server OPC Server最新試用版
在正在進行的“ 探索OPC UA”博客系列的第一篇文章中,我們介紹了OPC UA證書(也稱為應用程序證書)在OPC UA安全性上下文中發(fā)揮的三個功能。
在第二篇文章中,我們將看看在您信任應用程序證書并在OPC UA端點上啟用安全性之后消息將如何處理。具體來說,“簽名和加密”在端點上意味著什么,以及我們如何確保數(shù)據(jù)真正安全。
要真正了解兩個應用程序之間的OPC UA安全性是如何工作的,我們需要了解對稱和非對稱(或公鑰)加密的工作原理,因為最終它們之間并沒有太大的區(qū)別。從最基本的角度(這是我們在這樣的博客中所花的全部時間),對稱和非對稱加密并不那么復雜,因此讓我們看一下它們如何執(zhí)行其工作。
對稱加密如何工作?
對稱加密之所以這樣命名(非常恰當)是因為同一密鑰既用于加密和解密編碼的消息,又不同于物理鎖,在物理鎖中,同一密鑰用于鎖定和解鎖該鎖。這種對稱性非常好,因為這是加密/解密信息的非??焖俚姆椒ǎ驗閮烧叨际褂孟嗤拿荑€,并且由于它相當安全(盡管不如其非對稱兄弟安全)。
對稱加密的工作方式示例:
- 服務器A(在這種情況下為OPC UA客戶端)具有要發(fā)送到服務器B上的OPC UA服務器的未加密消息。
- 服務器A使用先前交換的對稱密鑰來加密消息。
- 現(xiàn)在可以將加密的消息(不被窺視)發(fā)送到服務器B上運行的OPC UA服務器。
- 在服務器B上,現(xiàn)在使用用于加密消息的相同密鑰來解密它。
- 然后,原始的未加密消息將傳遞到OPC UA服務器。
- 沒有密鑰的任何未經(jīng)批準的參與者都將收到一條加密的消息,他們將對此無能為力。
如果運行在服務器B上的OPC UA服務器想要發(fā)送加密的響應,則只需使用相同的密鑰(先前已交換過)來加密消息,過程將反向重復。
由于使用相同的密鑰進行加密和解密,因此對稱加密速度很快–相對于非對稱加密,它的主要優(yōu)勢就在于此。速度。但是這種速度是有代價的,而代價就是安全。
該示例僅簡要地談到了對稱加密的最關鍵步驟,那就是密鑰交換。您如何安全地執(zhí)行保護惡意者無法訪問密鑰的交換,并且如果舊密鑰遭到破壞,又可以輕松地與新密鑰交換新密鑰呢?
由于同一密鑰同時用于加密和解密,因此,如果惡意方獲得了對該密鑰的訪問權,則他們不僅能夠解密雙方的消息,而且還能夠生成自己的消息,這些消息現(xiàn)在可能被視為有效。
對稱加密的另一個不太理想的方面是,當處理多于兩臺計算機時,證書的數(shù)量也可能會過高。對于單個客戶機/服務器對,只需要一個密鑰,但是對于100個服務器/客戶機,每臺計算機可能希望與系統(tǒng)中的其他每臺計算機進行通信,因此所需證書的數(shù)量呈指數(shù)增長。非對稱加密解決了許多這些問題……
非對稱加密如何工作?
非對稱加密或公共密鑰加密(也很恰當?shù)孛┍徽J為是非對稱的,因為不再使用同一密鑰進行加密和解密。你怎么可能問?如何使用一個密鑰來加密數(shù)據(jù),而另一個密鑰來解密數(shù)據(jù)呢?
我希望我有時間在這里更詳細地介紹該概念,但是現(xiàn)在,我們將需要選擇簡短的版本(因為較長的版本涉及大量的數(shù)學運算)。使用非對稱加密,每個應用程序將具有兩個以數(shù)學方式鏈接的證書(更多信息將在第二秒顯示):
- 專用證書,用于解密和消息簽名
- 用于加密的公共證書。
這些密鑰在數(shù)學上是鏈接的,這意味著僅可以使用相應的私鑰解密使用公鑰加密的消息。使用非對稱加密的任何連接的第一步是交換公共密鑰。
由于只能使用相應的私鑰來解密加密的消息,因此應用程序可以非常自由地將其公開密鑰提供給誰,因為任何截獲加密消息的人都不能解密該消息(即使他們使用了公開密鑰的副本)執(zhí)行加密)。這也意味著一個應用程序只需要一個可以被許多應用程序使用的公共密鑰,從而解決了我們在使用對稱加密時看到的證書計數(shù)問題。
非對稱加密如何工作的示例:
- 在服務器A上運行的OPC UA客戶端以未加密的消息開頭,該消息將發(fā)送到在服務器B上運行的OPC UA服務器。公鑰已經(jīng)交換。
- UA客戶端將使用從OPC UA服務器收到的公共密鑰來加密消息。
- 然后發(fā)送加密的消息(惡意的第三方在傳輸?shù)椒掌鰾時會對其進行訪問)。
- 服務器B上的OPC UA服務器使用其私鑰來解密編碼的消息。
- 然后,原始消息將被正常處理。
- 攔截消息以及服務器B的公共密鑰的惡意角色仍然無法解密捕獲的消息,因為它們沒有相應的私有密鑰。
還有一個很酷的功能,就是上述私鑰和公鑰之間的數(shù)學聯(lián)系為我們帶來了好處。不僅可以使用公鑰來加密只有相應的私鑰才能解密的流量。服務器還可以使用私鑰對消息進行簽名,并生成消息哈希(與公鑰進行比較時),以確保消息未更改,并且消息源自我們認為是的機器。
剛才我說過,公鑰和私鑰在數(shù)學上是鏈接的,所以我想重新審視這個概念。這意味著一個密鑰(或一個密鑰的一部分)是使用另一密鑰以某種方式生成的,或者兩個密鑰都是從相同的大隨機素數(shù)生成的。
生成的完成方式取決于所使用的算法(RSA,橢圓曲線等),但重要的是,由于該操作,兩者之間存在數(shù)學關系。僅知道私鑰就幾乎不可能導出公鑰,而僅僅知道公鑰就幾乎不可能導出私鑰。(鑒于有足夠的時間,足夠的計算能力和足夠的數(shù)學腦力,沒有什么是牢不可破的,因此適用“幾乎不可能”。)
雖然比對稱加密安全得多,但非對稱加密有一個主要缺點,那就是速度。這些“數(shù)學鏈接”鍵雖然很棒,但必須對每條消息進行數(shù)學運算會增加大量的計算開銷。這使我們可以進行比較-哪個更好?
比較對稱和非對稱加密
對稱加密
非對稱加密
優(yōu)點
缺點
優(yōu)點
缺點
難以置信的安全
用于加密和解密的密鑰相同(泄露的密鑰具有很高的影響力)
比對稱更安全
比對稱加密慢(不容小margin)
加密和解密更快
沒有好的方法來安全地交換密鑰
公開密鑰可以自由共享(只要私有密鑰保持安全)
沒有復雜的數(shù)學關系
密鑰泄露只會影響一個方向的通信
Bad actors截取公鑰的影響很小
最終,要回答該問題,您將需要考慮特定項目的目標。如果無論其他因素如何,最高的安全級別都至關重要,那么非對稱加密顯然是正確的選擇。如果您的項目可以接受安全性稍低的加密級別以換取更高的性能和更少的開銷,那么對稱加密可能是正確的選擇。
對稱和非對稱加密如何應用于OPC UA?
當您為客戶端和服務器交換應用程序/ OPC UA證書時,您將交換公鑰作為這些證書的一部分。這意味著,當您選擇加密OPC UA連接時,OPC UA使用非對稱加密來保護初始連接,但是,為了解決非對稱加密帶來的較慢的通信性能,一旦通道安全了,就交換一個對稱加密密鑰用于通訊。
這使兩種加密標準都不再關注兩個主要問題:
- 由于通信是使用對稱加密執(zhí)行的,因此我們可以獲得那里提供的速度優(yōu)勢。
- 由于在交換對稱密鑰時對連接進行了高度加密,因此不會有密鑰被攔截并用于中斷通信的機會。
為了長期保持連接的安全,定期更新“ SecureChannel”(在本系列博客的第三部分中對此進行了詳細介紹),因此長期不使用相同的對稱密鑰。 因此,當OPC UA端點引用“簽名”與“簽名和加密”術語時,它實際上是指將使用公鑰和私鑰的方式(即,應使用私鑰對消息進行簽名,和/或應使用公鑰對消息進行加密) 。
了解OPC UA更多相關信息,歡迎持續(xù)關注后續(xù)文章
要購買該產(chǎn)品正版授權,或了解更多產(chǎn)品信息請點擊【咨詢在線客服】