Cryptology Academy · レッスン

DSAとECDSAの署名方式

RSA署名をDSAおよび楕円曲線版と比較します。

レッスン 3/413 ステップ

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

ようこそ

DSAとECDSAは、離散対数問題の困難性を利用する別の署名方式です。ECDSAは、鍵が小さく処理が高速であるため、現代のシステムで主流になっています。

DSAの概要

DSA(NIST、1994年)は、Z*p内の素数位数qの巡回群を使用します。鍵生成では、秘密鍵xと公開鍵y = g^x mod pを生成します。標準的なサイズはpが2048ビット、qが256ビットです。

DSA署名アルゴリズム

1. ランダムなノンスk(1 < k < q)を生成します 2. r = (g^k mod p) mod q 3. s = k^(-1) × (Hash(M) + x×r) mod q 4. 署名:(r, s)

DSAの検証

1. u1 = Hash(M) × s^(-1) mod q 2. u2 = r × s^(-1) mod q 3. v = (g^u1 × y^u2 mod p) mod q 4. v == rなら有効です

DSAのノンス脆弱性

同じkを2回使用すると、2つの署名でrが共有されます。2つの(r,s1)と(r,s2)の組から、秘密鍵xを直接計算できます。これによってPS3は破られました(毎回k=1を使用していたためです)。

ECDSAの概要

ECDSAは、Z*pではなく楕円曲線群上にDSAを適用した方式です。楕円曲線によって、パラメーターを大幅に小さくしながら同等のセキュリティを実現できます。セキュリティ強度では、ECDSA-256 ≈ DSA-3072です。

PythonでのECDSA

from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import hashes private_key = ec.generate_private_key(ec.SECP256R1()) sig = private_key.sign(message, ec.ECDSA(hashes.SHA256())) public_key = private_key.public_key() public_key.verify(sig, message, ec.ECDSA(hashes.SHA256()))

決定論的ECDSA(RFC 6979)

RFC 6979は、秘密鍵とメッセージハッシュからkを決定論的に導出します。これによりRNGへの依存がなくなり、ノンスの再利用が不可能になります。現代の実装ではすべてRFC 6979が使用されています。

EdDSA:Ed25519

Ed25519(Edwards-curve DSA)は、Curve25519のねじれEdwards形式を使用します。設計上、決定論的です。処理時間が入力に依存しない定時間実装です。ECDSAより高速で、新しいプロトコル(SSH鍵、TLS 1.3、Signal)に推奨されます。

鍵サイズの比較

RSA-2048の署名は256バイトです。ECDSA-256の署名は約71バイトです。Ed25519の署名は64バイトです。Ed25519の公開鍵は32バイトです。このサイズの違いは、リソースに制約のあるデバイスでは重要です。

標準曲線

NIST P-256(secp256r1):TLS、FIPS準拠。secp256k1:Bitcoin、Ethereum。Curve25519/Ed25519:Signal、WireGuard、新しいSSH。Brainpool:一部の欧州標準。

理解度チェック

DSA/ECDSAのノンスkを再利用すると、どのような壊滅的な脆弱性が発生しますか?

まとめ

DSA、ECDSA、Ed25519について理解できました。次は、デジタル署名がコード署名やメールなどの実際のアプリケーションをどのように保護するかを学びます。
無料で開始

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

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

コース
67
レッスン
261

よくある質問

「DSAとECDSAの署名方式」レッスンは無料ですか?

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

「DSAとECDSAの署名方式」で何を学びますか?

RSA署名をDSAおよび楕円曲線版と比較します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「DSAとECDSAの署名方式」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. デジタル署名とは
  2. RSA署名:署名と検証
  3. DSAとECDSAの署名方式
  4. 実際に使われる署名:コード署名とメール
← Cryptology Academyに戻る