ビットコイン・インスティテュート

アダム・バック​「export-a-crypto-system sig」​:3行の​Perlで​書いた​RSA

export-a-crypto-system sig

これは、RSAの暗号化と復号を実装したPerlのプログラムで、署名のファイルに使えるほど小さい。米国の法学の教授ピーター・ユンガーは、米国商務省から、このプログラムを米国から輸出してはならないと判断する書面 (http://samsara.law.cwru.edu/comp_law/jvd/pdj-bxa-gjs070397.htm)を得た。

この署名のファイルを使ってほしい (http://www.dcs.ex.ac.uk/~aba/rsa/perl-rsa-sig.html):

     -export-a-crypto-system-sig -RSA-3-lines-PERL

#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)

あるいは、もっと新しい2行の版:

print pack"C*",split/\D+/,`echo "16iII*o\U@{$/=$z;[(pop,pop,unpack"H*",<>
)]}\EsMsKsN0[lN*1lK[d2%Sa2/d0<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<J]dsJxp"|dc`

版の一覧と、仕組みの説明はこちら (http://www.dcs.ex.ac.uk/~aba/rsa/story.html)

Perlのハッカーへ:最も小さな軍需品のプログラムを求めて (http://www.dcs.ex.ac.uk/~aba/rsa/story.html)。

プログラムの使い方

  • perl-rsa (http://www.dcs.ex.ac.uk/~aba/rsa/rsa-details.html)で暗号化・復号する
  • RSAの鍵を作る (http://www.dcs.ex.ac.uk/~aba/rsa/rsa-keygen.html)
  • perl-rsaでPGPの鍵を使う (http://www.dcs.ex.ac.uk/~aba/rsa/pgpacket.html)
  • Perlが分かるなら、プログラムの仕組み (http://www.dcs.ex.ac.uk/~aba/rsa/story.html)を分解して説明してある。

武器商人になる方法

ヴィンス・ケイト (http://www.offshore.com.ai/vince/)の、ITARへの抗議を登録できるこのすばらしい方法で、一歩で武器商人 (http://online.offshore.com.ai/arms-trafficker/)になれる。フォームを送るだけで抗議に加われる。いいリンクもたくさんある。今日、RSAを輸出したか? ビル・クリントンに抗議の手紙をメールで送る選択肢もある。

署名の入れ墨

  • これで、彼らはもう外国へは行けないな :-)

署名のTシャツ

  • 上のコードをTシャツにしたもの。軍需品のTシャツ (http://www.obscura.com/~shirt/)はここで手に入る。このTシャツは、厳密には、米国から輸出すると違法かもしれない。

HTMLで遊ぶ

  • 輸出できるインライン画像 (http://www.dcs.ex.ac.uk/~aba/shirt/inline.html)と、それを使った米国のページの例 (http://www.obscura.com/~shirt/)
  • URLに署名を入れた (http://www.dcs.ex.ac.uk/~aba/rsa/link.html)ハイパーテキストの参照

メディアに出たもの

  • (ラベル)ピーター・ルイスによるニューヨーク・タイムズ (http://www.dcs.ex.ac.uk/~aba/rsa/nyt.html)(米国)
  • (署名)チャーリー・ストロス (http://www.tardis.ed.ac.uk/~charlie/)によるComputer Shopper (http://www.dcs.ex.ac.uk/~aba/rsa/shopper.html)(英国)
  • (署名)ウェンディ・グロスマンによるNew Scientist(英国)
  • (シャツ)Wired(雑誌、米国)
  • (シャツ)Canal+のテレビ番組Nulle Part Alleurs(フランス)
  • (シャツ)Nova誌(フランス)
  • (署名、シャツ)Planette Internet誌(フランス)
  • (シャツ)BBCテレビ、the Learning Zone(英国)
  • メディアに出たTシャツの写真 (http://www.dcs.ex.ac.uk/~aba/shirt/media.html)

政治と法律の背景

  • この3行のプログラムを米国から輸出すると、なぜ違法 (http://www.dcs.ex.ac.uk/~aba/rsa/legal.html)なのか
  • 米国のITAR (http://www.dcs.ex.ac.uk/~aba/rsa/itar.html)の暗号の規制という、あの奇妙な代物
  • PGPの作者フィル・ジマーマンは、ITARに違反した疑いで大陪審の捜査を受けている。
  • フランスの暗号の法律から見た署名とシャツ (http://www.freenix.fr/netizen/chiffre/perlrsa.html)についての、ジェローム・トレル (http://www.freenix.fr/netizen/)のページ。
  • フィル・カーン (http://www.qualcomm.com/people/pkarn/)は、愉快な『Applied Cryptography』のディスクの件 (http://www.qualcomm.com/people/pkarn/export/)で、ITARが憲法に反すると法廷で争っている。

perl-rsaのコードを使ったほかのハック

  • ダンカン・フリッセルの軍需品の宛名ラベル (http://www.dcs.ex.ac.uk/~aba/rsa/label.html)が、Computers, Freedom and Privacy ‘95で配られた
  • スコットランドのグラスゴーのSci Fiで売られたバッジ
  • リッチ (http://www.crl.com/~riche/)(アレックス・スチュワート)とルイ・メンデスによる暗号のイワシ缶 (http://www.dcs.ex.ac.uk/~aba/rsa/sardines.html)。
  • the popeによる輸出できるコーラの缶 (http://www4.ncsu.edu/unity/users/r/rothwell/html/)(tm)。(手元の写し (http://www.dcs.ex.ac.uk/~aba/rsa/coke-big.gif))
  • ヴィンス・ケイト (http://www.offshore.com.ai/vince/)による国際武器商人のページ (http://online.offshore.com.ai/arms-trafficker/)。

ほかの小さな暗号のハック

  • ヴィプル・プラカシュ (http://vipul.net)が、6行のPerlでGOST (http://vipul.net/gost/)を書いた
  • クリフォード・アダムズが、5行のPerlでPerlだけで書いたRSA (http://www.dcs.ex.ac.uk/~aba/rsa/pureperl.html)を書いた
  • スティーブ・リードによる、PerlのRSAの鍵を作るコード (http://sea-to-sky.net/~sreid/rsagen.txt)。
  • RSADSIの共通鍵のストリーム暗号RC4 (http://www.dcs.ex.ac.uk/~aba/rsa/rc4.html)を、3行のPerlで
  • C言語のRC4 (http://www.dcs.ex.ac.uk/~aba/rsa/rc4c.html)の二つの版
  • RSADSIの共通鍵のブロック暗号RC5 (http://www.dcs.ex.ac.uk/~aba/rsa/rc5.html)を、6行のPerlで
  • ジョン・アレンによる、RSADSIのメッセージダイジェストのアルゴリズムMD5 (http://www.dcs.ex.ac.uk/~aba/rsa/md5.html)を8行のPERL5で
  • ジョン・アレンによる、メッセージダイジェストのアルゴリズムSHA (http://www.dcs.ex.ac.uk/~aba/rsa/sha.html)を8行のPERL5で
  • 匿名の投稿者による、10行のC言語のディフィー・ヘルマン (http://www.dcs.ex.ac.uk/~aba/rsa/dh-in-C.html)の鍵交換
  • 2行のPerlのディフィー・ヘルマン (http://www.dcs.ex.ac.uk/~aba/rsa/perl-dh.html)(匿名の投稿者のCのコードに触発されたもの)
  • ファウザン・ミルザ (http://jumper.mcc.ac.uk/~fauzanm/)による、80x86の448バイトのIDEA (http://www.dcs.ex.ac.uk/~aba/rsa/idea.html)
  • アンドリュー・クチリング (http://amarok.magnet.com/)がPythonで書いた、4行のPythonのRSA (http://www.dcs.ex.ac.uk/~aba/rsa/python.html)
  • PerlとC言語のワンタイムパッド (http://www.dcs.ex.ac.uk/~aba/rsa/otp.html)
  • アレック・マフェットによる、1行のPerlのCrack (http://www.dcs.ex.ac.uk/~aba/rsa/crack.html)

コメントやHTMLの不具合は、私(アダム・バック (http://www.dcs.ex.ac.uk/~aba/))まで。<aba@dcs.ex.ac.uk>

原典の外部ソース

https://web.archive.org/web/19990128131130/http://dcs.ex.ac.uk:80/~aba/rsa/
エクセター大学にあったアダム・バックのサイトのページ。Internet Archiveが1999年1月28日(13:11:30 UTC)に保存したもの。このページは今もcypherspace.org/rsa/で、後の改訂を加えて公開されている。相対リンクは元のアドレスを指す。