• ベストアンサー

PKIの仕組みのSSLへの適用は理解できるのですが、S/MIMEへの適

PKIの仕組みのSSLへの適用は理解できるのですが、S/MIMEへの適用が理解できません。 具体的には、証明書により確認する相手は誰なのか(メール送信者?メールサーバー?)、内容の暗号化は誰が行って、誰が復号するか等です。

  • fMRI
  • お礼率8% (16/199)

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

example.com のようなドメイン名を対象(subject)とした証明書が,SSL/TLSで用いられるサーバ証明書であるのに対し, johndoe@example.com のようなメールアドレスを対象(subject)とした証明書が,S/MIMEで用いられるクライアント証明書です。 alice@example.com → bob@example.net への暗号メール送信の場合は, bob@example.net のクライアント証明書が必要となります。 Aliceは「Bobのクライアント証明書から入手できる公開鍵」を用いてメールを暗号化してBobに送信。 Bobは自分の秘密鍵でそれを復号します。 alice@example.com → bob@example.net への署名メール送信の場合は, alice@example.com のクライアント証明書が必要となります。 Aliceは自分の秘密鍵でメールに署名してBobに送信。 Bobは「Aliceのクライアント証明書から入手できる公開鍵」を使用して署名を検証します。

関連するQ&A

  • S/MIMEを実際にOUTLOOK2003か2007で使ってみたいので

    S/MIMEを実際にOUTLOOK2003か2007で使ってみたいのですが、 どうすればいいのでしょうか? 具体的には、 1.メールを暗号化して送信する。  また、受信者の復号の仕方。 2.電子署名付きのメールを送信する。  電子署名付きのメールを受信したことがあるのですが、このとき、どうやって署名がその人のものかの判別も。 です。 よろしくお願いします。

  • S/MIME の欠点

    S/MIME に関しての疑問です。 http://www.atmarkit.co.jp/fsecurity/special/04smime/smime01.html において、次のように書かれています。  S/MIMEでは、その仕組みにPKIを使っています。その点は、Webブラウザ~Webサーバ間の通信の暗号化、認証を行うSSLと同じですね。PKIを一言でいってしまうと、「認証局という第三者的機関が、公開鍵とその持ち主を保証する」です。その結果が、認証局が電子署名して発行した公開鍵証明書と呼ばれるデータです。認証局を商用のサービスとして提供している会社として、ベリサイン社などが有名です。ちなみに、ベリサイン社では公開鍵証明書のことをデジタルIDと呼んだりしています。PKIについての詳細はここでは省きますが、解説した記事が別にありますので、興味がある方はSecurity&Trustフォーラムを参照してください。 認証局という第三者的機関が、公開鍵とその持ち主を保証する」 の部分ですが、鍵に、その持ち主が山田太郎 だと書いてあったら、 ほんとに、その鍵の持ち主が山田太郎 だと言えるのでしょうか? 調べてみたら、 http://www.jipdec.or.jp/esac/reliability/smimeTable.html 個人対象の、証明書の発行では、 申込時の本人確認 行わない 申込時のメールアドレス確認 行う となっているところがほとんどでした。 本当は、川崎次郎 と言う人が Gメールのアドレスを 山田太郎と名乗って取得し そのアドレスを使って、山田太郎の名前の証明書を取得したら、 この証明書が、何を証明するのかが分かりません。 これは、S/MIME の方式の大きな欠点ではないでしょうか? 改良案などありましたら、教えてください。 また、私が誤解しているてんなどが、ありましたら教えてください。 なお、偽名の証明書は、無料で発行してくれる所から 実際に取得してみました。偽名のものを発行してくれました。

  • 個人と個人の間のS/MIME

    暗号通信に関して、考えています。 ウィキペディア では、S/MIME における個人の証明書に関しては、 よくある基本的な個人証明書は所有者を電子メールアドレスに結び付ける観点でのみ所有者の身元を検証し、その人の名前や職業は検証しない。 となっていて、身元確認などはしていないようです。  これでは、証明書が本人であることを証明するものになっていないように思えます。 証明書なしで、 ある人物から、ある名前で、あるメールアドレスから、メールが届いた。 場合とあまり変わらないと考えれれますが、 個人に対して発行されたS/MIME 証明書の意義は何でしょうか? 個人と個人のメールを主に扱う場合に、S/MIME の証明書を確認する メールソフトにしても意味がないように思えてしまいます。 メールソフトに、証明書の確認機能が付いている場合の意義について お分かりの方、よろしくお願いいたします。

  • S/MIMEでの証明書の保存と多重暗号化

    メールソフトを作っています。 1.S/MIMEでの証明書は個別のファイルとして保管するのと、 データベースにしておくのではどちらが普通なのでしょうか? 2.S/MIMEでの暗号化をして、さらに他の方式で多重暗号化する上で、 注意することは何でしょうか?(単純なS/MIMEとの上位互換性を持たせたい。) 以上、よろしくお願いします。

  • HTTPS(SSL)の仕組みとセキュリティについて

    SSLの仕組みと,そのセキュリティについての質問です. 現在,HTTPSで利用するSSLの仕組みについて勉強をしています. しかしながら, 自身がSSLの仕組みについて正しく理解できているか分かりません. また,どうしても理解ができない点が何個かあり,質問させて頂く次第になりました. (様々な書籍やwebを拝見したのですが,いづれも腑に落ちませんでした...) そのため,まず大まかに私が理解しているHTTP上のSSLの仕組みを書き,最後に質問を書かせて頂こうかと思います. 長くなりますが宜しくお願い致します. ■主な登場人物 ・認証局  CA秘密鍵  CA証明書(公開鍵?)  CA証明書発行要求  ・証明書  KEYファイル(秘密鍵/公開鍵)  CSRファイル/申請書(issuer側の情報/公開鍵)  CRTファイル/サーバー証明書(CSRを認証局の秘密鍵で捻ったモノ) ■証明書の発行 1-1.証明書を発行したい者がCSRファイルという申請書を作成し,認証局に送ります.    →CSRには登録情報(issuer)やサーバー(証明書を発行したい者)の公開鍵などが含まれます. 1-2.認証局はCSRファイルが適切であれば,署名(subject)し,認証局の秘密鍵でCSRの中の公開鍵のみを暗号化します. 1-3.これがCRTファイルになり,証明書を発行したい者に送り返されます. この時,サーバー(証明書を発行した者)は認証局によって署名されたCRTファイルを持っています. 次にこれを利用したHTTPS通信について書きます. ■HTTPS通信 2-1.クライアントがサーバーに通信要請をします. 2-2.サーバーは証明書(CRT)をクライアントに送ります. 2-3.クライアントは送られてきたCRTが信頼できるか認証局の証明書(公開鍵)を使って検証します.    →CRTに埋め込まれているサーバーの公開鍵は認証局の秘密鍵によって暗号化されているので,これを認証局の公開鍵で複合化します.    →認証局の公開鍵はルート証明書といい,事前にブラウザに組み込まれているものとします. 2-4.クライアントは共通鍵を発行します. 2-5.クライアントはCSRから複合化したサーバーの公開鍵を用い,自身で発行した共通鍵を暗号化してサーバーに送ります 2-6.サーバーは受け取った暗号データを自身の持つ秘密鍵で複合化し,共通鍵を取得します. 2-7.後はこの共通鍵でデータを暗号化し通信します, ■質問 1.オレオレ証明書+認証局の場合でも正常に通信ができるのはなぜか 私の理解だと2-3で,クライアントが認証局の公開鍵を用い,サーバーの証明書からサーバーの公開鍵を複合化し,それを元に共通鍵を暗号化しています. これはクライアントが認証局のルート証明書(公開鍵)を保有しているから複合化できるはずです. オレオレ証明書の場合は,認証局の公開鍵がクライアントにインストールされていません. そのため,サーバーの公開鍵を複合化できず,共通鍵の生成に失敗し,通信できなくなると思います. しかしながら,ブラウザは「署名が不明な接続先です」とのエラーを出すだけで,通信(接続)ができてしまいます. なぜでしょうか. 2.IssuerとSubjectは暗号化されていないのか 私の理解だと1-2の認証局では,サーバーの公開鍵しか暗号化されていません. ということはIssuerとSubjectは暗号化されていないということでしょうか. また,それはなぜでしょうか. 3.IssuerとSubjectは偽装できるか opensshを用いることで認証局を構築することができます. この時に,Subjectの設定をベリサインの認証局と全く同じようにし, 証明書も,ベリサインの認証局を使っているサイトのIssuerと全く同じようにした場合, SubjectとIssuerが全く同じ証明書ができると思います. この場合は,本物の証明書と同様の証明書を複製できてしまうのでしょうか. できないとは思いますが,それはなぜでしょうか. 4.証明書の偽装は可能か ブラウザから証明書の情報を見ることができます.もちろんbyteデータのraw certificateも見ることができます. この情報を丸々コピーし,全く異なるサーバーに証明書として読みこませて通信した場合は, 署名されてしまうのでしょうか. されないとは思いますが,それはなぜでしょうか. (例えば,URL=CN情報が異なっているから確認できるとか..?それならCN情報だけ書き換えてしまえばいい?) 5.証明書の検証をするにはどうしたらよいか 証明書を検証をするには,その証明書を発行した認証局の公開鍵を利用するしかないのでしょうか. 例えば,サーバー証明書(CRT)のフィンガープリントsha1データを事前に保持さえしていれば, サーバーに証明書を示された際にCRTのフィンガープリントを比較すれば,特定のサーバーかどうか検証できるか・・? 6.MITMについて MITM攻撃により,証明書が途中で書きかわることが考えられます. この場合は,書き換わった証明書をどのように特定すればいいのでしょうか. 例えば,認証局のルート証明書がないなどが考えられますが, 仮に,Rapid SSLなどで署名されている証明書でMITM攻撃がされた場合どうなるでしょうか? この場合は,Issuerなどを比較するしかないように考えられます. しかし,Issuerはcsr申請の際にうまいこと,書き換えることができてしまいます. そう考えると,どのような対策ができるでしょうか フィンガープリントなどで比較することになるのでしょうか, フィンガープリントは偽装することができないのでしょうか. 以上となります. 様々な質問を書いてしまい,申し訳ありません 説明不足で乱文だとは思いますが, 分かる範囲でお答え頂けませんでしょうか. 宜しくお願い致します.

  • SSLについて デメリット

    SSLについて デメリット WebシステムのSSLはサーバーからクライアントのパソコン間の通信でデータを暗号化復号化して通信時のデータの安全性を図るものだと理解しています。 httpsで始まるURLの場合、全てのデータが暗号化復号化されていると理解しています。 これで正しいでしょうか。 では、安全性からしたら全てSSLにしたほうがよいと思います。そうなるとhttpで始まるURLはなくなるはずです。現実には多くのサイトがhttpで始っています。httpsにするメリットは安全性と思いますが、デメリットがあるのでしょうか。あればデメリットをお教えください。 また、「SSLサーバ証明書」はそのサイトが本物のサイトですという証明書であって、証明書がなくてもSSLにすることはできるという理解でよろしいでしょうか。

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

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

  • SSL等の、セキュリティの仕組みについて

    よく個人情報送信フォームなんかで、 ”このフォームで入力されたデータは暗号化されています” とかありますが、暗号化自体は、 httpsと、プトコロルを指定すればできてるわけですよね? 問題はでは、より安全な通信をするために なぜベリサイン等のSSLセキュリティ会社と契約しなければ ならないのでしょうか? これは、第三者に、この”通信は安全だよ”と お墨付きをもらうということなのでしょうか? また、ブラウザは何故 ”ベリサインという会社の証明は安全”と 判断するのでしょうか? これは、セキュリティ会社各社がブラウザに組み込まれているということでしょうか?

  • perlのメールフォームでS/MIME送信

    お世話になります。 perlをつかってメールフォームを作っています。 メールフォームから受け取った情報を(受け取るまでは暗号化してます。) S/MIMEで暗号化しメール送信したいと考えております。(linux sendmeil) 調べてみたところopensslを使いあらかじめ用意したテキストファイルを S/MIMEで送る事ができました。 ↓こんな感じです。--------------------------------------------------------------- $SMIME = 'openssl smime -sign -signer my-cesr.pem -inkey key.pem -in mail.txt -text | openssl smime -encrypt -from masa@****.co.jp -to yosi@****.co.jp -subject "signtest" -des3 my-cesr.pem | /usr/sbin/sendmail masa@****.co.jp'; open (MAIL, "| $SMIME"); close(MAIL); -------------------------------------------------------------------------------- ↑この方法ですとメールフォームから受け取った情報を一度ファイルに 保存(mail.txt)しなければならないので、実用的ではありません。 何とかファイルからではなく変数で送信したいのですがうまく行きません。 っというか方法がさっぱり分かりません。 どうぞ宜しくお願いします。m(__)m

    • ベストアンサー
    • Perl
  • 自己署名証明書によるSSL通信について教えてください!

    SSL通信により、データを暗号化してWeb上でやりとりするシステムの構築を考えています。 そこで自己署名というのを考えているのですが、署名の流れがいまいち分かりません。 認証局利用の場合、私の理解では、 【サーバ側】 1.サーバ側でRSA秘密鍵を生成 2.RSA秘密鍵を元にCSRを作成 3.CSRファイルを認証局に送信 【認証局】 4.CA秘密鍵により暗号化し、サーバ証明書を作成 5.サーバ側にサーバ証明書を送信 【サーバ側】 6.クライアント側にサーバ証明書を送信 【クライアント側】 7.サーバ側よりサーバ証明書を受信する 8.認証局より公開鍵を取得する 9.認証局の公開鍵でサーバ証明書の暗号化された鍵(認証局の秘密鍵で暗号化されたもの)を復号する 10.復号した鍵により、サーバ証明書の暗号文を復号する となります。(間違いがある場合はご指摘下さい) では、自己署名を行う場合はどうなるのでしょうか? 単純にサーバ証明書を自分で作成すると考えてよろしいのでしょうか? CSRファイルの作成などもやはり行うのでしょうか? クライアント側の流れは変わらないのでしょうか? また、この操作は接続毎に毎回行うことになるのでしょうか? (秘密鍵、サーバ証明書は毎回変わるのでしょうか?) 初歩的な質問とは思いますが、よろしくお願いいたします。