web-dev-qa-db-ja.com

メッセージを暗号化するか、X509証明書で署名する

証明書の使用に関して2つの同様の質問があります。

  1. 私はシステムの認証局について読んでいて、CAが公開鍵インフラストラクチャのX509標準に準拠したPKIを使用してメッセージに署名していることがわかりました。 CAの発言を引用します。

デジタル証明書は、ユーザー資格情報の信頼性を確立し、メッセージにデジタル署名するために使用されます。 証明書でメッセージに署名すると、メッセージが変更されていないことが保証されます。

ソース: https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md#42-user-privacy-through-membership-services

X509が公開鍵を含む証明書形式であることを知っているので、契約で署名することはできますか?

  1. 最初の質問に対する回答をインターネットで検索していたところ、X509証明書を使用してメッセージを暗号化できることがわかりました。

https://msdn.Microsoft.com/en-us/library/ms824684.aspx

秘密鍵が必要な暗号化について混乱しています。鍵は証明書に含まれていますか?

2
Sig Touri

デジタル証明書、署名、およびPKIのしくみに関する基本的な概念知識が不足しています。私はこれらの概念をITセキュリティの専門家として毎日働いているので、説明させてください。

デジタル署名は情報の整合性の原則(CIAトライアドではI)を保護するために使用され、関連する否認防止の原則が適用されます。情報の完全性とは、次のことを意味します。

休止中または転送中のいずれの場合も、データが悪意を持って変更/破壊/破損されない

否認防止の関連する原則により、完全性の原則に違反した場合でも、責任者はデータの改ざんを否認できません。

PKIはデータの署名/暗号化の非対称方式です。つまり、操作を完了するには2つのキーが必要です

  1. トランザクションで一方の当事者だけが知っている秘密鍵
  2. 自由に利用できるトランザクションの各当事者の公開鍵

メッセージの署名

メッセージに署名するとき、メッセージ本文のメッセージダイジェストは、SHA2などのハッシュアルゴリズムを介してメッセージを実行することによって最初に生成されます。送信者の秘密鍵は、送信されたメッセージダイジェストを暗号化するために使用されます。多くの場合、送信者の公開鍵はメッセージ本文に付加されます。メッセージを受信すると、受信者は自由に利用できる送信者の公開鍵を使用してメッセージダイジェストを復号化します。復号化されたメッセージダイジェストを元のメッセージの個別に計算されたハッシュと比較することにより、結果の2つのハッシュが等しい場合、整合性と否認防止が保証されます。

否認防止は、認証局(CA)の役割によって保証されます。この当事者の役割は、トランザクションの各当事者(送信者と受信者)の身元を、各当事者の公開鍵を、発信ドメインなどの情報を含む証明書と呼ばれる文書にバインドすることによって証明することです。キーを生成します。

メッセージの暗号化

メッセージを暗号化する目的は、CIAのCとI-機密性と整合性を保証することです。暗号化(例:TLS経由)により、悪意のあるサードパーティが送信中のデータのみを傍受できないようにします。データは受信者の公開鍵で暗号化なので、受信者の一致する秘密鍵だけがメッセージを復号化できます。

あなたの質問に答えるために、秘密鍵は受信者だけが知っており、証明書には含まれていません

2
Anthony