RSA データ暗号化とデジタル署名

RSAアルゴリズム

RSA は、公開キーを使用してデータを暗号化し、秘密キーを使用してデータを復号化する非対称公開キー暗号化アルゴリズムです。通常、公開鍵は公開されており、秘密鍵は独自に保持され公開できないため、RSA暗号アルゴリズムを使用して通信する場合、情報送信者と情報受信者は公開鍵とデータを相互に送信することになります。 。データ暗号化デジタル署名は
どちらもセキュリティ上の理由から行われることを知っておく必要がありますが、データ暗号化はデータ漏洩を防ぐためにデータを暗号化するものであるのに対し、デジタル署名はデータの偽造を防ぐためにデータから署名を生成することであるという違いがあります。データ付き。

データ暗号化

データ暗号化プロセスでは、公開キーを使用してデータを暗号化し、秘密キーを使用してデータを復号化します。
シナリオ 1:
A が B と通信し、A が B にメッセージを送信します。プロセスは次のとおりです。

  • B はその公開鍵を A に公開します
  • A は B の公開鍵を使用して、送信されるデータを暗号化します
  • B は A によって送信された暗号化データを受信し、独自の秘密鍵を使用して復号化します。

A->B がメッセージを送信する過程で、A のメッセージと B の公開鍵が傍受されたとしても、A の実際の内容を取得することはできません。
ここに画像の説明を挿入
このシナリオでは、メッセージの安全性は保証されていますが、B が受信したいのは A のメッセージであるという前提があり、このときハッカー C が B が公開した公開鍵を使用して B 宛ての偽のメッセージを偽造したり、 A. メッセージを傍受し、メッセージを改ざんすると、B は識別できないため、デジタル署名が必要になります。

デジタル署名

デジタル署名では、署名に秘密キーを使用し、検証に公開キーを使用します
シナリオ 2:
A が B にメッセージを送信します。ハッカー C も偽のメッセージを B に送信します。B は A のメッセージのみを必要としているため、プロセスは次のようになります。

  • A が自身の公開鍵を公開し、B が A の公開鍵を取得します。
  • A は独自の秘密鍵を使用してメッセージに署名し (同時にメッセージの内容をデータで暗号化することもできます)、署名とメッセージを同時に B に送信します。
  • B は A の公開鍵を使用して署名を設計し、解析された内容は実際のメッセージの内容と同じであるため、メッセージが実際に A によって送信されたことを証明できます。

このプロセス中に、C が偽造メッセージを B に送信し、B が A の公開キーを使用して偽造メッセージの署名を検証した場合、失敗する必要があります。
ここに画像の説明を挿入
まとめると、データの暗号化とデジタル署名にはそれぞれの役割があり、一方はデータのセキュリティを確保し、もう一方はデータの正確性を確保するため、メッセージ送信のプロセスでは、セキュリティを確保するために両方の使用を検討できます。

RSAキー

キーファイル形式

キーの形式は 2 つだけ (秘密キーと公開キーを含む)、derpem
der: 特殊なバイナリ形式
pem: Base64 ASCII でエンコードされたプレーン テキスト形式

PEMファイル

PEM ファイルはプレーン テキスト ファイルであるため、テキスト ソフトウェアで直接開くことができることは明らかですが、表示されるのはエンコードされた情報です。実際の内容を確認したい場合は、openssl ツールを使用して開く必要があります。それ。

openssl x509 -in baidu.crt -text -noout 

DERファイル

derファイルはバイナリファイルです。vimなどの一般的なテキストエディタで開くと文字化けします。詳細情報を表示するにはopensslコマンドを使用する必要があります。

openssl rsa -inform der baidu.key -text -noout
テキストソフト オープンSSL
PEMファイル ここに画像の説明を挿入 ここに画像の説明を挿入
DERファイル ここに画像の説明を挿入 ここに画像の説明を挿入

キーファイルの接尾辞

一般的なファイル拡張子

  • .cer、.cert : ウィンドウ プラットフォームでの共通の証明書ファイル。形式は der または pem で、公開キーのみが含まれます。
  • .crt : Linux プラットフォームの証明書ファイル。形式は上記と同じで、公開キーのみが含まれます。
  • .key : 秘密キー ファイル。上記と同じ形式で、秘密キーのみが含まれます。

他のファイル拡張子

  • .csr : 証明書生成リクエスト ファイル。通常、生成された証明書ファイルを CA 機関に送信するために使用されます。
  • .pfx、.p12 : Windows プラットフォームで一般的に使用される形式ファイル (公開キーと秘密キーを含む)
  • .jks : Java キーストア (公開キーと秘密キーを含む)
  • .pem、.der :これはファイル形式であり、ファイル接尾辞であることもあります。接尾辞はファイル形式を意味します。一般に、公開キーはこの接尾辞を使用します

鍵の使い方

一般に、rsa キーは **秘密キー/証明書 (公開キーではない)** とともに使用する必要があり、これには 3 つの手順が必要です。

  1. 秘密鍵ファイルprivate.keyをローカルで生成する
  2. 自己署名証明書 (つまり、CA 組織によって認証されていない) の場合は、秘密キーに基づいて証明書を生成するだけで、それを使用できます。
  3. 運用環境の場合、通常 CA 証明書が必要です。秘密キーに基づいてcertificate.csr ファイルを生成し、その csr ファイルを CA に送信して証明書を生成すると、それを使用できるようになります。

PS: 公開キー ファイルを使用する必要がある場合は、秘密キーに基づいて公開キーを生成できます。

公開鍵と証明書の違い

デジタル署名と情報の暗号化/復号化は公開鍵/秘密鍵に基づいているのに、なぜ証明書が必要なのでしょうか?
証明書には公開鍵が含まれることはもちろんですが、公開鍵が当局によって認証された適格な証明書であることを示す認証局の機関情報などが含まれています。
通常、証明書は CA 認証局が独自の秘密鍵を使用してユーザーの公開鍵にデジタル署名したものです

一般的な openssl コマンド

操作する openssl コマンド
秘密鍵を生成する openssl genrsa -out privkey.pem 2048
自己署名証明書を生成する openssl req -new -x509 -key privkey.key -out cacert.pem -days 3650
CSRファイルの生成 openssl req -new -key privkey.key -out cert.csr
公開鍵を生成する openssl rsa -in privkey.key -pubout -out pubkey.pem
キーファイルを表示する openssl rsa -in private.key -text -noout
公開キーを表示する openssl rsa -pubin -in public.pem -text -noout
証明書ファイルを der 形式で表示する openssl x509 -inform der -in certificate.cer -text -noout der ファイルを示す -inform der コマンドを追加
pem 形式で証明書ファイルを表示する openssl x509 -in certificate.cer -text -noout -inform オプションを省略します
ペムからデアまで openssl x509 -in myserver.pem -outform der -out myserver.crt
ペムを変換します openssl x509 -inform der -in myserver.der -out myserver.crt

おすすめ

転載: blog.csdn.net/qq_15098623/article/details/127761020