最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
武汉市| 绵竹市| 房产| 汨罗市| 武冈市| 浦北县| 阿城市| 离岛区| 博客| 上思县| 谢通门县| 刚察县| 甘泉县| 太仆寺旗| 曲水县| 启东市| 秦皇岛市| 南靖县| 宣化县| 普宁市| 连江县| 黑山县| 革吉县| 郴州市| 桃江县| 政和县| 游戏| 宿州市| 铁力市| 游戏| 虹口区| 拜城县| 北宁市| 合作市| 宣武区| 射阳县| 吴桥县| 清水河县| 巴塘县| 长武县| 普宁市|