3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UNIXコマンドでデジタル署名付き暗号化メッセージの送受信プロセスを検証してみた

Last updated at Posted at 2024-11-01

はじめに

UNIXコマンドでデジタル署名付き暗号化メッセージの送受信プロセスを検証してみました。
Mac環境で実施しております。

使うコマンド

  • openssl

この手順は一般的に推奨される方法ですが、暗号化と署名の順序や方法は、使用するプロトコルやセキュリティ要件によって異なる場合があります。具体的な要件に応じて、適切な手順を選択することが重要です。

実際は、鍵の生成や管理において、適切なパーミッション設定や安全な保管場所の確保が必要です。特に秘密鍵は慎重に取り扱い、第三者に漏洩しないよう注意してください。

準備

OpenSSLで直接使用するためにSSHキーはPEM形式に変換する必要があります。

送信者Aの鍵を作る
# PEM形式の秘密鍵を生成する
openssl genpkey -algorithm RSA -out private_key_A.pem

# PEM形式の秘密鍵からPEM形式の公開鍵を作成する
openssl rsa -in private_key_A.pem -pubout -out id_rsa_pub_A.pem
受信者Bの鍵を作る
# PEM形式の秘密鍵を生成する
openssl genpkey -algorithm RSA -out private_key_B.pem

# PEM形式の秘密鍵からPEM形式の公開鍵を作成する
openssl rsa -in private_key_A.pem -pubout -out id_rsa_pub_B.pem

送受信プロセスの検証

①メッセージを作成

送信者Aが送るメッセージを作る
echo '寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処やぶら小路の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助' > message.txt

②送信者Aの秘密鍵でメッセージに署名

送信者Aの秘密鍵でメッセージに署名
openssl dgst -sha256 -sign id_rsa_A -out message.sig message.txt

③受信者Bの公開鍵でメッセージを暗号化

受信者Bの公開鍵でメッセージを暗号化
openssl pkeyutl -encrypt -in message.txt -pubin -inkey id_rsa_pub_B.pem -out encrypted_message.bin

④送信者Bの秘密鍵でメッセージを復号化

盗聴を防ぐ

送信者Bの秘密鍵でメッセージを復号化
openssl pkeyutl -decrypt -in encrypted_message.bin -inkey id_rsa_B -out decrypted_message.txt

⑤送信者Aの公開鍵で署名を検証

なりすましと改ざんを防ぐ

送信者Aの公開鍵で署名を検証
openssl dgst -sha256 -verify id_rsa_pub_A.pem -signature message.sig decrypted_message.txt
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?