単一換字式暗号の歴史と欠点
単一換字式暗号とは一度にひとつの文字をほかの文字に置き換える暗号のこと。表現は少しわかりにくいが、有名なものだとユリウス・カエサルのシーザー暗号。
「これは前にも説明したけどおさらいしておこう」
シーザー暗号は文字をシフト(ずらす)ことによって暗号を生成する。
平文を「cipher(暗号)」として、文字を後ろに3つずらすことによって「flskhu」という暗号文ができあがる。
「シフトするというのは数学的には加算だ」
平文をP、暗号文をC、シフト数をs。そして使う文字をアルファベットにすると、法が26の合同式で、C≡P+s(mod 26)と表せる。
「足し算があるなら掛け算の暗号もあるの?」
愛華の問いに俺は首肯した。
「ただ、加算暗号だと作れる暗号はシフト数0を除いて25種類。説明は省くが乗算だと11種類しかない」
「つまり、それらを組み合わせても275種類の暗号しか作れないってわけか」と成宮。
数学的にはC≡Ps+t(mod 26)の形で表せる。このような暗号はアフィン暗号と呼ばれる。シーザー暗号だとs=1、t=3。
「異なる暗号を組み合わせた暗号は旧約聖書の時代からあった。その旧約聖書のエレミヤ書に使われたと言われているのがアトバシュ暗号」
「アトバシュって何?」
「アトバシュ(Atbash)はヘブライ語。もともとはヘブライ語のアルファベットを暗号化するためのものだったんだけど、現在のアルファベットでも適用できる」
まずは平文のアルファベット文字をすべて書き出し、アルファベットの逆順に文字を対応させる。
A→Z、B→Y、C→X、D→W、……、X→C、Y→B、Z→A
文字を数字に置き換えると、A→1、B→2、C→3、……、X→24、Y→25、Z→26
式で表現すると、C≡27-P(mod 26)だから、
C≡1-P(mod 26)
一般的にはPを正の数にして、C≡-P+1(mod 26)
C≡-P+26P+1(mod 26)
C≡25P+1
とすることが多い。つまり、s=25、t=1
「作成できる暗号は26!通り。26!は10進数表記だと403291461126605635584000000で指数表記だと、おおよそ4・
「ごめん、どれくらい大きいかわかんない」
「約403
成宮が腕を組んで言う。確かに、アフィン暗号は文字をずらすだけのシフト暗号と比べると難易度は雲泥の差だ。
「総当たりだと確かに厳しいけど、単一換字式暗号は文字頻度分析で解読は容易になる」
「なんか難しそう」
「やることは単純だ。暗号文に使われている文字の頻度を調べて範囲を絞り込む」
日本語や英語に限らず、あらゆる言語には頻繁に使われる文字とそうでない文字がある。英文だと出現頻度がもっとも高いのは「e」で12.7%、次に「t」の9.1%、3番目が「a」の8.2%。逆に「q」と「z」は0.1%しかない。
仮に英語の暗号文で出現頻度が8%に近い文字があった場合、それは平文で「t」である可能性が高い。
「この手法は少なくとも9世紀には編み出されていたそうだ。アラビアのアル・キンディという学者が『Origins of cryptology: The Arab contributions』という暗号学にまつわる本を残している。それに載ってるだろうぜ」
「よくそんなこと調べたね」
「まあな」
数学以外の歴史を調べるのもなかなか面白いもんだ。
「注意として文字頻度分析は有効だが、短い文章だと文字の出現頻度がデータ通りにはならない可能性がある」
「つまりある程度の長さは必要ってことだね」
「そういうこと」
とにかく、単一換字式暗号は総当たり攻撃には強くても文字頻度分析には弱い。
文字頻度分析には場所ごとに変換規則を変える多アルファベット換字か、一文字単位じゃなくて複数の文字単位で変換する多字換字といった対策が有効だ。
参考文献
『暗号の数学』ジョシュア・ホールデン 松浦俊輔訳 青土社 2017年
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます