GenerateDigitalSignature
GenerateDigitalSignature[expr,key]
指定された秘密鍵 key を使って expr のデジタル署名を生成する.
GenerateDigitalSignature[key]
式に適用可能なGenerateDigitalSignatureの演算子形を表す.
詳細とオプション
- デジタル署名はメッセージの信頼性を検証するために使われるもので,署名するデータと秘密鍵の両方に依存する.
- GenerateDigitalSignatureはDigitalSignatureオブジェクトを返す.
- DigitalSignatureオブジェクトはVerifyDigitalSignatureで検証できる.
- key はGenerateAsymmetricKeyPair[type]で生成されたPrivateKeyオブジェクトである.使用可能な鍵のタイプには"EllipticCurve","EdwardsCurve","RSA"がある.
- GenerateDigitalSignatureには次のオプションがある.
-
Method Automatic 署名法 - 設定Methodassocの assoc は使用する署名法の詳細を与える.
- 署名のタイプは鍵のタイプで決定される.鍵のタイプが判定できないときは,連想の"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"->Noneは expr のためのデジタル署名を直接構築するが,これをハッシュはしない.この場合,expr はバイト配列またはハッシュ文字列でなければならない.
- "HashingMethod"->"h"は,事実上,Hash[expr,"h"]を使って expr をハッシュする.
- "SignatureType"の可能な設定には以下がある.
-
"Deterministic" expr を擬似ランダム性のソースとして使う "NonDeterministic" システム特有のランダム性のソースを使う Automatic 可能な場合は非決定性メソッドを使う.その他の場合は決定性メソッドを使う - ハッシュ法の"Adler32","CRC32",およびNoneについては,"SignatureType""Deterministic"は"SHA256"を使って入力から擬似乱数を導出する.
例題
すべて開くすべて閉じる例 (5)
ユーザの秘密鍵を使ってデジタル署名を生成する.次のメッセージがビットコインブロックチェーンのブロック0に現れる:
これは,要約を手作業で構築し"HashingMethod" -> Noneを使うことに等しい:
スコープ (4)
メッセージタイプ (3)
オプション (8)
Method (8)
完全なMethodオプションのレイアウトを使って,入力から派生した擬似ランダム性に基づいた決定性のデジタル署名を生成する:
楕円曲線に基づいた鍵を使ってSchnorrデジタル署名アルゴリズムでメッセージに署名する:
"SHA1"ハッシュメソッドを使って,指定された文字列の秘密鍵でデジタル署名を生成する:
"MD5"ハッシュメソッドを使って,指定された文字列の秘密鍵でデジタル署名を生成する:
"X931"充填法を使って,与えられた文字列の秘密鍵でデジタル署名を生成する:
"EllipticCurve"タイプの非対称鍵のペアを生成する:
"Keccak512"ハッシュメソッドを使って,与えられた文字列の秘密鍵でデジタル署名を生成する:
"Bitcoin"を指定して署名に追加的なパラメータを得る:
アプリケーション (3)
ファイルに署名する (1)
これは,ファイルに直接GenerateFileSignatureを使っても行うことができる:
考えられる問題 (2)
PrivateKeyのタイプとGenerateDigitalSignatureのMethodオプションで指定された"Type"が一致しない場合は,警告メッセージが出されて秘密鍵のタイプがデジタル署名の計算に使われる:
ここでは,GenerateDigitalSignatureは"RSA"を使う:
テキスト
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