• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:公開鍵暗号方式の復号に関して質問します。)

公開鍵暗号方式の復号に関して質問

ikutanaの回答

  • ベストアンサー
  • ikutana
  • ベストアンサー率50% (1/2)
回答No.1

質問1:Bさんだけが復号可能なのは、3*11の答を知っているからです。逆に言うと、Aさんは知らないのです。公開鍵は「元々の受信者」であるところのBさんが作るのです。そしてそれを事前にAさんに教える必要があります。(ただし、これは秘密に送る必要はありません) 質問2:Bさんは、P=3とQ=11からPQ=33を計算した張本人だからです。掛算は容易ですが、素因数分解は困難なので、Bさん以外は3と11の積であることを知ることは困難です。 質問3:秘密鍵を容易に知るためには素数P,Qの値を特定しておく必要があります。ただし、計算すればD=7を求めることはできます。ただs,その計算は非常に計算量が多く、素因数分解と計算量がほぼ同じであることが知られています。つまり、解読者が素因数分解を出来る能力がなければ、Dを求めることはできません。

Mokuzo100nenn
質問者

お礼

ikutanaさん、 早速に回答ありがとうございました。 >公開鍵は「元々の受信者」であるところのBさんが作るのです。そしてそれを事前にAさんに教える必要があります。(ただし、これは秘密に送る必要はありません) 目からウロコが落ちました。 ミステリー・ドラマの種明かしを観たような感動です(笑)。 Bさんが自分で選択した素数のペアをAさんにさえも秘密しておくこところで、情報格差を維持している訳ですね!!。 このプロトコールを理解していなかったために、RSA暗号のケースで具体例を考えても、なぜ情報格差が維持できるのか理解できずに不思議に思っていました。 かれこれ15年ぐらい毎日のようにVPNを使っており、RSA暗号方式のお世話になりながら、その仕組みを知らずにおりました。 IT関係を仕事にしている専門家に聞いてみたこともあるのですが、ITの専門家でもRSA暗号方式自体を理解していわけではなくて、単なるブラックボックスとして日常的に使っているようでした。 お蔭さまで長年の疑問が一挙に解決しました。 質問してみて良かったです。 本当にどうもありがとうございました。

関連するQ&A

  • 公開鍵暗号について

    失礼します。 公開鍵暗号についてです。 Linux系OSカテゴリで質問することではないかもしれませんが、 sshサーバーの設定の際に疑問になったことなのでここで質問させてください。 公開鍵暗号方式について無勉強だったので調べていると、 Wikipediaより、 1.通信を受ける者(受信者)は自分の公開鍵(暗号化のための鍵)P を全世界に公開する。 2.受信者に対して暗号通信をしたい者(送信者)は、公開鍵 P を使ってメッセージを暗号化してから送信する。 3.受信者は、公開鍵 P と対になる秘密鍵(復号のための鍵)S を密かに持っている。この S を使って受信内容を復号し、送信者からのメッセージを読む。 4.暗号通信を不正に傍受しようとする者(傍受者)が、送信者が送信した暗号化されたメッセージを傍受したとする。傍受者は、公開鍵 P は知っているが、秘密鍵 S は受信者だけが知っている情報であるので分からない。P から S を割り出すことは(計算時間的に)極めて難しい。そのため、暗号文を復号することはおよそできない。 とありました。 sshを使ってサーバーにアクセスする場合、秘密鍵はクライアント側が持つことになりますが、 そのとき、サーバーからクライアントへのデータは秘密鍵があるので解読できるのは理解できます。 しかし、その反対はサーバー側に秘密鍵がないので無理なのでは? 不勉強でここで悩んでいます。 どなたかご教授いただけないでしょうか? また、ssh用に作成した秘密鍵は「厳重に保管しておく」とよく書かれていますが、 具体的にどうするのかはっきりしません。 パスワード保護でもすればよいのでしょうか? これについても宜しくお願い致します。

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

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

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

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

  • 公開鍵暗号

    公開鍵暗号の鍵ペアを構成したい 二つの素数をP=13、Q=17としたときの鍵ペアを構成し、暗号化と複合化が正しく出来ることを示しなさい よろしくお願いします

  • 公開鍵方式の安全性が全く分からない

    公開鍵方式が暗号化方式として優れていたと30年も言われてきた理屈が分からないので教えてください。 下記のNTT PC COMMUNICATIONSのサイトを見ていると以下のように説明されていました。 <引用元URL> http://www.nttpc.co.jp/yougo/%E5%85%AC%E9%96%8B%E9%8D%B5.html ~~~~~~~~~<説明抜粋>~~~~~~~~~~~~~~~ 秘密鍵暗号化方式は、鍵を盗まれると解読されてしまうとか、 連絡を取り合う相手の数だけ鍵を持たないといけないといった管理上の問題がある。 そこで、公開鍵と秘密鍵を組み合わせた公開鍵暗号化方式という方法が考え出された。       <中略> 秘密鍵は、あなただけが持っていて誰にも渡さない。それに対して、あなたの公開鍵は、たくさんの人に配布しておく。 あるいは、誰でも簡単に入手できるようにしておく。 秘密鍵は、あなただけが持っていて誰にも渡さない。それに対して、あなたの公開鍵は、たくさんの人に配布しておく。 あるいは、誰でも簡単に入手できるようにしておく。 そして、あなたが秘密鍵で暗号化したデータは、あなたの公開鍵でのみ復元できる。 あなたの公開鍵で暗号化されたデータは、あなたの秘密鍵でのみ復元できる。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 他にもいろいろ記事を読んだのですがだいたい似たような説明になっています。 しかしこの説明から考えると下記のリスクが発生するから全く安全な方法とは思えず、 何を以て30年近くも安全な暗号方式として使われ続けてきたのかが さっぱり分かりません。 ~~~~~~~上URLの記事から私が思う公開鍵方式のリスク~~~~~~~ 例えばAさんからBさんにデータを送ったとする。 データはAさんの秘密鍵で暗号化されている。 しかしそのデータ通信が発生したことにCさん(Aさん、Bさんの敵)が気付いた。 Bさんの公開鍵は誰でも簡単に入手できるのだから当然Cさんも入手している。 そのためBさんに送られたデータはCさんにも解読されてしまう。 何らかの方法でAさんに送られたデータをCさんも入手してしまえば 公開鍵でCさんも解読することが可能になってしまう。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ すみませんが上記の私が思うリスクが発生しにくい理由を教えてください。

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

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

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

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

  • 暗号化メールの復号のバッチ処理

    お世話になります。 S/MIME方式で暗号化されたメール及び添付ファイルを まとめて受信し、添付ファイルの抽出を行うVBアプリを 作ろうと思っております。 BASP21を使用することを考えておりましたが S/MIME方式には、対応していないようです。 商用でもフリーでも結構ですのでVBから操作できる 暗号化メールの復号に使用できるコンポーネント等を ご存知の方がいらっしゃいましたら教えていただきたく考えております。 よろしくお願いいたします。

  • RSA暗号で初めに選択2つの数について

    RSA暗号で初めに選ぶ数(p,q)で、2つの内どちらかが合成数であるとき、復号化がうまくいかない場合があります。どうして復号化がうまくいかなくのかわかりません。教えてください。

  • 暗号化 復号化

    今、簡単な暗号化のプログラムを作っています。 $a = $in{"honbun"}; $b = $in{"pass"}; $c = length($in{"honbun"}); $n = 0; while ($n < $c){ $k = substr($a,$n,1); $d = chr(ord($k) + $b); print "$d"; $n++; } pass文だけ、コード値をずらしているのですが、 基準のコード値より大きい数になってしまった場合、 どのように修正してやればよいでしょうか?

    • ベストアンサー
    • Perl