面試問題-密碼

信達雅

MAC和Hash的區別?

  • MAC:消息驗證碼
  • Hash:消息摘要/雜湊

image-20230314225004958

主動攻擊是指攻擊者通過假冒、重放、篡改、拒絕等方式完成攻擊。

消息認證可以抵抗主動攻擊,可以驗證接收消息的真實性、完整性、順序性和時間性;數字簽名也可抗主動攻擊,用於驗證消息的不可否認性。

image-20230315101318992

消息認證和數字簽名機制都會產生認證符。認證符是用於認證消息的數值,產生方式又可以分爲消息驗證碼和哈希函數。

MAC

消息認證碼是指消息「\(M\)」被一個密鑰「\(K\)」控制的公開函數「\(C_K(M)\)」作用後產生的、用於認證符的、固定長度的數值,也被稱爲密碼校驗和\(MAC\)」。

如何使用?

假設通信雙方共享一個密鑰\(K\),設\(A\)預發送給\(B\)的消息是\(M\)

  • \(A\)先計算\(MAC=C_K(M)\),並將\(M || MAC\)發送給\(B\)
  • \(B\)收到後對\(M\)做相同的運算,得到一個新的\(MAC\),並與收到的\(MAC\)比較

可以看出\(MAC\)實現了消息的:

  • 完整性:接收方相信發送方發來的消息是未被篡改的
  • 真實性:接收方相信發送方不是冒充的

MAC函數和加密函數的區別?

  • MAC函數不必是可逆的,因此與加密算法相比,更加不容易攻破!
  • 消息認證碼的窮搜索攻擊比對使用相同長度密鑰的加密算法的窮搜索攻擊的代價要更大。

補充:加密算法的安全性

加密算法「對稱或者公鑰」的安全性一般取決於密鑰的長度。如果加密算法沒有弱點,則敵手只能使用窮搜索攻擊以測試所有可能的密鑰,如果密鑰長度爲\(k\)比特,則窮搜索攻擊平均進行\(2^{k-1}\)個測試。

DES數據認證算法

CBC模式的DES算法爲例,其初始向量爲零向量,需被認證的數據(消息、記錄、文件、程序)被分爲64比特長的分組\(D_1,...,D_N\),其中如果最後一個分組不夠64比特,則補0,然後計算數據認證碼:

\(O_{1}=E_{K}\left(D_{1}\right)\)

\(O_{2}=E_{K}\left(D_{2}\oplus O_{1}\right)\)

\(O_{3}=E_{K}\left(D_{3}\oplus O_{2}\right)\)

\(...\)

\(O_{N}=E_{K}\left(D_{N}\oplus O_{N-1}\right)\)

image-20230315112328646

數據認證碼爲\(O_N\)或者\(O_N\)的最左\(M\)個比特,其中\(16<=M<=64\)

ZUC數據認證算法

ZUC的完整性算法128-EIA3是消息認證碼函數,用於爲輸入的消息使用完整性密鑰\(IK\)產生的\(MAC\)

image-20230315130135283

  • 輸入

img

  • 輸出

img

  • 算法
image-20230315130350603

(1)根據參數按照一定規則產生初始向量\(IV\)

(2)以完整性密鑰\(IK\)作爲ZUC算法的密鑰,執行ZUC算法產生出長度爲\(L\)的32位密鑰字節流\(Z_0,...,Z_{L-1}\)

(3)把\(Z_0,...,Z_{L-1}\)看成二進制比特流,從\(Z_0\)首位開始逐比特向後形成一系列新的32位密鑰流,並在消息比特流的控制下進行累加,最後再加上\(Z_{L-1}\),便產生消息認證碼\(MAC\)

具體參考:國密複習

Hash函數

哈希函數\(H\)是一個公開函數,用於將任意長的消息\(M\)映射爲較短的、固定長度的一個值\(H(M)\),作爲認證符,稱函數\(H(M)\)爲哈希值或消息摘要值。

Hash函數的特點:

  • 單向性
  • 輸入任意,輸出固定

HMAC

將Hash函數用於構造MAC方法,HMAC中Hash函數作爲一個黑盒,容易替換。

image-20230315225950669

輸入消息\(M\)\(Y_i\)\(M\)的第\(i\)個分組,\(L\)是分組數,\(b\)是一個分組中的比特數,\(n\)是哈希函數輸出的長度,\(K\)是密鑰,若密鑰長度大於\(b\),則將密鑰輸入到哈希函數中產生一個\(n\)比特長的密鑰,\(K^+\)是左邊經填充\(0\)後的\(K\),長度爲\(b\)比特,\(ipad\)\(b/8\)個00110110,\(opad\)\(b/8\)個01011010。

最終:\(H M A C_{k}=H\left[\left(K^{+}\oplus{o p a d}\right)\parallel H\left[\left({K^{+}\oplus{i p a d}}\right)\parallel{M}\right]\right]\)

HMAC的安全性取決於其中使用哈希函數的安全性。

橢圓曲線上倍點運算的幾何解釋?

給出橢圓曲線方程的定義:\(y^2+axy+by=x^3+cx^2+dx+e\),其中\(a,b,c,d,e\)是滿足某些條件的實數。

下面是兩個例子:

image-20230316092524277

有圖可知:橢圓曲線關於\(x\)軸對稱,記橢圓曲線上的無窮遠點爲\(O\)

橢圓曲線上的加法運算:若曲線上的三個點位於同一條直線上,則它們的和爲\(O\)

  • \(O\)爲加法單位元,即對橢圓曲線上的任一點\(P\),都有\(P+O=P\)
  • \(P_1=(x,y)\)是橢圓曲線上的一點,則它的加法逆元爲\(P_2=-P_1=(x,-y)\)
    • 因爲\(P_1\)\(P_2\)的連線延長到無窮遠點時,得到橢圓曲線上的另外一點\(O\),即曲線上三點\(P_1,P_2,O\)共線,所以\(P_1+P_2+O=O\to P_1+P_2=O\to P_1=-P_2\)
    • \(O+O=O\),得\(O=-O\)
  • 「加法」設\(Q\)\(R\)是橢圓曲線上的\(x\)座標不同的兩點,\(Q+R\)的定義爲:一條通過\(Q、R\)的直線,與橢圓曲線交於\(P_1\),由\(Q+R+P_1=O\),得\(Q+R=-P_1\)
    • 這個交點是唯一的,除非所做的直線是\(P\)點或\(R\)點的切點,此時爲\(P_1=Q\)\(P_1=R\)
  • 「倍點」點\(Q\)的倍點定義:在\(Q\)點做的橢圓曲線的一條切線,設切線與橢圓曲線交於點\(S\),則定義\(2Q=Q+Q=-S\),類似的有\(3Q=Q+Q+Q,....\)

查看文件的具體行命令?

  • cat 文件 :查看文件內容
    • cat > 文件:創建文件
    • cat file1 file2 > file:合併文件
    • cat -n file1 >> file2:追加文件
    • cat : >file :清空文件
image-20230316101743285
  • tac 文件:反向顯示
image-20230316113206488
  • sed 文件:查看文件內容的特定一段,根據時間或者行號範圍查找
    • sed -n '5,10p' file:查看文件第5行到第10行的內容
    • sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' file:按照時間段查看日誌
image-20230316113651888
  • head -n 文件:查看文件前\(n\)行,默認爲10行
image-20230316102050496
  • tail -n 文件:查看文件後\(n\)行,默認爲10行
    • tail -f 文件:動態查看文件內容
image-20230316102248409
  • less 文件:以較少內容展示,按輔助鍵(數字+回車、空格+上下)

  • more 文件:以較多內容展示,按輔助鍵(數字+回車、空格+上下)

  • wc -l 文件:統計文件內容的行數

    • -w :統計文件內容的單詞數
    • -c:統計文件內容的字節數
image-20230316102842995
  • 查看文件中的內容:cat 文件 | grep “內容”
image-20230316103559837
  • vim查看文件內容:/“內容”,在搜索結果中切換上/下一個結果 :N/n
image-20230316103915185

SM4如何做完整性驗證?

傳統構造MAC的方法使用的是分組密碼,正如上面提到的「DES數據認證算法」,使用CBC模式下的SM4構造MAC算法如下:

image-20230316110738801

需要被認證的數據被分爲128比特長的分組\(D_1,...,D_N\),其中若最後一個分組不夠128比特,則補零,通過下面的方式計算數據認證碼,數據認證碼爲\(O_N\)或者\(O_N\)的最左\(M\)個比特:

\(O_{1}=E_{K}\left(D_{1}\right)\)

\(O_{2}=E_{K}\left(D_{2}\oplus O_{1}\right)\)

\(O_{3}=E_{K}\left(D_{3}\oplus O_{2}\right)\)

\(...\)

\(O_{N}=E_{K}\left(D_{N}\oplus O_{N-1}\right)\)

銀行卡中心

分組模式的應用場景?

image-20230316111545442

  • CTR模式:不需要填充,代碼實現起來很方便,而且加密和解密的方法是一樣的,並且可以實現併發分組,效率高,安全性也有保障,被廣泛用於 ATM 網絡安全和IPSec應用中

參考

1、現代密碼學-楊波

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章