バーナム暗号 (バーナムあんごう、英: Vernam cipher) はギルバート・バーナムが発明した暗号機械システムおよびその暗号方式(機械式暗号)である。
当時ニューヨークAT&Tに所属していたギルバート・バーナム
(英語版)(1890?1960) が開発し1918年に特許を出願、1919年に取得(U.S. Patent 1,310,719[1])された。以下、この特許明細に基づいて解説するものとし、現代的な暗号学の観点からの考察については基本的には節を分けてまとめることとする。当時の電報などのデータ通信システムにおいて、テレタイプ端末の入出力バッファ等で使用していた鑽孔紙テープ、およびそれに鑽孔されるコードを前提としているが、同じ暗号原理が現代のディジタル媒体や通信にも応用可能である。
送信側と受信側の双方において、あらかじめ同じ位置に穴を開けてあるテープ(ciphering tape)を鍵として共有しておく。送信側では、原文から作られたテープと ciphering tape とから、穴を開けない (0)/開ける (1) について排他的論理和(XOR)をとって、暗文に相当するテープを作成し、それを送信する。受信側では、受信したテープに対して、あらかじめ共有された ciphering tape と排他的論理和をとると、原文が復元される。送信側と受信側の操作は、同じである。
?01
001
110
暗号化 通信文 P 01001011 鍵 K 00011101 暗号文 C 01010110復号 暗号文 C 01010110 鍵 K 00011101 通信文 P 01001011暗号化: P ? K = C復号: C ? K = (P ? K) ? K = P ? (K ? K) = P
上式で、? はビットごとの排他的論理和を表している。K の各ビットの値が 0 であっても 1 であっても、(K ? K) = 0 になる。 ciphering tapeが真の乱数から作られたものであれば、原理的にどのような「解読」結果も同程度に確からしくなること(後年確立された理論の用語を使えば、情報理論的安全性)から、解読不可能という特長があるが、通信量と同量の秘密情報をあらかじめ共有する必要がある点、また運用上は同期がズレる可能性も問題である。そのため、ごく特殊な目的でしか使用されなかったものと考えられている。たとえば、米ソホットラインで使用されたとされている。 ciphering tapeについて、特許の文面中には、(3頁、13?20行目) For ciphering and deciphering the message the ciphering devices at the opposite ends of the line are provided with identical sections of tape upon which are recorded a series of code signals which are preferably selected at random but if desired may themselves represent a predetermined series of letters or words. とある。「random」を擬似乱数列のこととすれば、現代のストリーム暗号の運用と同じものと解釈できなくもないが、擬似乱数という概念が確立されたのは後年のことであり、また「predetermined series」でもよい、としている点は推測可能性に不安もある。よって基本的には、当初提案されたものは、排他的論理和をとる、といったような装置の原理などについてのみが現代のストリーム暗号と共通するものであった、と解釈するのが無難であろう。 暗号システム中の「推測不可能な乱数」として真の乱数[2]を使い、一度使った値は二度と使わない、というワンタイムパッドのアイディアは、バーナム暗号より古いが(en:Frank Miller (cryptography)
特許
US Patent 1,310,719 Patented July 22,1919(出願は1918年9月13日), GILBERT S. VERNAM, AMERICAN TELEPHONE AND TELEGRAPH COMPANY, "SECRET SIGNALING SYSTEM"( https://www.google.com/patents/US1310719 )
運用
現代暗号の観点
ciphering tapeとして真の乱数を使用した場合のバーナム暗号のような暗号の、数理から見た安全性(学理的強度)については、後に(やはりAT&Tの)シャノンが、情報理論的安全性として、その理論を確立した。
なお、現代のストリーム暗号が専ら、短い鍵のみを秘密情報として共有し、それから生成される擬似乱数列を使用することから、真の乱数(ワンタイムパッド)を使用するものを「バーナム暗号」として言及されていることがあるが、前述のように原文献とされる特許の明細には、真の乱数の使用を示すような明確な記述は無い。
また、暗号化量子通信プロトコルのYuen 2000(Y-00)などに関して、バーナム暗号やワンタイムパッドという語を散りばめた解説が見られるが、@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}同プロトコルの構成は現代暗号としてストリーム暗号の一種と解されるべきで、古典的な概念であるバーナム暗号やワンタイムパッドという語の使用は誤りと思われる。[要出典]
脚注[脚注の使い方]^ https://www.google.com/patents/US1310719
^ この目的には、暗号論的擬似乱数であっても、擬似乱数列であるため不適
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}