目次
暗号化については、ニュースで頻繁に取り上げられますが、たいていは政府の誤った政策の受け売りであったり、テロリストの残虐行為の責任の一端を担ったりしています。
しかし、暗号化がいかに重要であるかは無視されています。インターネットサービスの大半は、情報の安全を確保するために暗号化を使用しています。
しかし、暗号化はやや理解しにくいものです。暗号には数多くの種類があり、それぞれ用途が異なります。では、どのようにすれば「最適な」暗号化の種類を知ることができるのでしょうか。
では、主な暗号化方式はどのような仕組みになっているのでしょうか。また、なぜ独自の暗号化アルゴリズムを使ってはいけないのでしょうか。
暗号化の種類と暗号化の強さ
暗号化言語の最大の誤解の1つは、暗号化の種類、暗号化アルゴリズム、それぞれの強さの違いに起因します。それを分解してみましょう。
- 暗号化の種類。暗号化の種類は、暗号化がどのように完了するかに関係します。例えば、非対称暗号はインターネット上で最も一般的な暗号の種類の1つです。
- 暗号化アルゴリズム。暗号の強さについて議論するとき、特定の暗号化アルゴリズムについて話しているのです。アルゴリズムは、Triple DES、RSA、AESのような興味深い名前の由来となっています。暗号化アルゴリズム名には、AES-128のような数値が付くことが多い。この数値は暗号鍵のサイズを表し、さらにそのアルゴリズムの強さを定義しています。
この他にも、暗号化に関するいくつかの用語を知っておくと、この後の議論がスムーズに進みます。
最も一般的な5つの暗号化アルゴリズム
暗号化の種類は暗号化アルゴリズムの基礎を形成し、暗号化アルゴリズムは暗号化の強さを担当します。暗号化の強さはビット数で話します。
さらに、あなたはおそらく自分が思っている以上に多くの暗号化アルゴリズムを知っているはずです。ここでは、最も一般的な5つの暗号化の種類と、その仕組みについて少し紹介します。
1.DES
データ暗号化規格は、米国政府の暗号化規格の原型です。当初は破られないと考えられていましたが、計算能力の向上とハードウェアのコスト低下により、56ビット暗号は実質的に時代遅れになっています。特に機密データに関してはそうだ。
EFFの共同創設者でDeep Crackプロジェクトの責任者であるJohn Gilmore氏は、「社会のために安全なシステムやインフラを設計するときは、政治家ではなく暗号学者の意見を聞くべきだ」と述べ、今回のDES解読の記録は、データの機密保持をDESに依存している人に「警鐘」を鳴らすべきと警告している。
とはいえ、DESは多くの製品に搭載されている。低レベルの暗号化であるため、膨大な計算能力を必要とせず、実装が容易なのだ。そのため、スマートカードや限られたリソースの家電製品では一般的な機能となっている。
2.TripleDES
TripleDES(3DES、TDESと表記されることもある)は、DESをより安全にした新バージョンである。DESが23時間以内にクラックされたとき、政府は重大な問題が発生することを認識した。そこで、TripleDESが誕生したのです。TripleDESは、DESを3回実行することで暗号化手順をかさ上げしています。
データを暗号化し、復号化し、再び暗号化することで、有効な鍵長は168ビットになります。これは、ほとんどの機密データに対して十分な強度です。しかし、TripleDES は標準的な DES よりも強力ですが、独自の欠点もあります。
TripleDESには、3つのキーイングオプションがあります。
- キーイングオプション1:3つの鍵はすべて独立しています。鍵の強度は168ビットと最も強い。
- Keying Option 2: Key 1とKey 2は独立で、Key 3はKey 1と同じである。この方法の有効鍵長は112ビット(2×56=112)である。
- Keying Option 3: 3つの鍵はすべて同じものである。56ビットの鍵が得られる。
キーイングオプション1が最も強い。キーイングオプション2は、それほど強力ではありませんが、DESで2回暗号化するよりも高い保護性能を発揮します。TripleDES はブロック暗号であり、データは固定されたブロックサイズで次々と暗号化されることを意味します。残念ながら、TripleDES のブロックサイズは 64 ビットと小さく、特定の攻撃(ブロックコリジョンなど)の影響を受けやすくなっています。
3.RSA
RSA(Ron Rivest、Adi Shamir、Leonard Adlemanにちなんで命名)は、最初の公開鍵暗号アルゴリズムの一つです。先にリンクした暗号用語の記事にある一方向非対称暗号化関数を使用する。
インターネットの多くの場面で、RSA暗号は広く使われています。SSH、OpenPGP、S/MIME、SSL/TLSなど、多くのプロトコルの主要な機能となっています。さらに、ブラウザは、安全でないネットワーク上で安全な通信を確立するためにRSAを使用しています。
RSAは、その鍵の長さにより、今でも非常に人気があります。RSAの鍵は通常1024ビットまたは2048ビットの長さです。しかし、セキュリティ専門家は、1024ビットのRSAがクラックされるのはそう遠くないと見ており、多くの政府機関や企業では、より強力な2048ビットの鍵に移行するよう促しています。
4.AES
Advanced Encryption Standard (AES)は、現在、米国政府の暗号化規格として信頼されている。
AESは、Joan DaemenとVincent Rijmenという2人のベルギー人暗号技術者が開発したRijndaelアルゴリズムに基づいている。このベルギーの暗号技術者は、DESの正式な後継となるべく、他の14のアルゴリズムと一緒に国立標準技術研究所(NIST)に提出しました。2000年10月、RijndaelがAESのアルゴリズムとして採用された。
AESは対称鍵アルゴリズムであり、対称ブロック暗号を使用している。3つの鍵サイズで構成される。128ビット、192ビット、256ビットの3種類の鍵サイズからなる。さらに、鍵サイズごとに異なる暗号化のラウンドが存在する。
ラウンドとは、平文を暗号文に変換する処理のことである。128bitの場合、10ラウンドある。192ビットでは12ラウンド、256ビットでは14ラウンドである。
AESアルゴリズムに対する理論的な攻撃はあるが、いずれも現在の時代には実現不可能なレベルの計算能力とデータストレージを必要とする。例えば、ある攻撃では約38兆テラバイトのデータが必要で、これは2016年に世界中のすべてのコンピュータに保存されているデータよりも多い。また、AES-128の鍵をブルートフォースするのに必要な総時間は数十億年という試算もある。
そのため、暗号化の第一人者であるブルース・シュナイアー氏は、学術的な暗号解読以外の方法で、「誰かがRijndaelトラフィックを読めるようにする攻撃を発見することはないだろう」と考えています。シュナイアー氏のTwofish暗号化アルゴリズム(後述)は、新しい国家安全保障アルゴリズムの選定競争において、Rijndaelに直接挑戦したものです。AESは、将来的に膨大な計算能力から保護するために、量子コンピュータの証明となるアルゴリズムと考えられている。
5.Twofish
米国標準技術局(NIST)のAdvanced Encryption Standardコンテストの最終選考に残ったが、Rijndaelに敗退した。128、196、256ビットの鍵長に対応し、複雑な鍵構造を持つため、解読が困難である。
セキュリティ専門家は、Twofishを最も高速な暗号化アルゴリズムの1つであり、ハードウェアおよびソフトウェアに最適な選択肢であると評価しています。さらに、Twofish暗号は誰でも無料で使用することができます。
VeraCrypt(ドライブの暗号化)、PeaZip(ファイルアーカイブ)、KeePass(オープンソースのパスワード管理)、OpenPGP標準など、最高のフリー暗号化ソフトウェアに搭載されています。
独自の暗号化アルゴリズムを作るべきか?
あなたは、利用可能な最高の(そして今は消滅した)暗号化アルゴリズムのいくつかを見てきました。これらのアルゴリズムは、(少なくとも当分の間は)基本的に破ることが不可能であるため、最高と言えます。
しかし、自作の暗号化アルゴリズムを作るのはどうでしょう?安全な私設システムを作れば、あなたのデータは安全なままなのでしょうか?手短に言えば、「ノー」です。いや、「ノー」と言った方がいいかもしれませんが…。
最高の暗号化アルゴリズムは、数学的に安全で、最も強力なコンピュータと最も賢い頭脳の組み合わせでテストされています。新しい暗号化アルゴリズムは、他のアルゴリズムを破ることが知られている厳格な一連のテストと、新しいアルゴリズムに特有なアタックを受けます。
例えば、AESアルゴリズムです。
- NISTは1997年9月に新しい暗号化アルゴリズムの公募を行いました。
- NISTは、1998年8月までに15のAESアルゴリズムの候補を受け取りました。
- 1999年4月の会議で、NISTは最終候補の5つのアルゴリズムを選びました。MARS、RC6、Rijndael、Serpent、およびTwofishです。
- NISTは2000年5月までテストを続け、暗号コミュニティからコメントや指示を受けた。
- 2000年10月、NISTはRijndaelを将来のAESとして確定し、その後、再び協議期間が始まりました。
- AESとしてのRijndaelは、2001年11月に連邦情報処理規格として発行された。この確認により、暗号アルゴリズム検証プログラムによる検証テストが開始された。
- AESは2002年5月に連邦政府の公式な暗号化標準となった。
強力な暗号化アルゴリズムを作成するためのリソースがない場合
つまり、本当に安全で長持ちする強力な暗号を作るには、地球上で最も強力なセキュリティ組織のいくつかが、時間と綿密な分析を必要とするのです。あるいは、ブルース・シュナイアーが言うように、「誰でも暗号化アルゴリズムを発明することができる」のです。
ブルース・シュナイアーが言うように、「自分たちが破れない暗号化アルゴリズムを発明するのは誰にでもできることだが、他の誰にも破れないものを発明するのははるかに難しい」。
そこで登場するのが "But "だ。もちろん、テキストを受け取って、各文字のアルファベット値を13倍し、61を加えて、受信者に送るプログラムを書くことはできる。
出力はめちゃくちゃになるが、受信者が解読方法を知っていれば、システムは機能する。しかし,自作の暗号化を野放しにして,プライベートな情報や機密情報を送るとなると,ひどい目に遭うことになります.メッセージを平文で送るのではなく、エンドツーエンドで暗号化するメッセージングアプリを私たちが信頼しているのには理由があります。
さらに別の理由もあります。暗号と暗号技術について学びたいなら、個人的に開発した暗号化アルゴリズムの開発と解読を実験することを強くお勧めします。ただし、誰かにそれを使ってくれと頼むのはやめましょう。
暗号化はプロに任せるのがベスト
暗号化は重要です。その仕組みを理解することは有用ですが、使用することが必須ではありません。日常生活を暗号化する方法はたくさんあり、少しの努力でできます。例えば、ハードディスクやUSBメモリーを暗号化することから始めてみてはいかがでしょうか。
必要なのは、ハイパーネットワーク化されたグローバルコミュニティが安全であるために暗号化を必要としていることを理解することです。残念ながら、より弱い暗号化規格を望む政府や政府機関が数多く存在します。それは決してあってはならないことです。
個人の暗号化アルゴリズムをいじることは、まったく問題ありません。暗号化についてもっと学びたい、理解したいと思うのであれば、それは最高のことの1つですしかし、その暗号化アルゴリズムをチェックし、広範囲に渡ってテストするのでなければ、個人的な努力として留めておくのがベストでしょう。