対称暗号と非対称暗号
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エンコーディングと暗号化の違い
- ハッシュ化
- 対称暗号と非対称暗号
- ハッシュのクラック