Mac

當使用紙筆和凱撒密碼時,您將如何加密 MAC?

  • August 28, 2014

問這個問題我可能會被槍殺,但我附近有一些孩子(8-10 歲),我一直在展示/教授簡單的紙筆凱撒密碼,他們正在成功地玩現在已經一個多星期了。

愚蠢的我認為現在向他們展示消息身份驗證的概念及其實際工作原理會很棒;特別是它可以用來顯示消息是否被某人修改過。因此,當我突然意識到除了計算能力來計算 (H)MACs 之外,我從來沒有使用過其他任何東西……而這對於孩子們來說並不完全是一個紙筆解決方案。

現在,好消息是他們不需要國家安全級別的加密,這意味著我可以使用任何簡單的(閱讀:即興創作的)散列方法,只要它使用紙筆即可。但是這樣簡單的雜湊顯然很難找到。因此,目前,我正在考慮用基於加法的校驗和事物來簡單地替換通常的散列。這可能行得通,但我不太確定這真的是最好的選擇。

請記住,我需要向 8-10 歲的孩子解釋 MAC,以便他們實際上可以自己使用紙筆來完成,您有更好的主意嗎?當使用紙筆和凱撒密碼向他們展示有效的消息身份驗證時,您將如何加密然後 MAC?

一種選擇是讓他們選擇以下形式的一次性 MAC:

$ mac(m,k_0, k_1) = (k_0 \times m + k_1) \mod p $

你會選擇 $ p $ 變成29歲的樣子。 $ k_0 $ 和 $ k_1 $ 將從值 0-29 中隨機選擇。 $ k_0 $ 具有不能為 0 的附加限制。

您可以通過為它們提供所有乘法模 29 的 29x29 矩陣和所有加法模 29 的類似表來幫助計算。

然後,您將在當時處理一封信。假設這些字母被編號: $ m_0 \dots m_i $ . 你會從 $ m_0 $ ,計算上面的mac方程。然後你將 mac 輸出輸入到 $ k_1 $ 下一個消息塊的位置:

$ mac(m_1, k_0, mac(m_0, k_0, k_1)) $

等等等等:

$ mac(m_i, k_0, mac(m_{i-1}, k_0, \dots)) $

最終的結果只是 MAC 的輸出。

儘管它不安全,但它至少展示了 MAC 的概念。它還為他們提供了一種設計,只需稍作改動即可輕鬆擴展到安全 MAC。

引用自:https://crypto.stackexchange.com/questions/11426