• 締切済み

ハイブリッド暗号方式

こんにちは。暗号化方式を勉強しているのですが、ハイブリッド暗号方式がどのようにう動くかよく理解できません。参考にしてある本には「最初に公開鍵暗号方式を利用して共通鍵を受け渡します。その後に伝送データの暗号化は処理速度の早い共通鍵暗号方式を利用します。」と書いてあります。 公開暗号方式なら公開鍵を渡すんじゃないんですか? でもそれからあとの通信やりとりも想像できません。

みんなの回答

回答No.3

>公開暗号方式なら公開鍵を渡すんじゃないんですか? 公開鍵は公開されているので、何らかの方法で事前に入手していることが前提です。 httpsプロトコルであれば、接続要求時にサーバー証明書と一緒に入手できます。 なお、秘密鍵で暗号化した内容は対応する共通鍵で復号できます。ただし、この場合公開鍵は複数が所有している可能性があるため、内容の秘匿性は担保されません。ここで担保されるのは送信者のなりすましがないことです。 また、https通信の際に公開鍵はサーバーから送信されるので、認証局から公開鍵を入手することもありません。クライアントはサーバー証明書の発行元の証明書を順にたどっていき、ルート認証局にたどり着くかどうかを検証します。ルート認証局の証明書はブラウザが最初から持っています。認証局に問い合わせるのは、証明書が無効になっていないかの情報です。

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 例えば、暗号の強度だけを問うのでしたら、最初から最後まで、キー長の長い公開キー暗号方式を使った方が良いです・・・というのは、わかりきっています。でも、計算式が複雑で処理量が多いため、処理をするのには、時間がかかります。極端な話、https:で始まるページを表示するのに1分も2分もかかったら、誰も使わなくなりますよね。  そこで、速度と強度を両立したい・・・となります。  ところで、一方、共通キー式の暗号は、大抵計算式が簡単です(つまり、とても早く暗号化・復号化ができます)。でも、暗号強度が残念ながら弱いとされています。しかし、どんなに弱いとされる暗号でも、例えば、キー長が無限の長さがあれば・・・送りたい文書と同じ長さの暗号キーが有り、一回限りしか使わないというのが可能であれば、実は、理論的に解読不能な暗号となります。  暗号キーを、安全な方法で、しょっちゅう伝達し合うことが出来るなら、共通キー式の暗号は、意外と強く、しかも計算量は少ない(つまり、暗号化も復号かも早く出来る)と言うことです。  そこで、次のようなストーリーを考えます。  あなたは、あらかじめ決められた方式の共通キー式の暗号方法で相手と通信します。  まず最初に、今から1分間の伝送に対して使用する暗号キーAを決めます。  あなたは、この暗号キーAを、安全な形で相手に送付しなければなりません。  そのために、この暗号キーAを相手に伝えるために、公開キー暗号方式を使用することにします。あなたは、相手から、あらかじめもらってある公開キーでこの暗号キーAを暗号化して相手に送ります。  相手は、それに対応する秘密キーを使用して、暗号キーAを取り出します。  これで、1分間だけ有効と決めた共通キー式の暗号キーAが両者の手元にそろい、共通キー暗号を送り合う準備が出来ました。  1分間、このキーで共通キー式の簡単な暗号でやりとりします。  あまり長くやりとりすると、暗号キーAが解析されてしまいますから、1分経ったら、また、あなたは、次の一分間に使用する暗号キーBを相手に、さっきと同じ方法で送ります。  しょっちゅうキーが変わるので、いくら単純な共通キー式の暗号といえども、途中で盗み見して解読するのは、困難極まります。暗号キーAは、強度の強い公開キー暗号で暗号化されているので、こっちを解読するのは、もっと無理です。  こうして、無事、安全に早く、文書が交換できるようになりました・・・  というのが、ハイブリッド暗号方式の基本的原理です。  物語は、かなり単純化していますが、1分という時間の長さ(または、同じキーで送る文書の長さ)と、キー長を適切に決めてあげれば、実用上問題の無い強度で計算量の少ない(速度の速い)暗号方式となります。

  • t_ohta
  • ベストアンサー率38% (5086/13296)
回答No.1

公開鍵暗号は公開鍵と秘密鍵の2つの鍵を使って暗号化と復号化を行う暗号方式で、公開鍵を使って暗号化したデータは秘密鍵でしか復号化できず、秘密鍵で暗号化しても公開鍵では復号化できないですし、公開鍵で暗号化したデータを公開鍵で復号化することもできない一方向の暗号化方式です。 なので、AがBの公開鍵を使って暗号化したデータをBが自身の秘密鍵で復号化する事はできますが、Bが自身の秘密鍵で暗号化したデータをAが受け取ってもBの公開鍵で復号化できませんし、Bの公開鍵で暗号化したデータをBの公開鍵で復号化することもできません。 また、公開鍵暗号は暗号化復号化にCPUパワーを必要とする処理のため、処理時間が掛かってしまいます。 なので処理が軽量な共通鍵暗号を使って暗号化通信をしたいけど、共通鍵暗号は共通鍵を予め双方で所有している必要があり、安全に共通鍵の受け渡しをする手段が必要になるので、公開鍵暗号を使って共通鍵を安全に受け渡すという手段がとられます。 HTTPS通信を例にすると、まず最初にブラウザからサイトへセッションを確立するとサイト側の公開鍵証明書を受け取ります。 その公開鍵証明書を使ってブラウザは証明機関に登録されている公開鍵を受け取ります。 ブラウザは共通鍵暗号用の共通鍵を生成し、サイトの公開鍵を使って共通鍵を暗号化してサーバに送り、サイトは秘密鍵を使って共通鍵を取り出します。 ブラウザは共通鍵を使ってサイトへのリクエスト内容を暗号化して送り、サイトは共通鍵を使って応答内容を暗号化してブラウザへ返します。 これで、動作が軽量で双方向で利用可能な共通鍵暗号を使って通信することが可能で、共通鍵暗号の共通鍵を第三者に知られること無くブラウザとサイト間で交換する事ができます。

関連するQ&A

  • インターネット暗号化についてです

    ハイブリッド暗号方式を勉強しているのですが説明に最初に公開鍵暗号方式を利用して共通鍵を受け渡しますとあるんですが、共通鍵とは「共通鍵暗号方式」における「鍵」のことですか?それと共通鍵暗号方式と公開鍵暗号方式の説明で出てきた復号鍵とは秘密鍵と同義ですか。公開鍵は暗号化に使うものですが色々な言葉が出てきてどれかどれと同義なのか明確にしたいです。 説明下手でごめんなさい。それらの語句がはっきりしない限り、 ハイブリッド暗号方式の説明にある「最初に公開鍵暗号方式を利用して共通鍵を受け渡します。その後伝送データの暗号化は処理速度の早い共通暗号方式を利用します」という部分が理解できません。 どなたかわかる方いらっしゃいましたらお助けください。

  • ハイブリッド暗号方式のしくみについて、お尋ねします。

    ハイブリッド暗号方式のしくみについて、お尋ねします。 最初の工程で、平文を暗号化するために、送信者が任意に共通鍵を作成するという説明がありますが、 共通鍵を作成する場合に、何が必要でしょうか? また共通鍵作成後、認証局に届け出するなど必要ないんでしょうか? 以上解答よろしくお願いします。

  • 公開鍵暗号方式を利用した下りデータの安全性について

    公開鍵暗号方式については、  ・公開鍵で暗号化したものは秘密鍵で復号できる  ・秘密鍵で暗号化したものは公開鍵で復号できる  ・秘密鍵は(もちろん)秘密だが、公開鍵は不特定多数に配布可能 が前提にあると理解しています。 SSLも公開鍵暗号方式を利用した通信プロトコルということですが、ここで、一つの疑問が湧きました。 信頼できるルートから署名された証明書を持つサイトで、SSLによって通信が暗号化される会員登録画面があったとします。 利用者は、氏名や住所などを登録画面に入力し、登録ボタンを押します。 この時、入力した情報は、サイトの証明書から入手した公開鍵で暗号化され、サイトに送信されるのだと思います。 ここで暗号化された情報は、サイトが持つ秘密鍵のみで復号可能ですので、鍵を持たない第三者が盗聴すること自体が無意味であり、安全であると言えます。 では、登録された情報を、利用者が確認のために表示する場合はどうなのでしょう? 今度は、サイトが持つ秘密鍵で利用者の情報を暗号化し、サイトの公開鍵によって利用者側で復号することになると思います。 しかし、前述したように、そのサイトの公開鍵は不特定多数の人が持っている可能性があります。 ということは、下りデータの通信を盗聴することで、同じ公開鍵を持つ第三者に復号されてしまうのではないかと考えたのですが、実際はどうなのでしょうか? 利用者が個人で秘密鍵を持っていない状況での通信というのがポイントです。 インターネットなどで調べてみたのですが、秘密鍵の所有者向きの通信を公開鍵によって安全に暗号化することを例とした説明が多く、先の疑問に対する明確な解答を見つけることが出来ませんでした。 また、ランダムに生成した共通鍵を公開鍵で暗号化するハイブリッド方式というものがあり、何か関連があるかと思ったのですが、公開鍵暗号方式のデメリットである処理速度の問題を補う手法という内容で、解決には結び付きませんでした。 ご存知の方がいらっしゃいましたらお教え下い。 宜しくお願いします。

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

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

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

    公開鍵暗号方式について調べてるのですがわからないことがいくつかありますので教えてください。詳細なところまでは必要ありません(というか理解できません。。)ので素人向けに概観をご教授いただければ大変助かります。 共通鍵を使った方式は鍵自体の受け渡しに問題があるので、公開鍵と秘密鍵という一対の鍵を用意し、公開された公開鍵で暗号化し、秘密鍵で複合化する。このとき、例えばRSAなら素因数分解を利用した、「秘密鍵から公開鍵の生成は容易だが公開鍵から秘密鍵を割り出すことは困難」という特性が公開鍵を公開しても安全であるという根拠になっている、と理解してます。 ここまでは納得できるのですが、「公開鍵で暗号化したものは秘密鍵でしか複合できない」という仕組みがまったくイメージできません。 送信側だけを考えると、単に与えられたある値(公開鍵)を使ってそれを暗号化してるだけですよね??それでは第3者に暗号分を盗聴されたら公開鍵とともに解析されて(暗号化のアルゴリズムが同じであれば)いずれバレてしまうような気がするのですが・・ もちろん送信者側が秘密鍵まで知っているのなら、「公開鍵で暗号化して秘密鍵でしか複合できない」ような暗号文を作ることは可能でしょうけど、公開鍵から秘密鍵を知ることはできませんもんね・・?? 以上、お暇なときでけっこうですのでよろしくお願いいたします。

  • 暗号の速度

    暗号で通信する方法には秘密鍵暗号方式と公開鍵暗号方式がありますが、よく公開鍵暗号方式の方が安全だけど時間がかかるということを耳にします。 公開鍵暗号方式って秘密鍵暗号方式に比べてどれくらい遅いのでしょうか? よろしくお願いします。

  • 暗号のアルゴリズムについて

    公開鍵暗号方式・共通鍵暗号方式があるのはわかっているのですが、 共通鍵暗号方式では、送信者・受信者共に同じ鍵を使うため、同じアルゴリズムで暗号化・復号を行うのであろうと予想はつくのです。 (DESや3DESがあると思うのですが、多分共通鍵にDESを使うとかかいてある?) ・質問 公開鍵暗号の場合、 AがBにデータを送る際、Bの公開鍵でデータを暗号化すると思うのですが この時、Bの公開鍵(証明書?)に、RSAで変換 といったことが書かれているのでしょうか? 公開鍵暗号には、楕円曲線暗号、ElGamal暗号があると思うのですが、 もし、Bの公開鍵に、暗号方式が書いていないと、Bの秘密鍵がRSAだった場合復元できなくなってしまうと思うのですが・・・。 初歩的な質問ですみませんが、 どなたかご教授いただけないでしょうか?

  • 公開鍵暗号方式のしくみ

    公開鍵暗号方式について、ある解説で、 暗号化鍵と暗号化アルゴリズムは公開するが、復号鍵は秘密にしなければならない。とあります。 送る側の暗号化においては、受信側の公開鍵を使うわけですが、暗号化鍵の内容と暗号化アルゴリズムが分かれば、復号の仕方は推測できたりしないのでしょうか。

  • 電子メール暗号化方式の混在はOK?

     初めて質問させていただきます。  会社ではベリサインのサービスを使っており、結果的に電子メールはS/MIME方式の暗号化を使っています。  たまに取引先から「うちはPGP方式を使っているのですが、そちらはPGPは使えますか?」という質問を受けることがあります。  私の理解では、お互いに公開鍵と電子署名のやりとりをするという仕組みから考えて、両者のの使っている暗号化方式が違っていても、双方向のやりとりともきちんと暗号化できると思えてなりません。  つまり、当社から取引先へのメールは、相手の公開鍵でPGP方式で暗号化され、取引先から当社へのメールは、当社の公開鍵でS/MIME方式で暗号化されるということですね。  そうなると、こちらと相手の暗号化方式をそろえる必要はないのではないかと思っているのですが、Webなどで調べてもなかなか確信が得られる情報がありません。  実際のところ、どうなのでしょう?  どなたか、教えていただけないでしょうか。 使用OS:Windows XP sp2 メールソフト:Outlook Expres 6またはThunderBird 1.5  よろしくお願いいたします。

  • 公開鍵・秘密鍵・共通鍵

    公開鍵・秘密鍵・共通鍵 予備校の模試の正誤問題で 「SSLとは、通信データを暗号化する技術のことをいい、公開鍵暗号方式と共通鍵暗号方式を組み合わせて、データを送受信し、通信経路におけるデータの盗聴、改ざん、なりすましを防ぐことができるため、インターネット上での取引決済時におけるクレジット情報や個人情報の送受信等に使用されている」 とあり、これは正答となっています。 「公開鍵暗号方式と共通鍵暗号方式を組み合わせて」は誤りで 「公開鍵暗号方式と秘密鍵暗号方式を組み合わせて」が正しいのではないでしょうか。