0Pricing
Cryptology Academy · レッスン

実践:AESによるファイル暗号化

OpenSSLとPythonで実際のファイルをAESで暗号化・復号します。

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

ようこそ

理論を実践に結び付けます。このレッスンでは、認証付き暗号に推奨されるモードであるAES-GCMをPythonで使い、実際のファイルを暗号化および復号します。

なぜAES-GCMなのか

AES-GCMは、関連データ付き認証暗号(AEAD)を提供します。データを暗号化すると同時に、16バイトの認証タグも生成します。改ざんがあった場合は、復号前に検出できます。

AES-GCMの構成要素

入力は、32バイトの鍵、12バイトのランダムなnonce、平文、オプションの関連データ(AAD)です。出力は、暗号文と16バイトの認証タグです。nonceは暗号化ごとに一意でなければなりません。

cryptographyライブラリをインストールする

pip install cryptography PyCAのPython cryptographyライブラリは、推奨される暗号ライブラリです。OpenSSLをラップし、高レベルのレシピと低レベルのhazmatプリミティブの両方を提供します。

PythonでAES-GCMを暗号化する

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(bit_length=256) nonce = os.urandom(12) aad = b'file_version_1' aesgcm = AESGCM(key) ciphertext = aesgcm.encrypt(nonce, plaintext, aad)

PythonでAES-GCMを復号する

try: plaintext = aesgcm.decrypt(nonce, ciphertext, aad) except Exception: print('Decryption failed — tampered or wrong key') 認証タグの検証に失敗すると、decrypt()は例外を発生させます。この例外を決して無視してはいけません。

ファイル暗号化のワークフロー

with open('input.bin', 'rb') as f: plaintext = f.read() ciphertext_with_tag = aesgcm.encrypt(nonce, plaintext, None) # Store: nonce (12 bytes) + ciphertext_with_tag with open('output.enc', 'wb') as f: f.write(nonce + ciphertext_with_tag)

ファイル復号のワークフロー

with open('output.enc', 'rb') as f: data = f.read() nonce = data[:12] ciphertext_with_tag = data[12:] plaintext = aesgcm.decrypt(nonce, ciphertext_with_tag, None)

nonceの管理

AES-GCMで12バイトのランダムなnonceを使用する場合、同じ鍵で最大2^32回まで暗号化しても、衝突確率は無視できる程度に抑えられます。それを超える前に鍵をローテーションしてください。

コマンドラインでOpenSSLを使う

# Encrypt: openssl enc -aes-256-cbc -pbkdf2 -in plain.txt -out encrypted.bin # Decrypt: openssl enc -d -aes-256-cbc -pbkdf2 -in encrypted.bin -out plain.txt 注: CBCモードです。認証付き暗号を使用するには、新しいOpenSSLでは-GCMフラグを追加してください。

鍵を保管するためのベストプラクティス

ソースコードに鍵をハードコードしてはいけません。環境変数、AWS KMS、HashiCorp Vault、またはOSのキーチェーンを使用してください。鍵は定期的にローテーションし、担当者が組織を離れた場合は無効化してください。

理解度チェック

AES-GCMが暗号文の改ざんを検出すると、どうなりますか?

まとめ

これでPythonを使ってAES-GCMでファイルを暗号化できるようになりました。次は非対称暗号に進み、RSAを基礎から学びます。

よくある質問

「実践:AESによるファイル暗号化」レッスンは無料ですか?

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

「実践:AESによるファイル暗号化」で何を学びますか?

OpenSSLとPythonで実際のファイルをAESで暗号化・復号します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「実践:AESによるファイル暗号化」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 対称暗号の概念
  2. AESの構造:ラウンドと状態行列
  3. AESの鍵拡張と鍵長
  4. 実践:AESによるファイル暗号化
← Cryptology Academyに戻る