web-dev-qa-db-ja.com

証明書の署名は公開鍵だけのハッシュですか?

X.509証明書の署名は公開鍵だけの暗号化されたハッシュですか、それとも単なる鍵以上のハッシュですか?

3
PixelPaul

署名には、公開鍵だけでなく証明書も含まれます。署名が公開鍵のみを対象としている場合、任意のパラメーター(有効期限、ドメイン名、発行者)を変更でき、署名は引き続き有効です。

デジタル署名は暗号化されていません: https://security.stackexchange.com/a/87373/708

上記のリンクを読む場合、難しい単語、文、段落をスキップしないでください。スキップした場合でも、読んでみて失敗したときに読んだとは言わないでください。

非常に安全でない教科書RSAは、それを実装する必要のない専門家以外に、この悪い方法で、概念の数を減らして消化しやすくなると考えた誰かによって、手形で説明されました。この説明をした人々は、70年代にはRSAについて(少なくともパディングのため)間違っていましたが、現代のデジタル署名については破滅的な誤りを犯しています。 DSA、ECDSA、EdDSAには暗号化の概念はありません。

人々は、それから数十年、そして最近でも、教科書RSAは安全だと考えて、素朴に実装しています。しばしば、彼らは後に「私の数学の教授は、いくつかの入門用数学クラスでモジュラー指数を使用するだけで解読不可能な暗号化を実装できると言い、bignumライブラリーを取得してそれを実行した」と言っています。

教科書RSAはもちろん安全ではありません。暗号化クラスで暗号化について学べば、その理由を教えられただろう。

これを口に出して発砲するすべての数学の先生(またはドキュメント作成者やブロガー)を連れ出すことはできません。数学の先生(そしておそらくブロガーさえ)が必要だからです。しかし、私たちは数学の教師、少なくとも新しい数学の教師に、人々が外に出て愚かなことをしないように十分に教える暗号学のクラスの外で暗号について話さないように教える必要があります。機械工場の教師は安全についての教育を理解していますが、数学の教師もそうするべきです。しかし、多くの人たちは、純粋な数学には安全上の問題がある可能性があることを理解していない環境で自分自身を教えていました。誰かがアプリ、数学の一部に依存して、彼らを刑務所に入れるか、もっと悪いことに秘密を守るかもしれないからです。

また、人々の頭の中やインターネット上の情報を更新する際の一般的な問題にも取り組んでいます。この問題は非常に困難です。

多くの場合、人々は自分が知っていることが実際には正しくないことを知ると、後で更新を忘れて、最初に学んだ間違った最初のことを覚え続けます。ですから、人々を是正し続ける必要があります。

インターネットは、何十年も前に誰かが学んだ情報の逆流を公開し続けており、現在では不正確であることがわかり、その公開日は新しいため、読者は70年代から何かが間違っていることを読んでいることを知りません。したがって、出版物を修正し続ける必要があります。

このサイトには、「署名は秘密鍵による暗号化である」という説明を理解しようとして失敗した多くの個別の質問と答えがあります( 最初の例 googleで出てきました)。世界は、なぜそれが間違っているのかを読んで理解しなかった人々によって書かれたバグの多いソフトウェアでいっぱいです。

(タイプミスの修正に感謝 Steffen Ullrich !)

7
Z.T.

セキュリティ上の理由から、証明書の署名は証明書全体に署名する必要があります(署名自体を除いて...)。それ以外の場合は、独自のドメイン(および対応する秘密鍵を保持しているもの)に対して有効に発行された証明書を取得し、「Subject」(「yoursite.com」などのドメインなど)を変更して、証明書が特定する可能性があります。 )攻撃したい他のエンティティ(「bigbank.com」など)次に、他の誰か宛てのトラフィックを傍受するために使用できる「有効な」証明書を取得し、双方向でメッセージを読み取り、変更、または偽造できるようにします。

これを防ぐために、所有者とその目的を識別する証明書のすべての部分(サブジェクト名、サブジェクトの公開鍵、有効期間、使用値、および発行者)が署名に含まれています。より正確には、はい、それらはすべてハッシュ関数入力に含まれ、その出力(「ダイジェスト」)は実際の数学的な「署名」操作が実行される対象です。署名以外のものを変更すると、ハッシュが変更されるため、署名は検証されません。完全に新しい有効な署名を作成しない限り、署名自体を変更すると明らかに無効になります...発行者の秘密鍵なしでは実行できません。

4
CBHacking