0Pricing
Ethical Hacking Academy · レッスン

対称暗号と非対称暗号

AESとRSA

「対称暗号と非対称暗号」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。

暗号化の2つの系統

現代の暗号化は、鍵の扱い方によって2つの系統に分かれます。

  • 共通鍵暗号:同じ鍵で暗号化と復号を行います。例:AES。
  • 公開鍵暗号:鍵ペアを使い、一方の鍵で暗号化し、別の鍵で復号します。例:RSA。

実際のシステムでは、両方を組み合わせます。攻撃と防御のためには、それぞれのトレードオフを理解することが重要です。

共通鍵暗号

共通鍵暗号では、通信する双方が1つの秘密鍵を共有します。同じ鍵でデータをロックし、ロックを解除します。

  • 利点:非常に高速で、大量のデータに適しています。
  • 欠点:まず鍵を安全に共有しなければなりません。これが鍵配送問題です。

AES

AES(Advanced Encryption Standard)は、主要な共通鍵暗号方式です。ブロック暗号であり、128ビットのブロックを処理し、鍵長は128、192、256ビットです。

AESは高速で、現代のCPUではハードウェアアクセラレーションにも対応しており、正しく使用すれば安全と考えられています。AES-256は、高い安全性が求められる場合によく使われます。

openssl enc -aes-256-cbc -salt -in secret.txt -out secret.enc
# Prompts for a password used to derive the key

ブロック暗号モード

ブロック暗号で1ブロックを超えるデータを扱うには、暗号利用モードが必要です。

  • ECB:安全ではありません。同一のブロックが同一の暗号文になるため、パターンが漏えいします。使用を避けてください。
  • CBC:初期化ベクトル(IV)を使ってブロックを連鎖させます。ECBより優れていますが、慎重な扱いが必要です。
  • GCM:暗号化と認証の両方を提供します(AEAD)。現代で推奨されるモードです。

ECBペンギン

有名な実演例として、ペンギンの画像をAESのECBモードで暗号化しても、ペンギンの輪郭が見えるというものがあります。ECBでは、同一の平文ブロックが同一の暗号文ブロックに暗号化されるため、構造が漏えいします。

そのため、セキュリティ評価ではECBの使用を検出事項として認識する必要があります。暗号方式自体は強力でも、弱点はモードにあります。

公開鍵暗号

公開鍵暗号では、数学的に関連付けられた鍵ペアを使用します。

  • 公開鍵:自由に共有します。誰でもこの鍵を使ってあなた宛てに暗号化できます。
  • 秘密鍵:秘密に保管します。これを使って復号できるのはあなただけです。

これにより鍵配送問題が解決します。セキュリティを損なうことなく、公開鍵を公開できます。

RSA

RSAは、古典的な公開鍵アルゴリズムです。その安全性は、2つの大きな素数の積を素因数分解する難しさに基づいています。

現在は2048ビットの鍵長が一般的で、3072ビットまたは4096ビットならさらに余裕があります。RSAはAESと比べて低速なため、大量のデータを直接暗号化する用途にはほとんど使われません。

openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem

暗号化と署名

公開鍵暗号の鍵には、異なる2つの役割があります。

  • 機密性:受信者の公開鍵で暗号化し、受信者の秘密鍵だけで復号します。
  • 真正性(署名):自分の秘密鍵で署名し、誰でも自分の公開鍵で検証できます。これにより、自分が作成したことを証明できます。

この2つの目的では、鍵が逆の役割で使われることに注意してください。

ハイブリッド暗号

TLSのような実際のプロトコルでは、両方を組み合わせます。流れは次のとおりです。

  • 低速な公開鍵暗号を1回使い、ランダムなセッション鍵を安全に交換します。
  • そのセッション鍵を使い、高速な共通鍵暗号であるAESによって実際のデータを暗号化します。

これにより、共通鍵暗号の速度と、公開鍵暗号の鍵配送の利便性を両立できます。

鍵交換:Diffie-Hellman

Diffie-Hellmanを使うと、2者は秘密そのものを送信することなく、安全でない通信経路上で共有秘密を合意できます。これは現代のTLS鍵交換の基盤です。

楕円曲線を使う方式(ECDH、ECDSA)では、RSAと同等の安全性をはるかに短い鍵で実現できます。そのため高速で、デフォルトとして採用されることが増えています。

暗号にありがちな弱点

強力なアルゴリズムも、使い方を誤ると安全ではなくなります。次の検出事項に注意してください。

  • 平文のパターンを漏えいさせるECBモード。
  • CBCやGCMでのIVやnonceの再利用、または予測可能な値の使用。
  • ソースコードや設定ファイルにハードコードされた鍵。
  • 素因数分解できる短いRSA鍵(512ビットまたは1024ビット)。
  • 平文を1バイトずつ漏えいさせるパディングオラクルの挙動。

数学的な仕組みが破られることはまれで、通常は実装に問題があります。

確認問題

公開鍵と秘密鍵についての理解を応用してください。

まとめ

暗号化の2つの系統を比較しました。

  • 共通鍵暗号(AES):共有鍵を1つ使うため高速ですが、鍵の配送が難しい方式です。GCMモードを使用し、ECBは決して使用しないでください。
  • 公開鍵暗号(RSA、ECC):公開鍵と秘密鍵のペアを使い、鍵配送の問題を解決しますが、低速です。
  • 受信者の公開鍵で暗号化し、自分の秘密鍵で署名します。
  • ハイブリッドシステムとDiffie-Hellmanは、TLSで両方の長所を組み合わせます。

次は、実際にハッシュを識別してクラックする方法を学びます。

よくある質問

「対称暗号と非対称暗号」レッスンは無料ですか?

はい。「対称暗号と非対称暗号」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。

「対称暗号と非対称暗号」で何を学びますか?

AESとRSA ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ethical Hacking Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「対称暗号と非対称暗号」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このEthical Hacking Academyレッスンでコードを書いて実行できますか?

はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. エンコーディングと暗号化の違い
  2. ハッシュ化
  3. 対称暗号と非対称暗号
  4. ハッシュのクラック
← Ethical Hacking Academyに戻る