\r\n\r\n
暗号化という言葉をご存じでしょうか。その重要性や、超ネットワーク化された私たちの生活の安全を守るためにいかに重要であるかについては、おそらく皆さんも耳にしたことがあるのではないでしょうか。
WhatsAppをご利用の場合、暗号化されています。オンライン・バンキングにログインしていますか?繰り返しになりますが、同じです。バリスタにWi-Fiコードを聞かないといけないの?それは、暗号化を使ってネットワークに接続しているからです。パスワードが鍵なのです。
しかし、私たちが日常的に使っているにもかかわらず、ほとんどの暗号化用語は謎のままです。ここでは、知っておくべき11の基本的な暗号化用語を紹介します。
まず、最も基本的な暗号化用語から説明しましょう。これは単純ですが、他の用語と同様に重要です。平文とは、暗号化されていない、誰でも読むことのできる単純なメッセージのことです。
暗号文は、暗号化処理の結果である。暗号化された平文は、一見するとランダムな文字列であり、使い物にならない。暗号とは、平文を変換する暗号化アルゴリズムの別の呼び方であり、それゆえ暗号文と呼ばれる。
暗号化とは、ファイルに数学的な関数を適用して、復号化キーがない限り内容を読めなくし、アクセスできなくすることである。
例えば、Microsoft Wordの文書があるとします。Microsoft Officeの内蔵暗号化機能を使ってパスワードを適用する。これで、パスワードがなければ誰もその文書を読んだりアクセスしたりすることができなくなりました。セキュリティのために、ハードディスク全体を暗号化することも可能です。
暗号化によってファイルがロックされた場合、復号化によって暗号文が平文に戻される。復号化には、正しいパスワードとそれに対応する復号化アルゴリズムの2つの要素が必要です。
暗号化処理には、平文を暗号文に変換する方法をアルゴリズムに伝えるための暗号鍵が必要です。ケルコフの原理は「鍵の秘密だけが安全をもたらす」であり、シャノンの格言は「敵はシステムを知っている」である。
この2つの記述は、暗号化の役割と、その中の鍵に影響を与えます。
暗号アルゴリズム全体の詳細を秘密にすることは非常に難しいが、はるかに小さな鍵を秘密にすることは容易である。暗号化または復号化処理を適切に行うための鍵ロックおよび鍵ロック解除アルゴリズム。
いや、少なくとも正確には違う。鍵の作成はアルゴリズムを使用した結果であり、パスワードは通常、ユーザーが選択するものである。暗号鍵を特定の方法で操作することはほとんどなく、パスワードは日常生活の一部であるため、混乱が生じます。
パスワードは、鍵の作成プロセスの一部であることがあります。ユーザーは様々な文字や記号を使って超強力なパスワードを入力し、アルゴリズムはその入力を使って鍵を生成する。
ウェブサイトがパスワードを暗号化する場合、暗号化アルゴリズムを使って平文のパスワードをハッシュに変換しています。ハッシュ化と暗号化の違いは、一度ハッシュ化されたデータはハッシュを解除することができない点である。というか、極めて困難です。
ハッシュは、何かの真偽を確認する必要があるが、それを読み返す必要はない場合に有効である。この場合、パスワードハッシュは、ブルートフォース攻撃(攻撃者がパスワードの可能な組み合わせをすべて試すこと)に対するある程度の防御となる。
MD5、SHA、SHA-1、SHA-2といった一般的なハッシュアルゴリズムも耳にしたことがあるかもしれません。例えば、MD5というサイトに直接アクセスすると、MD5ハッシュのデータベースに123255542234個の単語が登録されていることに気づくだろう。さあ、試してみてください。
このように、ハッシュ化されたパスワードは、自動的に安全であることを意味するものではありません(もちろん、選択するパスワードにもよりますが)。しかし、セキュリティを向上させるための暗号化機能がいくつか追加されています。
パスワードが鍵の生成の一部である場合、暗号化処理には追加のセキュリティステップが必要です。そのひとつが、パスワードの暗号化です。基本的なレベルでは、ソルトは一方向ハッシュ関数にランダムなデータを追加します。これが何を意味するのか、例を挙げて分析してみましょう。
全く同じパスワードのユーザーが2人います:hunter2。
hunter2をSHA256ハッシュ生成器にかけると、f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7が得られました。
誰かがパスワードデータベースに侵入し、このハッシュをチェックすると、対応するハッシュを持つ各アカウントは直ちに攻撃を受けやすくなる。
今回は、各ユーザーのパスワードに、別のソルトを使ってランダムなデータ値を追加します。
同一のパスワードのハッシュを(非常に基本的な)ソルト付きとソルト無しで素早く比較することができます。
このように、ソルトを追加することで、ハッシュが十分にランダム化されるため、パスワードが漏洩しても(ほぼ)安全であることがわかります。さらに良いことに、パスワードはユーザー名とリンクしているため、ウェブサイトやサービスにログインする際にデータベースを混乱させることがありません。
現代のコンピューティングでは、暗号化アルゴリズムには大きく分けて対称型と非対称型の2種類があり、どちらもデータを暗号化するが、その機能は微妙に異なっている。
私たちが日常的に利用しているオンラインサービスのほとんどは、何らかの形で公開鍵パスワードを実装しています。
暗号化処理における鍵の役割を理解したところで、公開鍵と秘密鍵について見ていきましょう。
非対称アルゴリズムは、公開鍵と秘密鍵の2つの鍵を使います。公開鍵は他の人に送ることができ、秘密鍵は所有者にしかわかりません。
ある受信者の公開鍵を持っていれば、誰でもその受信者のためにプライベートメッセージを暗号化することができ、受信者はペアとなる秘密鍵にアクセスできる場合にのみ、そのメッセージの内容を読むことができるのです。下図をご覧いただくと、より分かりやすいと思います。
公開鍵と秘密鍵は、デジタル署名においても重要な役割を果たしており、送信者は自分の秘密鍵を用いてメッセージに署名することができる。公開鍵を使用するユーザーは、元のメッセージが送信者の秘密鍵から来たものであることを知りながら、メッセージを検証することができます。
鍵ペアは、暗号化アルゴリズムによって生成された公開鍵と秘密鍵を数学的に結びつけたものです。
HTTPS(HTTP Secure)は、インターネットの基礎であるHTTPアプリケーション・プロトコルのセキュリティ・アップグレードとして、現在広く実装されているものです。HTTPS接続を使用する場合、お客様のデータはTLS(Transport Layer Security)を使用して暗号化されるため、転送中のデータは保護されます。
HTTPSは長期的な秘密鍵と公開鍵を生成し、それを使って短期的なセッション鍵を作成します。セッションキーは1回しか使えない対称鍵で、HTTPSサイトから離れる(接続を閉じて暗号化を終了する)と、接続が破棄されます。ただし、お客様がサイトを再訪問される際には、通信を保護するために、再度、1回だけ使用するセッションキーをお渡しします。
ウェブサイトは、利用者に完全なセキュリティを提供するために、HTTPSに完全に準拠する必要があります。2018年以降、ほとんどのオンラインサイトが標準的なHTTPによるHTTPS接続を提供するようになりました。
暗号化の最大のバズワードの1つはエンドツーエンド暗号化です。whatsAppは2016年にエンドツーエンド暗号化(E2EE)をユーザーに提供し始め、メッセージのプライバシーを確保するようになりました。
メッセージングサービスの文脈では、EEE2Eとは、一度送信ボタンを押せば、受信者がメッセージを受け取るまで暗号化が維持されることを意味します。どうしたんですか?つまり、メッセージのエンコードとデコードに使用される秘密鍵は、あなたのデバイスから出ることはなく、あなた以外の誰もあなたの名前を使ったメッセージを送ることができないのです。
エンドツーエンドの暗号化を提供するメッセージングサービスは、WhatsAppが初めてではなく、また唯一でもありません。しかし、携帯電話のメッセージの暗号化というアイデアを主流に押し上げ、世界中の無数の**エージェンシーを悩ませたのです。
残念ながら、暗号化を本当に嫌う多くの**組織やその他の組織があります。私たちが素晴らしいと思っているのと同じ理由で、彼らはそれを嫌います。通信を非公開にし、インターネットの機能を大いに助けてくれるのです。
それがなければ、インターネットは極めて危険な場所となってしまうでしょう。オンラインバンキングも、アマゾンで新しいスリッパも買えないし、医者にどこが悪いか言うこともできない。
一見すると、暗号化や暗号用語は難しく感じられるかもしれません。正直なところ、暗号の数学的基礎は時に複雑です。しかし、数字がなくても暗号を鑑賞することができ、それ自体が非常に便利です。
デジタル世界の暗号化を始めたい方は、最小限の労力で日常生活を暗号化する最も簡単な方法をチェックしてみてください。