簡(jiǎn)述CCM加密模式

在之前的文章中,我們了解了很多加密算法。但在密碼學(xué)中,除了單一的加密算法,還有利用不同的加密算法組成的算法模式。下面我們就來(lái)了解一下CCM加密模式。

CCM加密模式簡(jiǎn)介

CCM(Counter with Cipher Block Chaining-Message Authentication Code)是CBC-MAC與CTR的組合,可同時(shí)進(jìn)行數(shù)據(jù)加密及認(rèn)證,它基于對(duì)稱密鑰分組加密算法,分組大小 128bits,因此 CCM 可以用于 AES,但是不能用于DES、3DES(分組大小為64bits)。CCM模式也可以認(rèn)為是分組加密算法的一種模式。

CCM首先使用CBC-MAC模式對(duì)傳輸幀進(jìn)行認(rèn)證,然后使用CTR模式進(jìn)行數(shù)據(jù)的加密。

在數(shù)據(jù)通信中,傳輸?shù)臄?shù)據(jù)包由兩部分組成,分別是數(shù)據(jù)包頭和用戶數(shù)據(jù))。用戶數(shù)據(jù)一般需要加密以防止竊聽,但是傳輸路上的設(shè)備(路由器、交換機(jī)等)則往往需要數(shù)據(jù)包頭以保證數(shù)據(jù)包能夠正確的送到目的地,因此對(duì)數(shù)據(jù)包頭不能加密。

CCM加密模式

CCM的加密流程

  1. 通過(guò)格式化函數(shù)將N(IV值), A(關(guān)聯(lián)數(shù)據(jù)), P(明文)數(shù)據(jù)格式化為 B0,B1,…,Br等128bit的數(shù)據(jù)塊(Br可以是非128bit對(duì)齊的塊);
  2. 對(duì)第0個(gè)數(shù)據(jù)塊B0加密,得到密文塊Y0
  3. 依次加密后面的所有數(shù)據(jù)塊:For i=1 to r, Yi=CIPHK(Bi⊕Yi-1);
  4. 取 Yr 的高T len字節(jié)作為Tag值,記為T ,此值就是MAC值;
  5. 通過(guò)計(jì)數(shù)發(fā)生器,依次生成Ctr0,Ctr1,…,Ctrm,其中m=(Plen+127)/128;
  6. For j=0 to m, do Sj=CIPHK(Ctrj)),對(duì)Ctrj數(shù)據(jù)塊依次進(jìn)行加密,得到Sj
  7. 將S1、S2,…,Sm拼接在一起,得到S,S=S1||S2||…||Sm(拼接的時(shí)候不包含S0);
  8. C=(P⊕MSBPlen(S))||(T⊕MSBTlen(S0))。

CCM加密模式

CCM加密流程總結(jié)

  • 首先將數(shù)據(jù)N,A,P格式化成block塊,分別對(duì)各個(gè)塊進(jìn)行加密,取最后一個(gè)“密文塊”的高Tlen字節(jié)作為Tag值,至此CCM方法計(jì)算的MAC值已經(jīng)得到了;
  • 通過(guò)“計(jì)數(shù)生成函數(shù)”生成各Ctr0,Ctr1?… Ctrm值(生成器的種子就是nonce),然后分別對(duì)各個(gè)Ctrx值進(jìn)行加密,得到密文Sx,將S1,S2?… Sm拼接組成S(S0);
  • 最后得到密文,密文是P和T按照一定的形式進(jìn)行的拼接;
  • CCM的加密過(guò)程是“先計(jì)算MAC,再進(jìn)行加密”,符合“MTE”的模式。

CCM的解密和認(rèn)證

CCM的解密流程其實(shí)就是加密流程的逆操作,下面簡(jiǎn)單來(lái)了解一下認(rèn)證的過(guò)程。

  • 如果CLen<Tlen,這很顯然是不合理的情況,所以直接返回認(rèn)證失??;
  • 執(zhí)行計(jì)數(shù)器生成函數(shù),初始計(jì)數(shù)器和上文保持一致;
  • 然后對(duì)消息進(jìn)行CTR模式的解密得到明文,到這里解密階段完成,這里最后一個(gè)分組解密之后即為消息認(rèn)證碼,注意這個(gè)分組需要和Ctr0加密之后的結(jié)果異或得到T;
  • 密文是P和T按照一定的形式進(jìn)行的拼接,按照上面加密過(guò)程重新拼接成需要認(rèn)證的消息,計(jì)算MAC值,對(duì)比MAC是否一致。

CCM加密模式

CCM的應(yīng)用

CCM是CTR加密模式和CMAC認(rèn)證算法的混合使用,常用在需要同時(shí)加密和認(rèn)證的領(lǐng)域,比如WiFi安全中的WPE協(xié)議,它使用了AES-CCM模式。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。