0Pricing
Cryptology Academy · レッスン

RSA署名:署名と検証

秘密鍵でドキュメントのハッシュに署名する数学的手順を確認します。

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

ようこそ

RSA署名では鍵の役割が逆になります。秘密鍵で署名し、公開鍵で検証します。これにより、公開鍵を使って誰でもあなたの身元を検証できます。

RSA署名の数学

秘密鍵(d, n)でメッセージMに署名するには、次のようにします。 1. H = SHA256(M) 2. sig = H^d mod n 署名は、nと同じビット長を持つ数値です。

RSA検証の数学

公開鍵(e, n)で署名sigを検証するには、次のようにします。 1. H' = sig^e mod n 2. H = SHA256(M) 3. H == H'なら有効です 公開鍵を持つ人なら誰でも検証でき、秘密情報は必要ありません。

PKCS#1 v1.5署名パディング

生のRSA署名には可鍛性があります。PKCS#1 v1.5では、署名前にハッシュへパディングを追加します。 0x00 0x01 [0xFF padding] 0x00 [DigestInfo] [Hash] 検証では、パディング構造が正確に一致するかを確認します。

RSA-PSS:より優れたパディング

RSA-PSS(Probabilistic Signature Scheme)はランダムなソルトを使用するため、同じメッセージでも署名ごとに異なります。ランダムオラクルモデルで証明可能な安全性を備えています。PKCS#1 v1.5よりも推奨されます。

PythonによるRSA署名(PSS)

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes signature = private_key.sign( message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() )

PythonによるRSA検証

try: public_key.verify( signature, message, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), hashes.SHA256() ) print('Valid!') except InvalidSignature: print('Invalid!')

署名の長さ

RSA-2048の署名は256バイトです。RSA-4096は512バイトです。ECDSA-256の署名は約71バイトです(DERエンコーディングでは可変長です)。署名には、完全な剰余べき乗演算の出力が含まれます。

ブラインド署名

ブラインド署名を使うと、署名者は内容を見ずにメッセージへ署名できます。電子投票や電子現金で使用されます。銀行がブラインド化されたトークンに署名し、ユーザーがブラインド化を解除することで、追跡不可能な現金を実現します。

証明書チェーン内のRSA署名

Let's Encryptは、中間CAのRSA秘密鍵を使ってサーバー証明書に署名します。サーバーの公開鍵は証明書本体に含まれます。TLSクライアントはこのチェーンを自動的に検証します。

Certificate Transparency

Certificate Transparencyは、発行されたすべての証明書を、暗号学的に検証可能なMerkle木に記録します。Signed Certificate Timestamp(SCT)は、発行前にログへ登録されたことを証明します。

理解度チェック

RSA署名の検証では、どの鍵を使って署名を検証しますか?

まとめ

RSA署名は、適切なパディングを使えば安全です。次は、RSAとDSA、ECDSAの署名方式を比較します。

よくある質問

「RSA署名:署名と検証」レッスンは無料ですか?

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

「RSA署名:署名と検証」で何を学びますか?

秘密鍵でドキュメントのハッシュに署名する数学的手順を確認します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「RSA署名:署名と検証」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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