導讀:
伴隨著“軟件定義汽車”的趨勢,車內的軟件占比越來越大,在運行時確定具體行為的部分越來越多,“網聯化”又使得車內與外界的聯系越來越緊密,“網絡安全”這座大冰山也慢慢進入汽車人的視野。同其他技術一樣,“網絡安全”相關的技術與問題都可參考PC行業、互聯網行業,但其又有汽車行業的一些特性。這篇文章,就將結合汽車行業的特性,講一講網絡安全。
1
基本概念
1.1 功能安全與網絡安全
“功能安全”對汽車行業的工程師而言,是老熟人了,標準流程體系都很完善。隨著汽車的“網聯化”,“網絡安全”出現了,所以很多人第一反應是“這兩者有什么區別”?
圖1網絡安全:網絡安全是指網絡系統的硬件、軟件及其系統中的數據受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、泄露。功能安全:是指電子電氣系統在設計或實施上受到保護,從而避免其發生故障后導致的人身、財產損害。 這兩者的區別在于“網絡安全”防范的是外部的惡意,如車主的好奇心、黑客的攻擊等;而“功能安全”防范的是失效/故障,這個故障可能是自身老化/設計導致的,也可能由于外部的常見工況導致的,如沙塵、振動、下雨等。 這兩者也是互相關聯的,比如說網絡安全也可能導致功能失效,因此建議各個有功能安全要求的,最好也考慮一下網絡安全。這一塊很多文章都講的比較多,大家可以自行搜索一下。
1.2 網絡安全防護的目的
上文中提到網絡安全防范的是“外部的惡意”。對一個系統而言,“外部的惡意”是存在極大的不確定性的,取決于以下幾個因素:
當前系統對攻擊者的價值
當前系統與攻擊者的關系
攻擊者的心情
攻擊者的興趣
....
這些因素除了第1條之外,其他的都是無法預測、無規律的,除了勸你為人低調一些之外好像毫無辦法,所以,我們只能針對“當前系統對攻擊者的價值”對“外部的惡意”來進行評估。而攻擊者的目的呢,相應的我們也簡化為理性的“獲取利益”。
所以,從理性的角度上來講“網絡安全”就是一場“道高一尺,魔高一丈”、“無止盡”的攻防游戲。
圖2
而網絡安全防護的目的與其他的攻防游戲一樣,是“讓攻擊者付出的代價比攻破此系統帶來的收益高”。非常典型的例子,就是“人民幣造假”。人民幣的造假現象現在相對比較少,是因為:
要想造出真的人民幣,比如說仿制100元人民幣,單張的制造成本要高于100元
央行不斷推進新版人民幣,采用新技術,始終將仿制成本高于安全線
造假的人民幣,一旦被抓獲,要處三年以上有期徒刑甚至無期徒刑
從上面這個例子,也可以看出,這個攻防游戲是“無止盡”的。因為隨著技術的進步,攻擊者達到同樣的攻擊水平,需要付出的成本會越來越低,這時網絡安全防護則需要不斷升級自己的技術,重新提高攻擊者的攻擊成本。 OK,講了這么多概念,接下來講一講干貨,現代電子商務的基石——公鑰基礎設施PKI。
2
PKI與非對稱加解密
公鑰基礎設施這個名詞講起來比較拗口,要想把它徹底搞清楚,大家可以買一本書去看,從底向上,我將其分為5個層級。為避免過程過于枯燥,先從最常見的“數字證書”講起。
圖3
2.1 層級四:數字證書
現代電子商務或網絡通信的一大問題在于,如何在不可信的環境中做到身份認證,即"如何證明我是我?”在中國,用“身份證”,在數字領域,用“數字證書”。 咱們可以隨便打開一個網頁,如果是Chrome的話,可以點擊網址左邊的“鎖”,打開其“證書”,便可以看到如下信息。
圖4
數字證書的信息大概包含這么三類: 1、使用者信息
使用者:最重要的域,目前一般為域名,用戶個人使用則為姓名。
公鑰:非對稱加密中用戶公開的那個密鑰,誰都能看到
有效期
2、頒發者信息
頒發者:誰頒發的這個證書?
頒發者的簽名:頒發者對該證書的所有信息的數字簽名,表明他對這個證書的真實性負責。
3. 其他:如證書的版本號、序列號等,在此略過不表 我們在打開一個網頁時,如果是HTTPS網址的,瀏覽器會自動檢查網站證書的有效性,如網站的域名與“使用者”是否匹配?證書是否有效?證書的頒發者是否有效?等等。若網站證書有問題,瀏覽器則會顯示相應的警告。若此證書有效,則瀏覽器會開始使用證書內的信息(主要是公鑰),用于與其進行通信。
2.2 層級二及三:非對稱加解密及數字簽名
數字證書的關鍵在于公鑰,以及頒發者的簽名。為什么公鑰可以公開?為什么數字簽名就可以代表頒發者?接下來講這兩個問題。 非對稱加解密就是指一種特殊的加解密算法,這種算法的加密密鑰(公鑰)和解密密鑰(私鑰)是不一樣的,且由公鑰是極難推斷出私鑰的,即使有大量的明文和密文對也一樣。常見的有RSA算法,及橢圓曲線(ECC)算法。
圖5:非對稱加解密之公私鑰 因為有一對不一樣的密鑰,所以其中一把密鑰可以作為公鑰公開出來。私鑰需要自行妥善保存,比如說存在加密機中。 這樣的話,如果A要給B發送加密消息,那么就B的公鑰加密一下,發送出來,只有A才能用自己的私鑰解密。 那么公鑰可以用于發送方加密,私鑰可不可以用于發送方加密呢?也可以,只是不叫“加密”,叫簽名,因為一發出去,大家都可以解密。下面是個例子:
圖6
上圖中,B使用公鑰驗簽后,發現生成的摘要與原摘要一致,就算驗簽成功。因為能使用A的公鑰解密的信息,只可能是用A的私鑰加密的。由于只有A才會擁有A的私鑰,所以可以確定“這段明文”確實是由A發送的。
2.3 層級五:PKI體系
前文中反復提到了“使用A的公鑰驗簽”、“使用A的公鑰簽名”,那么如何獲取A的公鑰呢?獲取到了之后,如何相信A的公鑰真的是A的公鑰呢?這就需要使用到PKI體系了。下面是百度中的定義: 公鑰基礎設施是一個包括硬件、軟件、人員、策略和規程的集合,用來實現基于公鑰密碼體制的密鑰和證書的產生、管理、存儲、分發和撤銷等功能。 其核心是證書的產生和分發層級:
圖7
關鍵的流程就兩個: 1、證書的簽發流程:即怎么樣才能拿我自己的證書呢?簡單的說,填個表,找個子CA,付一筆年費,就可以拿到了,上面寫著大伽A證明大牛B證明凡人C是凡人C。復雜的說:
全世界有大概幾十家左右的根CA(Certificate Authority),計算機上都會預置這些CA的數字證書。比如Amazon、Verisign這種,他們有一整套的機制保證自己是可信的?;诖耍麄冇凶约旱臄底肿C書,及與之匹配的私鑰。
若想建立自己的子CA,則可向這些家申請,要每年付出不菲的年費。那么這些根CA會給你的子CA生成一個私鑰以及配對的數字證書(公鑰)。
若普通用戶要獲取自己的數字證書,則向子CA申請即可,流程與上一步一樣。
2、證書的信任流程:即我為什么相信你是你呢?簡單的說,就是因為你手上拿了個證明信,上面有某某單位的公章,我因為相信這個單位,又相信這個公章不是偽造的,所以相信你是你。復雜的說(拿bing.com為例):
圖8
先查驗DigiCert Baltimore Root的證書,是否與我本地預置的證書一致。
再檢查Microsoft IT TLS CA 2的證書上的數字簽名,是不是真的是由DigiCert Baltimore Root生成的。
再檢測bing.com的證書上的數字簽名,是不是真的由Microsoft IT TLS CA 2生成的。
由以上兩個流程就可產生分層級的信任關系,而在不可信的網絡中建立了信任關系(信任錨)之后,其他的應用業務就好開展了。3、PKI體系還有另外一些問題:
證書的吊銷——給某人發了證書后,這人用此證書從事非法經營怎么辦?把他的證書吊銷,具體的方法有OCSP及CRL。
證書的更新——給某人發了證書后,這證書過期了咋辦?如何更新呢?所以證書的有效期的選擇也需要謹慎考慮,太短的話頻繁失效,更新起來麻煩。太長的話,它又有可能出現私鑰的保存問題。
私鑰的存儲——私鑰是信任的核心,如果私鑰被他人竊取或復制,那么整個信任體系就失效了,特別是ROOT CA的。所以,私鑰最好不要離開生成的機器,且在物理上與外界隔絕,如使用加密機:私鑰始終不可見,只可重新生成,不可拷貝等。
2.4 層級一:NPC問題(附加題) 前文有提到過,在知道“公鑰”及很多“明文密文對”時,也很難推斷出“私鑰”,這是為什么呢?此節簡要講一下這個問題,這屬于密碼學的范疇。 RSA的數學基礎是大數的分解問題,屬于NPC(非確定性多項式完全問題)問題;橢圓曲線的本質是離散對數問題,也屬于NPC問題。 NPC問題是指這樣的一類問題:無法在多項式時間復雜度內計算出問題的答案,但一旦知道答案便可在多項式時間復雜度內驗證答案是否正確。用計算機的語言表達是指其時間復雜度>O(n^a),可能為指數級O(2^n),甚至O(n!)。當需要求解的n較大時,這類問題的求解就遠超出當前計算機的計算能力。 以RSA為例,當前使用較多的密鑰長度為2048位,超級計算機需要數十年才能破解。即使隨著科技發展2048位被破解了,那就用4096位吧,破解所需要算力上升2^2048倍。而加密、解密所需的代價只上升幾十倍(具體沒算過,但NPC問題的驗證為多項式復雜度,可控)。 所以,只要NPC問題未被解決,即證明其可轉化為P問題,PKI體系仍是堅如磐石。因為即使量子計算機可輕松破解2048位的RSA密鑰,那大不了就增加一點難度吧,用4096位的。
2.5PKI在汽車行業的應用場景
PKI體系在汽車行業的應用場景非常廣泛,如遠程車控、近場車控、安全啟動、Ethernet通信安全等等。在此處講一個優先級最高的“遠程車控”的實例。 1. 企業應該先行建立自己的PKI體系,即引入一個PKI供應商,將證書的頒發、申請、吊銷等公用模塊建立起來。接下來,在其之上,建立各應用的流程。
圖9
2. 手機端、云端與車端Tbox,都在本地生成自己的私鑰,并在云端申請完自己的證書。這也需要制定相應的業務流程。 三端都需要妥善保管好自己的私鑰,手機端可以將私鑰存儲在TEE中,云端可存儲的選擇會較多,車端可存儲在HSM或TEE中。若沒有這些硬件的存儲方式,可以使用軟件的白盒加密方法,安全性也有一定保障。白盒加密也就是說即使遭遇白盒攻擊,其密鑰也較難被破解。 3. 大家都具備證書與私鑰后,業務流程就變地相當簡單:
圖10
云端與車端由于交互較多,建議兩端通過雙向認證交換“會話密鑰”(對稱密鑰)。因為對稱加密要比非對稱加密快上千倍,根據密鑰長度不同會稍有變化。交換會話密鑰的流程可參考TLS的雙向認證的握手流程。
手機端將車端指令發給云端,并使用自己的私鑰進行簽名。云端收到之后,使用手機A的數字證書,進行驗簽。
云端將車控指令用協商好的“會話密鑰”加密后,發送給車端。車端驗證后,即可在內部執行。
在采用PKI體系之前,業內的“遠程車控”也有解決方案,只是這些方案的根基都在于“方案設計”的保密性,無法防范內部員工或離職員工的攻擊。而基于PKI體系的方案,不依賴于任何個人,沒有脆弱性。
責任編輯:lq
-
電子商務
+關注
關注
3文章
287瀏覽量
25594 -
汽車行業
+關注
關注
0文章
313瀏覽量
15402 -
網絡安全
+關注
關注
10文章
3186瀏覽量
60048
原文標題:軟件定義汽車浪潮下,被忽視的汽車網絡安全!
文章出處:【微信號:Mouser-Community,微信公眾號:貿澤電子設計圈】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論