「バーナム暗号」・絶対に解読できない暗号
投稿日: 更新日:
排他的理論和(XOR)
前提知識としてXORの計算方法を知っておく必要があります。そんなに難しいものではありません。
1bitのがあったとします。そして、XORをとすると以下のように計算できます。
つまり、とが同一の時に、異なる時はとなります。
どうやって暗号化するのか
bitの平文があった時、ランダムに生成したbitのを用意します。そして、その2つのXORを取れば暗号文の完成です。
どうやって復号化するのか
暗号化に用いたと暗号文とのXORを取ります。そうすると、元の平文が得られます。
実際に計算してみる
暗号化する
平文を10bitのとし、鍵をとします。
これら2つのXORを取ると
となり暗号文はとなります。
復号化する
先ほどの暗号文と、鍵とのXORを取ります
となり、正しく復号化できました!
なぜ解読できないのか
「全通りの鍵を試せばいつか正しい平文が得られて解読できそうだ」と思うでしょう。
鍵を全通り試すと通りあります。また、考えられる平文も通りあります。したがって、鍵を全通り試すと、考えうる平文すべてが出てきます。全パターンの平文が出ると、どれが正しいのかを判定することができません。
つまり、解読不可というのは「正しい平文かどうかを判定できない」ということです。「現実的な時間で解読困難」というわけではないです。
なぜ使われていないのか
バーナム暗号はほとんど使われていないのが現状です。
鍵保存問題
暗号化に使った鍵は安全に保存しておく必要があります。 ここで、バーナム暗号の鍵の長さと平文の長さは同じです。 もし、鍵を安全に保存できるのであればそこに平文を保存すればいいことになります。そうなれば暗号化は不要なことになります。
鍵配送問題
バーナム暗号は平文と同じサイズの鍵を使用します。その鍵を安全に配送できるならば、その経路を使って同じサイズの平文をそのまま送信すればよいのです。
鍵が使い捨て
事前に鍵を共有して、その後何回でも通信すれば良いと思うかもしれません。これは、やってはいけません。
もし、鍵が流出した際に、過去の通信すべてが解読されることになるからです。
よって、バーナム暗号では毎回の通信ごとに鍵を変えなければなりません。毎回変えるとなれば、鍵配送問題に直面します。
参考文献
IPUSIRON (2017) 暗号技術のすべて 翔永社