Books Current Topics
定有堂ジャーナル
リーフレット町の本屋
小冊子 定有
教室
インフォメーション


                                                    

■ 今月読んだ本
第163回  暗号を作ろう-ネット社会の基盤技術-


 4半世紀も数学を教えているが、おおよそ10年に1回はとまどうことになる。教育業界のナショナル・スタンダードである学習指導要領が、時代に沿った内容に改訂されるのである。もうすぐ卒業する高校3年生が入学した年から現行の学習指導要領は完全実施された(数学、理科は1年前倒し)。学年進行で新しい内容になるので、今年度になってようやく、新しい分野をどう教えようか、と頭を抱えることになったのだ。
 教育関係者以外は退屈な内容がしばらく続くので、読み飛ばしていただきたい。本論は、携帯認証、電子マネーなどで使われている公開鍵暗号についてである。

 『高等学校学習指導要領解説 数学編・理数編』(2009、文部科学省)は、数学教育の意義を高らかに謳っている。
 「数学は人間の思惟により創り出されるものであり、数学的な事実に関しては誰もが対等な立場で議論をすることができる。そのような議論により、客観的・論理的に物事を説明する力は育成される。このような力は、…国際化や情報化が進展する今日のような時代においてとりわけ重要であるといえる。」(4頁)
 この種の文章には気を遣う。建前に隠された本音を読み解く力が必要だからだ。しかし、この一節には裏はない。数学が本来的に有する民主主義的側面を的確に表現している。数学を前にしては1%の「持てる者」も99%の「持たざる者」も同等である。科学的真理と民主主義的真理は別物ではない、と説いたアンリ・ポワンカレの主張を想起させる文章である。
 さらに、次のようにも書かれる。
 「高度情報通信社会の進展する現代では多くの問題が数学的に整理されコンピュータの活用によって解決されており、数学の果たしている役割は極めて大きい。…コンピュータなどが活用できるようになった現在では、高等学校数学においてもより現実の世界を反映した問題を扱い、生活との関連を重視した学習が可能となってきている。そのような学習は…数学を学習する意義を認識させることにもつながると考えられる。」(5頁)
 大人になってからワープロ、パソコン、ケータイが登場し、四苦八苦してマスターしようと努力した私たちの世代とは異なり、子どもたちは生まれた頃から高度情報通信社会にどっぷり浸かっている。高校生であれば、かろうじてケータイのない生活を覚えているかも知れない。しかし、今の小中学生には、街で連絡を取る手段がなくて途方に暮れる、といった体験は想像できないだろう。
 前回触れた哲学と同様に、学校教育もまた、ヘーゲルの梟のように時代の変化の後追いでしかない。教育関係者は、こんなことをよく言う。教育の本質は「不易」の部分にある。「流行」ばかりを追っていては、物事の本質を教えられない、と。ひょっとして、この考え方はもはや古いのかもしれない。
 スマホを持っていない高校生はほとんどいない。ネット上ではビッグデータが飛び交い、ネットショッピングでは電子マネーを使う。
 高校の教育内容も、ようやく時代の流れに追いついてきた。私の知っている範囲でも、例えば、ビッグデータ社会を反映した数学Ⅰ「データの分析」、認証システムなどの理論的基礎を扱う数学A「整数の性質」(整数論)、電子マネーなどの仕組みを扱う商業科目の「電子商取引」。ちなみに、「データの履修分析」は必修、「整数の性質」、「電子商取引」は選択である。

 授業で用いている教科書『新編 数学A』(数研出版、教科書番号312、2011)に、こんな記述がある。
 「皆さんが普段使用している電子メールなどの通信において、情報を守るため暗号が利用されています。そして、ある暗号の理論に、素数の性質や、ユークリッドの互除法(アルゴリズム-岩田注)が利用されています。そのようなものの1つに公開鍵暗号があります。」(124頁のコラム)この後、公開鍵暗号の仕組みが簡単に説明されている。
 公開鍵暗号だって!第153回で扱ったマーカス・デュ・ソートイ『素数の音楽』(原書2000、新潮文庫2014)では、リーマン予想などの素数解明の歴史における公開鍵暗号の位置づけが、かなりのページを費やして説明されていた。また、暗号の全般的な歴史を描いたサイモン・シン『暗号解読(全2巻)』(原書1999、新潮文庫2007)、軍事・外交の技術やクラウド時代の暗号・認証システムを論じた辻井重男『暗号-情報セキュリティの技術と歴史』(講談社学術文庫2012)では、公開鍵暗号について力を入れた解説がなされていた。
 教科書でも言及されるくらいだから、公開鍵暗号は現代社会を支える基礎的なテクノロジーなのだろう。私は自分の無知を恥じた。
 授業で整数論を教えていたときのことである。公開鍵暗号を知っているか、と何気なく投げかけたところ、「中学校時代、○○先生に教わりました」とA君。私は驚いて聞き返す。「どの程度まで話をされたの」と。その先生はとても有名な方であり、理論的な背景をわかりやすく教える高い見識をお持ちだ。「原理を教えていただきましたが、忘れてしまいました」とA君。「それじゃあ、授業で扱ってみようか」と私。
 そうは言ってはみたものの冷静に考えると、オリジナル教材作りはなかなか大変である。構想1ヶ月、実際には3日を費やして教材は完成。授業で、公開鍵暗号を作ってみよう(メッセージ→暗号化→復号)というものだ。ここでは、授業で扱う内容をさらに噛み砕いて提示してみたい。読者の皆さんが現代社会の基盤技術を知るのは、決して無駄ではないと思うからだ。(参考文献は上述の3点。)

 まずは、暗号の概論から。
 ナチスドイツのエニグマ暗号(文字をずらすローター式)や、太平洋戦争開戦前から敗戦まで日本外務省が用いたパープル暗号(母音と子音を別個に暗号化)など、歴史的に有名な暗号はたくさんある。暗号解読史上もっとも劇的な例は、1822年のシャンポリオンによるロゼッタストーン解読(古代エジプト象形文字のヒエログラフ解読)であった。ちなみに、エニグマ暗号は沈没したUボートから変換機と暗号書が見つかり解読された。また、パープル暗号はアメリカ陸軍によって解読され、アメリカ軍は真珠湾攻撃を事前に知っていたと言われている。
 1977年、暗号界の大革命が起こった。「暗号解読の鍵を公開してしまおう」というのだ。シーザー暗号以来、2000年以上もの間、暗号化と解読は同じ鍵を使っていた(共通鍵暗号)。当然、「暗号化→解読」の手順はマル秘だった。関係者すべてが鍵を知っているだけでなく、「暗号化→解読」のメカニズムが容易に理解できる公開鍵暗号は、まさしくコペルニクス的転回だったと言える。
 公開鍵暗号は、私たちの生活の様々な場面で使われている。携帯端末の認証、クレジットカード、電子マネー、オンラインショッピング、電子署名など。
 ここでは、素因数分解の性質を用いた代表的な公開鍵暗号RSA暗号の原理に基づいて、平文(メッセージ)を暗号化し、解読する作業を行いたい。もちろん、実際に銀行取引で用いられている10の308乗程度の数を扱うわけにはいかないので、電卓計算で算出可能な数を扱うこととする。なお、10の130乗程度の数だと1億台のコンピュータを用いると15秒で素因数分解できるが、10の308乗程度の数の場合は1億台のコンピュータでも1000年以上かかるとのこと。「原理的に可能」でも1000年もかかるのであれば、素因数分解は「事実上、不可能」と言える。 
 実際、素因数分解は難しい。例えば、9041×11299を値段の少し高い12桁の電卓で計算してみよう。答えを出すのに10秒もかからない。では、102154259を素因数分解してみよう。おそらく無理である。
 
 次に、暗号の原理である。
 1977年、MIT(マサチューセッツ工科大学)の3人の研究者が開発した暗号システムは、上述のように暗号界に革命をもたらした。ロン・リヴェストRivest、アディ・シャミアShamir、レン・アデルマンAdelemanの頭文字を取って、RSA暗号と名付けられた。
 RSA暗号システムの原理は、とても単純だ。本来なら、アルファベットを0と1で表すASCII2進法コードを用いたシン『暗号解読』第Ⅵ章「アリスとボブは鍵を公開する」が挙げる例がよいのだが、少々煩雑だ。私が勝手に作ったコード表を用いて、具体的な作業を行ってみたい。

 その前に、頭の準備体操が必要となる。
 【問題】整数A、Bを7で割るとき、余りがそれぞれ2と4である。このとき、A+B、A×Bを7で割った余りはいくらか。
 実は、余りだけ考えればよいのである。(少し古い世代は、高校1年生で「剰余類」を習ったはずである。)A+Bの余りは2+4=6である。A×Bの余りは2×4=8、8をさらに7で割ると余りは1となる。
 では、Aを100回かけたとき、7で割るといくら余るだろうか。Aを3回かけると、余りは2×2×2=8、さらに7で割ると余りは1。100回は3回×33+1回なので、余りは1を33回繰り返しかけたものに2をかければよいので、答えは2。なお、このような考え方を「合同算術(合同式)」という。
 
 まだまだ本論に入れない。もう一つ準備しなければならない。久留島-オイラー関数である。
 久留島義太(?~1758)は、関孝和、建部賢弘と並び称される三大和算家。偉大な数学者レオンハルト・オイラー(1707~1783)が1761年に発表したφ(ファイ)関数に、その数年前に言及していたと言われている。
 例えば、正の整数を10で割った余りを考えてみよう(1の位の数)。余りは0から9まで。0、1は何回かけてもそれぞれ0、1なので、ここでは2~9を扱うものとする。
 余りをRとする。Rを何回繰り返してかけると元のRに戻るだろうか。10で割った場合は5回であること知られている。実際に7を5回かけると16807になり、10で割ると7余る。なぜ5回なのか。
 久留島-オイラーによればこうなる。10=2×5なので、(2-1)×(5-1)+1=5が答えになる。
 ???という反応が予想される。久留島-オイラー関数をきちんと説明しよう。N=P×Qのとき、Nで割った余りをRとする。Rを何回繰り返しかけると元のRに戻るか。その答えは、ファイ関数を用いてφ(N)+1=(P-1)×(Q-1)+1となる。(正式な証明には群論を用いる。)
 納得されない方も少なくないだろう。電卓で簡単に計算できる例を挙げよう。
 P=3、Q=11、N=P×Q=33とする。φ(33)+1=(3-1)×(11-1)+1=21なので、余りRを21回かけ続けるとRに戻ることになる。例えばRを13とする。確かに13を21回かけた数を33で割ると余りは13になる。(実際には計算の工夫が必要。13×13を33で割った余り4を繰り返し利用する。)

 やれやれ、ようやくRSA暗号にたどり着いた。
 本稿でのみ通用するコード表を作ろう。アルファベットは26文字なので、Aを01、Bを02、……、Zを26とする。また、上述の例と同じP=3、Q=11、N=P×Q=33を用いる。26を超す素数として、33は数学的に使い勝手がよい。
 【例題】アリスはN=33とE=7の2数を公開する(公開鍵)。ボブがアリスに暗号12272214を送る。アリスは秘密鍵P=3、Q=11を持っている。(ボブや第三者は秘密鍵を知らない。)ボブはアリスに何を伝えたかったのだろうか。
 以下は、すべてアリスの作業である。
 まず、文字列12272214を12/27/22/14の4つの部分に分ける。復号鍵をDとする。復号鍵とはE×D=φ(N)+1となる数で、Nで割った余りRをE×D回かけ続けると元のRに戻る。E×D=7×D=21なので、D=3が得られる。
 次に、暗号を解読する。12をD回、すなわち3回かけて33で割ると余りは12。27、22、14を3回かけ続けて33で割ると、余りはそれぞれ15、22、5となる。暗号文12/27/22/14を復号すると12/15/22/05なので、コード表を参照してLOVEが元のメッセージであることがわかる。

 いかがであっただろうか。数字が並び、頭が痛くなったのではないだろうか。N=33だったので簡単そうに見えるが、現実にはNは100の300乗を超す途方もない数である。それを思うと、頭痛どころではなくなる。
 
 私は、学生たちに暗号技術を覚えてほしいわけではない。次のことを伝えたいのである。
 私たちは、膨大なテクノロジーの蓄積の上に日々の生活を送っている。科学・技術の言語は数学である。合同算術の概念が発明・発見されなければ、爆発的発展を遂げる情報化社会は到来しなかった。電気、車、鉄道など、数学なくしてはこの世に存在しなかった。数学の産物である夥しい人工物に囲まれて、私たちは暮らしているのである。
 「数学は嫌いだ」という人は大勢いる。数学教師の力不足ゆえだろう。嫌いなものを好きになれ、とは言わない。数学が現代社会を支えている事実を知るだけで十分である、と。


        

New




岩田 直樹
(いわた なおき)
高校で数学を教える。十代後半から二十歳過ぎまでは人並みに小説を乱読したが、それ以降は、現象学からはじめて、思想書をゆっくりと読み進んでいる。


back number

バックナンバーヘ



告知板

ホームへ Back
Top


Copyright © 2000 Teiyudo. All Rights Reserved.