0Pricing
Cryptology Academy · レッスン

ハッシュの用途:チェックサム、HMAC、Git

パスワード保存、データ完全性、バージョン管理におけるハッシュの利用を確認します。

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

ようこそ

ハッシュ関数は、実際のシステムで3つの重要な役割を果たします。データの完全性の検証(チェックサム)、メッセージの認証(HMAC)、コード履歴の追跡(Git)です。

ファイルのチェックサム

ソフトウェアをダウンロードするとき、提供元はSHA-256ハッシュを公開しています。ダウンロード後にハッシュを計算し、比較します。 sha256sum ubuntu-24.04.iso # 公開された値と完全に一致する必要があります

ストレージにおけるデータ完全性

ZFSやBtrfsなどのデータベースは、すべてのデータブロックに対してSHA-256チェックサムを計算します。読み取り時にはチェックサムが検証されるため、ディスク上で発生した気付かれにくいデータ破損も自動的に検出されます。

コンテンツアドレス型ストレージ

Git、IPFS、Dockerは、コンテンツアドレス型ストレージを使用します。各オブジェクトの名前そのものがハッシュです。SHA-256(content) = 一意のIDとなり、同一のコンテンツは一度だけ保存され、重複も即座に検出されます。

GitによるSHA-1(およびSHA-256)の利用

すべてのGitのコミット、ツリー、blobにはSHA-1ハッシュがあります。コミットハッシュには、コンテンツ、メタデータ、親のハッシュが含まれます。1ビットでも変更するとハッシュが変わるため、履歴の改ざんを検知できます。

HMACの構造

HMAC-SHA256(key, msg) = SHA256((key' XOR opad) || SHA256((key' XOR ipad) || msg)) XORパッドを使う二重ハッシュ構造により、鍵付きMACに対する長さ拡張攻撃を防ぎます。

PythonでのHMAC

import hmac, hashlib def create_mac(key: bytes, msg: bytes) -> str: return hmac.new(key, msg, hashlib.sha256).hexdigest() mac = create_mac(b'secret', b'Hello!')

一定時間比較

HMACは必ずhmac.compare_digest()で比較し、==は使わないでください。 タイミング攻撃:比較処理が早期終了すると、一致した長さが漏えいします。 hmac.compare_digestはすべてのバイトを一定時間で比較します。

API認証におけるHMAC

GitHubのwebhookでは、各ペイロードが共有シークレットを使ったHMAC-SHA256で署名されます。webhookを受信 → HMACを計算 → X-Hub-Signature-256ヘッダーと比較、という流れです。

ハッシュによるパスワード検証

ログインの流れ:ユーザーがパスワードを送信 → サーバーがハッシュを計算 → 保存済みのハッシュと比較。サーバーは復号せず、もう一度ハッシュ化して比較します。保存されたハッシュからパスワードが明らかになることはありません。

Merkleツリーの用途

Merkleツリーは、データ上にハッシュツリーを構築します。Bitcoinのブロックには、すべてのトランザクションのMerkleルートが含まれます。Certificate Transparencyは、改ざんを検知できる監査ログにMerkleツリーを使用します。

クイックチェック

HMACの比較では、なぜ==ではなくhmac.compare_digest()を使う必要がありますか?

まとめ

すばらしいです。実際の場面でハッシュを利用できるようになりました。次はAESをさらに深く学びます。AESは世界で最も広く使われている共通鍵暗号の標準です。

よくある質問

「ハッシュの用途:チェックサム、HMAC、Git」レッスンは無料ですか?

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

「ハッシュの用途:チェックサム、HMAC、Git」で何を学びますか?

パスワード保存、データ完全性、バージョン管理におけるハッシュの利用を確認します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ハッシュの用途:チェックサム、HMAC、Git」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 優れたハッシュ関数の条件
  2. MD5:歴史、用途、破られた理由
  3. SHA-1とSHA-2ファミリーの解説
  4. ハッシュの用途:チェックサム、HMAC、Git
← Cryptology Academyに戻る