Francucelo's Writings

进阶凯撒密码

进阶凯撒密码为个人的加密构想,仅用于日常娱乐性的加密,请勿将此方法用于高风险场景。

此方法基于凯撒密码而来:对明文的每个字母位移其字母表位置。然而,这个方法的区别在与,位移的步数会线性增加,形成周期。

定位

这个方法的定位完全用于低风险场景。凯撒密码一样,让偶然捡到的人无法读懂而无视。

因为凯撒密码的原理过于简单,导致普通人只需要进行基础的心算即可解密密文。因此这个方法就在凯撒密码的基础上进行了加强,使得除非捡到的人真的很在乎并坐下来拿草稿纸或计算机分析,不然只会当乱码扔掉。

本质上,其设计哲学就是在维持加密的简易性的同时尽可能增加破译者的成本。同时,它不为防计算机而设计。

方法逻辑

注意事项

字母表是个变量。可以使用常规的Alphabet,也可以用键盘的QWERTY,也可以随机打乱,同时也可以增加字符(如数字)。

若要防范知晓该方法的他人,可随机打乱字母表,将字母表作为「密钥」。因为排序的空间之大(约26!)、无人能暴力破解,使破译者必须进行专业的密码学分析。

为了避免已知明文攻击,请避免使用固定语句和泄露明文片段。同时尽可能精简化表达。

因为实际密钥为字母表,理论上就算直接泄露初始步长也无大碍。因为不论如何都仅有25个可能性。

转写法

如果想要在一定程度上抵御基本的专业分析,可以参考二战德国的转写法。在加密前如此处理,可以让词与词失去界限,让人无法靠结构推测内容。

储存字母表

要储存字母表,可以使用每行2个字母的长方形表格。其易于携带和查表。

在查表时,以2整除当前步数。垂直向下数整除后的步数,若步数为奇数则再向前一步。如果超过,记得换行和循环。

漏洞:明文与密文绝不相同

在最初的设计中,步长的周期被限定在「0字母表大小-1」之间,然而现在却设为「1字母表大小-1」,使得明文绝对无法和密文一致。

该设计在密码学中普遍是个漏洞,因为通过明文与密文绝不相同的特性可以轻易进行排除法。快速排除任何明文与密文有相同字母的可能性。

然而,该漏洞是为了保障另一个设计:初始步长的可公开性。

在实践中,字母表密钥只需要传纸条,但初始步长则难以共享。为了将所有安全性都绑定在字母表上,我认为必须让初始步长可公开。

在原本的周期中,假设使用26个字母的字母表,每隔26个字母就会有一个是明文。若破译者得到了初始步长,他们就可以精准找出所有的明文片段,这会造成信息泄露。

同时,如果破译者知晓了初始步长,那么同样可以快速排除任何在非0步长处明文与密文有相同字母的可能性。事实上,就算不知道初始步长,破译者也可以排除在26个字母(一个周期)内超过一个密文与明文相同的可能性。

因此,这是为了使初始步长可公开而做的取舍。

#Chinese #design