私有加密協(xié)議設(shè)計(jì)思路

術(shù)語解釋:

ECC(橢圓曲線密碼學(xué)) 一種建立公開密鑰加密的算法搂根,基于橢圓曲線數(shù)學(xué)
ECDHE 基于ECC的密鑰交換算法甲锡,計(jì)算速度快
HMAC(散列消息認(rèn)證碼) 是一種通過特別計(jì)算方式之后產(chǎn)生的消息認(rèn)證碼(MAC)舅逸,使用密碼散列函數(shù)奏瞬,同時(shí)結(jié)合一個(gè)加密密鑰洽议〖鼍可用來保證數(shù)據(jù)的完整性低匙。
SessionKey(會(huì)話密鑰) 隨機(jī)生成的密鑰旷痕,用來加密會(huì)話過程中傳輸?shù)臄?shù)據(jù)
MasterKey(主密鑰) 通過ECDHE算法生成,用來加密SessionKey
chacha算法 一種新式對(duì)稱加密算法顽冶,適用于ARM設(shè)備欺抗,計(jì)算速度快

關(guān)鍵詞:

輕量級(jí)、鏈路加密强重、密鑰安全绞呈、IOT安全

一、嵌入式IOT設(shè)備通信加密現(xiàn)狀

考慮到大部分的嵌入式IOT設(shè)備存在資源有限间景,計(jì)算能力不足佃声,無法運(yùn)行標(biāo)準(zhǔn)的TLS加密協(xié)議,或者缺少存儲(chǔ)空間放置體積較大的加密庫等情況倘要。
部分IOT產(chǎn)品可以通過增加性能或者添加加密硬件的方式運(yùn)行標(biāo)準(zhǔn)加密協(xié)議圾亏,但是此類方法會(huì)增加開發(fā)成本,不適用于產(chǎn)品研發(fā)經(jīng)費(fèi)有限的情況或單機(jī)片類產(chǎn)品封拧。常見的性能較弱的IOT產(chǎn)品通常使用單一的對(duì)稱加密算法對(duì)數(shù)據(jù)流進(jìn)行加密傳輸志鹃,或者不加密傳輸。使用單一對(duì)稱加密算法對(duì)數(shù)據(jù)流進(jìn)行加密存在較多的弱點(diǎn)泽西,可以被惡意第三方破解或利用曹铃,如:預(yù)共享密鑰多次加密數(shù)據(jù),存在被破解的可能捧杉,缺少防御重放攻擊的手段陕见,缺少鑒別加密后數(shù)據(jù)完整性的手段。

二糠溜、加密協(xié)議基本結(jié)構(gòu)

通常淳玩,加密協(xié)議涉及到的數(shù)據(jù)加密過程可分為三個(gè)部分:加密密鑰生成、數(shù)據(jù)加密非竿、數(shù)據(jù)完整性和真實(shí)性校驗(yàn)蜕着。密鑰生成的過程可以概述為發(fā)送端和接收端通過交換公鑰,使用ECDHE算法分別得出完全相同的主密鑰。在計(jì)算出主密鑰后承匣,使用隨機(jī)數(shù)生成會(huì)話密鑰蓖乘,結(jié)合對(duì)稱加密算法,使用會(huì)話密鑰對(duì)需要傳輸?shù)臄?shù)據(jù)進(jìn)行加密韧骗,并使用散列消息認(rèn)證碼確保數(shù)據(jù)的完整性和真實(shí)性嘉抒。

協(xié)議參與者交互流程:

(一)MasterKey生成階段(基于ECDHE):

  1. 發(fā)送端使用隨機(jī)數(shù)生成SessionKey、ks袍暴。
  2. 發(fā)送端從接收端獲取橢圓曲線E些侍、基點(diǎn)B(x,y)、接收端公鑰Kr政模。
  3. 發(fā)送端使用Ks = ks * B(x,y)得出發(fā)送端ECC公鑰岗宣,ks作為發(fā)送端ECC私鑰。
  4. 發(fā)送端發(fā)送Ks給接收端淋样。
  5. 發(fā)送端計(jì)算M= ks * Kr耗式,接收端計(jì)算M= kr * Ks,M為MasterKey趁猴。

流程圖如下:

bbf3f7e878d13b46258d99bd4d99cd46.png

(二)發(fā)送端數(shù)據(jù)加密封裝階段:

  1. 使用Sessionkey加密業(yè)務(wù)數(shù)據(jù)刊咳,加密算法為ChaCha,加密后的業(yè)務(wù)數(shù)據(jù)作為報(bào)文主體儡司。

  2. 使用MasterKey加密SessionKey娱挨,加密算法為AES-256-ECB。

  3. 將Version捕犬、服務(wù)端公鑰標(biāo)志让蕾、數(shù)據(jù)編號(hào)、加密后的SessionKey或听、發(fā)送端公鑰組合成報(bào)文頭部。

報(bào)文頭部示意圖:

|version| | receiverpublickeyflag | | dataid | | encryptedsessionkey | | senderpublickey |

--------------------------------------------------------------------------------------
??????????????[HEADER]

  1. 使用sha256計(jì)算報(bào)文頭部和報(bào)文主體哈希值笋婿。

  2. 使用MasterKey計(jì)算報(bào)文頭部和報(bào)文主體哈希值的hmac_sha256誉裆,公式:

hmac_sha256(MasterKey, sha256(header)+sha256(body))。

  1. 將計(jì)算出來的hmac_sha256(MasterKey,
    sha256(header)+sha256(body))的值signature作為報(bào)文尾部缸濒。

報(bào)文數(shù)據(jù)結(jié)構(gòu):

struct {
          ProtocolVersion version;
          ReceiverPublicKeyFlag receiverpublickeyflag;
          DataId dataid;
          EncryptedSessionKey encryptedsessionkey;
          SenderPublicKey senderpublickey;
          Data data;
          Signature signature;
} Ciphertext;

報(bào)文結(jié)構(gòu)示意圖:

|version| |receiverpublickeyflag| |dataid| |encryptedsessionkey|
|senderpublickey| | data | signature |

------------------------|-------------|------------------|

[HEADER] | [BODY] | [TAIL] |

(三)接收端校驗(yàn)解密階段:

  1. 接收端接收到加密后的數(shù)據(jù)包后足丢,使用hmac_sha256(MasterKey,
    sha256(header)+sha256(body))計(jì)算簽名的值。
  2. 將計(jì)算出來的簽名和數(shù)據(jù)包的signature進(jìn)行比對(duì)庇配,相同則繼續(xù)處理斩跌,不相同則丟棄該數(shù)據(jù)包。
  3. 記錄dataid捞慌,若出現(xiàn)重復(fù)的dataid耀鸦,則丟棄包含重復(fù)dataid的數(shù)據(jù)包。
  4. 取出數(shù)據(jù)包中加密后的SessionKey,使用MasterKey進(jìn)行解密袖订,獲取SessionKey氮帐。
  5. 使用SessionKey解密加密后的數(shù)據(jù),獲取原始數(shù)據(jù)洛姑。

流程圖如下:


18e72d912770f5f0e19de101f60c4fc7.png

三上沐、設(shè)計(jì)思路總結(jié)

相對(duì)于復(fù)雜的標(biāo)準(zhǔn)TLS協(xié)議,我們可根據(jù)業(yè)務(wù)的實(shí)際場(chǎng)景選擇所需的安全模塊楞艾,以插裝的方式組合一款私有加密協(xié)議参咙,從而降低延時(shí)、提高載荷比硫眯、降低秘鑰管理的復(fù)雜度蕴侧。相對(duì)與單一加密方式,可有效防御重放攻擊舟铜,保證數(shù)據(jù)的完整性和真實(shí)性戈盈,進(jìn)一步提升加密密鑰的安全性。

四谆刨、有益效果

考慮到越來越復(fù)雜的網(wǎng)絡(luò)環(huán)境塘娶,在主流IOT設(shè)備計(jì)算資源不足的條件下,實(shí)現(xiàn)一種更輕量級(jí)的數(shù)據(jù)流加密方法痊夭,通過組合利用各類標(biāo)準(zhǔn)加密算法的優(yōu)勢(shì)刁岸,在資源有限的條件下也可以保證數(shù)據(jù)流的安全性,確保加密后的數(shù)據(jù)不會(huì)遭到破解她我,也無法被重復(fù)利用虹曙,保障IOT設(shè)備之間通信的安全性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末番舆,一起剝皮案震驚了整個(gè)濱河市酝碳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恨狈,老刑警劉巖疏哗,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異禾怠,居然都是意外死亡返奉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門吗氏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芽偏,“玉大人,你說我怎么就攤上這事弦讽∥畚荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)十厢。 經(jīng)常有香客問我等太,道長(zhǎng),這世上最難降的妖魔是什么蛮放? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任缩抡,我火速辦了婚禮,結(jié)果婚禮上包颁,老公的妹妹穿的比我還像新娘瞻想。我一直安慰自己,他們只是感情好娩嚼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布蘑险。 她就那樣靜靜地躺著,像睡著了一般岳悟。 火紅的嫁衣襯著肌膚如雪佃迄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天贵少,我揣著相機(jī)與錄音呵俏,去河邊找鬼。 笑死滔灶,一個(gè)胖子當(dāng)著我的面吹牛普碎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播录平,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼麻车,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了斗这?” 一聲冷哼從身側(cè)響起动猬,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎表箭,沒想到半個(gè)月后枣察,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡燃逻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臂痕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伯襟。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖握童,靈堂內(nèi)的尸體忽然破棺而出姆怪,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布稽揭,位于F島的核電站俺附,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏溪掀。R本人自食惡果不足惜事镣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揪胃。 院中可真熱鬧璃哟,春花似錦、人聲如沸喊递。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骚勘。三九已至铐伴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俏讹,已是汗流浹背当宴。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藐石,地道東北人即供。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像于微,于是被迫代替她去往敵國(guó)和親逗嫡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容