• ベストアンサー

公開秘密鍵方式

素因数分解の困難さを利用したRSA方式は理解できましたが 楕円曲線を利用する方式はもっと短い鍵で同レベルの安全性を確保できるようです。そこで次のことに興味が出てきました。 1.楕円曲線の離散対数問題とはその概要 2.RSAと比べて、鍵の量はどの程度で済むのでしょうか? 高校レベルの数学で何とか分かるように説明をいただけないでしょうか http://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9A%E6%9A%97%E5%8F%B7

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そもそも楕円曲線を使って暗号システムを作るときには, 楕円曲線上の 2点 P, Q に対する「加算」P+Q をもとに「スカラー倍」mP (m は整数) という演算を定義します. で, P と Q = mP から m を求めるという問題が「楕円曲線上の離散対数問題」です. どこが「対数」なのかよくわからないかもしれませんが, RSA では a, b に対し「乗算」ab から「べき乗」a^m を定義し, これに基づいて暗号システムを作っています. で, この場合 a と b = a^m から m を求める計算が「離散対数問題」なので, 問題の本質は (「乗算」を「加算」に, 「べき乗」を「スカラー倍」に読み替えると同じ) です. ただし, (一般的な場合には) index calculus という「普通の離散対数問題に対しては準指数時間アルゴリズムとなる方法」が使えないようなので, その分だけ「短い鍵でも安全」ということになります. 2. で, RSA に比べると「力ずくで解こうとしても時間がかかる」分「安全」といわれるわけですが, だいたい RSA などの 1/6 程度とされているんじゃないかなぁ. 今だと RSA の 1024bits に対して ECDH とかでは 160bits とかではないかな.

SariGEnNu
質問者

お礼

ありがとうございます。 お礼が遅くなり済みませんでした。 何となく分ったような気がします。

関連するQ&A

  • 秘密鍵 公開鍵

    AからBへ公開鍵暗号方式でメールを送信する場合、Aはどの鍵を使うか?という問題で、解答は「Bの公開鍵」が正解なのですが、これはどうしてそういう答えになるのか、理解が出来ていません。 ご教示、よろしくお願いいたします。 また、同じAからBへ秘密鍵暗号方式でメールを送信する場合はどうなるのかも、併せてご教示頂ける 幸いです。

  • RSA(公開鍵)

    a=2, b=3として以下の方法(RSA)で公開鍵、秘密鍵を作成し、平文4を暗号化したいのですが、暗号化しても4のままになってしまいます。これって暗号化されているのでしょうか?どなたかわかる方がいましたらよろしくお願いします。 1-二つの素数を決める。これをa,bとする。 2-a*b=c (cを合成数) 3-d=(a-1)(b-1)という自然数dを求める 4-f*e/dで余りが1となるようなfを求める。(秘密鍵) 暗号文 =M(平文)^e / c の余り。

  • SSHの公開鍵について

    お世話になっております。 現在3台のサーバA,B,Cがあり、AのサーバからB,Cにパスワードなしでログインできるようにするため、 AのサーバでSSHの公開鍵と秘密鍵を作成しました。(パスフレーズはnull) 具体的な手順は以下になります。 ------------------------------------------------------------------------------------------- 1. Aサーバにて公開鍵と秘密鍵を作成 A # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in //.ssh/id_rsa. Your public key has been saved in //.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@A 2. 秘密鍵、公開鍵が作成されていることを確認 A # ls ~/.ssh id_rsa id_rsa.pub known_hosts 3. 公開鍵をBとCサーバへ配信 A # scp ~/.ssh/id_rsa.pub root@B:/tmp Password: id_rsa.pub 100% |***************************************| 223 00:00 4. BとCサーバ側で公開鍵の登録 B # cat /tmp/id_rsa.pub > ~/.ssh/authorized_keys ------------------------------------------------------------------------------------------- 登録後、AサーバからB,CサーバにSSHで接続してみたのですが、一見パスワードなしでログインできているようでした。 ただ、何故か B,Cサーバや無関係なDサーバからもAサーバへパスワードなしでアクセスできてしまいます。 公開鍵を登録したのはB,Cサーバのみで、B,CサーバからAサーバに対してパスワードなしでアクセスできないはずという認識です。 更に、数日後AサーバからB,Cサーバに接続を試みたところ、以下のメッセージが出力されました。 ------------------------------------------------------------------------------------------- ホスト 'B (1.1.1.1)' の認証を確立できません. RSA 鍵フィンガープリントは xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx です 本当に接続を継続してもよろしいですか (yes/no)? ------------------------------------------------------------------------------------------- 公開鍵はBサーバ初回接続時にknown_hostsへ登録済みで、Bサーバ側のIPアドレスの変更なども実施していません。 SSHの仕様で、公開鍵が数日で変更されるのでしょうか? 上記について、アドバイスや問題点があればご教示いただければ幸いです。

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

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

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

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

  • 楕円曲線暗号の使い方

    あるサイトで、 なお、「楕円曲線」だけの処理では鍵交換しかできないので、公開鍵暗号として成立するには別の形式の組み合わせがいる、ということも理解できました。 そう考えるとRSA暗号というのはRSAだけで公開鍵暗号や電子署名など様々なものに使えるかなり便利な暗号なんだな~ということに。 のような記述を見たのですが、 楕円曲線だけでは、RSAのような公開鍵暗号は実現できないのでしょうか? 出来そうな気がするのですが、いかがでしょうか? よろしくご指導ください。

  • GitHubのssh公開鍵について メールアドレス

    お世話になります。 https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000#%E7%92%B0%E5%A2%83%E3%81%AE%E6%A7%8B%E7%AF%891-%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E7%92%B0%E5%A2%83%E3%81%A7Git%E3%82%92%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B 上記のサイトを読み進めながら公開鍵を登録する所まで来ました。 ここで不安なのが、id_rsa_github.pubとして作成された公開鍵の最後に、自分のメールアドレスが含まれている事です。 これは特に問題が無く、このまま登録しても大丈夫なのでしょうか? 公開鍵の中身は全ての人に閲覧可能なわけではないのでしょうか? ご回答して頂けると幸いです。

  • 共通鍵暗号方式

    共通鍵暗号方式でAさんとBさんがメッセージを送る場合は、 AさんとBさん専用の共通鍵が一個あればよいと理解してるのですが、 ここで質問です。 例えば、Aさんがメッセージを共通鍵で暗号化しBさん宛に メッセージを送信しますよね。その時、いっしょに共通鍵を送りますよね? で、Bさんは送られてきたメッセージを共通鍵で復号化して読みます。 しかしまた、AさんからメッセージをBさん宛に送りたい場合は、 Bさんから共通鍵だけ送り返してもらわなければ、ダメってことで いいのでしょうか?

  • 公開鍵暗号方式の復号に関して質問します。

    暗号方式は、発信者Aさんが正当な受信者Bさんに暗号化した電文を送付し、途中で不正に傍受したCさんには電文の復号ができず、正当な受信者Bさんには復号ができるという考えかたです。 正当なる受信者Bさんには復号が可能で、不正なる傍受者Cさんには復号が不可能であるためには、BさんとCさんの間に情報格差を維持しないと駄目だと思うのですが、公開鍵方式の場合に正当なる受信者Bさんと不正な傍受者Cさんの間にどのような情報格差が存在するのでしょうか。 === RSA暗号の例題を考えます === A:暗号の発信者 B:正当なる暗号の受信者 C:不正なる暗号傍受者 Aさんは 素数P=3 素数Q=11 を選んで、 33を法とする世界(Mod33)を利用します。 Aさんは原文を3乗し、Mod33を取った暗号文をBさんに送付しますが、ここで、公開鍵情報として、「33を法とする」および「3乗した」という二つの情報を開示して暗号を送付します。 暗号を不正に傍受したCさんは、33の素因数分解ができないために、P=3、Q=11という二つの素数を特定できず、3xD={nx(p-1}X(Q-1)+1}において、N=1の場合でもP,Qが分からないので、復号することがきません。 ところが正当なる受信者Bさんは、3xD=1x(3-1)x(11-1)+1=21より、D=7を求め、受診した暗号を7乗することで受信電文の復号が可能となります。  ==== 以上例題おわり ==== 不正なる傍受者Cさんは素因数分解が困難であることから二つの素数P、Qの特定ができずに復号ができないことは良く理解できます。 しかし、正当なる受信者Bさんは、なぜP,Qを特定し、D=7を求めることが出来るのでしょうか。 質問1:なぜBさんだけが復号可能なのでしょうか? 質問2:Bさんは素因数分解をせずとも、P=3、Q=11という二つの素数を知ることができるのでしょうか? 質問3:素数P、Qの値を特定できなくてもD=7を知ることができるのでしょうか? 公開鍵暗号方式の根本原理が分かっていないと思われるので、公開鍵暗号方式、あるいはRSA暗号方式の考え方をご存じの方ご教示いただけると助かります。

  • 暗号化ZIP でのパスワードの送り方

    http://www.ntts.co.jp/products/ccraftmail/function.html#03 上記のURLでのパスワードの送り方について、 このパスワードは、 楕円曲線暗号やRSA暗号のような公開鍵暗号で守られているのでしょうか? もしそうでないならば、 パスワード送信に公開鍵暗号を使わない理由がなにかあるのでしょうか? 受信者に楕円曲線暗号やRSA暗号の公開鍵、秘密鍵を作れるソフトを無料で配布すれば 受信者の作成した公開鍵でパスワードを暗号化して送れます。そうすれば、 受信するときにも安心してパスワードを受信できると考えます。 楕円曲線暗号などを使わない理由が分かりません。 その理由がお分かりの方よろしくお願いいたします。