調べて分かる道具箱

シーザー暗号とヴィジュネル暗号

この暗号に、秘密を守る力はありません。ここにあるのは遊びのための暗号で、あとで実際に破って見せます。 パスワードや、住所や、人に見られたら困ることは入れないでください。

やり方

合言葉は4文字なので、4字ごとに同じずらし方がくり返されます(か→5ずらす、わ→43ずらす、う→2ずらす、ま→30ずらす)。

できた暗号文

かけつけかく,りくあいけこいけおのかえけちすばそゕたえそつ(えいりにぶれぃににおをに,こへにくんにれせんグロテけのきをぎつ(ゆれかまぐしゕする.のけゕやおにえねずせねゆねおづるき(へたぬにうみそちぶこ:うんけくふばろ;

元に戻したもの

あしたのあさ、こうえんのおおきなとけいのしたでまっています。いつものばしょのとなりの、はねのかたちをしたベンチのところです。もしあめがふったら、としょかんのいりぐちにきてください。ひみつのあいことばは、かわのうまです。

✓ 元の文にぴったり戻りました。同じ数(同じ合言葉)で逆にずらすと、必ず元に戻ります。戻せることと、秘密が守れることは別の話です。

ずらした字
109字
そのまま残した字行き先を作れないので、そのまま残した字(数字・表に無い漢字・絵文字)
0字
そのまま残した空白・改行ここも見えたまま残ります
0個

数字と、常用漢字表に無い漢字と絵文字は行き先が作れないので、そのまま残ります。 とくに空白をそのまま残すと、ことばの切れ目が見えてしまいます── 「〇〇 〇 〇〇〇」という形だけで、当てられる手がかりになります。

同じ文章を、3つのグラフで見る

ひらがなの46字が、それぞれ何回出てきたかを数えたグラフです。暗号文を受け取った人は、中身が読めなくても、この数だけは数えられます。

① 元の文
① 元の文あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん11回

ひらがなを86字ぶん数えました。多い順に の 11回、い 6回、し 6回、た 5回、と 5回。 これから隠したい文の、でこぼこです。 狭い画面では、グラフを横にスクロールできます。

② シーザー暗号にしたもの(3ずらし)
② シーザー暗号にしたもの(3ずらし)あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん11回

ひらがなを86字ぶん数えました。多い順に ふ 11回、お 6回、そ 6回、て 5回、ぬ 5回。 ①とくらべてください。でこぼこの形はそのままで、横にずれているだけです。ずらしただけなのだから、当然そうなります。 狭い画面では、グラフを横にスクロールできます。

③ ヴィジュネル暗号にしたもの(合言葉4文字)
③ ヴィジュネル暗号にしたもの(合言葉4文字)あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん8回

ひらがなを86字ぶん数えました。多い順に け 8回、に 8回、え 4回、お 4回、か 4回。 こちらは形そのものが変わって、高さがならされています。同じ字でも、何番目かによって別の字に化けるからです。 狭い画面では、グラフを横にスクロールできます。

でこぼこの大きさ(一致指数)

その文から2字を選んだとき、同じ字になる確率です。 でこぼこが大きいほど高くなります。見た目ではなく数で言えるようにするために出しています。

元の文・シーザー暗号・ヴィジュネル暗号の一致指数
何の文か一致指数
元の文いま入れている文章0.0369
シーザー暗号元の文と1ミリも変わりません0.0369
ヴィジュネル暗号下がります(ならされる)0.0315
くらべる表宮沢賢治『銀河鉄道の夜』(青空文庫・図書カード No.456)0.0368
字をばらばらに並べたとき1 ÷ 46(どの字も同じ回数)0.0217

ヴィジュネル暗号でも、ばらばらの並びまでは下がりません。下がりきらずに残っているこの差が、合言葉の長さを当てる手がかりになります。

やぶってみる

上で作ったシーザー暗号の暗号文を、合言葉もずらす数も教えずに解いてみます。使うのは文字の出る回数だけです。

よくある質問

シーザー暗号は安全ですか?

安全ではありません。遊びのための暗号です。ずらす数は英語なら25通り、ひらがなでも45通りしかないので、全部ためしても数分で終わります。それどころか、このページのように文字の出る回数を数えれば、ためすまでもなく1回で当てられます。文字を置きかえるだけの暗号は、置きかえても「どの字が何回出たか」の顔ぶれが変わらないからです。本当に見られたくないものは入れないでください。

ヴィジュネル暗号なら安全ですか?

こちらも安全ではありません。合言葉の字ぶんずつ違う数でずらすので文字の出る回数はならされますが、1863年にフリードリヒ・カシスキが破り方を本にしています。合言葉の長さが分かると、暗号文を合言葉の長さごとに分けたそれぞれがただのシーザー暗号になるので、あとは1本ずつ数えるだけです。イギリスのチャールズ・バベッジも同じころ解いていたと言われていますが、公表しなかったため、破り方にはカシスキの名前が付いています。

ひらがなや漢字は、どうやってずらすのですか?

輪をいくつも使います。かなは五十音の46字(あ〜ん)、濁点のついた21字(が〜ぼ・ゔ)、半濁点のついた5字(ぱ〜ぽ)、小さい字12字(ぁ〜ゎ・ゕ・ゖ)。漢字は常用漢字表の2139字。記号は和文の27字とASCIIの32字。英字は小文字26字と大文字26字です。カタカナはひらがなと同じ並び・同じ長さなので、ずらす数がそのまま通じます。濁点の字を46字の輪に混ぜられないのは、「が」を1つずらしたときの行き先が「あ」に濁点をつけた字になり、そんな字が Unicode に無いからです。でも濁点の字だけで輪を作れば、が→ぎ→ぐ…→ぼ→ゔ→が と回って必ず濁点の字に着き、元にも戻せます。行き先を作れないのは、数字と、常用漢字表に無い漢字(人名用漢字・旧字体)と絵文字です。ずらせなかった字は、その数と種類を入力欄のすぐ下と結果の表に出します。

入力した文章はどこかに送られますか?

送られません。このページの計算は、暗号にするところも、破るところも、全部あなたのブラウザの中だけで終わります。サーバーに送っていないことは、ブラウザの開発者ツールの通信の記録を見れば自分で確かめられます。ただし送っていないことと、暗号が秘密を守れることは別の話です。この暗号には秘密を守る力がないので、本当に見られたくないものは入れないでください。

合言葉を空にするとどうなりますか?

計算せずに止めて、理由を画面に出します。空を「0だけずらす」と決めてしまうと、暗号文が元の文とまったく同じものになり、暗号にしたつもりで何も隠れていない状態になるからです。合言葉が1文字のときも断り書きを出します。1文字だとずらす数がずっと同じままなので、それはヴィジュネル暗号ではなくシーザー暗号そのものになるためです。

ROT13とは何ですか?

13ずらすシーザー暗号のことです。英語のアルファベットは26字なので、13ずらしたものをもう13ずらすと元に戻ります。暗号にする手順と元に戻す手順がまったく同じになるのが便利で、昔の掲示板では答えやネタバレを隠すのに使われていました。隠す力があるからではなく、うっかり目に入らないようにするためです。このページでは、上の道具で「シーザー暗号」を選んでから「13ずらす」を押すとためせます。

文章を暗号にして、その場で破ってみせるページです。 かなは五十音、漢字は常用漢字表の順でずらします。 記号も英字もずれるので、ふつうに漢字まじりで書いて大丈夫です。

カエサルは「A のかわりに D」と書きました

いまから2000年ほど前のローマに、ユリウス・カエサルという人がいました。 その伝記を書いたスエトニウスが、カエサルの手紙のことをこう残しています。

quartam elementorum litteram, id est D pro A et perinde reliquas commutet

「アルファベットの4番目の字、つまり A のかわりに D を、 あとの字も同じように置きかえよ」という意味です(『皇帝伝』ユリウス・カエサル 56)。 A から D は3つぶんなので、3つずらすということになります。 いま「シーザー暗号」と呼ばれているのは、この一文があるからです。

アウグストゥスは、輪にしませんでした

同じ本には、次の皇帝アウグストゥスのやり方も書かれています。

B pro A, C pro B ac deinceps eadem ratione sequentis litteras ponit; pro X autem duplex A

「A のかわりに B、B のかわりに C、と同じ調子で次の字を置く。 ただし X には A を2つ」です(同 アウグストゥス 88)。1つずらすやり方なのですが、 原文はわざわざ「X には A を2つ」と付け加えています。X のつぎの字が無いところを、A を2つ書くことで済ませた── そう読まれています。

ここが面白いところです。いまのシーザー暗号は Z の次を A に戻します── つまり字の並びを輪だと考えます。 輪にすると、はみ出した字の行き先を別に決めなくてよくなり、同じ数だけ逆にずらせば必ず元に戻るようになります。この「輪にする」という考えは、あとから付け足されたもので、 2000年前の原文にはありません。

自分で確かめられます。上の道具で「シーザー暗号」を選んでから、ずらす数を26 にしてみてください。英語の字が1つも変わりません。46 にすると、ひらがなとカタカナが1つも変わりません。 1周して戻ってきているからです。輪になっている証拠です。

数えるだけで解けます

『不思議の国のアリス』の英語の原文を数えてみました。全部で108,082字のうち、e が 13,621回(12.6%)で1位、 2位が t、3位が a です。いちばん少ないz は 78回(0.07%)しかありません。

日本語も同じです。『銀河鉄道の夜』のひらがなを数えると、22,875字のうち「の」が 1,671回(7.3%)で1位でした。2位は「た」、3位は「い」です。

シーザー暗号は、字を置きかえているだけです。 だから「どの字が何回出たか」という回数の顔ぶれは変わりません。 グラフのでこぼこが、まるごと横にずれるだけです。暗号文でいちばん多い字を「e」や「の」に重ねれば、ずらす数がそれで分かります。上の「やぶってみる」を押すと、実際にそうなります。

文字を数えて暗号を解く方法が書かれた本として、いま知られている中でいちばん古いのは、9世紀のバグダードの学者アル=キンディーが書いたものだ、とされています (Ibrahim A. Al-Kadi「Origins of Cryptology: The Arab Contributions」Cryptologia 16巻2号・1992年)。1000年以上前から、この暗号は破られていたということです。

ちなみに、ずらす数は英語なら25通り、ひらがなでも45通りしかないので、全部ためしても解けます。数えるやり方がすごいのは、ためさずに一発で当たるところと、試す通り数がどれだけ多くても効いてしまうところです。

合言葉を使うと、でこぼこがならされます

ヴィジュネル暗号は、合言葉の字ぶんずつ、ずらす数を変えていきます。 合言葉が「かわうま」なら、1字目は「か」のぶん、2字目は「わ」のぶん、 3字目は「う」のぶん…と変わって、4字ごとにくり返します。同じ「あ」でも、何番目にあるかで別の字に化けるので、 文字の出る回数がならされます。上のグラフで③が平らになっているのがそれです。

名前の話も面白いところです。このやり方を最初に本に書いたのは1553年のジョヴァン・バッティスタ・ベラーゾで、ブレーズ・ド・ヴィジュネルが『Traicté des chiffres』(1586年)(新しいタブで開きます)で書いたのは、前の文字そのものを鍵にする別のしくみでした。名前が入れかわったまま定着したと考えられています。

この暗号は300年ほど「解けない暗号」と呼ばれていました。 それを破ったのが1863年のフリードリヒ・カシスキで、 『Die Geheimschriften und die Dechiffrir-Kunst』(ベルリン・E. S. Mittler und Sohn) という本に方法を書いています。合言葉の長さが分かれば、暗号文を合言葉の長さごとに分けると、そのそれぞれがただのシーザー暗号になります。 あとは1本ずつ、字を数えるだけです。

だからヴィジュネル暗号も、秘密を守る力はありません。上の表の一致指数を見てください。ヴィジュネル暗号にすると数は下がりますが、ばらばらに並べたとき(1 ÷ 46)までは下がりません。 この下がりきらない差が、合言葉の長さを当てる手がかりそのものです。

ひらがな・カタカナをずらすために決めたこと

このページは、ひらがな・カタカナを五十音の46字(あいうえお…わをん)の輪でずらします。 文字コードの順ではありません。文字コードの順でずらすと、 「あ」の次が小さい「ぃ」になったりして、五十音の感覚と合わなくなるからです。

濁点のついた字(が・ぱ)と小さい字(っ・ゃ)は、この46字の輪に混ぜられません。たとえば「が」を輪の順で1つずらすと「き」に濁点をつけた「ぎ」になりますが、 同じやり方だと「ん」の次で「あ」に濁点をつけた字が要ります。そんな字は文字として存在しません。 そこで行き止まりになります。

けれども、ずらせない訳ではありません。濁点の字だけで輪を作ればいいのです。 が→ぎ→ぐ→…→ぼ→ゔ→が と回れば、行き先は必ず濁点の字なので、 行き止まりが起きません。元にも戻せます。 同じ考えで、半濁点はぱぴぷぺぽの5字、小さい字はぁぃぅぇぉっゃゅょゎゕゖの12字の輪になります。 このページはこの4つの輪でずらしています (46字・21字・5字・12字)。 カタカナ側も同じ数・同じ並びなので、ずらす数がそのまま通じます。

下の「数えて破る」は、五十音46字の輪だけを見ています。21字や5字の輪は数が少なすぎて、文字の出る回数から当てるという話にならないからです。 輪が増えたぶん暗号が強くなったように見えますが、そうではありません ── 輪ごとにただのシーザー暗号が並んでいるだけで、 破り方は変わりません。

漢字と記号の輪

漢字も輪にしています。使っているのは常用漢字表(2010年内閣告示)の2139字で、表の通し番号の順に並べた輪です。 「亜」を1つずらすと、表で次の「哀」になります。

Unicode の漢字ブロック(20,992字)を丸ごと輪にすることもできますが、そうしていません。行き先が珍しい漢字になり、端末によっては□(豆腐)で出るからです。 受け取った人が「壊れた」と思ってしまいます。 常用漢字表なら、どの端末にも字があります。 そのかわり、表に無い漢字(人名用漢字・旧字体)はそのまま残ります。

記号も、和文の27字(、。「」()?!…)とASCIIの32字(!"#$…)で別々の輪にしています。 ただし記号をずらしても「切れ目」は隠せません ── 「、」が「。」になるだけで、どこで切れているかはそのまま見えています。

それでも行き先を作れない字があります。数字と、常用漢字表に無い漢字と、絵文字、 それに空白と改行です。 空白を輪に入れないのは、隠せていないものとして数え続けるためです。

ずらせなかった字は、黙って消さずに、そのまま残して数を画面に出します。消してしまうと、元に戻したときに文が変わってしまうからです。 ただし残した字は、そのまま見えているということでもあります。 とくに空白をそのまま残すと、ことばの切れ目が見えてしまいます。 「〇〇 〇 〇〇〇」という形だけでも、当てるための手がかりになります。

持ち帰れるもの: 秘密にすべきなのは、やり方ではなく鍵です

1883年、オランダ生まれのオーギュスト・ケルクホフスが「軍事暗号(La cryptographie militaire)」(新しいタブで開きます)という論文に、暗号がみたすべき6つの条件を並べました。その2番目がこれです。

Il faut qu'il n'exige pas le secret, et qu'il puisse sans inconvénient tomber entre les mains de l'ennemi

「そのしくみは、秘密にする必要がなく、 敵の手に落ちても困らないものでなければならない」という意味です。 つまり隠すべきなのは「やり方」ではなく「鍵」だ、ということ。 いま世界中で使われている暗号は、この考え方でできています ── しくみは全部公開されていて、それでも鍵を知らない人には解けません。

このページの暗号は、そこが逆です。やり方(五十音を何個ずらすか)が分かってしまうと、鍵まで数えるだけで分かってしまいます。だから遊びどまりです。本物の暗号は、このページでは扱いません。同じ画面に並べると「これなら安全」と読めてしまい、それがいちばん危ないからです。

数値の出どころ: カエサルとアウグストゥスの原文はスエトニウス『皇帝伝』のラテン語本文(新しいタブで開きます)から。文字の出る回数は、Project Gutenberg の『Alice's Adventures in Wonderland』(新しいタブで開きます)と、青空文庫の宮沢賢治『銀河鉄道の夜』(新しいタブで開きます)をこのサイトで実際に数えたものです。 どこをどう数えたかは core/cipher.corpus.json に書いてあるので、 同じ手順で数え直せます。