読者です 読者をやめる 読者になる 読者になる

気の向くままに

形而上学・倫理学・法哲学・社会学・自然学・美学・その他諸々について書いてみたい幼稚園児のブログです。まあ、しかし焦らずにゆっくりと、気の向くままにいきましょう。

情報共有と情報秘匿  公開鍵 RSA暗号とは?

私たち 読書ノート

塚越健司『ハクティビズムとは何か』(4)

今回から、第2章 ハッカーと権力の衝突 に入る。テーマは、「情報共有と情報秘匿」である。塚越は、まず情報秘匿のツールである「暗号」について説明している。

f:id:shoyo3:20161220181421j:plain

https://tozny.com/wp-content/uploads/2014/11/crypto-key-stock-art-1000.jpeg

 

情報の秘匿と暗号化

初期MITハッカーたちが掲げた情報の自由な利用とは、ハックにとって必要なプログラムやソースコードを独り占めせず共有化させることで、よりよいハックを達成するために用いられた暗黙のルールであった。とりわけ当時は巨大コンピュータ1台を何人もの人々で利用していたのだから、隠すことなく有益な情報は共有される必要があった。

無論、コンピュータが使用された当初から大企業や研究所の機密データは秘匿されてきた。では、なぜハッカーたちは情報を秘匿せず公開・共有してきたのか。思うにそれは、1950~60年代の巨大コンピュータで情報交換・情報共有していたハッカーたちの情報には、それほど重要な個人情報などが含まれることがなかったからではないだろうか。だがパソコンの登場以降、コンピュータに蓄積される情報の総量に比例して、クレジットカード番号をはじめとする個人のプライバシー情報の比率が上昇していくことになる、従って、企業や研究所の機密情報だけでなく、個人にとってもプライベートな情報は秘匿される必要が生じてきたのである。

塚越は、ハッカーたちが情報を秘匿せず共有してきたのは、個人情報が含まれることがなかったからではないか、と言っているが、果たしてそうだろうか。

ハッカーは、「建設的かつ合理的なシステムの改善」、「誰も思いつかないような改善という名の創造的行為」をめざす。ハッカー倫理とは、以下のようなものであった。(ハッカーは、コンピュータ犯罪者なのか? 参照)

  • コンピュータへのアクセス、加えて何であれ、世界の機能の仕方について教えてくれるものへのアクセスは、無制限かつ全面的でなければならない。実地体験の要求を決して拒んではならない。
  • 情報はすべて自由に利用できなければならない。
  • 権威を信用するな――反中央集権を進めよう。
  • ハッカーは、成績・年齢・人種・地位のような、まやかしの基準ではなく、そのハッキングによって判断されなければならない。
  • 芸術や美をコンピュータで作り出すことは可能である。
  • コンピュータは人生をよいほうに変えうる。

このハック精神からすれば、情報共有(情報の自由な利用)は、必然的な要請であると思われる。「個人情報」は、関係のない話だろう。「個人情報」云々は、ネットによる商取引の安全確保の話である。

 

情報は古代エジプトの時代から、暗号化された上で伝達されてきた歴史がある。もちろん、知られてはならない情報があるということは、それだけ情報に価値があるということである。

積極的に情報が秘匿される場合があることを忘れてはならない。自由を抑圧された独裁国家で監視下にある人々は、自由を求めるために秘密の情報をやり取りし、解放運動を進めるのである。

また内部告発により一躍有名になったリークサイトのウィキリークスは、不正に関する情報をすべての人々に伝えるためにあるものだが、不正に関する情報をウィキリークスに提供するためには提供者のアイデンティティを秘匿する必要がある。情報を自由にするためにこそ、情報を秘匿する必要があるという逆説がここにはある。そしてそのために必要なツールこそが「暗号」である。

犯罪に係る情報は別として、「知られてはならない情報」とは、国家の軍事情報であり、私企業の経営戦略・製品情報等である。俗な言い方をすれば、「戦いと金もうけ」のための情報である。これらの情報は秘匿されねばならない。

ウィキリークスについては後で説明があるようなので、そのときに「不正に関する情報」について考えてみよう。

 

1952年に設立されたアメリカの国家安全保障局(National Security Agency、通称NSA)は、他国へのスパイ活動や通信傍受、暗号解読などを行う、国防総省の諜報機関である。…NSAは設立以来、自らが所有する超巨大コンピュータの力で世界各国の暗号を解読していた。但し、軍事レベルの暗号開発の一方で、暗号は商取引などにも必要であることから、暗号研究自体は民間レベルでも進んでいた。しかしNSAからすれば、民間の暗号レベルの過度な進歩は歓迎できない。なぜなら、国の内外を問わず、不審な動きをキャッチする際の暗号レベルが高度であれば、解読に時間がかかるばかりか最悪の場合暗号が解読不可能になるからである。NSAはテロ組織など、国民を生命の危機に陥れる組織の氾濫を危惧していることもあり、国内で作成された高度な暗号技術の海外への輸出にも、一定のハードルを設けていた。

暗号は情報秘匿のツールである。「何のために」を考えると政治的な話になるが、それを考えなければ、暗号理論というのは数学パズルのような面白さがある。

 

ここで暗号技術(暗号理論)について理解しておこう。塚越は一応説明してくれているのだが、もう一つ腑に落ちないので、「サルにも分かるRSA暗号」(伊藤正史)を参照しよう。以下、引用は  http://www.maitou.gr.jp/rsa/rsa01.php による。

f:id:shoyo3:20161220181945j:plain

上の図の従来の暗号というのは、「共通鍵暗号」といわれるもので、暗号化にも復号にも、「共通の鍵」を使用する。これはすぐに分かる。しかし、これは「鍵」をどうやって秘密に伝えるかが問題となる。

ある文を秘密に伝えたいなら、まず先に鍵を秘密に伝えなければならないのです。これは本末転倒、「それでは、その鍵はどうやって伝えればいいんだ」という話になります。 しかしこの問題は2000年もの長い暗号の歴史上仕方ないこととされ、誰にも解決できませんでした

これを解決したのが、ディフィーとヘルマンの「公開鍵暗号」の概念である。

1976年、2000年もの間、仕方がないこと考えられてきたこの問題を解決する、暗号界の革命とも言える概念が Diffie と Hellman という二人の研究者によって発表されました。 この暗号の概念では、A と B という2つの鍵を使用します。一方の鍵 ( A ) を使って暗号化した暗号文は、なんと暗号化に使った鍵 ( A ) では復号することができず、もう一方の鍵 ( B ) でのみ復号できるというのです。 また、逆にもう一方の鍵 ( B ) で暗号化した暗号文も、もう一方の鍵 ( A ) でしか復号できないという考え方なのです。

この概念を導入できれば、暗号化して伝えて欲しい場合は、一方の鍵 ( A ) を世界に公開し、送信者にこの鍵を使って暗号化して送ってもらえばいいのです。 鍵 ( A ) は世界に公開するため、誰もが自分宛てにメッセージを送信できます。 しかし鍵 ( A ) では、暗号化はできても復号はできないため、鍵 ( A ) を公開しても他人に解読されることはありません。 そして暗号文が届いたら、自分だけの秘密にしているもう一方の鍵 ( B ) を使って復号するのです。 これにより、見事に 当事者間で事前に秘密の鍵を共有しておく必要がなくなる のです。

この「鍵の一方を公開する」という概念は、鍵は送信者・受信者間で秘密に共有するもの という従来の常識を覆すものであったため、この概念に基づく暗号を 公開鍵暗号 と呼ぶようになりました。 そして送信者・受信者間で共通の鍵を用いる従来の暗号は 共通鍵暗号 と呼んで区別されるようになりました。

 

このアイデアは実現可能なものなのだろうか。平文→(鍵A)→暗号文→(鍵B)→平文 を可能にする、鍵A,Bはどういうものだろうか。

公開鍵暗号の概念を考えた本人たちさえ最初は実現方法を示せず、それは当分先のことだろうと考えられていたようです。ところが、公開鍵暗号の概念が発表された翌年(1977年)には、MIT(マサチューセッツ工科大学)に勤務していた Rivest(リベスト)、Shamir(シャミア,シャミール)、Adleman(エイドルマン,アドルマン) という三人の研究者により、公開鍵暗号の概念を実現する初めての数値上の変換方法が発明されました。 この暗号は三人の名前の頭文字をとって RSA暗号と名付けられました。

この数値変換がどういうものか、伊藤は「サルにも分かるRSA暗号」で詳しく説明しているので、そちらを参照願うとして、要は、巨大な2つの素数を掛け合わせた数(310桁以上)を使って数値変換するのであるが、その数を素因数分解することが現実的に無理ということなので、暗号として成り立っているということらしい。(素因数分解が理論的に不可能なのではなく、現状のやり方では、とてつもなく時間がかかるということである)。

 

伊藤は具体例をあげているので、それに沿って試してみよう。

L氏は、S氏に、「D33、K7で暗号化してくれ」という。これは、33を法[モジュロ]として、公開鍵7[べき乗]で、暗号化するという意味である。

S氏、L氏の間に、次のような文字・数字対応表があったとする。 

7

8

13

17

18

19

24

28

29

30

S氏は送りたい文を、上表に基づき数値に置き換える。そして、「D33,K7」で暗号化した結果が、「28,7,8,18」であったとする。これを上表で置き換えると、「カステラ」となる。もちろん、これはS氏の送りたい文ではない。では、第三者が「D33,K7」と「28,7,8,18」から、S氏の元の文を解読できるか。33のような小さな2つの素数(3と11)では、すぐに解読されるが、巨大な2つの素数を掛け合わせた数では、現実的に解読するのが不可能というのである。

L氏は、「D33,K7」と「28,7,8,18」以外のどういう情報を持っているのか。それはD33を指定したとき、2つの素数3と11を知っているということである。そして、この素数の性質から復号のキーが得られる。この例の場合、公開キーは7で、秘密キーは3である。そこで、「28,7,8,18」を3乗して、33を法とした剰余は「7,13,17,24」となる。これを上表に当てはめれば、「すきだよ」になる。

なお、伊藤の例では、公開キーを3としており、この暗号文は「13,19,29,30」(きんぎょ)となる。

EXCELで、べき乗の計算や、剰余計算(mod関数を使う)は簡単にできるので、自分で試してみると、RSA暗号がどういうものか感触がつかめるだろう。