iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Security

金盾獎的準備之路系列 第 7

DAY7- 古代密碼

  • 分享至 

  • xImage
  •  

古代密碼

凱薩密碼

  • 加密
    每一個英文字母都往後推n個
    程式實作轉換:
    image
  • 解密
    反推回去即可
  • 暴力破解
    窮舉: 慢慢推來得出字母偏移幾個數
    modulo:
    因為凱薩密碼要讓字母永遠在編碼26之內,
    假如z變成b(26+2) mod 26 = 2。

簡單替換密碼

字母用其他字母做替換,凱撒加密可以說是簡單替換的一種變形

  • 加密
    每個字母選定一個替換字母且不重複,對著明文一一替換
  • 解密
    約定好的替換表中將每個字母替換回來
  • 破解
    以字母出現頻率分析,
    明文越長越容易破解,破譯的速度會越來越快。
  • 密鑰空間:
    所有可能的密鑰收集起來的集合,共 26! 種可能

Enigma

德軍用來加密軍事消息的算法

  • 加密通信
    接收跟發送端都需要有一台Enigma機器並且共同擁有密鑰。
    將明文輸入機器後為密文,接收端把密文輸入後解密成明文
  • 構造
    發送者對著明文按按鍵,代表某個字母的燈泡會亮起來 => 加密
    接收者對著密文按按鍵,代表某個字母的燈泡會亮起來 => 解密
    image
  • 加密詳細步驟
  1. 設定 Enigma:
    找當天的每日密碼
    依據每日密碼接線、調整轉子
  2. 加密通信密碼:
    發送者想一個 3 個字母的通訊密碼並輸入到 Enigma 兩次(輸入兩次可以撿查通訊過程有沒有出錯)=加密後的通訊密碼
  3. 重新設定 Enigma:
    根據原本的通訊密碼再設定 Enigma
    3个字母實際代表了3個轉子的初始位置。每個轉子的上面都印有字母,根據字母來設置轉子的初始位置。
  4. 加密消息
    輸入明文轉成密文
  5. 傳送消息
    將密文和加密過後的通訊密碼發送出去給接收者

==圖片以nacht當範例加密==
image
根據步驟,發送者選擇通信密碼:psv,輸入兩次後得到psvpsv的密文ATCDVT。重新設定機器把轉子挪到psv上,鍵盤輸入明文:nacht,得到KXNWP。最後傳送出去ATCDVTKXNWP

  • 解密詳細步驟
  1. 設定 Enigma:
    找當天的每日密碼
    依據每日密碼接線、調整轉子
  2. 解密通訊密碼:
    根據收到的消息拆分為通訊密碼和密文(ATCDVT KXNWP)
    把通訊密碼(psvpsv)拿去解密得到原本的通訊密碼
  3. 重新設定 Enigma:
  4. 解密消息:
    鍵盤輸入密文解密得到明文。

image

  • Enigma弱點
    因為密碼是人設定的加上密碼固定要輸入兩次,還要小心保存每日密碼本防止外洩,所以弱點也蠻多的。

參考資料

https://hackmd.io/@starPt/ByUf1sdRr


上一篇
DAY6- 密碼學是甚麼?
下一篇
DAY8- 對稱密碼
系列文
金盾獎的準備之路19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言