インターネットでは、乗っ取り、成りすまし、侵入に盗聴や改竄といった「悪意のある」技術が日々進歩していくのに対して、オンラインショッピング、バンギング、暗号資産、行政手続きなど、セキュリティを要するサービスが日々増えていく。
こうした中で重要な役割を演じているのが「暗号」である。暗号というとスパイ的なものを想像してしまうが、歴史は古く、人類は昔から「秘密」をどうやって必要な人に届けるのかに腐心してきた。
こうした暗号のいくつかは、標準化され、広く使われることがある。インターネット普及前に使われてきたのは、IBMで開発され、1977年に米国の「FIPS」(Federal Information Processing Standards。連邦情報処理標準)となった「DES」(Data Encryption Standard)がある。DESは、共通鍵暗号方式で、一定サイズのデータブロックを暗号化するブロック暗号である。鍵の長さは56ビットとされており、ブロックサイズは、64 bitである。ベースとなったのは、IBMで開発された「Lucifer」と呼ばれる暗号である。ちなみにDESは、日本語ではアルファベットそのまま「ディーイーエス」と読むのが普通。
当初FIPS PUB 46として成立、その後、1988年にFIPS 46-1、1983年にFIPS 46-2と仕様を再承認したが、1999年、DESを3回適用するトリプルDESを推奨しFIPS 46-3とした。
というのも、この期間、マイクロプロセッサが登場するなど、コンピュータの性能が向上し、暗号解読技術も進歩したため、DESはそれに耐えきれず、トリプルDESを導入せざるを得なかった。
このDESの後継となったのがAES(Advanced Encryption Standard)である。AESは、無線LANやWeb用のHTTPS、WindowsのBitLockerなどの暗号化に使われている。AESも共通鍵方式のブロック暗号である。ただし、鍵長は128~356 bitで、ブロックサイズは128 bitとなっている。鍵長が長いのは、攻撃(鍵を知らないで復号を行おうとすること)への耐性を高めるため。
AESは、1997年に米国NIST(National Institute of Standards and Technology)が、次期標準暗号化方式として公募を行い、2001年にFIPS 197として標準化を行った。ベースになったのは、Rijndaelと呼ばれる暗号化方式で、ベルギーの研究者Joan DaemenとVincent Rijmenが開発したもの。
DESには、当初からある種の疑念があった。米国防省の情報機関であるNSA(National Security Agency。アメリカ国家安全保障局)が開発に関わり、裏口(バックドア)を組み込んだのではないかという疑念である。1つには、鍵長が56 bitと短かったことがある。また、DESは、アルゴリズムに「Sボックス」と呼ばれる定数テーブルを使うが、その値がNSAによって改変されバックドアが仕込まれたのでないかという疑念もあった。このため、DESに関しては、さまざまな研究、解析が行われ、次世代のAESに関しては、完全にアルゴリズムを公開し、その攻撃耐性を調べることになった。
AESの普及に対して、インテルは、2008年にAESの暗号化、復号を高速に処理するための「AES-NI」(AES New Instruction)を開発した。インテルのSkylake(2015年)以降、AMDのRyzen(2017年)以降のx64 CPUならAES-NIに対応している。
AES-NIは、7つの機械語命令から構成される。暗号化、復号の通常ラウンド、最終ラウンドを実行する4つの命令とキー生成、ミックスカラム処理(データの拡散、混合処理)、キャリーなし乗算命令の合計7つだ。メーカーの文書によれば、通常の機械語による処理と比較して最大10倍、CPU負荷が最大50%になると言われている。話半分としても、処理が高速化し、CPU負荷が下がることは間違いなさそうだ。
今回のタイトルネタは、チャールズ・ブロンソンの映画「狼よさらば」(1974年。原題Death Wish)である。犯罪で家族を殺された主人公は、一人で犯罪者退治を行う。最終的に5作となっている。2018年にブルース・ウィリス主演で一作目のリメイクも行われた。もっとも、傑作と言えるのは最初の作品のみ。
