私は、PKI、証明書、および関連するすべてのものに比較的慣れていません。
私が公開鍵暗号で理解している限り、公開鍵で暗号化し、秘密鍵で復号化します。 one秘密鍵のみがany公開鍵に対応できますが、その逆は当てはまりません。それが正しいか?それとも1対1のマッピングですか?
したがって、デジタル署名が機能する方法は、証明書のコンテンツがハッシュされてから、秘密鍵で「署名」されることです。次に、署名は対応する公開鍵で検証されます。
だから、ここで私は混乱します。公開鍵を使用してメッセージを暗号化することと、秘密鍵を使用してメッセージダイジェストに署名することの違いは何ですか?
メッセージの暗号化と署名の違いを理解するには、情報セキュリティの目的が不可欠だと思います。いくつかの目的を定義するには:
メッセージの暗号化は機密性を提供します。
メッセージ署名は、メッセージソースのIDをこのメッセージにバインドします。これにより、データの整合性、メッセージ認証、および否認防止全体が保証されます。
4番目の目的である否認防止性を見つけました。それが際立っていると思いますので、詳しく説明させてください。アリスはある時点でメッセージに署名したことを否定したり、ボブはメッセージの署名がアリスによって作成されたと誤って主張したりする可能性があります。デジタル署名により、偏りのない信頼できる第三者(事前に合意)が、署名者の秘密情報(秘密鍵)にアクセスすることなく紛争を解決することができます。
質問で言及したデジタル署名システムは、可逆公開鍵暗号化からのデジタル署名と呼ばれます。全体として、デジタル署名スキームには次のプロパティが必要です。
暗号化システムに関しては、ケルクホフスは、今日でもほとんどの部分でまだ役立つ一連の要件を定義しました。 wiki を読んでください。
鍵の生成と暗号化/復号化に使用される関数の種類について、もう一度いくつかの定義を示しましょう。
Y
の各要素が最大で1つのイメージである場合、関数_f: X -> Y
_は1対1です。 X
の要素。Y
の各要素がX
の少なくとも1つの要素のイメージである場合、関数_f: X -> Y
_はontoになります。f(x)
がのすべての要素に対して簡単に計算できる場合、関数_f: X -> Y
_は一方向性ですX
ただし、y
内のすべての要素Y
について、f(x) = y
のようなx
を見つけることは計算上実行不可能です。f: X -> Y
_であり、追加情報(トラップドア情報)の知識がそれを実現可能にします。 y
内のY
、x
内のX
を、f(x) = y
のように検索します。メッセージを暗号化するためのツールとして全単射が使用され、復号化に逆全単射が使用されます。
Trapdoor一方向性関数は、公開鍵暗号システムおよびデジタル署名スキームでの鍵ペアの生成に使用されます。
トラップドアコンクリートの例
RSAでは、公開鍵は_(e,n)
_です。ここで、_n =pq
_とp
およびq
は、2つの大きく異なる素数です。 e
は、1 < e < (p - 1)(q - 1)
の範囲でランダムに選択されます。 _(p - 1)(q - 1)
_の知識があれば、一意の秘密鍵d
は、拡張ユークリッドアルゴリズムの適用によって取得されます。これは、_(e,n)
_からd
を取得できるようにするTrapdoor一方向性関数です。
_(p - 1)(q - 1)
_がわからなくても、d
を検出したい場合は、n
を因数分解する必要があります。 p
とq
が大きく、慎重に選択されている場合、n
の因数分解は扱いにくいはずです。これはRSA問題(RSAP)です。
しかし、トラップドアはどこにありますか?お気づきかもしれませんが、Trapdoorはn
の要素です。これらの要因を知っている場合は、一方向性関数を簡単に反転してd
を明らかにすることができます。
公開鍵暗号化、秘密鍵復号化暗号化およびデジタル署名の場合、その逆です。
ヒント:南京錠として公開鍵を、南京錠を開く鍵として秘密鍵を想像してみてください。
公開鍵暗号または非対称暗号 の最もよく知られている2つの使用法は、デジタル署名と公開鍵暗号化。非対称鍵暗号化スキームでは、誰でも公開鍵を使用してメッセージを暗号化できますが、復号化できるのはペアの秘密鍵の所有者だけです。セキュリティは秘密鍵の機密性に依存します。
デジタル署名または公開鍵暗号化を使用するには、デジタルが必要ですIDまたはデジタル証明書または公開鍵証明書またはID証明書。これは、公開鍵の所有権を証明するために使用される電子文書です。
デジタル署名メッセージは送信者の秘密鍵で署名され、送信者の公開鍵にアクセスできる人なら誰でも確認できます。この検証は、送信者が秘密鍵にアクセスできたため、公開鍵に関連付けられた人物である可能性が高いことを証明します。また、署名は元のメッセージに数学的にバインドされているため、メッセージが改ざんされていないことも保証され、元のメッセージにどれほど類似していても、他のメッセージの検証は事実上失敗します。デジタル署名のアナロジーは、個人用ワックスシールで封筒を封印することです。 -)。メッセージは誰でも開くことができますが、一意のシールの存在が送信者を認証します。
公開鍵暗号化メッセージが受信者の公開鍵で暗号化されます。一致する秘密鍵を持っていない人はメッセージを復号化できません。そのため、その鍵の所有者であり、公開鍵に関連付けられている人物であると推定されます。これは、機密性を確保するために使用されます。公開鍵暗号化に対するアナロジーは、メールスロットを備えたロックされたメールボックスのアナロジーです。メールスロットは公開されており、一般に公開されています。その場所(住所)は、本質的には公開鍵です。住所を知っている人は誰でもドアに行き、書かれたメッセージをスロットから落とすことができます。ただし、メールボックスを開いてメッセージを読むことができるのは、鍵を持っている人だけです。
img src
[〜#〜] r [〜#〜]登録[〜#〜] a [〜#〜]uthority([〜#〜] ra [〜#〜])、[〜#〜] c [〜#〜]証明書[〜#〜] a [〜#〜]uthority([〜#〜] ca [〜#〜])および[〜 #〜] v [〜#〜]alidation[〜#〜] a [〜#〜]uthority( [〜#〜] va [〜#〜])
DES([〜#〜] d [〜#〜]ata[〜#〜] e [〜# 〜]ncryption[〜#〜] s [〜#〜]tandard)およびTriple DES(DESのより強力なバリアント)、AES([〜#〜] a [〜#〜]dvanced[〜#〜] e [〜#〜]暗号化[〜#〜] s [〜#〜]tandard)は対称鍵暗号システムであり、暗号化と復号化に同じ鍵を使用します。
DSA([〜#〜] d [〜#〜]igital[〜#〜] s [〜# 〜]ignature[〜#〜] a [〜#〜]lgorithm)およびRSA(Ron[〜#〜] r [〜#〜]ivest、Adi[〜#〜] s [〜#〜]hamirとLeonard[〜#〜] a [〜#〜]dleman)は公開鍵暗号システムであり、安全なデータ転送に広く使用されています。 DSAはデジタル署名のみを提供し、RSAはデジタル署名と暗号化の両方を提供します。
メッセージ暗号化により、対応する秘密鍵の所有者以外はメッセージ全体を読み取れなくなります。
メッセージに署名すると、メッセージの内容のチェックサムのようなものがキーのデータと組み合わされて作成され、公開キーと照合して検証できます。これにより、メッセージが誰にも読めなくなることはありませんが、メッセージが実際に送信者から発信されたものであり、それ以降変更されていないことを確認できます。
もちろん、これには公開鍵を信頼する必要がありますが、それは別の話です。
最初の質問へ:AFAIKは理論的には公開鍵の衝突を引き起こす可能性がありますが、ほとんどありません。
すべての秘密鍵には1つの公開鍵があり、すべての公開鍵には1つの秘密鍵があり、常に1対1のマッピングが行われます。
メッセージに署名することは、コンテンツが変更されていないことを確認するためだけにメッセージのフィンガープリントを作成するだけですが、メッセージ自体には影響せず、メッセージが暗号化されることはありません。
メッセージの暗号化中に暗号化が行われます。メッセージの暗号化と署名を同時に行うことができます。
他の回答ですでに述べたように、公開鍵と秘密鍵は互いに結合されています。実際、多くの暗号化コンテキストでは、特定のプロパティを持つ番号のペアがあり、秘密鍵として使用する番号と公開鍵として使用する番号を選択できます。したがって、ここにはある程度の独自性があります。 (詳細は、問題のアルゴリズムによって異なる場合があります。)
ただし、PKIについて話すときは、公開鍵を考慮しないことがよくありますが、証明書これは本質的に公開鍵を含む情報(発行者、件名、有効期間、使用上の制約など)のバンドルです。もちろん、証明書を作成するときに、同じ公開鍵に対して異なる証明書を作成できます。
したがって、秘密鍵と公開鍵は基本的に1対1ですが、秘密鍵と証明書は1対多の場合があります。
多分これはあなたの1対1の混乱の原因です。