GenerateDigitalSignature

GenerateDigitalSignature[expr,key]

指定された秘密鍵 key を使って expr のデジタル署名を生成するGenerateDigitalSignature[key]
式に適用可能な
GenerateDigitalSignatureの演算子形を表す.

詳細とオプション

  • デジタル署名はメッセージの信頼性を検証するために使われるもので,署名するデータと秘密鍵の両方に依存する.
  • GenerateDigitalSignatureDigitalSignatureオブジェクトを返す.
  • DigitalSignatureオブジェクトはVerifyDigitalSignatureで検証できる.
  • keyGenerateAsymmetricKeyPair[type]で生成されたPrivateKeyオブジェクトである.使用可能な鍵のタイプには"EllipticCurve""EdwardsCurve""RSA"がある.
  • GenerateDigitalSignatureには次のオプションがある.
  • Method Automatic署名法
  • 設定Methodassocassoc は使用する署名法の詳細を与える.
  • 署名のタイプは鍵のタイプで決定される.鍵のタイプが判定できないときは,連想の"Type"要素で指定しなければならない.使用可能なタイプには"RSA""EllipticCurve""Schnorr""EdwardsCurve"がある.
  • "EllipticCurve"署名アルゴリズムは「Elliptic Curve Digital Signature Algorithm」(ECDSA)にFIPS 186-4指定を使う.
  • "EdwardsCurve"署名アルゴリズムは「Edwards-Curve Digital Signature Algorithm」(EdDSA)にRFC 8032指定を使う.
  • "RSA"では,連想に次の要素が含まれるかもしれない.
  • "HashingMethod""SHA256"もとの式をどのようにハッシュするか
    "HashName"Automatic充填に使用するハッシュ名
    "Padding""PKCS1"使用する充填スキーム
  • 現在サポートされている充填スキームは,"PKCS1"および"X931"である.
  • "HashName"は,通常は"HashingMethod"と同じ値である."HashingMethod"Noneに設定されているときは,"HashName"を与えなければならない.
  • "RSA"については,"HashingMethod"ですべてのハッシュ関数がサポートされている訳ではない.サポートされているハッシュは,"MD4""MD5""RIPEMD160""SHA1""SHA224""SHA256""SHA384""SHA512""SHA3-224""SHA3-256""SHA3-384""SHA3-512"である.
  • "EllipticCurve""Schnorr"では,連想に次の要素が含まれるかもしれない.
  • "CurveName""secp256k1"使用する楕円曲線
    "HashingMethod""SHA256"もとの式をどのようにハッシュするか
    "SignatureType"Automaticデジタル署名の生成モード
  • "EdwardsCurve"については,連想に次の要素を含めることができる.
  • "CurveName""ed25519"使用するツイストされたエドワーズ曲線t
    "HashingMethod""SHA512"もとの式をどのようにハッシュするか
    "SignatureType"Automaticデジタル署名の生成モード
  • "CurveName"の可能な設定は$CryptographicEllipticCurveNamesにリストされている.
  • 曲線"secp256k1"を使った暗号通貨は"CurveName"の設定としても使える.これには,"Bitcoin""Ethereum"が含まれる.暗号通貨を使うとDigitalSignatureオブジェクトの適切な追加的パラメータが与えられる.
  • "HashingMethod"->Noneexpr のためのデジタル署名を直接構築するが,これをハッシュはしない.この場合,expr はバイト配列またはハッシュ文字列でなければならない.
  • "HashingMethod"->"h"は,事実上,Hash[expr,"h"]を使って expr をハッシュする.
  • "SignatureType"の可能な設定には以下がある.
  • "Deterministic"expr を擬似ランダム性のソースとして使う
    "NonDeterministic"システム特有のランダム性のソースを使う
    Automatic可能な場合は非決定性メソッドを使う.その他の場合は決定性メソッドを使う
  • ハッシュ法の"Adler32""CRC32",およびNoneについては,"SignatureType""Deterministic""SHA256"を使って入力から擬似乱数を導出する.

例題

すべて開くすべて閉じる

  (5)

楕円曲線に基づく鍵のペアを生成する:

ユーザの秘密鍵を使ってデジタル署名を生成する.次のメッセージがビットコインブロックチェーンのブロック0に現れる:

ユーザの公開鍵を使ってデジタル署名を確かめる:

RSAのキーのペアを使って署名し,メッセージを確認する:

自分が選んだハッシング関数を使ってメッセージに署名する:

署名を確認する:

これは,要約を手作業で構築し"HashingMethod" -> Noneを使うことに等しい:

署名を確認する:

RSAキーと選択したハッシュ関数を使ってメッセージに署名する:

エドワーズ曲線デジタル署名アルゴリズムでメッセージに署名する:

スコープ  (4)

メッセージタイプ  (3)

文字列として与えられた既存のメッセージの要約のデジタル署名を生成する:

すでに要約をハッシュしてあるので"HashingMethod"Noneを使う:

署名を確認するときに,要約が再度ハッシュされることはない:

すでにハッシュ済みの要約をByteArrayとして与えることもできる:

ハッシュ済みの要約があるので"HashingMethod"Noneを使う:

署名を確認するときに要約が再度ハッシュされることはない:

任意の式のデジタル署名を生成する:

署名を確認する:

演算子形  (1)

楕円曲線に基づいたキーのペアを生成する:

秘密鍵を使ってデジタル署名を生成する:

公開鍵を使ってデジタル署名を確かめる:

オプション  (8)

Method  (8)

完全なMethodオプションのレイアウトを使って,入力から派生した擬似ランダム性に基づいた決定性のデジタル署名を生成する:

楕円曲線に基づいた鍵を使ってSchnorrデジタル署名アルゴリズムでメッセージに署名する:

"RSA"タイプの非対称鍵のペアを生成する:

"SHA1"ハッシュメソッドを使って,指定された文字列の秘密鍵でデジタル署名を生成する:

デジタル署名をチェックする:

"RSA"タイプの非対称鍵のペアを生成する:

"MD5"ハッシュメソッドを使って,指定された文字列の秘密鍵でデジタル署名を生成する:

デジタル署名をチェックする:

"RSA"タイプの非対称鍵のペアを生成する:

"X931"充填法を使って,与えられた文字列の秘密鍵でデジタル署名を生成する:

デジタル署名をチェックする:

"EllipticCurve"タイプの非対称鍵のペアを生成する:

"Keccak512"ハッシュメソッドを使って,与えられた文字列の秘密鍵でデジタル署名を生成する:

デジタル署名をチェックする:

"Bitcoin"を指定して署名に追加的なパラメータを得る:

ビットコインブロックチェーンのデジタル署名を生成する:

DER符号化されたデジタル署名を取り出す:

"Ethereum"を指定して署名に追加パラメータを入れる:

イーサリアムブロックチェーンのデジタル署名を生成する:

署名の回復パラメータを取り出す:

アプリケーション  (3)

暗号通貨ネットワーク  (2)

ビットコインネットワークの必要条件を満たすデジタル署名を生成する:

イーサリアムネットワークの必要条件を満たすデジタル署名を生成する:

ファイルに署名する  (1)

楕円曲線の鍵のペアを生成する:

署名しようとするファイルのコンテンツをインポートする:

インポートされたファイルのバイトに対する署名を作成する:

これは,ファイルに直接GenerateFileSignatureを使っても行うことができる:

どちらの署名も確認できる:

考えられる問題  (2)

PrivateKeyのタイプとGenerateDigitalSignatureMethodオプションで指定された"Type"が一致しない場合は,警告メッセージが出されて秘密鍵のタイプがデジタル署名の計算に使われる:

ここでは,GenerateDigitalSignature"RSA"を使う:

デジタル署名アルゴリズム(DSA)はサポートされていない:

Wolfram Research (2019), GenerateDigitalSignature, Wolfram言語関数, https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html (2020年に更新).

テキスト

Wolfram Research (2019), GenerateDigitalSignature, Wolfram言語関数, https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html (2020年に更新).

CMS

Wolfram Language. 2019. "GenerateDigitalSignature." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html.

APA

Wolfram Language. (2019). GenerateDigitalSignature. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html

BibTeX

@misc{reference.wolfram_2024_generatedigitalsignature, author="Wolfram Research", title="{GenerateDigitalSignature}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html}", note=[Accessed: 16-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_generatedigitalsignature, organization={Wolfram Research}, title={GenerateDigitalSignature}, year={2020}, url={https://reference.wolfram.com/language/ref/GenerateDigitalSignature.html}, note=[Accessed: 16-November-2024 ]}