Web Analytics
Privacy Policy Cookie Policy Terms and Conditions 暗号史 - Wikipedia

暗号史

出典: フリー百科事典『ウィキペディア(Wikipedia)』

暗号史(あんごうし)とは、暗号技術に関する歴史的事項のことである。

目次

[編集] 概要

暗号の起源は古く、数千年の歴史を持つ。戦時下においては軍事技術の一つとして発達してきたが、その歴史の大部分は古典暗号に関するものである。古典暗号での暗号化は、紙と鉛筆(と多少の道具)を使って行うことができるものであった。1900年代になって、エニグマ暗号機のような複雑な仕組みを持った電気機械式の暗号が発明され、ついで電子式機械によるより複雑な暗号機が導入された。

1970年代に作られたDESRSAは、それまでは国家に独占されていた暗号技術を広く公開されたものとし、現代暗号を生み出すことになった。集積回路など半導体技術の進歩によって暗号の実装は容易になり、パーソナルコンピュータをはじめとする個人向けの情報機器の普及によって、安全な秘匿通信を個人レベルでも利用できるようになった。携帯電話での通話の暗号化など、ユーザが知らないうちにさまざまな身近な場所に暗号が浸透してきていて、プライバシー保護にも重要な役割を担っている。

暗号解読は暗号技術の裏面にあって、暗号の歴史と対となる歴史がある。頻度分析の発見以来、敵の通信を解読しようとする試みは途絶えることなく深化していき、様々な事件の要因となった。例えば、ツィンメルマン電報は、第一次世界大戦に米国が参戦するきっかけとなり、また、ナチスドイツ軍の暗号文を解読できたことは、第二次世界大戦の終了を数年早めることとなった。秘匿されたメッセージに魅せられた人々は多く、様々なエピソードが残されている。

[編集] 暗号の歴史

[編集] 単純な換字式暗号の発生

暗号の起源は紀元前にまで遡る。紀元前19世紀ごろの古代エジプトの石碑に描かれているヒエログリフ(象形文字)が現存する最古の暗号文とされている。文章中に標準以外のヒエログリフを用いたものがあり、一般のヒエログリフしか知らない者から書いてある内容を隠すのに役立ったと考えられ、これはもっとも初期の換字式暗号のひとつである。

スキュタレーのイメージ
拡大
スキュタレーのイメージ

紀元前5世紀にはスパルタでスキュタレー暗号が使用される。棒(スキュタレー)と革紐とを使った暗号方式で、革紐上には一見ランダムに見える文字列が描かれているが、この革紐をスキュタレーに巻きつけると、ある行に平文が現われる。スキュタレー暗号では棒の太さが鍵になっているとも捉えることもできる。棒と革紐を別の人間が所持し、割符のようにも使ったらしい。

紀元前2世紀にはポリュビオス(紀元前201 - 120頃、古代ギリシャ政治家、軍人、歴史家)がポリュビオス暗号を発明する。ポリュビオス暗号は、5×5=25のマス目にアルファベットを記入し、各アルファベットにそのアルファベットが入っているマス目の行番号と列番号とを対応させる換字式暗号である。

紀元前1世紀に登場したシーザー暗号は、ユリウス・カエサルが用いたとされ暗号の歴史の中でもとりわけ有名なものである。シーザー暗号は元のアルファベットから文字をある数だけ後にずらして作成する暗号方式であり、この数が鍵となっている。しかし鍵の数が26しかないため、暗号の安全性はアルゴリズムの秘匿にも依存していると考えられる。

それに比べて、文字と文字の対応を不規則にした一般的な単一換字式暗号は、その鍵の数が26の階乗存在(アルファベットの場合)し、ほぼ解読が不可能と思われた。

[編集] 換字式暗号からより複雑な暗号へ

換字式暗号は、9世紀頃にはアラビア人によって、頻度分析という手法が発見されたことによって看破された。ヨーロッパではその方面の研究は発達せず、長らく単一換字式暗号が安全な暗号として使用されていた。15世紀になるとルネサンスの影響も受け、急速に発達し、この頃にようやくヨーロッパでも頻度分析の手法が確立した。

頻度分析によって、単一換字式暗号は安全ではなくなってしまったが、いくらかの改良を加え、解読を困難にしようとした。

  • 「ヌル(冗字)」と呼ばれる無意味な文字をいれることによって解読を混乱させる。
  • 1つのアルファベットを複数のアルファベットの組合せで表し、組合せの選択頻度を調節することで文字の出現頻度を均一にした。例えば、AをZ、*、¥、;のどれにしてもよい(もちろん規則性はある)とするなど。各文字によって変わる文字の数に違いがある

など、様々な工夫が凝らされるが、15世紀後半から16世紀にかけて、ヌルさえも、安全ではなくなってきてしまった。

同時期に「ヴィジュネル暗号」などの多表式換字暗号と呼ばれる、より安全性の高い暗号が考え出されていた。例えば、aをcに変える従来の方法ではなく、aaと書けばcgになるような(つまり、同じ文字でも暗号化されると違う文字になる)方法である。単一換字式暗号に比べて安全性は高いが、暗号化・復号が煩わしかった為、あまり使われなかった。

17世紀頃には、科学者が自分の発見を秘匿しつつ、先に発見していたことを主張するために、アナグラムによる暗号文を公開することが行われた。

18世紀頃には、外交や軍事上の必要から安全性の要求が高まると、面倒だが安全なヴィジュネル暗号も使うようになっていった。

ヴィジュネル暗号には、鍵の周期性という弱点があった。変換表は鍵によって逐次切り替えられるが、鍵自体は固定のため、鍵の長さごとに暗号文を調べると、それは同じ変換表にって単純換字された暗号になっているため、頻度分析によって解読できてしまう。この解読法は19世紀の中頃に発見されて、ヴィジュネル暗号も解読されてしまった。

[編集] 無線と暗号

1895年にマルコーニがモールス信号による無線通信を実現し、暗号の歴史は大きな転換点を迎えることとなる。電波による無線通信は特定の相手のみに送信することはできず、味方が通信を受け取ると同時に敵も通信を傍受できることになり、暗号化していない通信文はすべて敵に筒抜けとなってしまう。無線通信を扱う上で暗号は欠かせないものになった。

[編集] 機械式暗号装置の発明

暗号機に関する歴史は、暗号機#歴史を参照。

米軍暗号機M209
拡大
米軍暗号機M209

ドイツの発明家シェルビウスが発明し、1925年にドイツ軍が採用した暗号機エニグマは長い間ドイツ軍の通信の秘密を支えてきた。エニグマの暗号方式は換字式暗号のひとつだが、3枚のローターと数本のプラグの位置を交換することができるため鍵の個数は膨大な数になり、一文字打つたびにローターが回転し回路が変更されるので、単純な換字式暗号とは違い、同じ文字がその位置によって別の文字へ変換されるなど複雑なものである。操作も簡単で特別に訓練を積んだ専門家でなくても扱うことができた。エニグマの暗号機そのものはやがて連合国側も手に入れ解析を進めたが、コードブックの奪取以外の方法ではなかなか解読することは出来なかった。

解読は不可能化と思われたエニグマであったがイギリスの暗号解読者アラン・チューリングらによって理論的な解読がなされることとなる。チューリングが開発した理論でも膨大な計算が必要であり、最初は手作業による人海戦術で計算を進めていたが、やがて開発された暗号解読器、通称"The Bombe"によって大きく手間が軽減されることとなる。このBombeは計算を行える機械としてその後のコンピュータの発明にも影響する。暗号解読法は軍事機密であるため、大戦終了とともにBombeは廃棄されてしまい現在は残っていない。このように軍事機密として闇に葬られてしまった暗号の歴史も少なくないと考えられる。

またこの頃には戦況の変化のスピードが高まり、暗号通信にも速度が求められることとなった。単純に複雑なだけでは暗号化や復号に時間がかかり、実用性が乏しくなってしまうが、暗号機の登場は暗号化の速度向上にも貢献している。それらの裏を掻くかように、アメリカ軍は第二次大戦中にアメリカ先住民ナバホ族の言葉を通信に利用する暗号を使ったことがある(コードトーカー)。ナバホ族出身の兵士同士が会話をするだけなので通信はとても早く正確で、ナバホ族の言葉は大変複雑な上に類似する言語が存在せず、日本軍は解読どころか暗号文を書き留めることすらできなかったという。これらのエピソードは映画「ウィンドトーカーズ」でも描かれている。

[編集] コンピュータと暗号

1940年代、第二次世界大戦終了前後に開発が始まったプログラム可能な電子計算機(コンピュータ)の登場は機械式暗号の信頼性をさらに失速させる。コンピュータは自由にプログラムを設定でき、任意の機械式暗号をシミュレートできる上に暗号化・復号のスピードも桁違いで、暗号鍵を総当りで調べる、暗号文を統計処理して暗号鍵を推測する等、暗号解読の強力なツールとなる。初期のコンピュータにはコロッサスのように暗号解読を目的として開発されたものもある。

一方で1947年のトランジスタの発明、1958年の集積回路の発明など半導体技術の進歩は暗号にも大きな影響を与え、機械式では実現不可能な複雑なアルゴリズムでも実現可能になった。信頼性の高い暗号が、手軽に利用できるようになったのもコンピュータや半導体技術が出現してからである。

[編集] ブロック暗号の誕生

1970年代、Horst Feistelにより換字式暗号転置式暗号を組み合わせた換字-転字暗号が提案され、DESの原型となるブロック暗号 Lucifer が誕生した。

エニグマなどの機械式暗号は、ブロック長が数ビットで、換字表の切替周期の長さとその統計的ランダム性を向上させた換字式暗号であるが、ブロック暗号はブロック長を64~128ビットと大きくし、換字と転置を繰り返すことで暗号文を作成する方式である。単純換字式暗号の換字表の種類は26!サイズであるが、ブロック長が64ビットのとき、(2^64)!という巨大なサイズとなる。

ただ、Luciferの換字表(Sボックスと呼ばれる)の設計には問題があり、解読が容易であった。その為、DES規格制定の際、当時のコンピューターを駆使してSボックスの検証が行われた。しかし助言したNSAがSボックスの設計方針(差分解読法への耐性)を明らかにしなかったため、裏口(バックドア)を仕掛けたとの疑惑が残った。

ブロック暗号の歴史は、ブロック暗号#歴史を参照。

[編集] 鍵配送問題と公開鍵暗号

コンピュータの性能が向上するにつれ、暗号の安全性は、コンピュータをもってしても解読を防げる程度にまで達したが、暗号技術は別の壁にぶつかる。

共通鍵暗号で通信をするには予め鍵を相手に送っておかなければならないが、その鍵を暗号化せずにそのまま送信すれば第三者に盗まれてしまう。安全に鍵を配送するのは多額のコストがかかり、これが鍵配送問題と呼ばれる問題である。 鍵配送問題の例として、敵国に侵入したスパイに暗号鍵を送信していると推測される放送もある(ナンバーステーション乱数放送)。

鍵配送問題を解決すべく、1976年にホイットフィールド・ディフィDiffieとマーチン・ヘルマンHellmanが公開鍵暗号系の概念を提案する(Diffie-Hellman鍵共有)。これは共通鍵暗号系と違い、暗号化と復号に別の鍵を使う、というアイデアである。暗号化の鍵は誰でも入手できるように公開してもよく、送信者はその公開鍵で暗号化して送信し、受信者は復号鍵で平文に戻す。公開された暗号化鍵では復号できず、復号鍵は受信者しか知らないので、通信の秘密は保たれる。

具体的な公開鍵暗号方式として有名なRSA暗号はその翌年に発表された。その後、ラルフ・マークルMerkleとヘルマンの二人が公開鍵暗号方式であるMerkle-Hellmanナップサック暗号を提案したが、この暗号方式は後に解読されてしまった。暗号ソフトウェアはフリーウェアとして公開されているPGPなどもあり、誰でも安心して通信できるようになった。

現在ではもっぱらソーシャルエンジニアリングによる鍵や情報の流出の危険性のほうが問題となっている。コンピュータのパスワードを複雑なものにする、パスワードのメモを机やゴミ箱に放置しないなどの対策が必要となる。

[編集] 量子暗号への展望

典型的な暗号方式であるRSA暗号の信頼性は、大きな数の素因数分解が困難なことに依存している。もし量子コンピュータが実現したとしたら、素因数分解が短い時間で可能になるのでRSA暗号は破られることになる。

量子(現在のところ光量子)を利用した量子暗号も研究が行われている。

[編集] 参考文献

[編集] 関連項目

他の言語
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu