Cryptology Academy · レッスン

SHA-1とSHA-2ファミリーの解説

SHA-1の弱点と、SHA-256とSHA-512の違いを理解します。

レッスン 3/413 ステップ

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

ようこそ

SHA-1とSHA-2は、NSAが設計したMD5の後継です。SHA-1は現在廃止されています。SHA-256とSHA-512は、ほとんどの用途で業界標準として使われ続けています。

SHA-1の概要

SHA-1は160ビット(20バイト)のハッシュを生成します。NSAが設計し、1995年に公開されました。例:SHA1('hello') = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

SHA-1の構造

SHA-1は80ラウンドを使用し、それらを20ラウンドずつの4段階に分けます。各段階では、異なる論理関数(Ch、Parity、Maj)を使用します。XORとローテーションによって、入力の16ワードを80ワードに拡張します。

SHA-1の衝突:SHAttered(2017年)

2017年、GoogleとCWI Amsterdamが、実用的なSHA-1衝突として初めて知られる衝突(SHAttered攻撃)を生成しました。内容は異なるのに、SHA-1ハッシュが同一のPDFが2つ作られました。コストは約6,500 GPU年でした。

SHA-2ファミリー

SHA-2には、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256が含まれます。これらはすべてMerkle-Damgård構造です。SHA-256が最もよく使われるバリアントです。

SHA-256の構造

SHA-256は512ビットのブロックに対して64ラウンドを実行します。32ビットの状態ワードを8個(a,b,c,d,e,f,g,h)保持します。各ラウンドでは、Ch、Maj、Σ0、Σ1の各関数を使って入力ワードを混合します。

PythonでのSHA-256

import hashlib msg = b'hello' digest = hashlib.sha256(msg).hexdigest() print(digest) # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

SHA-512とSHA-256の比較

SHA-512は64ビットのワードを使って80ラウンドを実行し、512ビットを生成します。64ビットのハードウェアではより高速ですが、より大きなダイジェストを生成します。256ビットのセキュリティレベルが必要な場合はSHA-512を使用してください。

SHA-3(Keccak)

SHA-3は、別の設計として2015年に標準化されました。Merkle-Damgård構造ではなくスポンジ構造を使用するため、長さ拡張攻撃の影響を受けません。

SHA-2に対する長さ拡張攻撃

SHA-256(secret || message)には脆弱性があります。Hash(message)を知っている攻撃者は、Hash(message || padding || extra)を計算できます。これが、HMACで二重ハッシュ構造を使用する理由です。

どれを使うべきか

SHA-256:汎用用途、TLS、証明書、HMAC。SHA-512:より高い安全余裕が必要な用途。SHA-3:長さ拡張を考慮する必要がない新しいプロトコル。新しい設計ではSHA-1やMD5を決して使わないでください。

クイックチェック

SHA-3は、長さ拡張攻撃の影響を受けないようにするために、どのような構造を使用していますか?

まとめ

SHAファミリーの進化について理解できました。次は、チェックサム、HMAC、GitによるSHAの利用など、ハッシュの実用的な用途を学びます。
無料で開始

AI チューターと学ぶ Cryptology Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
67
レッスン
261

よくある質問

「SHA-1とSHA-2ファミリーの解説」レッスンは無料ですか?

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

「SHA-1とSHA-2ファミリーの解説」で何を学びますか?

SHA-1の弱点と、SHA-256とSHA-512の違いを理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「SHA-1とSHA-2ファミリーの解説」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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