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/


<<:  [铁人赛 Day02] 如何提升你的 React 网站易用性?(Web Accessibility)(上)- 无障碍网站 intro

>>:  02. Hello x Test x Test Pyramid

rsync异地备份+排程自动化

今天要接续昨天的排程备份来实作「异地备份」 读者们如果对rsync操作尚不熟悉,可到 昨天 复习喔 ...

全方位助你找回 iPhone/iPad 上遗失的照片影片

方法一:检视「最近删除」档案夹 如果你无法在装置上找到想要的照片或影片,你首先应该查看「最近删除」档...

[GAS] Genero GAS 控制台网页版 (3.20後套件提供)

在设定 GAS demos.html 时,我们能看到3.20後的版本多了一个区块 此区块即为新增的网...

焦虑与压力

前言 昨天分享了关於拒绝的两三事,是因为它容易出现在日常生活与团体协作当中,後续带来的影响也不容小觑...

[影片]第28天:英雄指南-5. 新增应用内导航(3)

GitHub:https://github.com/dannypc1628/Angular-Tou...