iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
Security

學密碼學也猜不到你的手機密碼系列 第 5

DAY 5- 《串流密碼1》 - OTP

讓我一個字一個字解開你的心。

串流密碼(stream cipher)跟區塊密碼(block cipher)都列屬於對稱式加密底下,
唯一的差別是,串流密碼的加密是以位元為單位,而區塊密碼是多個位元一次加密。

XOR

首先要來介紹一個概念,叫做XOR(他的唸法是X、OR)。

XOR的符號寫作⊕
簡單來說,XOR的邏輯是:一樣的是0(False),不一樣則是1(True)。
在這裡,我們所使用的數字只有0或1,
所以
0⊕0=0
1⊕0=1
0⊕1=1
1⊕1=0

以數學式來表達的話,XOR可以表示成這樣:

r = p ⊕ q ⇔ r = p+q (mod2)
其中p、q 是 0或1 。

XOR在密碼學中很常使用到,之後會很常出現在各大加密系統裡。

那麼介紹完XOR,我們就可以來看這個用XOR為基礎的,非常簡單的串流加密方法,OTP。

OTP(one-time pad)

如果你直接在Google上搜尋OTP的話,可能會出現另一個東西,叫做one time password。
那個跟我要講的東西不一樣。
我要講的是一個名叫one time pad的加密方法。

OTP的中文是一次性密碼本。
先說一個很厲害的事實,OTP是無法被破解的。
但是沒有人會想用它。

假設你要加密以下的訊息

010110010110

接下來你要生成一個隨機的密鑰,密碼的位元數至少要跟明文一樣長。

101110101111

接著,把每一個明文的每一個位元一一對密鑰做XOR,於是你會得到

111000111001

這樣就完成了OTP加密,只要密鑰沒有被洩漏,並且密鑰是隨機的,只使用一次,
那麼OTP被證明是無法破解的。

所以你知道為什麼沒有人要用了嗎?

我在上一篇說到,演算法的安全性跟可行性同樣重要。
OTP的缺點就在於它的密鑰長度:你的明文有多長,密鑰就要多長。
如果你要加密一個1GB的訊息,你就要有一個1GB的密鑰,並且要能安全的傳送這個密鑰。
既然你可以安全的傳送跟明文一樣長的密鑰,那你怎麼不乾脆拿來傳訊息。


明天我會來介紹一個有名的串流加密方法,叫做RC4。
跟 OTP 不同的是,RC4 是可以拿來使用的。(曾經)

圖片來源:
https://imgflip.com/i/1z72rk
https://unwire.hk/2015/03/09/15_programmer_joke/fun-tech/


上一篇
DAY 4- 對稱式、非對稱式加密概要
下一篇
DAY 6- 《串流密碼2》- RC4
系列文
學密碼學也猜不到你的手機密碼30

1 則留言

0
HackerCat
iT邦新手 4 級 ‧ 2021-10-03 21:44:12

讚讚~ 我剛開始學的時候,反而只知道區塊加密,
不清楚串流加密是怎樣,因為網路資源都是講區塊加密GCM,CBC的東西居多XD

我要留言

立即登入留言