共通鍵、暗号鍵の具体的な使い方と鍵の作り方について

このQ&Aのポイント
  • 共通鍵、暗号鍵の具体的な使い方についての疑問について解説します。メモ帳やWordで文章を暗号化して友達に送る方法や、仕事で顧客に暗号化メールを送る方法なども具体的に説明します。
  • 鍵の作り方についても詳しく解説します。個人利用ならソフトをインストールして鍵を生成する方法や、企業が独自に鍵を生成するサーバを持っている場合についても触れます。
  • 実際に暗号化を行う手順や鍵の指定方法、複合の方法なども具体的に説明します。暗号化ソフトを使用してテキストファイルを暗号化し、鍵を指定する方法についても詳細に解説します。
回答を見る
  • ベストアンサー

共通鍵、暗号鍵などの具体的な使い方って?

基本情報等で習う暗号化についてなのですが 鍵を使って暗号化するというのは理解できるのですが では実際に使ってみましょう、となるとどうすればいいのかさっぱりです。 他にもいろいろと疑問があるのですが 例えば・・・ 1、メモ帳やWordを使って文章を書いた、これを友達に送りたいが公開鍵で暗号化して送りたい!どうすればいいのか? 2、仕事で顧客にメールを送りたいが、暗号化したい。どうすれば? 3、そもそも鍵の作り方ってどうすればいいのか?   個人利用であれば何かソフトをインストールして作るのか。 4、企業などでは自社独自に鍵を生成するサーバみたいなのがあるのでしょうか? 技術的な話や論理的な話は、どの本やサイトにも解説があるのですが 実際に使う方法などの説明が全然見つからなく、全然イメージがわかないのです。 暗号化ソフトみたいなものに、暗号化したいテキストファイルを読み込ませて 鍵作成ソフトで作った鍵を指定する・・・みたいな使い方なんでしょうか? 複合の仕方も具体的に知りたいです。

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

  • ベストアンサー
回答No.3

まず、疑問にすべて答えて、それからもう少し説明します。 1、メモ帳やWordを使って文章を書いた、これを友達に送りたいが公開鍵で暗号化して送りたい!どうすればいいのか? メール暗号化ソフトを使って暗号化します。 有料のものだと、シマンテックが販売しているPGPを使います。 無料のものだと、gpg4win (内部でGnuPGを使っている) が有名でしょう。 気を付けないといけないことは、暗号化に使用したソフトと同じソフトがないと復号できないということです。 2、仕事で顧客にメールを送りたいが、暗号化したい。どうすれば? メールの本文を暗号化したい場合は、S/MIMEやOpenPGPというプロトコルを使います。 S/MIMEはWindowsに標準装備されているOutlook Expressやその光景のWindows Live Mailで扱えます。OpenPGPはThunderbirdで使えます。 (ちなみに、Thunderbirdは両方共対応しています。) S/MIMEは認証局から自分の公開鍵が正しいということを証明する証明書を貰わないと使えないのに対し、OpenPGPは何らかの方法で自分の公開鍵を受け取り手に渡しておけば使えます。 自分の個人的な印象では、暗号化メールはOpenPGPを使うことが多く、企業の公式メールなどは平文で送ってS/MIMEで電子署名をつけることが多いように思います。 さて、S/MIMEを使う場合も、OpenPGPを使う場合も鍵の生成や登録という面倒な作業があるので、暗号化したデータを送るだけならもっと簡単な方法があります。例えば、zipファイルを作成するとき、パスワード付きのzipファイルを作れますが、これはzipファイルの中身が暗号化されるのでパスワードを知らないと復号できません。 ファイルを暗号化するだけならそれこそVectorなどで探すとゴマンとソフトが見つかると思います。 3、そもそも鍵の作り方ってどうすればいいのか?   個人利用であれば何かソフトをインストールして作るのか。 PGPやgpg4winで使う鍵を作るには、PGPやgpg4winのメニューにある鍵ペアの作成というものを使います。 (検索するといい感じの説明があるので詳細は割愛します。) 先に述べた電子メールに署名したり、暗号化したりする規格であるS/MIMEで使う鍵は次のサイトで紹介されている方法で作れます。 http://www.atmarkit.co.jp/fwin2k/win2ktips/647freeca/freeca01.html このステップを進んでいった時に出てくるRSA交換キーというのが暗号化のための鍵で、Thawte がそれに正しい鍵であるという電子署名をしたものが証明書となります。 4、企業などでは自社独自に鍵を生成するサーバみたいなのがあるのでしょうか? 鍵の生成サーバーは不要ですね。 普通、自分のマシンで暗号強度のある擬似乱数を発生させ、そこから鍵を作ります。 必要なのは、鍵を生成するサーバーではなく、公開鍵に署名をするサーバーか、あるいは、本人のものだと確認されている公開鍵を登録しておくサーバーだと思います。 5,複合の仕方も具体的に知りたいです。 復号は暗号化されたファイルを複合するソフトに渡すことで行います。 なぜこれだけで十分かというと、暗号化されたファイルの中にどの暗号鍵を使ったかやどの暗号化方法を使ったかが記録されているからです。どの暗号鍵を使ったかは、公開鍵のハッシュ値 (これをシグニチャといいます) で教えます。 ちなみに、公開鍵暗号は非常に効率が悪いので、普通、公開鍵暗号だけで暗号化することはありません。本文を共通鍵暗号で暗号化して、その暗号化に使った鍵を公開鍵暗号で暗号化するということを行うと思います。このときの共通鍵暗号の暗号鍵は暗号的な強度がある乱数から作られます。 この、乱数の作成方法は数学的なアルゴリズムで作ると周期性があり、すぐに次の鍵が見破られてしまいます。よって、暗号強度のある乱数にするために大抵、キーボード入力のタイミングなど、動きにブレがあるものの情報を集めて、それをハッシュなどしたものを使うか、それを乱数のseedとして、yarrowアルゴリズムやarc4randomなどを使って作っていると思います。 あと、質問者の例には一切登場していませんが、公開鍵暗号が使われている一番多いケースはSSLですね。電子ショッピングサイトを利用するとき、クレジットカード番号等を入力するところでhttps://...で始まるサイトにつないでいたりすると思います。ここでも、先ほどと同じようなことをして安全な通信ができるようにしています。 https://...のページにつなぐと、サーバーが公開鍵とそのCAによる電子署名を送ってきます。CAによる電子署名が正しいことを確認した後、ブラウザ側で乱数を作って、公開鍵で暗号化した上でサーバーに送ります。そして、その乱数を鍵とした共通鍵暗号を使って通信を行います。(かなり端折ったので詳しくはhttp://tools.ietf.org/html/rfc2660でも見てください。) ついでに、各プログラミング言語に暗号化のためのライブラリーは普通にあるので、そういうのも使ってみるとよいでしょう。Javaでは標準で暗号化ライブラリーが入っていますし、CならOpenSSL、libgcrypt、nssなど多数の実装がありますからね。もちろん、Ruby、PHP、pythonなどの言語にもそういうライブラリーはあります。

occhan774
質問者

お礼

回答ありがとうございます これです!こういった一つ一つ手順を追って説明されている サイトが欲しかったのです!

その他の回答 (3)

  • kadusaya2
  • ベストアンサー率48% (114/235)
回答No.4

1.の回答 公開鍵で暗号化を行うソフトはほとんどありません。 公開鍵暗号は時間がかかるので、実用的では無いからです。 一般的には共通鍵暗号で暗号化し、その時の共通鍵を公開鍵暗号で暗号化します。 暗号化して送りたいだけならば、文書を暗号化するのではなく、メールに添付して メールごと暗号化するのが簡単です。 2.の回答 まず、顧客から電子署名されたメールを送ってもらいます。 このとき、あなた自身も顧客も OutlookExpress、Shuriken などの電子署名に対応したメールソフトで送受信する必要があります。 顧客から受け取った電子署名メールには顧客の公開鍵が含まれているので、その公開鍵は自動的にWindows上に取り込まれます。現状では、電子署名メール以外に本物の公開鍵を受け取る方法がありません。 キチンと受け取れていれば、InternetExplorerで ツール→インターネットオプション→コンテンツ→証明書→ほかの人 に顧客の証明書が入っており、その証明書の中に公開鍵が含まれています。 以後は、その顧客宛てのメールを作成したときに〔暗号化〕ボタンをクリックすればメールソフトが自動的に暗号化して送ってくれます。 3.の回答 簡単なのは k9pca です。 http://www.vector.co.jp/soft/winnt/util/se479199.html 4.の回答 PKIを構築する場合、セキュリティの観点から認証局は必ずオフラインにします。 サーバ+クライアント形式ではなく、スタンドアロン形式で単独のマシンをネットワークに一切接続しない状態にします。 補足ですが、公開鍵を単独で使用することはありません。 電子証明書の中に含まれていなければ、現実的には意味が無いからです。 公開鍵と電子証明書はセットで覚えてください。

occhan774
質問者

お礼

回答ありがとうございます >InternetExplorerで ツール→インターネットオプション→コンテンツ→証明書→ほかの人 に顧客の証明書が入っており、その証明書の中に公開鍵が含まれています。 これは知らなかったです、ためになりました。

  • semikuma
  • ベストアンサー率62% (156/251)
回答No.2

1~3 私も詳しくは知りませんが、PGPなどの暗号化ソフトがよく用いられるようです。 具体的な使い方は、例えばここ↓を見ればよく分かるでしょう。 http://allabout.co.jp/gm/gc/296748/ 4 公開鍵方式では公開鍵を1個生成すれば事足りるので、鍵を生成するためだけのサーバがあるとは思えません。 ちょっと違いますが(これも勉強したとは思いますが)、ネットショッピングなどでよく使われるSSL(https://で始まる相手との通信)も、公開鍵方式を用いています。 http://thinkit.co.jp/free/article/0706/3/6/

occhan774
質問者

お礼

回答ありがとうございます SSLの例は分かりやすくていいですね

回答No.1

1のみに回答します。 AからBに文章を送るとします。まずBはペアになっている公開鍵と秘密鍵を作り公開鍵を何らかの方法で公開します。(公開鍵は誰かに見られても問題ありません。)そしてAは公開されている公開鍵を使って暗号化してメールをおくります。そして、受け取ったBは秘密鍵を使ってファいルを復号します。そうすればもし、第三者にメールを傍受されても内容を見ることができずに安全に通信ができます。

occhan774
質問者

お礼

回答ありがとうございます。 公開鍵暗号方式の説明ですね。 そこまではテキストなどで理解できたのですが それを具体的にどうやって使えばいいのかが分かりませんでした。

関連するQ&A

  • 暗号化 鍵

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

  • 暗号化の鍵について

    情報処理技術者試験に暗号化の公開鍵や秘密鍵や共通鍵に関連した問題が出題されることがあります。この暗号化は一般の使用者が実際使うのではなく,情報処理技術者のSEやプログラマーなどの仕事をしている人が使用しているのでしょうか。具体例を教えてください。 一方で,ネットのhttpsのsがついている場合は暗号化されているというのをきいたことがありますが、これはネットワーク管理者が暗号化しているのでしょうか。 誰がどのように鍵を作り、システムに組み込んでいるのかイメージしたいので教えてください。 宜しくお願いいたします。

  • 暗号化の鍵について

    通信の際の暗号化技術には色々なものがありますが、 鍵って盗むことはできるのでしょうか。私が盗みたい訳ではないんですが、技術として可能のか疑問に思いまして。。。 SSLによる通信の場合であれば、最後に生成される共通鍵が盗めれば、暗号化した情報が読めてしまうわけですよね? でも、鍵って実態のあるものではないと思ったので、どうなんでしょう。 ちょっと変な質問ですが、もしわかる方いらっしゃいましたら、お願いします。

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

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

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

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

  • 共通鍵・公開鍵・秘密鍵の鍵とは?

    共通鍵・公開鍵・秘密鍵の鍵とは要は「123KJNIDlll・・・」などの数字や文字のパスワードのことでしょうか? 例えば、共通鍵暗号方式では、ファイル・テキストなどのパスワードを「123gh」などと設定して、 それを送信者と受信者でパスワードの情報を共有するのでしょうか? 公開鍵暗号方式も同様にファイル・テキストに「123yu」は公開鍵、「456ghjは秘密鍵と設定をするのでしょうか?

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

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

  • 公開かぎ暗号方式

    送信者側の暗号化は送信者の秘密かぎまたは公開かぎですか? また、受信者の複合は受信者の秘密かぎ? 正しくはどうなるのですか?

  • 対称鍵暗号化について

    宜しくお願いいたします。 対称鍵暗号化(共通鍵)についてなのですが、 テキスト、Web等見ると対称鍵暗号化で使用される鍵は 出してと受け手が同じ鍵を使用するというのはわかりました。 しかし、その鍵は1つなのでしょうか? それともまったく同じ鍵が2つお互い持っているということでしょうか? (非対称鍵は、2つの別の鍵があるというのはわかります。) また、暗号化の強度は対称鍵のほうが非対称よりも強いと聞きましたが 逆のようなイメージがありますので ぜひ解説をお願いいたします。

  • 暗号化鍵と複合化鍵

    参考書に公開暗号化鍵は顧客対商店の通信に使用されていると書かれてあり、 H12年春の問題で ディジタル署名は「公開かぎ暗号方式」の応用で、送信側は送信情報の一部を「送信者の秘密かぎ」で作成した著名データと同時に送信し、受信側は「送信者の公開かぎ」で著名データが正しいかをチェックする。 という穴埋め問題があります。答えも入れて書きましたが、例えばgooとユーザーを例にとって考えると、 ここで言う送信側とはユーザーのことで、受信側とはgoo(商店)をあらわすのでしょうか? ユーザーも商店も認証手続きなどあるのでどちらも送信者、受信者になりえるような気がして混乱しています。どなたか教えてください。