0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

汽車信息安全-MCU安全啟動(dòng)加密算法選擇

jf_EksNQtU6 ? 來(lái)源:汽車MCU軟件設(shè)計(jì) ? 2023-12-08 09:15 ? 次閱讀

01.MCU安全啟動(dòng)加密算法選擇

大家思考一個(gè)問(wèn)題,在汽車MCU運(yùn)行時(shí)代碼通常都是直接在flash中運(yùn)行,很少出現(xiàn)把一個(gè)功能??截惖?a href="http://srfitnesspt.com/tags/ram/" target="_blank">ram中運(yùn)行,主要是MCU的SRAM通常十分珍貴,且比較小,雖然最近出來(lái)的片子S32G、TC3xx SRAM已經(jīng)來(lái)到MB級(jí)別,但是鑒于成本、和芯片廠通常會(huì)將PFlash和CPU直連以加快取指速度,一般都還是采用比較傳統(tǒng)的方式。

既然是直接取指,如果應(yīng)用程序是加密存儲(chǔ)在flash中,即使安全啟動(dòng)通過(guò),應(yīng)用程序解密完也沒(méi)有足夠的ram存放,所以一般來(lái)說(shuō),存放在flash中的代碼均是以明文+簽名or認(rèn)證碼的方式進(jìn)行處理。

因此,汽車網(wǎng)絡(luò)安全工程師最熟悉的AES128-CMAC來(lái)了。

02.AES-CMAC詳解

首先我們來(lái)回顧什么是AES(advanced encryption standard)加密算法。

AES屁股后面跟的工作模式通常是CBC\CFB這些,這個(gè)CMAC是個(gè)啥?

來(lái)看下全稱:Cipher-based Message Authentication Code。

我們知道MAC本身就是與密碼相關(guān)的Hash,它不僅提供了比crc這類算法更強(qiáng)的數(shù)據(jù)完整性保護(hù),還防止了數(shù)據(jù)未經(jīng)允許的修改、破壞等(驗(yàn)證數(shù)據(jù)來(lái)源)。為什么呢?因?yàn)镸AC就是將密鑰和明文使用某種算法共同計(jì)算出一個(gè)值,只有知道密鑰的接收方才能計(jì)算出與之匹配的值;即使密鑰被攻擊者破解,由于MAC的hash屬性,攻擊者是無(wú)法反推出數(shù)據(jù)的。

所以我們?cè)赟ecOC里面最常用的還是AES128-CMAC外加FvM防止重放攻擊。

本質(zhì)上,AES-CMAC和OMAC1(一種改進(jìn)的CBC-MAC算法)相同,使用一個(gè)私密的密鑰、可變長(zhǎng)度的消息數(shù)據(jù)(對(duì)齊該消息按照固定長(zhǎng)度進(jìn)行分塊計(jì)算),最終返回一個(gè)固定長(zhǎng)度的值,這個(gè)值我們叫做MAC。

**2.1 子密鑰的生成 **

對(duì)于CMAC來(lái)說(shuō),存在數(shù)據(jù)長(zhǎng)度不是128bit整數(shù)倍的情況,因此,這個(gè)算法流程有兩種,如下:

wKgZomVyboeAWJUeAABvsE_TwXA728.jpg

case a :消息數(shù)據(jù)是128bit的整數(shù)倍,使用私密密鑰k1生成MAC(T);

case b:消息數(shù)據(jù)不能整除,使用私密密鑰k2生成MAC(T);

而私密密鑰的生成又是按照如下方式生成:

初始向量IV(0) + 原始key,使用AES-128-CBC,生成一個(gè)中間輸出L;

判斷該L最高位是否等于0;如果等于0,k1 = L << 1;否則,k1 = (L << 1)XOR 0x87(Rb_const);

判斷k1的最高位是否等于0;如果等于0,k2 = k1 << 1;否則,k2 = (L << 1)XOR 0x87(Rb_const);

wKgaomVyboaAYMFhAAA2kNfWtiU398.jpg

同時(shí)對(duì)于上述兩個(gè)case,使用k1或者k2生成消息數(shù)據(jù)最后一塊的數(shù)據(jù)。

wKgZomVyboaAA2pSAAAuejGEQgw018.jpg

需要注意的是,當(dāng)處于case b時(shí),M_last是需要進(jìn)行填充的,填充方式參考04.數(shù)據(jù)填充

2.2 MAC生成算法

使用AES-CMAC進(jìn)行計(jì)算,需要三個(gè)輸入:私密密鑰(k)、消息數(shù)據(jù)、消息數(shù)據(jù)長(zhǎng)度;具體操作流程如下:

wKgaomVyboaAJNGVAAEwCKNKV5E255.jpg

僅在最后一步使用的明文分組生成AES-CMAC。

可以選擇直接把明文組包+CMAC發(fā)給接收方,也可以用密文+CMAC。

03.HMAC詳解

HMAC(Hash-based Message Authentication Code):Hash函數(shù)是公開(kāi)的,因此直接使用無(wú)密鑰的Hash對(duì)數(shù)據(jù)處理,只能保證數(shù)據(jù)的完整性。如果加上MAC值,那么就可以驗(yàn)證數(shù)據(jù)的來(lái)源有效。

MD-5和SHA-1就是這種hash函數(shù)的示例。

04.數(shù)據(jù)填充

我們發(fā)現(xiàn),在使用上述算法進(jìn)行計(jì)算時(shí),AES都是以一個(gè)塊進(jìn)行計(jì)算,如果此時(shí)要計(jì)算的數(shù)據(jù)分組后最后一塊不夠128bit,就要進(jìn)行填充,常見(jiàn)填充方式(假設(shè)數(shù)據(jù)塊為8個(gè)byte)如下:

全0填充

填充結(jié)構(gòu):

Data:| 11 11 11 11 11 11 11 11 | 11 11 00 00 00 00 00 00 |

PKCS#7填充

每一個(gè)字節(jié)都表示填充的長(zhǎng)度,如下:

| 11 11 11 11 11 11 11 11 | 11 11 06 06 06 06 06 06 |

ANSI X.923 填充

該方式用0進(jìn)行填充,但用最后一個(gè)字節(jié)表示填充的長(zhǎng)度,如下:

| AA AA AA AA AA AA AA AA | AA AA 00 00 00 00 00 06 |







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16812

    瀏覽量

    349448
  • CMAC
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    11037
  • sram
    +關(guān)注

    關(guān)注

    6

    文章

    760

    瀏覽量

    114558
  • AES
    AES
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    33170
  • 加密算法
    +關(guān)注

    關(guān)注

    0

    文章

    210

    瀏覽量

    25515
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RC4加密算法的FPGA設(shè)計(jì)與實(shí)現(xiàn)

    RC4加密算法的FPGA設(shè)計(jì)與實(shí)現(xiàn) RC4算法是一種密匙長(zhǎng)度可變的加密算法.因其實(shí)現(xiàn)方便,安全性高,廣泛應(yīng)用于無(wú)線網(wǎng)絡(luò)通信. 信息
    發(fā)表于 08-11 11:48

    汽車遙控加密算法

    本人在公司主要做國(guó)內(nèi)整車廠的遙控器,主要是用keeloq,Hitag2 ,Hitag3 ,AES加密算法,想請(qǐng)教下論壇里的大牛,像奧迪,奔馳,寶馬等豪車的遙控器用什么加密算法?
    發(fā)表于 02-17 21:04

    程序保護(hù)的話 是不是加密算法越復(fù)雜,安全性越好呢?

    我是一名技術(shù)人員,想問(wèn)問(wèn)程序保護(hù)的話 是不是加密算法越復(fù)雜 安全性越好呢?使用RSA或者ECC等非對(duì)稱算法是不是可絕對(duì)保證安全呢?
    發(fā)表于 05-27 15:34

    如何選擇加密芯片

    說(shuō)到加密芯片的選擇,作為電子產(chǎn)品的設(shè)計(jì)師的第一想法肯定是加密芯片的加密強(qiáng)度越高越好,算法越復(fù)雜越好。這個(gè)想法不能說(shuō)對(duì)也不能說(shuō)不對(duì)。為什么這么
    發(fā)表于 05-25 17:17

    DES加密算法是什么

    一、加密算法1、 DES加密算法DES數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。DES中的密鑰key為8個(gè)字節(jié)64位,但每第8個(gè)為校驗(yàn)位不參
    發(fā)表于 07-22 09:13

    對(duì)稱加密算法是什么

    對(duì)稱加密算法也叫私鑰加密算法,其特征是收信方和發(fā)信方使用相同的密鑰,即加密密鑰和解密密鑰是相同或等價(jià)的。非對(duì)稱加密算法也叫公鑰加密算法。其特
    發(fā)表于 07-22 07:09

    軟件加密算法都有哪些,這些算法在哪些方面得到了應(yīng)用

    伴隨著人工智能、物聯(lián)網(wǎng)時(shí)代的到來(lái),數(shù)據(jù)應(yīng)用變得頻繁起來(lái),數(shù)據(jù)安全應(yīng)該如何保護(hù)?軟件加密算法都有哪些,這些算法在哪些方面得到了應(yīng)用?慢慢讀下去,你會(huì)發(fā)現(xiàn)圍繞在我們身邊的“小密碼”。對(duì)稱加密算法
    發(fā)表于 12-21 07:04

    采用多種加密算法的文件加密方法

    針對(duì)傳統(tǒng)文件加密系統(tǒng)中加密算法單一、加密文件格式簡(jiǎn)單、安全性相對(duì)較低的問(wèn)題,本內(nèi)容提出了采用多種加密算法的文件
    發(fā)表于 05-26 15:35 ?0次下載
    采用多種<b class='flag-5'>加密算法</b>的文件<b class='flag-5'>加密</b>方法

    關(guān)于應(yīng)用到游戲中的加密算法的用途及缺陷

    會(huì)對(duì)其用途以及缺陷一一說(shuō)明,當(dāng)然了,為了保證其加密算法安全以及高效,我們也會(huì)介紹幾種自定義的加密算法,看看加密如何來(lái)維護(hù)我們的數(shù)據(jù)安全
    發(fā)表于 09-25 11:15 ?0次下載

    基于AES加密算法信息安全研究(AEC與ECC結(jié)合)

    使用AES 對(duì)稱加密算法加密明文數(shù)據(jù)ECC 非對(duì)稱加密算法加密密鑰并生成數(shù)字簽名,從而既保障了數(shù)據(jù)在網(wǎng)絡(luò)傳輸過(guò)程中的安全性,又完成了數(shù)字簽名
    發(fā)表于 10-31 11:32 ?13次下載
    基于AES<b class='flag-5'>加密算法</b>的<b class='flag-5'>信息</b><b class='flag-5'>安全</b>研究(AEC與ECC結(jié)合)

    汽車信息安全已進(jìn)入“刷漏洞”時(shí)代

    過(guò)去幾年,國(guó)內(nèi)外的汽車信息安全標(biāo)準(zhǔn)制定工作也在持續(xù)進(jìn)行中。國(guó)際組織(ISO/SAE)正進(jìn)行21434(道路車輛-信息安全工程)標(biāo)準(zhǔn)的制定。該標(biāo)準(zhǔn)主要從風(fēng)險(xiǎn)評(píng)估管理、產(chǎn)品開(kāi)發(fā)、運(yùn)行/維護(hù)
    的頭像 發(fā)表于 04-11 11:43 ?5671次閱讀
    <b class='flag-5'>汽車信息</b><b class='flag-5'>安全</b>已進(jìn)入“刷漏洞”時(shí)代

    大數(shù)據(jù)加密算法在數(shù)據(jù)安全中的應(yīng)用綜述

    大數(shù)據(jù)加密算法在數(shù)據(jù)安全中的應(yīng)用綜述
    發(fā)表于 06-19 14:53 ?13次下載

    Mesh自組網(wǎng)電臺(tái)信息傳輸安全保障—加密算法

    Mesh自組網(wǎng)電臺(tái)信息傳輸安全保障——加密算法
    發(fā)表于 03-02 14:34 ?697次閱讀
    Mesh自組網(wǎng)電臺(tái)<b class='flag-5'>信息</b>傳輸<b class='flag-5'>安全</b>保障—<b class='flag-5'>加密算法</b>

    常見(jiàn)加密算法分類

    在開(kāi)發(fā)過(guò)程中,為了保證程序能夠安全高效運(yùn)行,數(shù)據(jù)信息不被泄露,我們通常都會(huì)對(duì)要操作的數(shù)據(jù)進(jìn)行加解密,從而提高程序的安全性。常見(jiàn)加密算法分類見(jiàn)下圖,可分為對(duì)稱
    的頭像 發(fā)表于 11-21 10:08 ?1372次閱讀
    常見(jiàn)<b class='flag-5'>加密算法</b>分類

    關(guān)于汽車信息安全,你想了解的知識(shí)點(diǎn)都在這里!

    都面臨哪些威脅與挑戰(zhàn)呢?提升汽車抗攻擊能力的安全防護(hù)技術(shù)有哪些呢?本文將帶你全面了解智能汽車信息安全。另外,基于航芯車規(guī)級(jí)安全芯片和通用
    的頭像 發(fā)表于 04-04 11:16 ?3816次閱讀
    關(guān)于<b class='flag-5'>汽車信息</b><b class='flag-5'>安全</b>,你想了解的知識(shí)點(diǎn)都在這里!