iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Software Development

少女人妻在廚房裡想不通的演算法系列 第 28

【在廚房想30天的演算法】Day 28 資訊安全與演算法 : 訊息鑑別碼

Aloha!又是我少女人妻 Uerica!今天我家狗狗總算沒有一大早叫我起床了,可能之前累爆昨夜一路睡九小時不中斷,起床真是神清氣爽啊~下午發現狗狗還在睡,覺得很疑惑所以去看一下,發現我家狗狗掛著兩條鼻涕,整隻狗還慵懶慵懶的,可能是秋天到了被冷氣冷到了吧 QQ,為了讓她好好休息,今天就不敢吸狗了~


在前面有提到,我們可用公開金鑰密碼系統或迪菲-赫爾曼金鑰交換等方式來交換加密與解密的金鑰,但傳輸的密文在加密後到解密之前的過程中,還是有可能有意或無意的修改到資料,或是無法確立是否為正確來源等,以上種種都有可能造成最後的資訊錯誤,為了避免這樣的問題,就需要訊息鑑別碼機制

訊息鑑別碼 Message authentication code, MAC

訊息鑑別碼,又稱訊息認證碼、檔案訊息鑑別碼、消息認證碼、資訊認證碼等,作法是傳送方將密文與金鑰一起經由演算法的運算,產生一段出一段特定的結果,而接收方收到金鑰與密文後,也可用相同的演算法運算,最後比對是否為相同的結果,這樣的機制可以達到以下兩者優點

  • 身份鑑別 : 確定金鑰或密文傳送方的身份是正確得。
  • 檢查訊息完整性 : 可從計算後的結果比對,確定密文是否被串改過。

仙杜瑞拉送蘋果

  • 有天仙杜瑞拉迷上種蘋果,於是想分一點給愛吃蘋果的白雪公主,首先先用某些安全的方式把金鑰給白雪公主
    x0SVDh3

  • 然後把蘋果放到只有金鑰可以解開的寶箱裡送給白雪公主
    Fxpg77o

  • 但你以為這樣就安全了嗎!不!白雪公主除了要防母后外,還要防冗員小矮人,所以在白雪公主真正吃到蘋果前都還有風險啊!
    235zHJX

  • 那怎麼辦呢?畢竟仙杜瑞拉邊緣人沒朋友,如果白雪公主出什麼意外,以後誰跟她喝姊妹下午茶?於是想出了一個辦法!她將加密後的 "密文"蘋果 與 只有她跟白雪公主才有的 "金鑰" 加入我們先前提到的雜湊果汁機,打出了 "MAC" 這個東西
    FOuTh9a

  • 在傳送秘密寶箱時,也把 MAC 一起傳過去
    ITXOykw

  • 最後白雪公主收到 "密文" 蘋果後,也跟著金鑰丟到果汁機打一波,看產生的結果跟仙杜瑞拉給的 MAC 比對看看是不是一樣的~
    110fpxK

  • 如果是一樣的就可以安心吃蘋果啦~她們的友誼又更上一層樓了~這是可喜可賀呢~
    hq3mIIx

常見的 MAC 產生方法

訊息鑑別碼 MAC 可以想像是由金鑰和密文經過特定演算法的雜湊碼, MAC 的產生方式有

  • HMAC 雜湊訊息鑑別碼
  • OMAC 單金鑰訊息鑑別碼
  • CMAC 加密訊息鑑別碼

crypto-js

加密或產生雜湊值的工具有很多,例如 crypto-js,都是很方便使用的工具,大家可以再去試試看瞜!

  • 用 npm 安裝 crypto-js
    npm install crypto-js

  • 產生 HMAC

const CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key").toString()
);

參考資料:

維基百科 : 訊息鑑別碼

維基百科 : HMAC

訊息確認


感謝各位的閱讀~明天見啦!掰掰~~


上一篇
【在廚房想30天的演算法】Day 27 資訊安全與演算法 : 迪菲-赫爾曼密鑰交換
下一篇
【在廚房想30天的演算法】Day 29 資訊安全與演算法 : 數位簽章
系列文
少女人妻在廚房裡想不通的演算法30

1 則留言

0
juck30808
iT邦新手 3 級 ‧ 2021-10-14 12:06:18

恭喜即將邁入完賽啦~

耶~~謝謝你!

我要留言

立即登入留言