iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
Security

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

DAY8- 對稱密碼

  • 分享至 

  • xImage
  •  

對稱密碼

文字密碼到位元序列編碼

電腦中任何東西都被視為是位元序列

  • 編碼:
    將文字以一串特定的位元序列表示,早期用 ascii table 0x20 ~ 0x7f,為了包容廣大語言,故後來編碼多採用 unicode ,以兩個 bytes 來表示一個字。

  • XOR:
    是一種位元運算,相異則真,相同則假
    適合當作加密算法。

  • 跟非對稱做比較:
    image

一次性密碼本(無法被破解!)

先將字母對應到數字(ASCII),對應出來的一串數字舉例為p

  • 加密:
    會先隨機生成跟p同長度的二進位數列密鑰q,將p跟q XOR(相加除以2取餘數)生成K
    K再轉換成英文變成密文A(無意義的文字)
  • 解密:
    如果對方也有密鑰q,可以再將此密文與q做XOR進行還原
    (XOR兩次等於沒有效果,奇數加偶數還是奇數;偶數加偶數還是偶數)
  • 限制性:
    密鑰長度太大,保存傳輸都不容易且相同的密鑰不能重複使用

DES (Data Encryption standard)

使用56位金鑰,但也因金鑰長度過短,導致安全性有疑慮,而且只能解密之前的密文就被棄用。(輸入的金鑰其實有64位,但因為只有56位被使用,每7bit就會設一個校驗bit,不參與實際的加密流程。)

  • 加密:
  1. 明文拆64bit為一組,分成左右兩邊
  2. 右邊 32bit 會連同子密鑰輸入進輪函數 F 輸出一串隨機 bit seq A
  3. bit seq 會和左邊的 32bit 做 xor (第一輪)
  4. 將左右側 32bit 的結果對調(對調是因為右側沒有加密)->第二輪,總共16輪。
    image
  • 解密:拆32 32跟加密步驟一樣解回去
  • F函數:
  1. 輪函數可以任意增加
  2. 加密與解密可以用相同的構造實現
  • 3DES
    為了增強 DES 密碼強度的算法,對明文做三次 DES 加密
    (加密 -> 解密 -> 加密)
    每次的密鑰可以不同,若三次密鑰皆相同等同於 DES
    image

AES(Advanced Encryption Standard)

只能對固定長度的數據進行加密,對於不定長的數據,我們需要把它切分成若干定長的數據,再進行加密解密,這就是我們常說的分組加密。分組加密有 ECB、CBC、CFB、OFB 這幾種加密模式(後面會詳細說明)。
實作: (把密鑰和混淆後的結果進行 xor 運算,但在每一輪使用的密鑰都是根據上一輪的密鑰變換而來的)
p1

參考資料

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

有機會如果這些介紹有漏地都會進行補充!如果筆記有誤歡迎指正!


上一篇
DAY7- 古代密碼
下一篇
DAY9- 分組密碼
系列文
金盾獎的準備之路19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言