スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GnuPGでは共通鍵暗号も使える

前回の記事で、秘密の質問の答えを一字一句完璧にしておかないといけないので、もうテキストファイルに書いて、そのファイルを暗号化してしまうか、なんて書きました。

秘密の質問システムは、これを考え採用している連中はよっぽどアホなのか、それとも友達も、話す相手もいないのかって思うくらいです。秘密の質問と答えなんて、友達がいれば大抵は知られていることです。俺が一番好きな映画は「時計じかけのオレンジ」とか、はじめて買った音楽アルバムはビートルズの「Help!」とか、出身地はどこそことか、車が何とか、全然秘密じゃありません。多くの友人は知っていることで、今だったらブログやSNSの話題にもしやすいことですから、下手すりゃ全世界的にオープンな話題なわけです。もしこれに馬鹿正直に答えてたら、すぐにバレます。実際、それが原因で不正アクセスされたなんて事件もあったようです。

まあ、もうこれもパスワードの一種と考えて、あのパスワード表から文字を拾って文字列を作り、それを質問の内容と関係なく答えにしてしまうというのもひとつの手でしょう。しかし、このような使用頻度の極端に低いものだと、その文字を拾うパターンを忘れてしまいそうです。というわけで、質問には答える形式にし、それをメモって、そのメモを暗号化する、暗号化したファイルのパスワードを例の表で管理する、という方法を取ることにしました。

暗号化といえば。もうだいぶ前の記事ですが、gpgでの暗号化について書いたことがありました。その時書いたのはメールなんかで使いやすい公開鍵暗号でした。公開鍵暗号というのは、二つの鍵セットで暗号化と復号を行うというもの。この暗号の特徴は、一方の鍵で暗号化したファイルは、セットのもう一方の鍵でしか復号できないということ。その性質を用いて、ひとつの鍵は世に広く公開してしまうのです。私に秘密のメッセージを送りたい人は、その鍵を使って暗号化し、私に送信します。私はそれを、セットのもう一方の鍵で復号します。セットのもう一方の鍵を公開しなければ、私の他はこれを復号できないのです。送る側でさえ復号できませんが、それは当人の手元に平文が残っているでしょうから問題はありません。

しかし送受信を行わず、全てを自分の手元でするのなら、そんな煩わしいことは必要ありません。一つの鍵で暗号化も復号もできるもので充分。たぶんそっちの方がセキュアでしょうし。あくまで公開鍵暗号を利用するメリットは、鍵の受け渡しに特別の安全確保をしなくても良いということだと思われます。いつかは、鍵セットを使わずに公開された一方の鍵のみで復号してしまう方法を誰かが見つける、かも知れません。

で、今回はそんな通常の暗号化、共通鍵暗号を使いたいのですが。そういう記事を書いていませんでしたね。gpgはその暗号を扱うことも可能です。

$ gpg --cipher-algo AES256 -c hogehoge.txt

こんな感じ。AESというのは無線LANや携帯電話にも使われるような暗号形式で、今のところまだ安全と考えられているかと思います (五年ほど前に携帯電話の盗聴が可能に、なんてニュースがありましたが、あれは第二世代携帯電話のGSMなどで使われていた古い暗号形式が破られたという話でした。AESはまだ安全なはずです) 。鍵長は長い方が良いらしいので、最大の256を選択。

これを入力してエンターすると、パスワードの入力を求められます。パスワードは例の表など、自分で管理できるものを入力してエンター、再入力してエンター。

すると、hogehoge.txt.gpg というファイルが作成されます。これが暗号化ファイル。これを復号する場合。

$ gpg --decrypt hogehoge.txt.gpg

これだけ。元のファイルがテキストの場合、これでテキストの内容がコンソールに表示されます。ファイルとしての出力を得たい場合は、

$ gpg -o piyopiyo.txt --decrypt hogehoge.txt.gpg

こうすれば、piyopiyo.txtに元のファイルが復元されます。

参考: GnuPGで共通鍵暗号を使う



あとそうだ、暗号の管理と運用について、ぜひとも皆さんにおすすめしたい映画があります。それは「イミテーション・ゲーム/エニグマと天才数学者の秘密」。解読不能と言われた第二次大戦中のドイツの暗号「エニグマ」をイギリス軍諜報部は戦時中に解読していたのですが、それの中心人物であった実在した天才数学者の物語です。そこで、おそらくは20世紀屈指の天才であっただろう主人公も手を焼いた「エニグマ」が、あるドイツ軍側の暗号運用のマズさによって遂に解読できてしまうというシーンがあります。

本当だったらこういう運用はしないように、ってここに書いても良いのですが、この映画のネタバレになってはいけないので、まずは映画を見てください。暗号運用のノウハウなんて考えずとも、めっちゃ面白いです。個人的には去年観た映画の中ではマッドマックス超えてベストでした。戦争映画であり、諜報サスペンスであり、あからさまな反戦メッセージこそないものの強い反戦映画であり、そして青春映画であり、実在の人物に対する鎮魂映画であり、そして…。まあ、これ以上はネタバレになってしまうので止めましょう、とにかく見てください。特に何も知らずに観た人は最後にびっくりするかと思います。超オススメ。主演はシャーロック以来最早日本でもお馴染みのベネディクト・カンバーバッチです。

スポンサーサイト

テーマ : セキュリティ
ジャンル : コンピュータ

GnuPGのWindows版との相互運用

ええと、同じことを書いても仕方がないんでね。簡単に済ませます。

GnuPGで暗号化したもののWindowsとのやりとりですが、 Download - GnuPG.org こちらのページからダウンロードした GnuPG 1.4.10b compiled for Microsoft Windows と、Debian版のGnuPGとは、相互に使えるようです。少なくともうちの環境では。うちの環境?Windows XP SP3 ホームエディションです。Debian側で作った公開鍵を使ってWindows側で暗号化したファイルは、Debian上で復号できましたし、逆もできました。

使い方も全く一緒でした、コマンドラインから操作する分には。強いてあげるとすれば、コマンドラインシェルの使い方の違いに気をつけろって所でしょうか。これはGnuPGのせいではないですね。コマンドラインシェルとOSによるプログラム・ファイル管理の問題です。

あ、それと、そもそも元のファイルの扱いがWindowsとGNU/Linuxで違うという問題もあります。同じテキストファイルでも例えばエンコードや、改行を示すコードが違ったりするので、復号してもうまい具合に開けないこともあり得ます。これもGnuPGのせいではありません。生のファイルをやりとりしても起こることなので。

本当にそれだけです。あまりに当たり前のようにできてくれたので、体験談形式で話を進めるうちのブログでは書くことがなくてなくて…

そうそう、公開鍵を書き出したときに、バージョンを示す行が、Linux版では

Version: GnuPG v1.4.10 (GNU/Linux)

となるのに対し、今回使ったWindows版では

Version: GnuPG v1.4.10 (MingW32)

となります。参考までに。当然、バージョンの数字はバージョンが変われば変わるでしょう。

GnuPGのLinux上での使い方はこちらから

テーマ : セキュリティ
ジャンル : コンピュータ

GnuPGによる暗号化と復号

前回、暗号化をしようとして署名というものに躓きましたが、それも片付いたみたいなので、いよいよ暗号化を。 (この記事ではメールアドレスが出てきますが、こちらへの特定電子メール、いわゆる迷惑メールの送信はお断りします)

もし検索とかでこの記事に直接飛んできた方がいらっしゃいましたら、連続でやっているんでこちらから読んでもらえるとわかりやすいと思います。鍵ペア作ったり署名したりと前段階でするべきことがあるんで。

$ gpg -e -a -r msfree_2_90@yahoo.co.jp test.txt
gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0 有効性: 1 署名: 1 信用: 0-, 0q, 0n, 0m, 0f, 1u
gpg: 深さ: 1 有効性: 1 署名: 0 信用: 1-, 0q, 0n, 0m, 0f, 0u

というメッセージを残して終了。できたのか?lsコマンドでDesktopディレクトリの中身を見ると…

test.txt test.txt.asc

見覚えのないファイル、test.txt.ascなるものが生まれている。これか?

$ less test.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)

hQEMA7wXIbq0PEjiAQgApq7S9bca1wJYUhoV1dwKHbOtrR9otfN1lRIMRL...........
............................................中略.....................
EF44GHhbRUwYlF5O+09rGooGibJ2KVmS
=zSmM
-----END PGP MESSAGE-----

どうやらこれが暗号化されたテキストのようだ。Wikipediaの解説にもそのように書いてある。これをメールに添付して、もしくはメール本文にして送り、メールを受け取った人は-----BEGIN PGP MESSAGE-----から-----END PGP MESSAGE-----を抜き出して保存して復号すればいいってことか。署名だ何だと色々と面倒なこともあったけれども、暗号化はあっさりとできた。

おっと、復号のことを忘れていた。これをメールに…の話は良いか。プレーンテキストのメールを送るだけだから、誰にでもできること。省略。ユーザーを秘密鍵を発行した側に戻して、test.txt.ascファイルをこのユーザーが自由に使えるディレクトリにコピー。んで、

$ gpg -d -o test.txt test.txt.asc

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Zapper (test) <msfree_2_90@yahoo.co.jp>”
2048ビットRSA鍵, ID B43C48E2作成日付は2009-10-29 (主鍵ID FB556DC8)

パスフレーズを入力:

秘密鍵のパスフレーズを入力すると、この暗号の詳細がもう一度流れて終了。では、今できたtest.txtを覗いてみましょう。

$ less test.txt
では、待ちに待った暗号化に挑みましょうか。いやー、ちっちゃい頃から暗号に憧れていましてね。スパイものの創作で暗号ってテーマになりますし。ねえ。007の「ロシアより愛を込めて」なんかでも暗号解読機を巡って物語が繰り広げられるわけで…(以下省略)

できた!問題なく復元されている。つまり、先ほどのわけの分からない英数字の羅列から、元のテキストがちゃんと取り出せたということだ。

気をよくして、以上のことをバイナリファイルでもやってみる。暗号化してみると、-----BEGIN PGP MESSAGE-----からはじまって-----END PGP MESSAGE-----で締められるテキストになるが、復号すると元のファイルに戻った。つまり、パソコンで処理できるファイルならば何でもできるってことだ。

署名とか良く分からない概念があったが、とりあえず一通りのやり方は覚えた。後は、Windowsとのやりとりができるか、だね…。たぶんできるんだろうけれど。gnupgのWindows向けのビルドも存在するようだし。

続く

テーマ : セキュリティ
ジャンル : コンピュータ

GnuPGの鍵に署名

この鍵が本当に本人のものか分かりません、か…。しかし、どうしたらいいの?

Wikipediaのページを見ていたら、下の方にGnu Privacy Guard (GnuPG) Mini Howto 日本語訳なるものを発見。とりあえずこれを最初から読んでみる。

すると、何となく答えっぽいのが見つかる。Gnu Privacy Guard (GnuPG) Mini Howto 日本語訳 - 概念 - 1.3 信用の輪

---引用ここから---

公開鍵暗号の一つの弱点は、如何に公開鍵を配布することである。あるユーザは流通されている一つの偽造された公開鍵を入手し、この公開鍵でメッセージを暗号化するとして、この偽公開鍵の秘密鍵を持つクラッカーは、暗号文を復号化し、内容を盗むことができてしまう。さらにこのクラッカーは本当の公開鍵でメッセージを暗号化した上で転送すれば、気付かれずに済むのだ。

この問題を解決するために、PGP(同時にGnuPGも)は公開鍵に対して署名を行うことにした。


---引用ここまで---

ここまでの過程で、署名というものはなかった。鍵を作成する時に署名をしていると言えばしているが、それではここで指摘されている問題の解決には全くなっていない。作った本人でない人が署名する必要があるのだろう。それは、誰だろう…公的機関とかか?しかし、

---引用ここから---

貴方は安全且つ確実な通路を通じて、署名の「指紋」を確認しなければならない

---引用ここまで---

ともあるから、どうやらその公開鍵を使う人が署名者となってもいいみたいだ。一安心。というわけで、新しいアカウント上で署名の操作をしたいのだが、その前に指紋の確認なるものをしておく。いや、自分で発行したのは確かなんだから間違いはないはずなんだけれども、今後暗号を運用するに於いて必要な作業であると思うので。



普段使用しているユーザーアカウントに戻って、

$ gpg --fingerprint msfree_2_90@yahoo.co.jp

「指紋」なるものを確認。コマンドは Gnu Privacy Guard (GnuPG) Mini Howto 日本語訳 - 鍵の使用 このページから。

$ su hoge
$ gpg --fingerprint msfree_2_90@yahoo.co.jp

こちらの指紋も確認。当然一致。では署名に移る。

$ gpg --edit-key msfree_2_90@yahoo.co.jp

すると、鍵の状態のような表示が流れた後、

コマンド>

とかいうプロンプトのようなものが出て止まる。あー、ここでsignと入力すればいいのかな。

コマンド> sign
gpg: no default secret key: 秘密鍵が得られません

コマンド>

あ、まあそうか。署名っつうんだからそれなりのものである必要はあるんでしょうね。こっちはこっちで署名用の秘密鍵が必要だと。ええと、ここから脱するにはどうしたら良いんだ?とりあえずqを押してエンターすると…プログラムが終了してくれた。

ではこのアカウントで秘密鍵を作らないと。

$ gpg --gen-key

ここではRSA署名のみっていう選択でいいんだろうか?1のRSA and RSAという選択肢は、暗号化と署名用にRSAを使うって意味だったんだろう。今回は署名だけが目的の鍵を作るからとりあえず4を選択。後は前回と同じような設定をし、二つ用意したもう一つのアドレスや適当な名前を書いて終了。

$ gpg --edit-key msfree_2_90@yahoo.co.jp
コマンド> sign

問題の公開鍵の指紋に関する情報が表示された後、

本当にこの鍵にあなたの鍵 "******************" で署名してよろしいですか

本当に署名しますか? (y/N)

となる。y。

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります "******************"

パスフレーズを入力:

ん?どっちのパスフレーズだ?秘密鍵のロックを解除っつってんだから今作った署名用の鍵か?「次のユーザーの秘密鍵」と言って表示されているものも今作った署名用の鍵を示しているように思える。今作ったパスフレーズを入力。

コマンド>

あれ?成功したとか失敗したとか、そういうメッセージは一切ないの?まあいい。成功したと考えて、qを入力してプログラムを終了する。変更を保存するか訊かれるのでもちろんy。

コンソールに戻った。ではこんどこそメッセージの暗号化を。

続く

テーマ : セキュリティ
ジャンル : コンピュータ

GnuPGによるテキストの暗号化に挑戦

鍵ペアを作成したという話の続き。

とはいっても、この鍵はユーザーごとに管理されているっぽいので自分のところで暗号化して復号してもおもしろくない。俺のユーザーアカウントとは関係ない所に公開鍵を送って、そこで暗号化して、出てきた暗号をこちらに送って、こちらの秘密鍵で復号するってのをやりたいんだけれど…うちにはパソコンが二台ない。ここでいきなりWindows立ち上げるか…

…あ、ユーザーアカウントをもう一つ作ればいいんだ。ユーザーアカウントの追加はコンソールからよりも「gnomeメニュー→システム→システム管理→ユーザーとグループ」からやった方が簡単そうなので、こっちで。KDEは…ごめん、知らない。4.5.1くらいになったらもう一度考えてみますよ。

では、公開鍵のエクスポート。Wikipediaの解説の通りに。

$ gpg -a -o ~/Desktop/test.asc --export msfree_2_90@yahoo.co.jp

コンソールには何の出力もないので、テキストエディタで中身を確認。すると、

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)

ではじまり、英数字の何行にも渡る羅列があった後、

-----END PGP PUBLIC KEY BLOCK-----

で終わるテキストファイルであることが確認できた。きっと問題ないでしょう。

$ su 今作ったユーザー名

さっき作ったユーザーアカウントにコンソール上からログイン。

$ cp /home/鍵を作成したユーザー名/Desktop/test.asc ~/Desktop

新しいユーザーのデスクトップに先ほどエクスポートした公開鍵をコピー。

$ gpg --import ~/Desktop/test.asc

読み込んだというメッセージが返ってくる。

では、待ちに待った暗号化に挑みましょうか。いやー、ちっちゃい頃から暗号に憧れていましてね。スパイものの創作で暗号ってテーマになりますし。ねえ。007の「ロシアより愛を込めて」なんかでも暗号解読機を巡って物語が繰り広げられるわけで…まあもっとも、暗号解読機がどういうものでそれで暗号がどうなるのか全く物語には描かれませんでしたが…あれは兵器の設計図とか、要所の地図とか、作戦指令書、あるいは映画ミッション・インポッシブルのようにスパイ名簿に置き換えられても全く話に影響はありませんでしたね。

そういった、物語の動機・要素であるが作品の構造から見れば他のものに置き換え可能なものをマクガフィンというんだそうで…「ヒッチコックにとって重要なのは、ウラニウムという原子爆弾の材料ではなくてそれをきっかけにして展開されるサスペンスだったのである」(上記ページより抜粋)

…よくよく考えてみたら暗号解読自体がテーマになった冒険活劇なんてほとんどないよね。やったところで地味過ぎるからだろうけれど、それなら俺は何から暗号に憧れを?…はい、どうでもいいですね、すみません。

適当に文書を用意して~/Desktop/text.txtに保存。Wikipediaの記事の通りに暗号化のコマンド。

$ gpg -e -a -r msfree_2_90@yahoo.co.jp test.txt

この鍵が本当に本人のものである、という兆候が、ありません

この鍵は、このユーザーIDをなのる本人のものかどうか確信でき
ません。今から行うことを*本当に*理解していない場合には、
次の質問にはnoと答えてください。

それでもこの鍵を使いますか? (y/N)

ええ?理解しているか、いないかって言われれば、そりゃいないの方です。

クリフハンガー状態で続く

テーマ : セキュリティ
ジャンル : コンピュータ

プロフィール

ざっぱー

Author:ざっぱー
(この画像について)

当ブログについて
メール
(このメールアドレスへの特定電子メール (迷惑メール) の送信はお断りします)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。