暗号化:対称鍵アルゴリズムと非対称鍵アルゴリズムの説明

暗号化は、データ送信をプライベートにする必要性から生まれたので、それに基づいて、 暗号化は、メッセージを暗号化および復号化するためにメッセージに適用される方法です。 平文だけがメッセージの送信者と受信者に見えるように、送信の途中でそれを傍受した人にはまったく読めないようにし、ひいては攻撃に耐えるのに十分安全であるように送信されている情報が危険にさらされる可能性があります。 暗号化にはXNUMXつのタイプがあります キーの種類によって異なります。 アルゴリズムがXNUMXつのキーのみを使用する暗号化、または 対称暗号 、およびXNUMX鍵アルゴリズムの暗号化、 非対称暗号 。 ここでは、それぞれがどのように機能し、それらのプロパティと違いが何であるかを確認できます。

対称暗号化またはワンキー暗号化

対称暗号化は、世の中で最も古い暗号化技術ですが、それでも高レベルのセキュリティを提供します。 これは、TLSなどのプロトコルで転送される情報であろうと、リムーバブルストレージデバイス上の情報であろうと、情報の暗号化と復号化を担当する単一の秘密鍵の使用に基づいています。 対称暗号化は、情報を暗号化するために使用された最初の方法でした。これは、暗号化と復号化の両方に同じパスワードが使用されるという事実に基づいています。したがって、メッセージを暗号化または復号化するすべてのユーザーがこれを持っていることが不可欠です。秘密鍵。そうしないと、秘密鍵を使用できません。 対称暗号化のおかげで、通信を行ったり、ファイルを安全に保存したりできます。

暗号学

Encryption 対称鍵を使用するということは、少なくともXNUMX人のユーザーが秘密鍵を持っている必要があることを意味します。 このキーを使用すると、インターネットなどの安全でないチャネルを介して送信されるすべてのメッセージが暗号化および復号化されるため、機密性を維持するためにデータの暗号化が必要になります。 暗号化されたメッセージにアクセスするユーザーは、この復号化パスワードを持っている必要があります。そうでない場合、パスワードは読み取れません。

データを暗号化する方法は、送信者が自分の秘密鍵でメッセージを暗号化し、安全でないチャネルを介してメッセージを送信し、受信者が送信者と同じパスワードまたは秘密鍵でメッセージを復号化する必要があるという事実に基づいています使用しています。

安全に使用するために対称鍵アルゴリズムが満たさなければならないいくつかのポイントがあります。

  • メッセージが一度 暗号化されているため、暗号化キーもクリアメッセージも取得できません どんな方法でも。
  • 明確なメッセージと暗号化を知っていれば、 明確なメッセージにアクセスするための鍵を取得するために、情報の可能な価値よりも多くの時間とお金を費やす必要があります それは盗まれます。

ブルートフォース攻撃 です。 対称暗号化アルゴリズムの真の敵 、これらのアルゴリズムは公開されており、その強度は、アルゴリズムが内部的にどれほど複雑であるか、およびこれらの攻撃を防ぐために使用されるキーの長さに直接依存することに留意する必要があります。

対称暗号化で最も重要なことは、秘密鍵またはパスワードを保護することです。 発生する主な問題は、メッセージ内の情報を暗号化および復号化するために、情報の送信者と受信者の両方のすべてのユーザーにこの秘密鍵またはパスワードを配布することです。 システムのすべてのユーザーが秘密鍵またはパスワードを可能な限り保護することが不可欠です。これは、悪意のあるユーザーの手に渡ると、システム全体が危険にさらされ、新しい鍵を生成して別の鍵に再配布する必要があるためです。参加者。

対称暗号化と非対称暗号化の違いのXNUMXつは、対称暗号化ではすべてのユーザーが同じ暗号化/復号化キーを持っていることです。複数の通信チャネルがある場合、パラレル通信チャネルと同じ数の秘密キーがあります。 ただし、非対称チャネルでは、維持するセキュリティで保護されたチャネルの数に関係なく、各ユーザーはすべての通信チャネルに対してXNUMX対のキー(公開キーとプライベートキー)を持ち、秘密キーを保護するだけで済みます。

対称暗号化アルゴリズムの利点は、高速で非常に高速であることに加えて、近年、ハードウェア暗号化アクセラレーションがコンピュータープロセッサ、サーバー、ルーター、その他のデバイスに組み込まれているため、次の方法でデータを転送できます。 VPN 本当に速い。 速度は、使用する対称暗号化アルゴリズムにも依存します。たとえば、AESとChaCha20は、現在の中で最も高速で安全なXNUMXつですが、機器のハードウェアが大きく影響します。

次に、TLS1.2およびTLS1.3を使用したHTTPS接続、IPsec、OpenVPNを使用した仮想プライベートネットワーク、または ワイヤガード、およびVeraCryptのように、データ暗号化が使用される他の領域でも。

AES(高度暗号化標準)

対称AESアルゴリズムが担当していました DESの置き換え 、現在、TLS、FTPES、仮想プライベートネットワークなどのすべての安全なチャネルとプロトコルで使用されています。 AES暗号化はソフトウェアとハ​​ードウェアの両方で使用できます。AESはブロック暗号化アルゴリズムです。 固定ブロックサイズは128ビットです 。 キーの長さを選択することができ、 128、192、および256ビットが利用可能 、128ビットの長さが標準ですが、256ビットも広く使用されています。

非常に重要な側面は、AESが4×4マトリックスの生成を担当し、一連の暗号化ラウンドがそれに適用されることです。 128ビットキーの場合は10ラウンドの暗号化が適用され、192ビットキーの場合は12ラウンドが適用され、256ビットキーの場合は14ラウンドが適用されます。その攻撃は、最終ラウンドに近いいくつかのラウンドで記録されています。具体的には、7ビットキーの場合は128ラウンド、8ビットキーの場合は192ラウンド、9ビットキーの場合は256ラウンドが復号化されています。

暗号化モードは、AESで暗号化されたメッセージブロックが処理される方法であり、さまざまなタイプがあり、それぞれが異なる方法で機能します。 たとえば、 AES-CBC、AES-CFBおよびAES-OFB 、OpenSSLやLibreSSLなどの暗号化ライブラリに表示される正確な内容について説明します。

  • CBC(暗号ブロック連鎖) –この暗号化モードは、データの信頼性を検証するためにハッシュ関数と組み合わせて広く使用されており、現在でも使用されています。 この暗号化モードは、プレーンテキストの各ブロックを前の暗号化ブロックとXORすることで構成されます。 暗号化された各ブロックは、その時点までに処理された前のブロックに依存します。 テキストの最初のブロックでこのXORオプションを実行するには、初期化ベクトルIVを使用します。 この暗号化モードは順次実行されるため、データの暗号化/復号化のパフォーマンスを向上させるために並行して処理することはできません。
  • OFB(出力フィードバック) :このモードでは、秘密鍵を使用して疑似ランダムブロックを作成し、これに平文とのXOR演算を適用して暗号文を作成します。 この場合、初期化ベクトルも必要です。これは、暗号化されたメッセージごとに一意である必要があります。 別のIVが使用されていない場合、システムのセキュリティが危険にさらされます。 また、並列化することもできません。
  • CFB(暗号フィードバック) :OFBと同じように実行されますが、キーストリームを生成するために、OFBのようにキーストリームの最後のブロックではなく、暗号化の最後のブロックが暗号化されます。 暗号化は並列化できませんが、復号化は並列化できます。
  • GCM ( ガロア/カウンターモード) :この暗号化モードは、セキュリティと速度の点で最高のXNUMXつです。GCMは並列処理を可能にし、AES-NIプロセッサと互換性があり、データの暗号化/復号化のパフォーマンスを向上させます。 この暗号化モードはAEADであり、データの暗号化に加えて、データを認証し、データの整合性を検証して、データが変更されていないことを確認することもできます。 GCMは、ランダムな初期化ベクトルを受け入れることもできます。

ご覧のとおり、AESは現在世界で最も重要で広く使用されている対称暗号化アルゴリズムのXNUMXつですが、AEADが組み込まれているため、最も推奨される暗号化モードはAES-GCMです。

ChaCha20

ChaCha20アルゴリズムは、対称暗号化アルゴリズムです。 128ビットと256ビットをサポート ブロック暗号であるAESとは異なり、ChaCha20はストリーム暗号です。 それはと同様の特徴を持っています その前身のSalsa20 しかし、12または20の異なるラウンドのプリミティブ関数を使用します。 そのコードは公開され、RFC 7539およびソフトウェア実装でIETFによって標準化されており、AESよりもはるかに効率的で高速であるため、今日最も使用されているアルゴリズム内ですぐに使用されています。

なぜこれほど有名になったのかを知るために、Googleを真ん中に置いて、すべてをより早く理解できるようにします。 HTPPS接続は、私たちが毎日アクセスするWebサイトに最大限のセキュリティを提供することに重点を置いています。これは、まったく保護されていないHTTPプロトコルの次のステップでした。 ただし、暗号化はブラウザによって異なります。 数年前まで、 クロム for Android 対称暗号化アルゴリズムとしてAES-GCMを使用してきましたが、Googleは長年にわたり、より最新で安全かつ高速な暗号化に取り組んできました。

Chromeのデスクトップバージョンでリリースされた後、新しい 暗号化用のChaCha20と認証用のPoly1305がAndroidに搭載されています。 より多くのセキュリティを提供し、さまざまなタイプの攻撃の影響を受けない対称アルゴリズムに変換される巨大な仕事。 ただし、最も注目すべき点は、AESなどのやや古いプロトコルのXNUMX倍のパフォーマンスを実現していることです。このように、 CPU また、より適切に使用され、使用されるバンドの幅が16%削減されるため、接続をさらに活用することができます。

ChaCha20は、HTTPS接続、サーバーを管理するためのSSH接続で広く使用されており、一般的なWireGuard VPNプロトコルでさえ、対称データ暗号化にChaCha20のみを使用しています。 間もなくIPsec接続でもChaCha20が表示される可能性が非常に高くなりますが、それまでの間は、可能な限りAES-GCMを使用する必要があります。

これまでの対称暗号の説明では、今日頻繁に使用されている3つのアルゴリズムについてコメントしましたが、新しいアルゴリズムのベースはそれらであるため、過去には特に現在のアルゴリズムの開発に非常に関連したものがたくさんあります。老人の経験、彼らの過ち、そして彼らの利点に落ち着きました。 DES、5DES、RCXNUMX、IDEAなどのアルゴリズムが新しいアルゴリズムへの道を開いたため、今日、攻撃に耐え、不要な悪意のある手からすべての情報を保護する能力を備えた非常に強力な暗号化アルゴリズムがあります。

非対称暗号化または公開鍵暗号化

非対称鍵暗号は公開鍵とも呼ばれます。 通信の両端でXNUMXつの異なるキーを使用して、通信を暗号化および復号化します 。 通信の各ユーザーは、公開鍵と秘密鍵を持ちます。 秘密鍵は、ユーザー自身が保護および保持する必要があります。 秘密にされ、絶対に誰にも知られてはならず、誰にも送られてはなりません。 公開鍵は、通信を希望するシステムのすべてのユーザーがアクセスできます。

このタイプの非対称アルゴリズムが安全であるシステムの強みは、それが数学関数に基づいていることです。 ある意味で簡単に解ける 、しかしその 反対方向の解像度は非常に複雑です 、キーがわからない場合。 。 公開鍵と秘密鍵は同時に生成され、相互に関連付けられています。 両者の関係は非常に複雑である必要があり、システムに接続しているすべての人が公開鍵を知っているため、他方から鍵を取得すること、この場合は秘密鍵を取得することは非常に困難です。

キーのペアには、いくつかの非常に重要な機能があります。その中で、次の点を強調します。

  • 情報を暗号化します。
  • 送信されたデータの整合性を確保します。
  • 発行者の信憑性を保証します。

非対称鍵暗号化

キーペアを持つ人が受信者の公開キーを使用してメッセージを暗号化する場合、そのメッセージは関連付けられた秘密キーを使用してのみ復号化できます。 秘密鍵でメッセージを暗号化すると、秘密鍵自体でメッセージを復号化できなくなります。公開鍵を使用する必要があります(この場合、暗号化とは見なされませんが、送信者の信頼性がチェックされます。これにより、送信者が実際にそうだと言っている人であることが確認されます)。

非対称暗号化がどのように機能するかの数学的構造は次のとおりです。

  • メッセージ+公開鍵=暗号化されたメッセージ
  • 暗号化されたメッセージ+秘密鍵=復号化されたメッセージ
  • メッセージ+秘密鍵=署名されたメッセージ
  • 署名されたメッセージ+公開鍵=認証

対称鍵暗号について以前にコメントしたように、対称暗号は機密性を提供します(受信者のみがメッセージを読むことができます)。 非対称暗号化は、信頼性、整合性、否認防止などの他の特性を提供します。 アルゴリズムが安全であると見なされるには、以下に準拠する必要があります。

  • 暗号文がわかっている場合は、 平文と秘密鍵を抽出することは非常に困難またはほぼ不可能でなければなりません どんな方法でも。
  • 平文と暗号化がわかっている場合は、 平文よりも秘密鍵を取得するのに費用がかかるはずです .
  • データが公開鍵で暗号化されている場合、 復号化できる秘密鍵のみが存在する必要があります 、 およびその逆。

対称暗号化に対する非対称暗号化の利点は、システムのすべてのユーザーが公開鍵を認識できることですが、これは秘密鍵では発生せず、対称暗号化の結果として、両方のユーザーが同じ鍵を認識している必要があります。 (そして、パスワードは、確立された通信チャネルを介して異なるユーザーのそれぞれに送信する必要があります)。

対称および非対称システムの運用

の主な欠点 このタイプの暗号化 その遅さです 、このタイプのキーを使用すると、通信の暗号化プロセスが遅くなります。 これに対する解決策は、非対称暗号化と対称暗号化の両方を使用することです( IPSecの またはOpenVPNは、仮想プライベートネットワーク、安全なWeb接続用のHTTPS、またはSFTP / FTPES接続用に実行します)。

この暗号の組み合わせは次のように発生します。 対称アルゴリズムキーを作成し、受信者の公開キーで暗号化し、暗号化されたデータを安全でない通信チャネルを介して送信すると、受信者は秘密キーを使用してデータを復号化します。 コロンに対称アルゴリズムキーを使用すると、対称暗号化を使用した通信を開始できるようになります。これにより、すべての通信で非対称暗号化のみを使用した場合よりも通信がはるかに高速になります。

このタイプの組み合わせ方法が使用される明確な例は、OpenVPNやIPsecなどのVPNです。このVPNでは、ユーザーが知っているセッションキーが頻繁に再生成され、データ転送を大幅に遅らせることなく、通信セキュリティをさらに強化します。 。

チャレンジレスポンス

セキュリティを強化するために、 このメソッドは、送信者が実際に彼が主張している人物であることを確認します 、このため、テキストが送信者に送信され、送信者は秘密鍵で暗号化し(実際に行っているのは署名です)、送信者は暗号化されたテキスト(署名済み)を送信し、キーを復号化します(発行者の公開鍵を持っていることを利用して署名を確認し、最後に、取得したメッセージが以前に送信したものと同じであることを比較します。

ユーザーが実際の発行者になりすます場合、秘密鍵を持っていないため、「チャレンジ」は成功せず、データは伝達されません。

デジタル署名

デジタル署名 発信元が本物であるというメッセージの受信者を許可します 、メッセージが変更されているかどうかを確認することもできます。 署名者の秘密鍵を知らない限り、デジタル署名を改ざんすることはほとんど不可能です(そして、秘密鍵を保存する必要があり、誰もそれを知らないようにする必要があることはすでに前に述べました)。 デジタル署名を実現するためのXNUMXつのフェーズは次のとおりです。

  • 署名プロセス:送信者は秘密鍵を使用してデータを暗号化し、受信者に送信します。
  • 署名を確認します。受信者は送信者の公開鍵を使用してデータを復号化し、情報が元のデータと一致することを確認します(一致する場合は変更されていません)。

デジタル署名では、SHA2-256やSHA2-512などのハッシュ関数が使用されます。これは、前に説明したように、非対称暗号化が遅いためです。 通信の送信者は、元のメッセージにハッシュ関数を適用してフィンガープリントを取得します。 次に、指紋は秘密鍵で暗号化され、復号化のために安全でないチャネルを介して受信者に送信されます。 受信者はまた、あなたのデータをハッシュし、結果(彼らが得たものと彼らが受け取ったもの)を比較します。 これらのデータを比較した結果が否定的である場合、つまり、取得したものと受信したものに違いがある場合、情報が変更され、指紋データが変更されます。 結果が同じであれば、問題なく通信できます。

これらすべてで、私たちは次のことを実現しました。

  • 信憑性、 発行者は彼らが言う人です 。 出発地と目的地の署名は同じです。
  • 誠実さ、 メッセージは変更されていません 。 得られるものと受け取るものは同じです。
  • 否認防止なし、 送信者は、受信者にメッセージを送信したことを否定できません 。 デジタル署名は変更されません。

通信に機密性を導​​入したい場合は、送信者に受信者の公開鍵を使用して元のメッセージを暗号化させるだけです。

非対称鍵暗号化アルゴリズム

次に、今日使用されているXNUMXつの主要な非対称アルゴリズムをリストし、それらがどのように機能するかを説明します。

Diffie-Hellman

それ自体は非対称アルゴリズムではなく、鍵確立プロトコルです。 安全でない通信チャネルの両端で秘密鍵を生成するために使用されます 。 これは、情報が後で対称暗号化アルゴリズムとともに暗号化される秘密鍵を取得するために使用されます。 Diffie-Hellmanの強みは、そのセキュリティが多数の離散対数を計算することの難しさにあることです(Diffie-Hellmannでは楕円曲線の使用も可能です)。

このアルゴリズムの問​​題は、認証を提供せず、ユーザーのIDを検証できないことです。したがって、XNUMX人目のユーザーが通信の途中で侵入した場合、ユーザーにもキーが提供され、確立される可能性があります。 IDを偽装する送信者および受信者との通信。 これを回避するために、デジタル証明書を利用するなど、問題を軽減および解決するいくつかのソリューションがあります。

RSA

卓越した非対称アルゴリズム、 このアルゴリズムは、キーのペアに基づいています 、私たちが以前に話し合ったパブリックとプライベートのもの。 このアルゴリズムのセキュリティは、非常に大きな整数を因数分解する問題とRSAの問題にあります。これは、部分的な復号化は可能ですが、RSAで暗号文を完全に復号化することは現在不可能だからです。 RSAのいくつかの非常に重要な特性はキーの長さです。現在、少なくとも2048ビットの長さを使用する必要がありますが、セキュリティを強化するために4096ビット以上にすることをお勧めします。

利点:

  • 対称鍵の配布(対称暗号化)の問題が解決されました。
  • これは、デジタル署名で使用するために使用できます。

短所:

  • セキュリティはコンピュータの効率に依存します。
  • 対称鍵アルゴリズムよりも低速です。
  • 秘密鍵は、何らかの対称アルゴリズムによって暗号化する必要があります。

DSA

このアルゴリズムも純粋に非対称です。DSAの欠点は、ハードウェアの同等性のためにRSAよりもはるかに長い計算時間を必要とすることです。 DSAはデジタル署名アルゴリズムとして広く使用されており、現在は標準ですが、DSAはデータの暗号化には使用されず、デジタル署名としてのみ使用されます。 このアルゴリズムは、クライアントのデジタル署名を検証するためにSSH接続で広く使用されています。さらに、楕円曲線(ECDSA)に基づくDSAのバリアントがあり、OpenSSL、GnuTLS、LibreSSLなどの現在のすべての暗号化ライブラリで使用できます。 DSAのもう512つの機能はキーの長さで、最小のキーの長さは1024ビットですが、最も一般的なのはXNUMXビットを使用することです。

これで、XNUMX種類の暗号化とそれぞれのプロパティがわかりました。これにより、次のことがわかります。 一方のタイプを使用する価値がある場所ともう一方のタイプを使用する価値がある場所 。 コンピュータのパフォーマンスの向上に伴い、このタイプのセキュリティメソッドへの攻撃が強化されるため、これらのメソッドは時間の経過とともに変化するか、より安全なメソッドに更新されますが、現在、有効であり、まだ追放されていますが、それらは私たちがあなたに説明したばかりのものです。