公開鍵を使用したメールの送受信について

このQ&Aのポイント
  • 公開鍵を使用して暗号化されたメールの送受信について詳しく教えてください。
  • メールのやり取り相手に公開鍵を送信し、暗号化されたメールを受け取りましたが、復号方法が分かりません。
  • Windows2000とOutlook Express5.5を使用して、メールの暗号化と復号化を行いたいです。
回答を見る
  • ベストアンサー

公開鍵を使用したメールの送受信につきまして

ある相手と暗号化したメールのやり取りをすることとなりましたが、全く未知の分野であり不明の点が多いためご教授いただきたく皆さんに質問いたします。 メールをやり取りする相手から私のcer形式の公開鍵が欲しいといわれ、マイクロソフトのホームページからmakecert.exeをダウンロードし、 makecert -e 12/31/2030 -n CN=testroot -sv testroot.pvk -r testroot.cer というコマンドを実行しtあとで作成されたtestroot.cerをダブルクリックして証明書のインストールを行いました。インストール時は特に何も指定せずそのまま実行しました。その後 makecert -e 12/31/2030 -n CN=test -sv test.pvk -ic testroot.cer -iv testroot.pvk test.cer というコマンドを実行し、作成されたtest.cerというファイルを相手に送りました。 相手の方からは私が送ったtest.cerで暗号化したメールが送られてきました。 メーラはOutlook Expressなのですが、そのメールを受信したところ、メールのアイコンの右下に小さい青いマークがついており、暗号化してきたメールだと判別できたのですが、これをどのように復号すればよいのか皆目検討がつきません。 相手もあまり詳しくなく、私の秘密鍵で復号すればいいというのですが、どのように復号すればよろしいのでしょうか? 分かる方がいらっしゃいましたら教えてください。 OS:Windows2000 Outlook Express5.5 なお、makecertの使い方についてはネットで調べました。

  • kite2
  • お礼率33% (5/15)

質問者が選んだベストアンサー

  • ベストアンサー
noname#14035
noname#14035
回答No.2

#1のJzamraiです。 前回の書き込み後に気がついた点について、少し補足させてください。 下記のURLにも説明されているように、正しく証明書(鍵ペア)が作成・インストールされた状態であり、送られてきたメッセージが(正しい)公開鍵で暗号化されたものならば、メッセージを普通に開く(ダブルクリックする)だけでOEは(確認メッセージ表示後)自動的に復号を行うはずです。 ■IPA ~S/MIME を利用した暗号化と電子署名~■ Copyright(c) 2001 Information-technology Promotion Agency, Japan All rights reserved  ↓ http://www.ipa.go.jp/security/fy12/contents/smime/email_sec.html つまり、もしも証明書(鍵)のインストール(インポート)が済んでいる(と認識されている)状態にもかかわらずうまくメッセージを復号できないならは、「証明書(鍵)そのものの作成と組み込みがうまくいっていない(要件を満たしていない)。」という事も考えられると思います。 その場合、前回紹介したサイトで基礎知識を習得した上、一からやり直した方が速く解決に至るかもしれませんね。(ピンポイントで問題を発見するためには詳細な知識が必要なので。) しつこいようですが、S/MIMEの基本は「組織(商用サービスや所属会社など)から証明書を取得する方法」ですので、いきなりの応用問題にはいささか無理があると思います。 もちろん事情にもよりますが、特に「タダでメールの暗号化環境を手に入れたい。」という目的の場合、PGPを利用する事でスムーズに導入に至る場合もあると思います。(もちろんどのみち基礎知識は必須ですが。) 以上、何度もお騒がせしました。 それでは。

kite2
質問者

お礼

懇切丁寧な説明ありがとうございました。 どうも私のやり方では秘密鍵の生成方法に問題があるようで、Outlook Expressに取り込んだ証明書IDでは秘密鍵との対応がうまくできていないようです。 あくまでも仕事の一環でメールを暗号化してやり取りをしたかったのですが、個人レベルで行うためなるべくお金をかけないようにするため自分で公開鍵を発行するようにしました。しかしやはり簡単にはいかないようです。先方もあまり詳しくなく、専門家にお願いしているそうですので、こちらも一度先方とその専門家と詳細な打合せを行って仕組作りを行うようにします。 教えていただいたURLをじっくり読みました。100%理解はできませんでしたが、大変参考になりました。先方の専門家と打合せを行う際に非常に役に立つと思います。 おそらく公的機関から証明書を取得することになるかと思いますが、またその過程で不明点がありましたご質問させていただきたいと思います。その節はまたよろしくお願いいたします。

その他の回答 (1)

noname#14035
noname#14035
回答No.1

こんばんは。 導入されたのは”S/MIME”ですよね。(一口にPKIといっても、”PGP”など他の規格もあります。) さて、脆弱な電子メールのセキュリティーを気にされる事は大変よい事だとは思いますが、少し「仕組み先行で導入を急ぎすぎ」の感があると言うのが正直なところです。(ごめんなさい。) とはいうものの、下記のサイト(後者のURL)を参考に、第3回にある「メーラー別設定ガイド」に従い作業する事で、とりあえず動くようにはなると思います。(OEの<オプション>メニューから証明書のインポート(証明書内の秘密鍵登録をふくめた)作業を行う必要があるはずです。) ■@IT 関連レクチャー■ Copyright(c) 2000-2004 atmarkIT ●【特集】S/MIMEでセキュアな電子メール環境をつくる! ↓ http://www.atmarkit.co.jp/fsecurity/special/04smime/smime01.html しかし、PKIの仕組みは「強力」なだけに、よく理解して使わないと「自分のデータが読めない!」といった致命的な事態に陥りかねません。(これは特に「PCのリカバリー(初期化)時」などにおきがちな問題で、そうなると「セキュリティー以前の話」になってしまいます。) 安全で快適な運用のために、まずは下記のURL(同じく@ITの記事)などをとっかかりとして、PKI(の仕組みを利用したPGPやS/MIME)の基礎知識を身に付けておく事をおすすめします。 ●5分で絶対に分かるPKI ↓ http://www.atmarkit.co.jp/fsecurity/special/02fivemin/fivemin00.html いずれにしても、「公開鍵で暗号化したものは秘密鍵でしか、秘密鍵で暗号化したものは公開鍵でしか復号できない。(故に強力)」「最も大切なものは”秘密鍵(証明書)”であり、いきなりこれが無くなったり盗まれたりするとどうにもならない。(故に必ず物理的に別の安全な場所にバックアップを保管すべき。)」といったポイントを理解して使う事が非常に重要だと思います。 お使いになられた証明書発行用プログラムは、あくまで「テスト用」としての位置付けにあるようですね。(あくまで個人が自前で発行するものですから、当然だと思います。) 特定の相手と1対1でしか利用しないのであればその様な方法でもあまり問題がないでしょうが、特にS/MIMEの規格を汎用的かつ安全に利用するためには「信頼できる第三者認証機関(ベリサインなどが有名)の証明書」(有料)を利用する必要があると思います。 もしも、メールの暗号化(盗聴防止)が主な目的であり、お金をかけずにPKIの安全運用を実現したいなら、”PGP”(S/MIMEよりも証明書への依存度が高くない上、「GNUパブリックライセンス方式」で無償利用可能なエンジンとフロントエンド(プラグイン)が豊富)を利用するという選択肢もあると思いますよ。(私は”GnuPG”(元祖PGPとほぼ同じもの)を”WinPT”というGUIツールと組み合わせて利用しています。) ただし、OEはPGPを標準サポートしていませんので、ストレス無く使うためには「PGP用エンジン」に加え、上記のような何らかの「Windows(OE)用プラグイン」を導入する必要があります。(このあたりは”PGP”というキーワードでWeb検索をかければ手引きは豊富に見つかるはずです。) この手のものはどうしても「ややこしく導入が面倒」というネックがあり、これが普及を妨げている面があるというのが実情ですね。 安全かつ快適なメール環境が整う事をお祈りしております。 それでは。

関連するQ&A

  • 作成したActiveXが未署名となってしまう。

    VC++で作成したActiveXをcabファイルにし、呼び出します。 そのcabファイルに以下の手順で「自己署名」を行いました。 (1)CABファイル作成 CABARC -s 6144 n test.CAB test.dll test.inf (2)ルート証明書(自己証明書)を作成 makecert -n CN=test -sv test.pvk -r test.cer makecert -n "CN=test,O=test,C=JP,E=test@test.co.jp" -sv test.pvk -r test.cer (3)デジタル署名用の証明書作成 makecert -n "CN=testSoft,O=test,C=JP,E=test@test.co.jp" -sv testSoft.pvk -ic test.cer -iv test.pvk testSoft.cer (4)SPCファイルの作成 Cert2SPC testSoft.cer test.cer testSoft.spc (5)pfxファイルへ変換 pvk2pfx.exe -pvk testSoft.pvk -spc testSoft.spc -pfx test.pfx -pi pass -po pass -f (6)CABファイルにデジタル署名 signtool.exe sign /f test.pfx /p pass /v test.CAB ※パスワードを何回か聞かれますが、ここでは全て"pass"とします。 上記、cabファイルを実行するとcabファイル作成環境では 発行元:testsoftと表示されますが、別環境だと 未署名となってしまいます。 手順(6)のcabファイルに署名さえすれば、未署名と出る事は 無いと思っているのですが違いますでしょうか? 何か分かりましたらご教授の程お願い致します。

  •                  公開鍵暗号方式について

                     公開鍵暗号方式について 公開鍵暗号の仕組みとメリットについて色々な解説を読んでもさっぱり理解できません。 全くの素人考えですが、「共通鍵暗号は暗号化と復号化の鍵が同じなので機密が保ちにくい」という解説を見ると 「公開鍵暗号で何故暗号化の鍵を公開する必要があるの」「公開鍵暗号で復号化の鍵を相手に知らせる際の外部に漏れるリスクは共通鍵暗号と同じじゃないの」等々の憎まれ口をたたきたくなります。 どなたか、公開鍵暗号の仕組みとメリットについて素人でも理解できる解説をしていただけませんか。

  • 公開鍵認証における第三者介入の可能性について

    公開鍵認証、例えばSSHによるアクセスにおける「クライアント(ユーザ)認証」のやり取りについて、中間者攻撃やなりすましの可能性、及びそれに対する防御がどう考慮されているのかがわからず、質問させていただきます。 まず、チャレンジ・レスポンス方式によるクライアント認証は、以下のような流れだと認識しています。 (1)サーバ側が、公開鍵(あらかじめユーザが配置したauthorized_keys)を用いて認証用のランダムデータを暗号化し、クライアント側に送る(チャレンジ)。 ※ここで第三者がデータを盗っても、正しいユーザ以外は対応する秘密鍵を持ってないのでどうすることもできない (2)クライアント側は、公開鍵に対応する秘密鍵によってデータを復号し、サーバへ送り返す(レスポンス)。 ※これは安全なのでしょうか…?(疑問点として詳細後述) (3)サーバ側では、クライアントから送られてきた復号済みデータと、元データと比較し、 合っていれば正しいクライアント(ユーザ)であると認証できる。 ここで、何か大きな思い違いをしているのかもしれませんが、 以下の疑問が生じています。 -------------------------------------- ◆疑問点1 (2)において、復号済みデータ自体がネット回線上に流れた際に、それが盗まれる可能性は存在すると思います。 第三者による不正な認証に使われてしまったりしないのでしょうか? もしかして、先に正しいクライアントが認証されれば、同じ復号済みデータは二度と使えなくなるから安全、とか…? でも、正しいクライアントが認証される前に悪意ある第三者が認証されてしまう可能性はないのでしょうか?(疑問点2に繋がります。 ◆疑問点2 (2)において、悪意ある第三者が介入し、サーバ側には届かないように復号済みデータを横取りし、あたかも自身が復号したデータであるかのようにそのままサーバへ送り、認証自体を横取りしてしまう(第三者が正しいクライアントとして認証されてしまう)ことはありうるのでしょうか? (→中間者攻撃:man-in-the-middle attack?なりすまし?) -------------------------------------- 上記、2つの疑問点についてご教授いただきたいです。 公開鍵、秘密鍵の性質は理解しているつもりなのですが、 データの暗号化・復号化自体をそれぞれの正しいクライアント・サーバにやらせつつ 第三者がやり取りの中間に立つようなことが可能なのであれば、 認証自体が第三者に横取りされ、そこでアクセスが確立しまうのではないかと思った次第です。 (この方法がおそらく無理だからこそ、公開鍵認証が安全なセキュリティ技術として普及しているのだと思いますが、何故無理なのかがわからず…。) お手数ですがどうぞよろしくお願いいたします。

  • 公開鍵・共通鍵・秘密鍵、どのQ&Aを読んでも理解できません

    カテが合っているのかも不安なくらい、知識の浅い者の質問ですが、よろしくお願いします。 今、公開鍵暗号方式などの部分を勉強しているのですが、過去のQ&A(と、それらからのリンク)を読み起こしてみてもなかなか理解できず、質問させてもらいました。 鍵や暗号の原理については十分記載されていますが、具体的な使われ方についてのアンサーを見つけることができませんでした。(どこかに出ていたらすみません) 私が知りたいことは、それらの鍵暗号方式が、  実際どういうふうに使われているか、  「鍵」って具体的に何なのか です。 文献(サイト)の説明でたいてい図示されている「鍵」ですが、どんな形をしているのでしょうか。鋳造して鍵穴に差し込む本当の鍵ではないことは常識的に理解できますが、たいていの記述には「鍵」としか書かれておらず、「なんなの??」と思案に暮れています。 一部にはアルゴリズムともありましたが、私のような無知な者にはやっぱり理解できません。 どこかに申請して、「鍵をもらう」とも読みました。 「決まりごと。ルール」とも聞きました。(これがアルゴリズム?) ソフトですか? データ送信などの時、自分で何か具体的に操作するものですか? 0101レベルの段階のハナシですか?(←これだともっと分からない) もし私が利用する場合、例えばOutlook Expressを使ったメールの送受信に利用するとすれば、具体的にどんなことをすると、利用できるのでしょうか。(機種や設定などが分からないと説明がつかないなら追記します) それとも、一般人のレベルではできないことでしょうか。 長々と書いてしまってすみませんが、ともかくどのサイトを見ても「鍵」が何なのか、おバカな私にはよくわかりません。 (アルゴリズムすら理解できてない)無知な素人でも分かるようなお答えをお願いできませんでしょうか。

  • Outlookを使っての暗号化

    Outlook2000を使っています。 自分はデジタルIDを持っていません。 相手から送られてきた電子メールが暗号化されていたとして その暗号化されたメールを読むために何かしなければ、ならないものでしょうか? それともOutlookの機能の中に、暗号化されたものを復号化する 機能が含まれているのでしょうか?

  • 秘密鍵の保存方法

    お世話になります。 以下のケースについて疑問に思い質問しました。(仮定のケースです) データの暗号化に公開鍵方式を用いて4096bitの共通鍵を暗号化し、 その鍵を自分のWebメールなどフリーメールに自分宛に送信しておいて (またバックアップとして自分の別のWebメールに転送しておいて、) いざデータを復号する必要が生じたらWebメールにログインして 過去のメールから探し出して暗号化された共通鍵をPC画面に表示し、 そして秘密鍵で復号・・・しようと思ったら少し前にOSごとクリーン インストールしていて実質もう消去してしまっていたことに気づいた・・・ といった場合、もはや秘密鍵の復旧は絶望なのでしょうか。 こうなる前に秘密鍵をどこかへバックアップすべきだったのでしょうが どこへバックアップすれば良かったのでしょうか。 なおバックアップ先はローカル環境は事情により不可能で、インターネット上 (オンラインストレージやWebメール)のみ可能とします。 (USBメモリ、SDカード等物理媒体→紛失する、故障する、別PC→用意できない等)

  • 暗号化したDBのデータ移行

    SQLServer2005Expressを使用して暗号化したデータベースのデータを他のPCへ移行しようとしております。 いろんなサイトを参考に下記の手順にてデータを移行しようとしております。 (1)データのバックアップ (2)Backup Certificate aaaaa to file = 'c:\aaa.cer' with private key (file = 'c:\xxx.pvk'',encryption by password = 'xxxxx') (3)新PCへマスターキーの作成 (4)Create Certificate aaaaa From file = 'c:\aaa.cer' with private key (file='c:\xxx.pvk',decryption by password= 'xxxxx') (5)データのリストア リストア後、既存のプログラムを実行したところ、下記のコマンドを実行した場合に“この操作を実行するには、マスターキーをデータベースに作成するか、またはセッション内のマスターキーを開いてください” とメッセージが出力されます。 "OPEN SYMMETRIC KEY aaaaaaaa DECRYPTION BY CERTIFICATE xxxxxxxxxxx" どこがいけないのでしょうか? 非常に困っています。 よろしくお願いいたします。

  • S/MIMEでの公開鍵の個数

    S/MIMEについて調べています。 Xさんが、Aさん、Bさん、、、、Jさんの10人とS/MIMEを使って通信するとします。 暗号はRSAとします。 Xさんは、Aさん用の証明書つきの公開鍵、Bさん用の証明書つきの公開鍵、、、、 のように、10人分の異なる公開鍵を用意して運用することは可能ですか? とうぜん、Aさんが使う秘密鍵は10個となります。 個別にしておいたほうが、因数分解されたときの被害が最小限になる。 もちろん、11番目のKさんとは暗号化しないでメールのやり取りをする。  サンダーバードを使って上のようなことが出来ないかと考えています。    使ったことが無いので、へんな質問かもしれませんがよろしくお願いいたします。

  • 暗号化 鍵

    今、暗号と鍵などの、を勉強しているのですが。テキストを読んでも、なんか、パッとしません。 事前に公開鍵を相手に渡しとは、直接相手に会わずに、どうやって、おくるのですか? メールの内容などを、盗聴されているかもしれないのに。 それと、PGPについて説明し、実際に使われている暗号技術について説明せよ、とは、どういったことでしょう?暗号技術というのは?

  • 学校でRSA暗号について勉強して分からないところがありましたので質問し

    学校でRSA暗号について勉強して分からないところがありましたので質問します。 暗号文の作成者をAさん、復号者をBさんとします。 Aさんは暗号文と公開鍵{e,n}を一般に公開しますよね? 暗号文を復号化するには秘密鍵が必要ですが、Bさんはeとnしか分からない(一般の人と得られる情報が同じ)のにどうやって秘密鍵を作成するのですか?nのもとになっている2つの素数がわからないことには秘密鍵が作成できないとおもうのですが… RSA暗号はnの素因数分解が計算量的に困難だから安全なんですよね?Bさんはどうやって2つの素数を特定するのでしょうか? 教えてください。