システムアーキテクチャデザインノート(84)-デジタル署名とデジタルウォーターマーク

ハッシュ関数は公開数学関数です。ハッシュ関数演算の入力情報は、メッセージと呼ぶこともできます。ハッシュ関数操作の結果は、ハッシュコードまたはメッセージダイジェストと呼ばれます。ハッシュ関数には次の特徴があります。

(1)内容の異なるメッセージはハッシュコードが異なります。元のメッセージが変更されると、1ビットの情報が変更されても、ハッシュ関数によって計算されるハッシュコードは完全に異なります。このように、このハッシュコードは、このメッセージに固有の「指紋」のようなものです。

(2)ハッシュ関数は一方向です。つまり、特定のメッセージのハッシュコードを解決するのは非常に簡単ですが、ハッシュコードに基づいて元のメッセージを逆にすることは非常に困難です。

(3)どのメッセージについても、そのハッシュコードは予測できません。

(4)ハッシュコードの長さは固定されています。元のメッセージの長さに関係なく、ハッシュ関数によって計算されたハッシュコードの長さは同じです。たとえば、MD5(メッセージダイジェストアルゴリズム5、メッセージダイジェストアルゴリズムの5番目のバージョン)のハッシュコードの長さは128ビットであり、それが百科事典であるか、MD5ハッシュ操作の個人の給与であるかにかかわらず、得られたハッシュコードの長さは128ビットです。

ハッシュ関数にはこれらの特性があるため、ハッシュ関数を使用してメッセージの信頼性を検出できます。受信者は送信者と同じハッシュ関数を使用して受信メッセージを計算します。送信者と同じハッシュコードが取得された場合、メッセージは改ざんされていないと見なすことができます。それ以外の場合、メッセージは信頼できません。一般的なハッシュ関数には、MD5、SHA、HMACなどがあります。

MD5は非常によく知られているハッシュアルゴリズムであり、国際標準になり、優れたセキュリティパフォーマンスを備えています。MD5アルゴリズムが入力メッセージを計算すると、512ビット単位で処理され、結果は128ビットのメッセージダイジェストになります。SHA、HMAC、およびその他のアルゴリズムはすべて、任意の長さのメッセージの単位として512ビットを使用します。処理後、最終的に160ビットのメッセージダイジェストが取得されます。

1デジタル署名

コンピュータシステムで送信および保存される重要なファイル、データ、情報などについては、通常、その信頼性を確認する方法が必要です。つまり、受信者は、取得した情報が実際に情報の送信者によって送信されたことを確認できます。違法な侵入者によって偽造されたり、偽装されたりすることはありません。また、この情報が送信者の意図を真に反映できるように、送信および保存中に情報が悪意を持って改ざんされないようにする必要があります。

さらに、送信者にとって、メッセージが送信された場合、メッセージの送信を拒否しないようにするための特定の対策、つまり拒否されないようにする必要があります。上記のことを行うことによってのみ、情報の送信および保存システムは安全で信頼性が高く、送信および保存される情報は真実で信頼できます。

たとえば、相互取引の買い手と売り手は、コンピューターシステムを介して取引を行い、売り手はコンピューターシステムを介して買い手に電子見積もりを送信し、受け取った後、買い手は無断で受け取った単価を変更し、売り手であると主張します。 、それに応じて注文します。これは情報を改ざんしています。明らかに、安全なシステムはこの動作を防ぐことができるはずです。

上記の安全なシステムを実現するためには、デジタル署名技術が不可欠です。デジタル署名は、主に署名アルゴリズムと検証アルゴリズムの2つのアルゴリズムで構成されています。署名アルゴリズムを使用してメッセージに署名することにより、結果の署名は検証アルゴリズムを通じて署名の信頼性と有効性を検証できます。したがって、デジタル署名テクノロジーの一般的なプロセスは次のとおりです。情報の送信者が独自の秘密鍵を使用して情報に署名し、送信者がこの署名と情報を受信者に送信します。情報を受信した後、受信者は送信者の公開鍵を使用してデジタル署名を検証し、その正当性を確認します。RSAデジタル署名アルゴリズム、EIGamal、Fiat-Shamir、Guillon-Oucsquerrter、DSS(デジタル署名標準)、DSA(デジタル署名アルゴリズム、デジタル署名アルゴリズム)、楕円曲線など、すでに多数のデジタル署名アルゴリズムがあります。待つ。

1.1RSAとMD5デジタル署名の組み合わせ

前述のように、RSA公開鍵暗号化テクノロジー自体を使用してデジタル署名を実装できます。ただし、公開鍵暗号化アルゴリズムのみを使用したデジタル署名の計算の複雑さは比較的大きく、特に送信される情報の量が比較的多い場合、速度は遅くなります。明らかに、デジタル署名にこの方法を直接使用することは良い選択ではありません。ハッシュアルゴリズム(たとえば、MD5アルゴリズム)は非常に優れた特性を備えており、情報の長さが異なるごとに、相互に異なる一意の短いメッセージダイジェストを生成できます。このメッセージダイジェストは、この情報の固有の「指紋」と見なすことができるため、デジタル署名に非常に適しています。

元のデータはハッシュアルゴリズムによってハッシュされ、ハッシュコードは公開キーで暗号化されて優れたデジタル署名が実現されます。その特徴は次のとおりです。ファイルの特徴を表し、一意です。ファイルが1つのデータでも変更されるか、署名者に違いがある限り、デジタル署名の値もそれに応じて変更されます。ファイルと署名者が異​​なれば、デジタル署名も異なります。

RSAとMD5デジタル署名を組み合わせた主なプロセスは次のとおりです。情報の送信者は情報をハッシュすることによってメッセージダイジェストを生成し、送信者は独自の秘密鍵でメッセージダイジェストを暗号化して送信者のデジタル署名を形成します。次に、このデジタル署名をメッセージの添付ファイルとして送信し、メッセージの受信者に送信します。情報を受信した後、受信者はまず受信した情報に対して送信者と同じハッシュ操作を実行してメッセージダイジェストを取得し、次に送信者の公開キーを使用してメッセージに添付されたデジタル署名を復号化し、送信者の計算を取得しますハッシュコード。2つのハッシュコードが同じである場合、受信者は情報とデジタル署名が送信者によって送信されたことを確認できます。デジタル署名は、元の情報の整合性の認証と送信者によって送信された情報の非否認を実現できます。

例を組み合わせて、MD5デジタル署名と組み合わせたRSAの特定の手順を見てみましょう。

(1)情報送信者AがBに情報を送信したい場合、Aはまず、両当事者が合意したハッシュアルゴリズムに従って情報をハッシュし、情報に固有のメッセージダイジェストHを取得します。これは、上記から知ることができます。メッセージのいずれかのビットが変更された場合、再計算されたメッセージダイジェスト値は元の値と一致しません。これにより、情報の不変性が保証されます。
(2)次に、メッセージダイジェストをA自身の秘密鍵で暗号化し、メッセージのAのデジタル署名Sを取得します。
(3)次に、Aは元のメッセージとデジタル署名SをBに送信します。
(4)Bがそれを受信したら、最初にデジタル署名SをAの公開鍵で復号化して、AのメッセージダイジェストHを取得します。
(5)同じハッシュアルゴリズムを使用して受信情報をハッシュし、メッセージダイジェストH 'を取得します。
(6)HとH 'を比較します。それらが等しい場合、情報は送信者Aからのものであることを意味します。

送信プロセス中に、攻撃者がファイルを改ざんしたが、送信者の秘密鍵を知らなかった場合、したがって、受信者の復号化によって取得されたデジタル署名Hは、計算されたデジタル署名H 'とは異なる必要があります。これにより、送信者の身元を安全に確認できます。もちろん、上記の例では、送信された情報は、機密性の意味を持たないプレーンテキストで表示されます。実際のアプリケーションでは、情報自体に適切な機密対策を適用することも必要です。

デジタル署名用のRSAの重要な機能は、情報の送信者のIDと、電子ファイルの信頼性と整合性を検証できることです。これは、送信者と送信される情報に固有であり、検証可能であり、否定できません。信頼できる機能。もう1つの重要な機能は、コンピューター間でデジタル証明書を交換することにより、当事者が本人であると主張していることを確認できることです。

1.2デジタル署名標準

DSSは、米国国立標準技術研究所のデジタル署名標準であり、1991年に提案されて以来大幅に改訂されています。DSSは、デジタル署名アルゴリズム(デジタル署名を計算および検証するためのDSA)を指定します。DSAは、El Gamalのデジタル署名アルゴリズムの改良版であり、より小さな仕様を選択することでデジタル署名データの量を減らし、それによってストレージスペースと送信帯域幅を削減します。

DSSはハッシュアルゴリズムとしてSHAを指定し、元の情報を計算した後に160ビットのメッセージダイジェストを生成し、DSSはこのメッセージダイジェストとこの特別な署名に使用されるランダム番号をデジタル署名アルゴリズムへの入力として送信します。デジタル署名は、計算後に生成されます。デジタル署名機能は、送信者の秘密鍵SKと、多くの通信当事者に公開されている重要な公開鍵のセットで構成されるグローバル公開鍵にも依存しています。メッセージダイジェストと署名を受信した後、受信者はそれを検証機能の入力として使用します。検証機能は、グローバル公開鍵と送信者の秘密鍵と一致する公開鍵PKにも依存しているため、送信者のみが独自の秘密鍵を使用して有効な署名を生成できます。

重要な認証技術として、デジタル署名は近年ますます注目を集めており、政府、軍事、金融、セキュリティなどの分野で広く使用されています。デジタル署名は、データの整合性を効果的に保証し、送信者によるサードパーティの偽造または拒否を防ぐことができます。

2004年8月28日、第10回国民会議常任委員会の第11回会議は、電子署名法を投票で可決しました。この法律は、信頼できる電子署名が手書きの署名または印鑑と同じ法的効力を有することを規定しており、2005年4月1日に発効します。この法律は、中国における電子商取引や電子政府などのコンピュータ情報システムの開発を促進する上で非常に重要な役割を果たします。

2デジタルエンベロープ

デジタルエンベロープは、実際には公開鍵暗号システムのアプリケーションであり、暗号化技術を使用して、指定された受信者のみが通信のコンテンツを読み取れるようにします。

デジタルエンベロープでは、情報の送信者は対称キーを使用して情報のコンテンツを暗号化し、次に対称キーを受信者の公開キー(この部分はデジタルエンベロープと呼ばれます)で暗号化し、暗号化された情報と結合します受信者に送信すると、受信者は最初に対応する秘密鍵を使用してデジタルエンベロープを開き、対称鍵を取得し、次に対称鍵を使用して暗号化された情報のロックを解除します。このテクノロジーのセキュリティは非常に高いです。


おすすめ

転載: blog.csdn.net/deniro_li/article/details/108808019