- 暗号化は、アクセス権のない者が読めない形式にデータを変更することでプライバシーを確保する、デジタルセキュリティに不可欠な技術です。
- スキタレー、ポリビウス方陣、シーザー暗号などの歴史的な暗号化技術は、現代の暗号化システムに影響を与えています。
- 今日の暗号化は、超巨大な数字を素数に分解することに依存するアルゴリズムを使用して、保存されたデータ、安全な Web サイト、安全なデジタル通信を保護します。
インターネットで「暗号化」という用語が使われているのを見たことがあるでしょう。では、それは何でしょうか?それは私たちが持つ最も重要な技術かもしれません。安全なブラウジングから安全な電子メールまで、ほとんどのデジタルセキュリティ対策はそれに依存しています。暗号化がなければ、プライバシーは存在しません。
このサイバーセキュリティ啓発週間の記事は Incogni と提携してお届けします。
暗号化とは何か
暗号化とは、メッセージやデータの構成を変更することで、元の形式に戻す方法を知っている人だけが読めるようにすることです。それ以外の人には、それは意味のない文字や記号の羅列に見えます。
機密情報や個人情報を送信する場合に非常に便利です。優れた暗号化スキームは、その情報を詮索好きの目から遠ざけます。暗号化スキームは、メッセージやデータがどのように変更されて読めなくなるのかを説明するだけです。歴史的な例をいくつか示し、その後、それが今日どのように行われているかについて説明します。
スキタレー
古くから、人々は意図した受信者以外の誰かがプライベートメッセージを読むのを防ぐためにさまざまな技術を使用してきました。古代ギリシャ人は、スキタレーと呼ばれる木製の棒の周りに羊皮紙の帯をきつく巻きつけました。彼らは巻き付けられた羊皮紙の上で、棒の長さに沿ってメッセージを書きました。
羊皮紙をほどくと、羊皮紙の文字は意味をなさなくなります。メッセンジャーは羊皮紙をその受信者に届け、受信者は自分の所有するスキタレーに巻き付けてからプライベートでメッセージを読みます。これは転置暗号の一種です。
原始的な手法ですが、現代の暗号化システムにも見られる要素があります。送信者と受信者の両方が、暗号化スキームがどのようなものであり、どのように使用するかを事前に知っておく必要があります。そして、両方がそうするためのマッチングメカニズムが必要です。
ポリビウス方陣
古代ギリシャ人が使用したもう 1 つの方法は、ポリビウス方陣を使用することでした。これは、5 x 5 または 6 x 6 の文字のグリッドでした。文字は、戦艦ゲームのように座標で参照されました。1 番目の行の最初の文字は「11」、2 番目の行の 4 番目の文字は「42」と表記されます。
もちろん、グリッドに文字を入力する方法はたくさんあります。文字のレイアウトがわからないと、復号化は困難です。これにより、異なるレイアウトを持つ複数の正方形で構成されるスキームを設定できます。たとえば、7 つの正方形を作成して、週の各日に異なる正方形を使用できます。複数のアルファベットを使用するスキームは、多表字暗号と呼ばれます。
ポリビウス方陣はコードの一種です。コードは、この例では数字などの文字を他の文字に置き換えます。暗号は、文字を他の文字に置き換えます。
シーザー暗号
ユリウス・シーザーは、シーザー暗号に自分の名前を付けました。これは、オフセット (または「回転」) を使用して、暗号化する文字から一定の距離にある文字を選択します。オフセットが 2 の場合、「A」は「C」と表記され、「D」は「F」と表記されます。受信者は、受信した文字からオフセットを引くことによってメッセージを解読するために使用する正しいオフセットを知る必要があります。
オフセットが 13 のシーザー暗号 (「回転 13」または ROT13 と呼ばれます) には特別な性質があります。標準的な英語のアルファベットには 26 文字があり、13 は 26 をちょうど 2 回に分けます。このオフセットを使用すると、何かを解読するには、もう一度暗号化プロセスを実行できます。2 回暗号化すると、元のテキストに戻ります。
プレーンテキスト: ABCDEFGHIJKLMNOPQRSTUVWXYZ ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM
上部のアルファベットで「GEEK」という文字を選択し、下部のアルファベットで一致する文字に注目すると、「TRRX」が表示されます。「TRRX」を上部のアルファベットで再度行うと、下部のアルファベットから「GEEK」という文字が表示されます。
プログラミングの観点からすると、暗号化ルーチンを記述するだけでよいので、これは問題を単純化します。解読ルーチンは必要ありません。これが、ROT13 の実装を記述することが、プログラミングを学ぶ人にとって一般的な演習である理由です。ROT13 は、非常に貧弱で低レベルの暗号化の例としてもよく挙げられます。
このオンライン ROT13 エンジンで自分で試すことができます。「Alaska Nynfxn」と入力してから、出力を再度入力として入力してみてください。
では、暗号化とは何でしょうか?
ここで扱ったすべての例は簡単に解読できますが、それらすべてに共通する共通の要素と、すべての暗号化形式に共通する要素を示しています。元のデータを「プレーンテキスト」と呼ばれる暗号化されたバージョンに変換するためのルールがあります。この一連のルールはアルゴリズムです。そして、それが暗号化です。
それはプライバシーのためのアルゴリズムです。
今日の暗号化の仕組み
古代ギリシャの人々と同様に、デジタル時代にプライベートデータを保存または送信したい人は課題に直面しています。データへのアクセスを許可されていない人からデータを保護するために何ができるでしょうか?また、データを保護するために何ができるでしょうか?
古いシステムはすべて、暗号化システムの知識があれば克服することができました。同じ直径の棒を使用すると、スキタレーのメッセージが読めるようになります。シーザー暗号は、メッセージの最初の部分でさまざまなオフセットを試すことで解読できます。試すことができるのは最大でも 25 回だけです。
ポリビウス方陣は、正方形内の文字のレイアウトが予測できないため、さらに大きな課題となります。正方形のレイアウトがわかっていれば、それは課題ですらありません。正方形のレイアウトがまったくわからない場合は、暗号文自体を研究することでメッセージを解読しようとすることもできます。これは暗号分析と呼ばれます。
単純な暗号では、文字の頻度表などの補助を使用して、どの暗号文の文字がどのプレーンテキストの文字を表しているかを調べることができます。セキュアな暗号化スキームは、スキームの仕組みを知っている人にかかわらずセキュアである必要があり、暗号文は暗号分析攻撃に耐える必要があります。
文字ではなくビット
堅牢なデジタルスキームは、逐次暗号のように文字や文字を一度に処理しません。それらはデータを一度にチャンクで処理し、ブロック暗号と呼ばれます。
暗号化アルゴリズムに組み込まれた複雑な数学的変換のルールに従って、各ブロック内のビット (すべての 1 と 0) を操作します。アルゴリズムが 128 ビットのブロックサイズを使用する場合、128 ビットのチャンクでデータを処理します。処理される最後のチャンクが 128 ビット未満の場合、128 ビットにパディングされます。
利用可能なブロック暗号化スキームは数多くあります。米国政府の公式暗号化標準は、Advanced Encryption Standard (AES) です。さまざまな暗号化スキームでは、さまざまなアルゴリズムとさまざまなブロック長が使用され、さまざまな数学的変換の組み合わせが使用されます。
すべてが非常に徹底的に聞こえますが、許可されていない人が同じ暗号化スキームを使用して暗号化されたデータを復号化することをどのように防ぐのでしょうか?
ハッシュ文字列
まず特殊なケースを見てみましょう。一方向変換を使用してデータを暗号化することは可能です。これは ROT13 の正反対であり、結果の暗号文をプレーンテキストに戻すことはできません。より正確には、現実的な時間枠内では復号化できません。このタイプの暗号化は、プレーンテキストの文字列をハッシュ文字列と呼ばれる暗号文の文字列にハッシュ化するハッシュ関数で使用されます。すべてのハッシュ文字列は同じ長さです。
これはどのように役立ちますか?セキュアな Web サイトは、パスワードをプレーンテキストで保存しません。パスワードはハッシュ化され、ハッシュ文字列が保存されます。パスワードは保持されません。次回ログインしてパスワードを入力すると、パスワードがハッシュ化され、ハッシュ文字列がアカウントの詳細に保存されているハッシュ文字列と比較されます。一致すれば、入力できます。間違ったパスワードを入力すると、2 つのハッシュ文字列が一致せず、入力できません。
これにより、Web サイトはパスワードを公開された形式で保存することなく、認証を使用できます。ハッキングされても、パスワードは侵害されません。ハッシュ化手法は、ハッシュ化する前に、パスワードにソルトと呼ばれる一意のランダムなデータを追加することもあります。つまり、2 人以上のユーザーが同じパスワードを選択した場合でも、すべてのハッシュが一意になります。
暗号化は何に使用されますか?
今日、暗号化はほぼすべてに使用されています (または少なくともそうであるべきです)。ほとんど毎日遭遇する例をいくつか紹介します。
暗号化されたストレージドライブ
許可されていない人がデータを復号化できないようにするには、暗号化した人を識別し、復号化できる人を識別するキーを使用します。キーは、複雑なアルゴリズムによって生成された長いバイトのシーケンスです。通常、サイズは 128 バイトから 2048 バイト以上です。キーは、暗号化アルゴリズムによってプレーンテキストを暗号化するときに使用されます。キーのサイズはブロックサイズとは無関係です。
ローカルに保存されたデータを保護するために、ハードドライブ全体を暗号化できます。暗号化はユーザーのログイン ID に関連付けられ、キーは自動的に生成され、自動的に適用されます。ユーザーはキーと直接対話することはなく、キーを他の誰かに送信する必要はまったくありません。
キーはユーザーのログイン ID に関連付けられているため、コンピューターからハードドライブを取り外して別のコンピューターに接続しても、データにアクセスすることはできません。このタイプの保護は、静的なデータまたは「保存されている」データを保護します。
これは通常のコンピューターだけでなく、最新の携帯電話のストレージにも適用されます。携帯電話は個人情報や機密情報の宝庫であり、携帯電話を拾った人がその情報にアクセスできるようでは困るため、正当な理由があります。
データを転送する必要がある場合は、データを「転送中」にどのように保護するかを検討する必要があります。
セキュアな Web サイト
Web サイトに接続してアドレスバーに南京錠のシンボルが表示されると、セキュアな Web サイトに接続されていることがわかりますよね?まあ、そういうことです。実際には、コンピューターと Web サイト間の接続が SSL/TLS 暗号化を使用して暗号化されていることを意味します。
それは良いことですが、Web サイトの残りの部分のセキュリティは確認されません。Web サイトはパスワードをプレーンテキストで保存し、データベースでデフォルトの管理者パスワードを使用している可能性があります。しかし、南京錠が表示されれば、Web サイトとの通信が暗号化されていることはわかります。
この暗号化は、ブラウザと Web サイトが複数のキーで同じ暗号化スキームを使用しているため可能です。接続セッションの開始時に、ブラウザと Web サイトは公開鍵を交換します。公開鍵は、秘密鍵を使用して暗号化されたものを復号化できます。
ブラウザと Web サイトは公開鍵を交換し、秘密鍵を使用して暗号化します。接続の各エンドにはもう一方のエンドの公開鍵があるため、各エンドはもう一方のエンドから受信した情報を復号化できます。秘密鍵を公開する必要はありません。
公開鍵を公開しても安全です。公開鍵は、データを不正に暗号化するために使用することはできません。したがって、Web サイトの公開鍵のコピーを受け取っても、秘密鍵がないため、本物の Web サイトになりすますことはできません。これにより、信頼性の問題が生じます。Web サイトが本物の公開鍵と秘密鍵のペアの所有者であり、本物の Web サイトから何らかの方法で両方の鍵を盗んだ模倣サイトではないことをどのように知ることができますか?
証明書は、Web サイトの ID を確認するために使用されます。これらは、申請者の ID を確認したら、認証局によって発行されます。Web サイトは、接続セッションの開始時にハンドシェイクの一部として証明書を送信するため、Web ブラウザは証明書を検証できます。
これは、認証局に連絡して証明書の一部の情報を復号化することで行われます。これにはさらに多くのキーが必要です。ブラウザには、インストールバンドルの一部として主要な認証局の公開鍵があります。そして、さらに多くのキーが関与しています。ブラウザと Web サイトは、公開鍵を交換するだけでなく、独自のセッションキーを作成して通信をさらに保護します。
ブラウザがサイトの信頼性と暗号化の強度を確認すると、アドレスバーに南京錠が表示されます。
セキュアなメール
公開鍵と秘密鍵の概念は、暗号化で何度も登場します。送信中のメールを保護する一般的な方法は、公開鍵と秘密鍵のペアを使用することです。公開鍵は安全に交換できますが、秘密鍵は共有されません。メッセージは送信者の秘密鍵を使用して暗号化されます。受信者は送信者の公開鍵を使用して復号化して読み取ることができます。彼らは自分の秘密鍵を使用して返信を暗号化することができます。
OpenPGP は、このモデルに従うよく知られた暗号化スキームであり、ひねりを加えています。
送信者のメールクライアントはランダムなキーを生成します。これは、メールメッセージを暗号化するために使用されます。ランダムなキーは、受信者の公開鍵で暗号化されます。暗号化されたメッセージと暗号化されたランダムなキーが受信者に送信されます。受信者のメールプログラムは、秘密鍵を使用してランダムなキーを復号化し、次にメッセージの復号化に使用されます。
追加のステップの目的は、メールを複数の受信者に安全に送信できるようにすることです。メールクライアントは、ランダムなキーのみをすべての受信者に個別にメール全体を暗号化する必要はありません。
もちろん、セキュアなメールシステムも信頼性の問題に直面しています。送信された公開鍵を信頼する必要があります。キーはメールアドレスに関連付けられています。会話するメールアドレスから公開鍵が送信されることは、最初のステップとして適しています。ほとんどのメールクライアントは、公開鍵に関連付けられたメールアドレスを表示できます。
公開鍵の信頼性を確認するもう 1 つの方法は、リポジトリから取得することです。リポジトリにアップロードされた公開鍵は、公開される前にリポジトリによって検証されます。
暗号化は私たちのデジタルライフを支えています
少なくとも、暗号化は私たちが正しく行っている場合、私たちのデジタルライフを支えています。あらゆるタイプの保護されていないリモート接続 (リモートワークでもオンライン購入でも) を避け、プライベートメッセージを暗号化できるメールクライアントを使用し、エンドツーエンド暗号化を備えたメッセンジャーアプリを使用します。
Lbhe cevinpl vf vzcbegnag, hfr gur nccebcevngr gbbyf gb fnsrthneq vg. シーザーが言ったように。
コメントする