- ベストアンサー
公開鍵暗号化方式での鍵の配置について
- 公開鍵方式における鍵の配置方法について説明します。
- 公開鍵をサーバに配置し、暗号化、復元用に秘密鍵をクライアントに配置する方法が一般的です。
- VB.NETで公開鍵方式を実現する方法について、参考サイトが少ないことが課題です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
公開鍵暗号には二通りのやり方がある。 ●パターン1:受信側が秘密鍵 ・電文を受信したい人Bがキーペア(公開鍵と秘密鍵)を作る。 ・Bが全世界にBの公開鍵を公開する。 ・Bに電文を送信したい人AがBの公開鍵をゲット。 ・AはBの公開鍵で電文を暗号化してBに送信。 ・BはBの秘密鍵で暗号化電文を復号化。 ・正しく復号化されたらOK。電文は暗号化された状態でAからBに渡された。 →暗号化電文を復号化できるのはBのみ。 ●パターン2:送信側が秘密鍵 ・電文を送信したい人Qがキーペアを作る。 ・Qが全世界にQの公開鍵を公開する。 ・Qから電文を受け取りたい人RがQの公開鍵をゲット。 ・QはQの秘密鍵で電文を暗号化してRに送信。 ・RはQの公開鍵で暗号化電文を復号化。 ・正しく復号化されたらOK。電文は暗号化された状態でQからRに渡された「、かつ確実にQからの電文である事が確認された」。 →暗号化電文を複合できるのは全世界の全ての人間。 ついでにSSLの暗号化方式について軽く説明しておくと、 ・サーバーがキーペアを作る。 ・公開鍵も秘密鍵もサーバーが持っている。 ・クライアントが接続する。 ・サーバーが公開鍵をクライアントに平文で送りつける。 ・クライアントは共通鍵の元ネタを作ってそれをサーバーの公開鍵で暗号化しサーバーに送信する。 ・クライアントとサーバーはそれぞれ共通鍵の元ネタから共通鍵を作る。 ・クライアントは今までのやり取りのハッシュ値を共通鍵を使って暗号化しサーバーに送信する。 ・サーバーは今までのやり取りのハッシュ値を計算し、クライアントから受け取った暗号化ハッシュ値を共通鍵で復号化して一致したら通信開始OK。 ・ ~~~暗号化通信中~~~ という流れで、実はSSLはキーペアを使い捨て共通鍵の交換にのみ使い、以後の通信は使い捨て共通鍵で行っている。 > クライアント(取得側)、サーバ(取得される側)での公開鍵方式をしようしたファイルのやり取りについて、 > どのような手段が常套手段なのかぜひご教示頂きたく、何卒宜しくお願い申し上げます。 何を、いつ、どこで、暗号化して、それを、いつ、どこで復号化するのか、するべきなのか、しなきゃ脅威があるのか、そこをもう一度練り直してみてはどうかな。 以下はあくまで一例だが、 暗号化のタイミングは既に分かっている。VB.NETが検査結果をサーバーに上げるタイミングだ。 では、検査結果を復号化するのは、いつで、誰? これもクライアント側から1日1回取得するタイミングだろうな。 それが決まったら次は送信側と受信側のどちらが秘密鍵を持つべきかだ。まぁこれも受信側が秘密鍵でないとおかしいよね。
その他の回答 (2)
- uyama33
- ベストアンサー率30% (137/450)
http://www.ietf.org/rfc/rfc4880.txt 上の資料が役立つかも。
お礼
情報有難うございます。 しかし、英語の苦手は私でも多少の英語は翻訳しながら見てきましたが、これはすごいボリュームですね
- uyama33
- ベストアンサー率30% (137/450)
実際に、困ることが少しあります。 1.クライアント側で、RSAの公開鍵と秘密鍵を作成するときに、時間がかかることです。 乱数を普通に作ると鍵作成には2時間くらいかかります。 2.次に、公開鍵、秘密鍵の作成には乱数を使うのですが、 NISTが警告を出していますので、そのことも検討する必要があります。 警告は、 http://www.businessnewsline.com/biztech/201309162152550000.html です。 3.送信するデータサイズが大きい場合は、RSAでの暗号化は、少し時間がかかります。 接続中に暗号化や復号化をしないで、暗号化してから接続して送信。 受信が終わってから復号化する。 ようにしたほうが良いと思います。または、SSLのように混合型にする。 4.公開鍵暗号としては、楕円曲線暗号もありますが、鍵作成には大量のメモリーとRSAのとき以上の時間が かかります。 鍵作成と乱数についてはよく確認したほうが良いと思います。
お礼
情報誠に有難うございます。 鍵作成に2時間ほどかかるとの事ですが、下記の方法で実施した結果、ユーザーIDや鍵長の選択等、必要情報の入力を除いた時間はほんの数秒で完了しました。 2時間というのは、鍵作成だけでなく、公開サーバへの登録等、諸作業を含めての時間でしょうか?
お礼
ご丁寧にご教示頂きまして、情報有難う御座います。 頂きました情報を参考に作成してみます。