![見出し画像](https://assets.st-note.com/production/uploads/images/146492307/rectangle_large_type_2_baceed55e9a1155869204859f2483d74.jpeg?width=1200)
第9話 戦国武将とトランプと暗号と
「え、暗号?」
「おう。RSA暗号、言うてな。インターネットのセキュリティを支える大事な技術や。」
「え、マジで?? どういうこと?」
「なんやお前、暗号に興味あるのんか?」
「うん、ちょっと。」
大翔が最初に“暗号”という言葉と概念を知ったのは、幼い頃に見た何かの映画だった。タイトルはまったく覚えていないが、ニヒルなスパイが活躍するストーリーで、クライマックスで暗号を解読するシーンが出てきたのだ。敵国の警察の気配を感じながら、それまでに集めた情報をつなぎ合わせて、みごとに敵国の機密情報を暴き出す。敵国側はそのすぐ後にスパイを捕まえるのだが、ときすでに遅し。その機密情報は彼によって再度暗号化され、自国へ送られた後だったのである。
暗号のやり方や解き方についてはチンプンカンプンだったが、頭脳を駆使して戦うその姿に、幼心にあこがれたものだった。
さらに中学生の頃。日本史が好きだった彼は、ネットで関連する情報を読みあさっていて、その中で“上杉暗号”なるものを見つけたのである。上杉謙信の家臣の1人が考案したもので、ひらがな約50音に数字をわり当て、部下への手紙などで使っていたのだという。
いろいろ調べてみると、上杉暗号は後世の創作だという説もあるようだったが(*1)、それでも、“軍神”と呼ばれた上杉謙信とニヒルなスパイとが頭の中でダブり、戦国武将と合わせて暗号に対してもいくらか興味を持つようになったのである。
![](https://assets.st-note.com/img/1719460307937-YKvYqLhyeX.jpg?width=1200)
「なるほど、なるほど。“換字式暗号”いうヤツやな。」
「“かえじしきあんごう”?」
「暗号の中でも基本的なやつでな。伝えたい文字を別の文字とか数字、記号に置き換えて送るねん。上杉暗号はまさにそれやな。」
「ふーん。ほんで、そのRSA暗号ってのも換字式暗号なん?」
「いいや。全然別もんや。」
「どうちゃうん?」
「違いを説明する前に・・・。換字式暗号には弱点があるんやけど、何かわかるか?」
「弱点? んーと・・・。」
「上杉暗号で考えてみよか。さっき説明してくれた、ひらがなと数字の対応表あるやろ。あれが、なんらかの理由で外部の人間にバレてしもたとしたら、どうなる?」
「そら、情報ダダもれやろ。」
「そう。それがあったら、暗号はすぐに解けてまう。そういう、暗号を解くために必要なモンのことを“鍵”て言うねん。」
「はあ。その鍵がなんで外部の人間にバレんねん? 普通秘密にするんちゃうの、そんな大事なモン。」
「いろんなケースがあるけど、1つ確実に注意せなあかんのは、鍵を渡すときにもれるケースやな。」
「鍵を渡す?」
「たとえば、上杉謙信が対応表作ったとして、それを遠隔地におる家臣にどうやって渡すか、いう話や。」
「そりゃあ、早馬で・・・。」
「その使者が途中で襲われたらどうすんねん?」
「ああ、そうか。」
たしかにその危険性はある。そもそも、手紙を持った使者は敵に襲われる危険につねにさらされている。だからこそ手紙を暗号化しようとしているのに、その暗号の鍵が盗まれてしまっては元も子もない。
「この問題は、インターネットの世界でも同じや。なにせ、通信で送るデータは誰でも見られるからな。データは暗号化して送るのが原則やけど、そのための鍵をネットで送信したりしたら何の意味もないわけや。」
大翔は少し考えた。
「ほな、あらかじめ家臣を城に呼んだらええんちゃうん? そこで手渡しできるやろ。」
「まあ、それが妥当なトコやろな。そやけどここはあえて、その方法はとれんということにしようや。実際、インターネットの世界やとそれは無理や。」
「なんで? あらかじめスマホとかに鍵を仕込んどいたらええやん。」
それなら店でスマホを買うときに、鍵を物理的に渡せるはずだが・・・。
「それやとスマホ作ってる会社しか、ユーザーと鍵を共有できんやろ。ユーザーが利用したいサービス、たとえば通信販売とかオンラインゲームとかを運営してる会社にも鍵を共有せなあかんのやぞ?」
「ああ、そうか・・・。」
情報をやり取りするメンツがあらかじめ決まっている上杉暗号と違い、インターネットだと誰が誰に情報を送るのか、当事者にも予想できない。あらかじめ鍵を配っておくなどという芸当はできないのだ。
「ほな、どうしたらええねん? 永遠に手紙のやり取りできひんやんけ。」
「上杉謙信がその辺をどうクリアしてたかは知らんけど、今のインターネットの場合、その鍵自体を暗号化して通信相手に送ることになっとる。」
「は? さらに暗号化?」
ずいぶんややこしい話だ。上杉暗号の例えなら、対応表自体を暗号化することになる。具体的にどうやって暗号化するのか、ぜんぜん想像できない。だが、それ以前の問題がある。
「その暗号はどうやって解いたらええねん? どういう暗号使うか知らんけど、また何かしらの鍵みたいなんがいるんちゃうの? それはどうやって共有すんねん?」
「世間に公開する。」
「???」
「まあ聞け。お前、トランプの切り方で、リフルシャッフルって知ってるか?」
「は? トランプ? なんの話? なにシャッフル?」
「“リフルシャッフル”や。」
「いや、知らん。」
「マジシャンがようやる切り方で、カードの山を $${2}$$ つに分けて、$${1}$$ 枚ずつたがい違いに重ねていく切り方やけど。」
「ああ、あれか。」
$${2}$$ つに分けたカードの山をしならせ、文庫本のページをパラパラめくるようにおり重ねていくアレである。
![](https://assets.st-note.com/img/1720232434544-WjsnwwYrmi.jpg?width=1200)
なんならそのあと、カードの束を上にしならせ、「シュビビビビ・・・」とカードをそろえる。プロならともかく、友人などがやっているのをとなりで見ていると、地味にイラッとくるヤツだ。
「あれな、ジョーカー抜きの $${52}$$ 枚のカードでやると、$${8}$$ 回くり返したら元の順番に戻んねん。」
![](https://assets.st-note.com/img/1720246921612-ZAdIwsrV2c.png?width=1200)
「ん? なんか動画で見たことあるぞ。マジシャンが実演しとるやつ。あれ自体、『手品かな』て思てたけど・・・。」
「いや、数学的にも正しい話や。まあ、
トランプの山を分けるときに完全に $${2}$$ 等分する
重ねるときは必ず、山の上半分からきたカードを最初に重ねる
完璧に $${1}$$ 枚ずつたがい違いに重ねる
てな具合に、細々と条件はあるけどな。」
![](https://assets.st-note.com/img/1720321032672-3Ybhhtu4To.png?width=1200)
信じがたい話ではあるが、数学的に正しくて、しかも実際にそれをやっている人がいるのであれば、信じるほかない。
「ふうん。・・・で、それが? なんの話やったっけ?」
「『上杉暗号の対応表を送る』いう話や。叔父さんが今、思いついたやり方やけどな。ひらがなを1文字ずつ、いろは歌の順番で $${48}$$ 枚のカードに書いたヤツで、そのリフルシャッフルを何回かくり返すねん。で、くり返した回数と結果を公表する。なんなら、城下のおふれに堂々と貼り出す。するとどうなる?」
「・・・・・・。合計 $${8}$$ 回になるまでシャッフルしたら、元に戻る?」
たとえば、おふれに書かれているシャッフル回数が $${5}$$ 回だとしたら、あと $${3}$$ 回シャッフルすれば元に戻るのではないか?
「『$${8}$$ 回で元の順番に戻る』のは、カードの枚数が $${52}$$ 枚の場合やな。$${48}$$ 枚の場合、$${23}$$ 回や。」
「いや、そんなん知らんし。」
「『知らん』ということは、少なくとも大翔は、その暗号文から元の対応表を復元することはできん、いうことやな。」
「・・・・・・。はあ、なるほど、な・・・。」
たしかに、あと何回シャッフルすればいいかがわからなかったら、元に戻しようがない。ならべ変えられたカードの山が残るだけだ。その前に何回シャッフルしたのかだけ言われても・・・。
いや、待てよ?
「別に、残りのシャッフル回数がわからんくても、元の順番に戻せへんか? シャッフルの仕方は決まってんのやろ?」
カードはたがい違いに混ぜられるのだから、逆に、たがい違いに $${2}$$ つの山に振り分けていけば、混ぜられる前の状態に戻せるはずだ。しかもたしか、かならず上半分の山のカードから最初に重ねると、言っていたはずだ。だとしたら、シャッフルを始める前の $${1}$$ つの山の状態にまで戻せることになる。
![](https://assets.st-note.com/img/1720321061588-z7zZgavj2o.png?width=1200)
その逆たどり作業を、おふれに書かれているシャッフル回数分だけくり返せば、完全に元のいろは歌を再現できないか?
「ああ、行ける行ける。元に戻せるで。」
「いや、戻せたらあかんやろ。暗号の意味ないやんけ。」
「しんどいやろ? 特に、暗号文作るためのシャッフル回数が多い場合は。だいぶ時間かかるで。」
「そういう問題?」
「そういう問題や。まあたしかにこのやり方やと、コンピュータなら簡単に解読できてまうやろうから、現実的には使い物にならんやろけどな。」
あくまでも、戦国時代だったら使えるかもしれない、という程度の話か。
「・・・・・・。そやけど、やっぱり根本の解決になってへんのちゃうんか? 元の順番に戻るまでのシャッフル回数がわかってなあかんのやろ? その回数はどうやって家臣に知らせんの?」
話を聞いている限り、家臣が置かれている立場は、おふれを見ている一般庶民や敵方のスパイと同じに見える。
「そのシャッフル回数を、家臣だけが知ってるとしたら、どないや?」
「うん? 謙信やなくて?」
「そう。この“リフルシャッフル暗号”を考案したのが、謙信ではなくて家臣の方やったとしてみ? この場合、家臣は謙信に対して『リフルシャッフルを〇〇回くり返して、その結果を教えてください』とだけ言えばいい。謙信はそれに従ってシャッフルするだけや。結果を聞いた家臣は、自分だけが知っとる残りの回数だけシャッフルすれば、いろは歌を復元できる。家臣が何回シャッフルするのかは、庶民やスパイはもちろん、謙信ですら知る必要はない。」
「・・・・・・。???」
イマイチ、ピンとこない。
家臣が謙信にあらかじめ伝えているのは、暗号化の手順だけだ。情報の復元の仕方についてはなにも伝えていない。たしかに理屈の上ではそれでやり取りが成立するが、それでも何かが腑に落ちない。情報の復元の仕方を知らないまま暗号化することなどできるのか? 謙信は不安にならないのだろうか?
「ここでポイントになるのが、暗号化と情報の復元とで必要になる鍵が別、いうことや。今の“リフルシャッフル暗号”の場合、
暗号化の鍵:謙信のシャッフル回数
情報の復元の鍵:残りのシャッフル回数
やな。この“復元の鍵”さえ秘密にしとれば、暗号を解けるのは情報の受け取り手、つまり家臣だけいうことになる。暗号化の鍵の方は、どこの誰に見られてもかまへん。」
「はあ・・・。なるほどな・・・。」
少しずつだが、“リフルシャッフル暗号”のトリックが見えてきた。もともとの上杉暗号だと、暗号化と復元に同じ鍵、つまり対応表が必要になる。だが、“リフルシャッフル暗号”はそうではない。だから、鍵を大っぴらに公開するなどという芸当ができるのだ。
「こういう、世間に公開されとる暗号化の鍵を公開鍵、秘密にされとる復元の鍵を秘密鍵て言うねん。そんでもって、この2つを使い分けることで成立する暗号を公開鍵暗号っちゅうんや。ちなみに、オリジナルの上杉暗号みたいに、暗号化と復元とで同じ鍵を使う暗号は共通鍵暗号ちゅうねん。」
「公開鍵暗号・・・。」
「公開鍵暗号は、1976年にアイデアだけが提案されてな。それから2年後の1978年、それを実現するための具体的な理論が初めて出てきた。それがRSA暗号や。」
「へえ〜。で、それにさっきの定理が使われとんの?」
「そりゃもう、理論の基礎から構築に至るまで、大活躍や。」
「ふうん・・・。」
公開鍵暗号の考え方はなんとか理解できたものの、暗号の仕組みとして、まだ納得しきれないところがある。
「さっきの“リフルシャッフル暗号”やとさ、暗号化したあとのカードの山から、逆たどりで解読できてもうたやん? 同じことって、RSA暗号では起こらへんの?」
「ほぼ、可能性はゼロや。」
「いや、あり得るんかい。」
「さっきの“リフルシャッフル暗号”でいうところの、カードのシャッフルに対応する操作がRSA暗号にもあんねんけど、その操作に使うバカでかい数字があってな。こいつが素因数分解されてまうと、逆たどりが簡単にできてまう。」
「トランプの話から、急に雰囲気変わるやん・・・。ええっと、素因数分解って、素数で小さい順に1コずつわっていくヤツ? そんな単純なことで破れるん?」
「言うほど簡単ちゃうで? 今言うてる“バカでかい数字”は $${2048}$$ ビット、$${10}$$ 進数やと $${617}$$ ケタのモンが使われとる。こいつは $${2}$$ つの素数に分解できるはずなんやが、なんも知らずに素因数分解しようと思ったら、コンピュータでも何百年かかかるて言われてんねん。」
「えええ〜? んなことあるかぁ?」
たしかに小学校の頃、算数で素因数分解をやったときは、そのあまりのめんどうさにうんざりしたものだ。だが、情報のプログラミングの授業でちょっとしたプログラムを組んだことがあるが、コンピュータの計算の速さは尋常ではない。連中の力をもってしても何百年もかかるというのは、納得がいかない。
「納得いかへんか? ほな、実際に解読してみるか? RSA暗号。」
「いや、なんでそうなるねん?」
「いやいや。スパイ映画から暗号に興味を持った大翔くんなら、暗号の解読に憧れがあるんじゃないのかね?」
「いや、なくはないけど・・・。」
冗談ではない。問題の難しさに納得がいっていないのはたしかだが、「すさまじく難しい」と知見者がのたまう問題にチャレンジする気になどなれない。こっちはただでさえ、絵馬の宿題もかかえているのだ。
「大丈夫、大丈夫。ギリギリ手作業で解ける程度の縮小版のRSA暗号を叔父さんが作ったるわ。そんでええやろ。あとでRINEで送るし、がんばってみぃや。ほなな!」
それだけ言ってしまうと、豪はさっさと電話を切ってしまった。
「マイペースすぎるやろ・・・。てか、RSA暗号の仕組み自体は聞いてへんぞ?」
豪が説明してくれたのは、あくまでも公開鍵暗号の考え方だけである。“リフルシャッフル暗号”は、豪が思いつきで作った暗号だというし、あまりあてにはなるまい。
30分ほどして、豪からRINEメッセージが届いた。いわく、
公開鍵:$${N=2077, e=283}$$
暗号文:$${1189, 465, 1500, 190, 907}$$
「うん。とりあえず、$${N}$$ とか $${e}$$ とか、なんのことかまったくわからん。」
その独り言が聞こえたのか、続け様にメッセージが届いた。
「$${N}$$ とか $${e}$$ とかは、まあネットで調べてくれや。
だいたいは同じ記号使って説明しとるから、わかると思う。」
「それと、平文(=ひらぶん、暗号化する前の元の文章な)は、
ひらがなを上杉暗号使って数字に直したモンや。
最後、日本語に戻すときは、例の対応表使ってくれ。」
「じゃ、健闘を祈る! 名探偵!」
「スパイと探偵は違うやろ・・・。いや、似たようなモンなんかな?」
To Be Continued…
参考文献
(*1) https://www.hummingheads.co.jp/reports/series/ser01/110519.html
(*2) “現代暗号のしくみ 共通鍵暗号、公開鍵暗号から高機能暗号まで”
中西透 著 共立出版
この記事が気に入ったらサポートをしてみませんか?