Sign
Sign関数カードは、入力テキストを受け取り、暗号技術ハッシュアルゴリズムと秘密鍵を使用してデジタル署名を作成します。この署名を公開鍵と一緒に送信すると、外部関係者は元のメッセージがあなたから送られたことと改ざんされていないことを確認できます。
生成されるハッシュの形式は、指定した出力パラメーターに応じてBase64、hex、またはbinaryのいずれかです。
入力
フィールド | 定義 | タイプ | 必須 |
---|---|---|---|
algorithm |
使用する暗号技術ハッシュアルゴリズムを以下から選択します。
|
ドロップダウン | 誤 |
data | 署名するメッセージ。 | 文字列 | 正 |
digest |
生成されるハッシュの出力形式を以下から選択します。
|
ドロップダウン | 誤 |
privateKey | |||
key | 署名の秘密鍵。これはPEMでフォーマットされた秘密鍵である必要があります。
OpenSSLコマンドを使用して秘密鍵とこの鍵に対応する公開鍵を生成できます。たとえば、パスフレーズで保護された2048ビットのPEM秘密鍵を生成するには、次のコマンドを使用します。 openssl genrsa -des3 -out key.pem 2048 対応する公開鍵を生成するには、次のコマンドを使用します。 openssl rsa -in key.pem -pubout -out pubkey.pem |
文字列 | 正 |
passphrase |
秘密鍵をパスフレーズで暗号化する場合は、その文字列を入力します。 秘密鍵とパスフレーズをテキスト形式で保存することには、セキュリティ上のリスクがあります。Oktaでは、これらのエントリーを暗号化し、別の場所から呼び出すことを推奨します。 リスクを軽減するため、この関数を呼び出して非暗号化したフィールドを保存データに格納するフローについては、フローの実行履歴を保存しないでください。 |
文字列 | 誤 |
出力
フィールド | 定義 | タイプ |
---|---|---|
output | 入力テキストのデジタル署名。 | 文字列 |
outputフィールドの結果は、テキストを送信できる場所であればどこででも使用できます。
例
受信者は、コンテンツの有効性を確認するため、デジタル署名と秘密鍵から生成された公開鍵を必要としています。また、デジタル署名の生成に使用されたアルゴリズムと出力ハッシュの形式も知る必要があります。
たとえば、Janeが「My secret message!」というメッセージをmessage.txtというテキストファイルでBobに送信したとします。
Bobは、そのメッセージがJaneから送信されたもので、途中で改ざんされていないことを確認したいと考えています。
Janeは、Sign関数を使用し、sha256アルゴリズムとbase64ダイジェストオプションを使用してデジタル署名ファイルを生成します。Janeは、関数カードの出力をsignature.base64というテキストファイルにコピーします。
Sign関数のBase64出力をバイナリでフォーマットされた署名に変換するため、Janeはコマンドラインで次のコマンドを実行します。
base64 --decode signature.base64 > signature.bin
Janeは、そのsignature.binファイルを自分のpublicKey.pemと一緒にBobに送信し、自分の署名でSHA-256を使用していることとハッシュがBase64でフォーマットされていることを伝えます。
Bobは、自分のシステムで次のコマンドを使用して、元のファイルで送信された署名と一致する署名であることを確認します。
openssl dgst -sha256 -verify publicKey.pem -signature signature.bin message.txt