五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

密碼學(xué)之消息認(rèn)證碼算法

2021-05-26 13:33 作者:剎那-Ksana-  | 我要投稿

前言

文中出現(xiàn)的 %5Ba%2Cb%5D?和 a%20%7C%7C%20b?是同一個(gè)意思,都代表 a 序列和 b 序列的concatenation(級(jí)聯(lián)),前者為自己習(xí)慣的用法,后者更為正式。

*注意:括號(hào)內(nèi)的中文來自google translate,未必專業(yè)

一、ECB?& CBC

Block cipher(分組密碼)的block長度是固定的(比如說128bit,256bit等等),但是我們需要加密的信息的長度是不固定的,通常來說都要大于block的長度。問題是如何用一個(gè)固定長度的block cipher來加密非固定長度的message(信息)。

一個(gè)最原始的想法是將message m 切割為長度相等的小塊m%3D%5Bm_0%2Cm_1%2C...%2Cm_n%5D,每一個(gè)小塊都用block cipher加密,然后將最后加密后的密文組合起來,這種方法叫做ECB (Electronic Code Book) 。

ECB示意圖

但是這種加密方式有一個(gè)安全缺陷——如果我們的message具有一定的結(jié)構(gòu)性,那么ECB加密后的ciphertext(密文)也會(huì)保留這個(gè)結(jié)構(gòu)性。

CBC (Cipher Block Chaining) 則是在ECB的基礎(chǔ)上加入一些改動(dòng),加密流程如下

CBC示意圖

二、CBC-MAC

CBC-MAC是運(yùn)用CBC對(duì)我們的message?m%20%3D%20%5Bm1%2C...%2Cm_n%5D 進(jìn)行加密,t_i%3DMAC_k%20(t_%7Bi-1%7D%E2%A8%81m_i)%2Ct%3Dt_n.

以上的CBC-MAC叫做basic CBC-MAC,只適合用于固定長度的message。因?yàn)楣粽呖梢越?img type="latex" class="latex" src="http://api.bilibili.com/x/web-frontend/mathjax/tex?formula=%F0%9D%91%9A%E2%80%B2%20%3D%20%F0%9D%91%9A%20%E2%80%96%20(%F0%9D%91%A1%20%E2%8A%95%20%F0%9D%91%9A)%2C%20MAC_k(m')%3Dt" alt="%F0%9D%91%9A%E2%80%B2%20%3D%20%F0%9D%91%9A%20%E2%80%96%20(%F0%9D%91%A1%20%E2%8A%95%20%F0%9D%91%9A)%2C%20MAC_k(m')%3Dt">. 這個(gè)不符合前文的安全性的準(zhǔn)則。

為了讓CBC-MAC可以運(yùn)用于任意長度的message,我們?cè)兕~外加一個(gè)key?k_2,我們把basic CBC-MAC輸出的tag(標(biāo)簽)叫做t',我們輸出?t%3DMAC_%7Bk2%7D(t').

三、HMAC (Hash-based Message Authentication Code)

我們讓H代表一個(gè)hash function(散列函數(shù)),HMAC_k(m)%20%3D%20H(k%20%E2%8A%95%20opad)%20%E2%80%96%20H(k%20%E2%8A%95%20ipad%20%E2%80%96%20m)%20)

其中,opad (outer padding) 是將0x5c重復(fù)排列直至長度為l,ipad (inner padding) 是將0x36重復(fù)排列直至長度為block length?l.?

四、CMAC(Cipher-based Message Authentication Code)

CMAC分為以下兩個(gè)部分,

首先是sub-key k_1%2Ck_2的生成,讓E代表一個(gè)block length為?b 的block cipher,然后:

  1. L%3DE_k(0%5Eb),?0%5Eb?代表長度為b的全部為0的序列

  2. 如果L的most significant bit(最高位)為0,則k_1%3DL%3C%3C1(<<為比特朝左位移);否則k_1%3D(L%3C%3C1)%5Coplus%20R_b,?R_%7B128%7D%3D0%5E%7B120%7D10000111%2CR_%7B64%7D%3D0%5E%7B59%7D11011

  3. 如果k_1的most significant bit為0,則k_2%3Dk_1%3C%3C1(<<為比特朝左位移);否則k_2%3D(k_1%3C%3C1)%5Coplus%20R_b

tag 的生成如下:

  1. 將message m拆分成n個(gè)小塊m%3D%5Bm_1%2Cm_2%2C...%2Cm_n%5D,其中前n-1個(gè)block都為complete block(長度都為b)

  2. 如果最后一個(gè)block?m_n是一個(gè)complete block,則m_n'%3Dk_1%5Coplus%20m_n,否則m_n'%3Dk_2%5Coplus%20(m_n%20%7C%7C%2010..0)

  3. C_0%3D0%5Eb,C_i%3DE_k(C_%7Bi-1%7D%20%E2%8A%95%20M_i)

  4. 輸出t%20%3D%20MSB_l(C_n),MSB代表most significant bit,其中l代表輸出tag的長度

后記

還有其他很多的算法。

參考資料:

Jonathan Katz, Yehuda Lindell -?Introduction to Modern Cryptography

NIST Special Publication 800-38B?

Heiko Knospe -?A Course in Cryptography

使用工具:diagrams.net

THE END.

密碼學(xué)之消息認(rèn)證碼算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
汉阴县| 互助| 连南| 木兰县| 灵川县| 科尔| 班玛县| 伊川县| 天全县| 曲麻莱县| 丰台区| 密山市| 台安县| 静安区| 昆山市| 旌德县| 会宁县| 渭源县| 调兵山市| 准格尔旗| 怀远县| 辽宁省| 大同市| 庄浪县| 甘肃省| 马公市| 汶川县| 汶上县| 陈巴尔虎旗| 荥阳市| 古交市| 榕江县| 横峰县| 平泉县| 雅安市| 咸宁市| 文水县| 惠水县| 额尔古纳市| 邮箱| 南雄市|