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