現代密碼學之加密雜湊函式與訊息認證碼
Cryptographic Hash Functions and Message Authentication Codes
什麼是雜湊函式?
雜湊函式表示為:
其中n是一個安全引數,比如128、160、256或512。
讓x代表一些資訊。h(x)稱為message digest。
基本要求
–message digest的長度是固定的,而資料的長度可以是任意的。
–給定x,很容易計算h(x)。
–建議的message diges長度(位):128(MD5)、160(SHA-1)、224/256/384/512(SHA-2)、224/256/384/512(SHA-3)
總結來說,雜湊函式就是輸入任意長度(*)的input,總會輸出固定長度(n)的output.
加密雜湊函式-安全屬性
一共有三大屬性:
1. Pre-image resistance
給定一個雜湊函式h: X–>Y, y∈Y,沒有有效的機制來發現 x∈X 使得h(x) = y。
這個屬性與單向函式(one-way functions)相同。雜湊函式是一種特殊的單向函式。
2. Second pre-image resistance
給定一個雜湊函式h: X–>Y,x∈X沒有有效的機制來發現x’∈X使得X‘≠X且h(x’) = h(X)。
3. Collision resistance
給定一個雜湊函式h: X–>Y,x∈X沒有有效的機制來發現x,x’∈X使得x‘≠x且h(x’) = h(X)。
第二條和第三條看起來很相似,但是我們要清楚的明白兩者的區別。
2是已知一個x很難找另一個得出相同雜湊值的x’,
3是很難找到一對不同但是得到相同雜湊值的x和x‘。
雜湊函式可以用來幹什麼?
•用於儲存密碼
•完整性(如HMAC)。
•在數字簽名中,用於身份驗證。
•針對高熵資料的關鍵推導
•proof-of-work
什麼是proof-of-work?
一個雜湊函式(例如SHA-256)接受一個資料塊作為輸入,並生成一個“隨機”固定大小輸出。
-在區塊中包含一個可變的鹽值。
-目標:找到一個在輸出開頭有N個0的雜湊(比特幣,區塊鏈相關)。
//區塊鏈技術就是用的雜湊函式。在後面會介紹這一部分。
The Random-Oracle Model(黑盒模型)
假設雜湊函式是一個黑盒隨機函式。
只能讓oracle訪問雜湊函式,這意味著他們沒有公式或演算法來確定自己的雜湊值。
隨機oracle(黑盒)以隨機響應響應每個查詢(響應必須一致)。
隨機Oracle模型是一種用於安全證明的理想雜湊函式模型。
訊息認證碼 Message Authentication Code (MAC)
訊息完整性和真實性的對稱工具
•生成加密校驗
•常見結構
–基於雜湊函式
–基於Block cipher.
什麼是訊息完整性?
防止未經授權修改資料
與錯誤檢測的區別
–錯誤檢測是為了無意中修改資料(例如,由於噪聲)
•兩者都涉及校驗和
–完整性檢查值基於訊息和金鑰
–糾錯/檢測碼不使用金鑰
MAC
The receiver receives a message (M.t). It uses the key K and M to calculate MAC K (M) and compare it with t. If the two match, the received message is accepted as authentic.
MAC也被稱為密碼校驗和
A MAC is secure if forging (M,MAC K (M)) without knowing K is hard.
如果在不知道key的情況下偽造(M,MAC K (M))很困難,那麼我們就認為這個MAC是安全的。
HMAC
在各種安全標準中應用最廣泛的MAC.
使用雜湊函式作為構建塊例如MAC-MD5、MAC-SHA1等等。
它也可以被認為是一個偽隨機函式 (PRF)。
HMAC(K,M) = H( K ⊕ opad || H((K ⊕ ipad) || M) )
Pseudo-random function (PRF)偽隨機函式
A family of functions K x X -->Y
– X: message space
– K: key space
– Y: output space
輸出空間有固定的大小.
F k () for a fixed k defines a function/map from X -->Y
PRF 的安全性
We call a function family F: K x X -->Ypseudorandom if the function F k () (for a uniform k chosen from K) is indistinguishable from a random function RF: X -->Y
就是說,如果我們認為這個PRF安全,那麼他將與真正的隨機函式沒有任何區別(不可分辨)。
PRF和MAC
定義:
如果 F: K x X -->Y is a secure PRF family, then F k () with a uniform k chosen from K is a secure MAC.
Reference
- Wenbo Mao, Modern Cryptography, Prentice-Hall, 2003.
- Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, CRC Press, 2015.
- W Stallings, Cryptography and Network Security, Fourth (or later) Edition, Prentice Hall, 2006.
- J. Pieprzyk, T, Hardjono and J. Seberry, Cryptography: an introduction to computer security,
Springer Verlag, 2003. - Guo, F., Susilo, W., Mu, Y. Introduction to Security Reduction, Springer, 2018.
相關文章
- node js如何實現密碼雜湊加密以及jwt登陸驗證JS密碼加密JWT
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- 訊息認證碼
- MySQL密碼加密認證的簡單指令碼MySql密碼加密指令碼
- 雜湊函式函式
- 密碼學系列之:memory-bound函式密碼學函式
- 密碼學系列之:memory-hard函式密碼學函式
- 密碼學之對稱加密密碼學加密
- 密碼學系列之:海綿函式sponge function密碼學函式Function
- 雜湊函式與資料完整性 (^=◕ᴥ◕=^)函式
- 密碼學基礎:編碼方式、訊息摘要演算法、加密演算法總結密碼學演算法加密
- 公鑰加密、數字簽名、訊息認證加密
- 無密碼身份認證,跟密碼說再見!密碼
- 現代密碼-公鑰密碼RSA密碼
- 密碼學系列——訊息摘要(c#程式碼實操)密碼學C#
- 「密碼學」雜湊為什麼要將鹽加在明文後面?密碼學
- 密碼安全和無密碼身份認證那些事兒密碼
- 雜湊表的程式碼實現(Java)Java
- Fortran雜湊函式庫的使用函式
- Redis使用認證密碼登入Redis密碼
- oracle 開啟複雜密碼驗證Oracle密碼
- 古代密碼學與資訊保安密碼學
- 序列密碼的加密與解密密碼加密解密
- 資料結構 - 雜湊表,三探之程式碼實現資料結構
- RSA加密原理&密碼學&HASH加密密碼學
- SpringBoot 整合 Shiro 密碼登入與郵件驗證碼登入(多 Realm 認證)Spring Boot密碼
- 使用 bcrypt 函式生成密碼函式密碼
- 訊息認證碼是怎麼一回事?
- 14-2 雜湊函式設計函式
- 密碼學系列之:bcrypt加密演算法詳解密碼學加密演算法
- 1.6.5. 使用密碼檔案認證密碼
- 數字認證:密碼上雲之道密碼
- 資訊保安與密碼學概論密碼學
- 資料庫裡賬號的密碼,需要怎樣安全的存放?—— 密碼雜湊(Password Hash)資料庫密碼
- Day76.雜湊表、雜湊函式的構造 -資料結構函式資料結構
- Go Web 程式設計--使用 bcrpyt 雜湊使用者密碼GoWeb程式設計密碼
- 現代密碼學-課後習題【李子臣】密碼學
- 密碼學與密碼安全:理論與實踐密碼學