0Pricing
Cloud & IT Cert Prep · レッスン

対称暗号アルゴリズム

AES、DES、3DESを通じて、共通鍵暗号の仕組み、鍵長、各アルゴリズムを使う場面を学びます。

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

対称暗号の仕組み

対称暗号では、データの暗号化と復号に同じ共有鍵を使用します。送信者と受信者の両方が同じ秘密鍵を持つ必要があり、その鍵を安全に保管することが重要です。鍵を持つ人は誰でもデータを復号できるためです。対称暗号は計算が高速で効率的なため、大量のデータの暗号化に適しています。対称暗号の中心的な課題は鍵配送です。安全な通信経路がない状態で、2者がどのように安全に鍵を共有するかという問題です。

AES:標準となる暗号方式

Advanced Encryption Standard (AES)は、現在最も広く使用されている対称暗号アルゴリズムです。2001年に NIST が DES の後継として採用しました。AES は128ビットのブロックを処理し、AES-128、AES-192、AES-256という3種類の鍵長に対応しています。数字はビット単位の鍵長を示します。AES-256 は最も高い安全性の余裕を提供します。AES は HTTPS の TLS、フルディスク暗号化(BitLocker)、ファイル暗号化など、ほぼすべての安全な最新アプリケーションで使用されています。適切に実装されている限り、実用上知られている弱点はありません。

# Encrypting a file with AES-256 using OpenSSL
openssl enc -aes-256-cbc -pbkdf2 -in plaintext.txt -out encrypted.bin -k 'mysecretpassword'

# Decrypting
openssl enc -aes-256-cbc -pbkdf2 -d -in encrypted.bin -out decrypted.txt -k 'mysecretpassword'

# AES-256 key: 256 bits = 32 bytes = extremely secure

DESとその弱点

Data Encryption Standard (DES)は、広く採用された最初の対称アルゴリズムで、1977年に56ビット鍵として標準化されました。56ビット鍵とは、可能な鍵が2^56個しかないという意味です。実際、1999年には分散コンピューティングプロジェクトによって、DESで暗号化されたメッセージが24時間未満で解読されました。現在、DESは暗号学的に破られていると見なされており、新しいシステムでは決して使用してはなりません。DESは、なぜ失敗したのか(鍵長が不十分だったこと)を理解することで、AESのような最新のアルゴリズムが128~256ビットの鍵を使用する理由を学べるため、Security+試験では現在も重要です。

3DES:移行期の解決策

Triple DES (3DES or TDEA)は、DESの弱点に対する暫定的な対策として、各データブロックにDESアルゴリズムを3回適用することで作られました。56ビット鍵を3つ使うことで、実効鍵強度は112ビットとなり、2000年代初頭までは十分と考えられていました。しかし、3DESは暗号化を3回行うためAESより大幅に遅く、長時間の接続ではSweet32 birthday attackに対して脆弱です。NISTは2023年に3DESを正式に非推奨としました。現在は、すべての用途でAESへの置き換えが進められています。

ブロック暗号とストリーム暗号

対称アルゴリズムは、block ciphers(ブロック暗号)またはstream ciphers(ストリーム暗号)に分類されます。ブロック暗号(AES、DES)は、データを固定サイズのまとまり(「ブロック」)ごとに暗号化します。AESではブロックサイズは128ビットです。ストリーム暗号は、キーストリームを使ってデータを1ビットまたは1バイトずつ暗号化するため、より高速で、リアルタイム通信に適しています。RC4はかつて主要なストリーム暗号でしたが、現在は破られており、非推奨です。ChaCha20は現在主流のストリーム暗号で、AESアクセラレーションのないハードウェア上でも高速かつ安全に動作するため、TLS 1.3やWireGuardで使用されています。

動作モード:ECB、CBC、GCM

ブロック暗号で複数のデータブロックをどのように処理するかは、mode of operation(動作モード)によって決まります。ECB (Electronic Code Book)は各ブロックを独立して暗号化するため、同じ平文ブロックからは同じ暗号文が生成されます。この特徴は「ECB Penguin」の画像デモでよく知られています。ECBは決して安全ではありません。CBC (Cipher Block Chaining)は、各平文ブロックを暗号化する前に、直前の暗号文ブロックとXORすることで拡散性を加えます。GCM (Galois/Counter Mode)は、暗号化と完全性認証(AEAD)の両方を提供し、TLS 1.3で推奨されるモードです。

鍵長とセキュリティ

対称暗号アルゴリズムの安全性は、そのkey length(鍵長)に直接関係します。鍵が長いほど組み合わせの数が増え、総当たり攻撃に必要な計算量は指数関数的に増加します。128ビット鍵には2^128通りの組み合わせがあります。1秒あたり10億の10億倍の試行ができたとしても、総当たりで解読するには宇宙の年齢を超える時間がかかります。NISTは、新しいシステムでの対称暗号に最低128ビットの鍵を推奨しており、将来の量子コンピューティングによる脅威に対して長期的な安全性が必要な用途では、256ビット鍵が推奨されます。

# Key size comparison
# DES:    56-bit key  =  72 quadrillion combinations (broken in hours)
# 3DES:  112-bit key  =  5 x 10^33 combinations (adequate, but slow)
# AES-128: 128-bit key = 3.4 x 10^38 combinations (secure)
# AES-256: 256-bit key = 1.2 x 10^77 combinations (quantum-resistant)

# Generate a random AES-256 key
openssl rand -hex 32  # 32 bytes = 256 bits

鍵管理の課題

対称暗号の根本的な弱点はkey management(鍵管理)です。暗号化の安全性は、鍵と同程度にしか保てません。鍵管理の課題には、key distribution(通信前に鍵を安全に共有すること)、key storage(ハードウェアセキュリティモジュールやキーボールトを使い、保存中の鍵を保護すること)、key rotation(漏えい時の影響を抑えるため定期的に鍵を変更すること)、key destruction(不要になった鍵を安全に削除すること)があります。実際の暗号化障害は、アルゴリズム自体の数学的な弱点よりも、不適切な鍵管理が原因で発生したもののほうが多くあります。

実践でのAES:ディスクとファイルの暗号化

AESは、セキュリティ専門家が日常的に扱う最も一般的な暗号化ツールの基盤となっているアルゴリズムです。BitLocker(Windows)とFileVault(macOS)はAES-128またはAES-256を使用してディスクボリューム全体を暗号化し、ノートパソコンが盗まれた場合でもデータを保護します。VeraCryptはクロスプラットフォームのディスク暗号化を提供します。クラウドプロバイダー(AWS S3、Google Cloud)は、保存データのオブジェクトを暗号化するためにAES-256-GCMを使用しています。製品の基盤となっているアルゴリズムを理解することで、その暗号化の実装がデータの機密性レベルに適しているかを評価できます。

# Check BitLocker encryption status on Windows
manage-bde -status C:
# Shows: Protection Status, Encryption Method (AES 256)
# Key Protectors: TPM, Password, Recovery Key

# Check if a macOS volume is FileVault encrypted
fdesetup status
# FileVault is On.

BlowfishとTwofish:歴史的背景

Security+の教材には、他にも2つの対称アルゴリズムが頻繁に登場します。Blowfish(1993年)は、DESに代わるパブリックドメインの方式としてBruce Schneierが設計した、可変長鍵(32~448ビット)のブロック暗号です。高速かつ無償で利用できますが、ブロックサイズが64ビットであるため、長時間のセッションではbirthday attackに対して脆弱です。Twofish(1998年)はAES選定コンペティションの最終候補で、128/192/256ビットの鍵と128ビットのブロックサイズを備えています。どちらも現在も安全とされていますが、NISTのコンペティションではAESが選ばれ、最新の実装ではAESが主流です。これらのアルゴリズムを知ることで、AESが選ばれた背景を理解できます。

対称暗号と非対称暗号:使い分け

対称暗号と非対称暗号は、それぞれを補完する役割を果たします。対称暗号(AES)は高速で、大量のデータの暗号化に適しています。非対称暗号(RSA)は低速ですが、鍵配送の問題を解決します。実際には両者を組み合わせ、非対称暗号で対称セッション鍵を安全に交換し、その後の大量データ転送は対称暗号で処理します。このハイブリッド方式はTLS(HTTPS)、VPN、PGPメール暗号化の基盤であり、非対称鍵交換の安全性と対称暗号によるデータ暗号化の速度を両立します。

クイックチェック

このレッスンで学んだCompTIA Security+(SY0-701)の概念を確認しましょう。

レッスンのまとめ

このレッスンでは、次のことを学びました。symmetric encryption(対称暗号)は暗号化と復号に同じ共有鍵を使用すること、AES(128/192/256ビット)が現在の標準であること、DES(56ビット)は破られており非推奨であること、block cipher modes(ブロック暗号モード、GCMが推奨)がブロックの連結方法を決めること、そして鍵管理が主な運用上の課題であることです。次はAsymmetric Encryption and Key Pairsについて学びます。

よくある質問

「対称暗号アルゴリズム」レッスンは無料ですか?

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

「対称暗号アルゴリズム」で何を学びますか?

AES、DES、3DESを通じて、共通鍵暗号の仕組み、鍵長、各アルゴリズムを使う場面を学びます。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

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

「対称暗号アルゴリズム」レッスンにはどのくらい時間がかかりますか?

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

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

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

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

  1. 対称暗号アルゴリズム
  2. 非対称暗号と鍵ペア
  3. ハッシュとデータ完全性
  4. 鍵交換とハイブリッド暗号
← Cloud & IT Cert Prepに戻る