目次 | CGIレスキュー | 免責・問合
  PGP

(株)友林堂
(株)友林堂


NHK特集「電子立国」(だったかな?)を見ましたか?  軍事技術との関連で構想されてきたインターネットの歴史や仕組みや、 インターネットがいくつものサーバを組み合わせてできていることから情報のセキュリティに問題があり、 その過程で暗号化技術が発展してきました。しかし、暗号技術は軍事面からみると武器にもなり、 アメリカ政府はこの事態に法的手続きを始めましたが、その前に既にインターネット上で公開されてしまいます。 それまでの他方面からの圧力や軍事面への影響など、興味深く見ていました。このPGPは 事実アメリカ合衆国内では武器扱いとなっており輸出が制限されています。 従って、アメリカ合衆国内で使うことのできるものには商用/非商用において別に用意されており、 それ以外の地域で利用するには国際版があるなど3種類のPGPがありますので、 利用の際には十分利用国の法律に基づいて慎重に取り扱う必要があります。

まずは、http://ac3.aimcom.co.jp/~macpgp/などを参考にして、 PGPとは何か、PGPの必要性などを勉強してきてください。

ここに書いた以上のことはわかりませんので、質問はご遠慮ください。

[Windows95上での動作の問題] [PGPの入手] [日本語化カスタマイズ] [基本的な使い方]


鍵サーバ

[BAL's PGP Public Key Server] [公開鍵検索と登録] [MAIL To: pgp-public-keys@icat.or.jp Subject: help]


Windows95上での動作の問題

ここで解説するのは、私の環境であるPC98(NXを除く)上のWindows95配下において PGPを日本語環境で私の知る限りの最善の方法で設置する方法です。 同じWindows95でもPC/AT互換機(DOS/V)ではどうなのか、 Win3.1ではどうなのか、PC98と同じ症状がでるのかは分かりませんので各自実験してみてください。 その他の場合は下記のページ等を参照してください。各ページにはさらにPGP関連リンク集もあります。

TRY!PC(CQ出版社1996/12月号)によると、PGPは直接BIOSを操作しているため、 PC98では動作せず再コンパイルが必要ということです。さらに、32ビット版をWin95配下で利用時には 日本語ヘルプ表示でうまく動作しないということでした。実際に、私の環境であるPC98上でのWin95でも、 一般的な方法で正常に動作しませんでした。(日本語さえ使わなければいいのですが、そこは日本人、 最低限の日本語表示は欲しいものです!)。

まず私が行ったテストは下記の通りです。

  1. 「PGP 2.6.3i for MS-DOS」をインストールしたが、日本語モジュールを組み込んで正常に 日本語表示できたが、ヘルプ画面スクロールでハングアップしてしまった
  2. 「PGP 2.6.3i for Windows 95/NT (text-mode only)」の場合は、日本語以外のヘルプ画面スクロールは正常だが、 日本語モジュール(ja.hlp)を組み込むと正しく表示されずハングアップしてしまう
  3. 後者の場合、送られた画面表示限定復号の場合にハングアップしてしまう(前者でこのテストはしていない)

しかし、どちらかを使わなければなりません。 前者はデフォルトの英語モジュールでも画面スクロールに問題があるので、後者を使うことにしました。 日本語ヘルプは別のファイルで参照すれば(プリントアウトでもしておけば)いいのですから。しかし、 エラーメッセージや処理誘導メッセージには日本語が出てこないと面倒です。幸いなことに、 日本語モジュールでトラブルになるのはヘルプ画面だけで、もう一方の言語ファイル(Language.txt)は組み込んでも ほぼ正常に動作しました。但し、3の「画面表示限定復号」ではハングアップしてしまいますので、 ファイル媒体での利用に限られます。

朗報?

ニフティサーブのFSOFTにPC98用PGPが公開されています。しかし転載不可なので、あなたが ニフティ会員でないと入手できません。このpgp98.exeをpgp.exeの代わりに使うと、 ja.hlpを使っても、pgp -h で正しく表示できました。しかし送られてきた画面表示限定復号は sjisの場合(その他は不明だがその他では化けて読めない)ハングアップしてしまいました。 英数字のみであればOKでしたが。 しかし、画面表示限定復号を行う(mオプション)設定をして作成する方は 何故かできません。ただし、下記に紹介する日本語language.txtを使っても 日本語表示時にイリーガルエスケープエラーが発生します(これは表示の問題なので暗号動作には問題 ないと思います)。


私の結論

ということで私は下記に紹介する方法で設置したPGPを画面表示限定機能を使わずに利用することにしました。

そのすずきひろのぶ氏の日本語モジュールに書かれている方法でインストールしても以上のトラブルが発生してしまいますので、 ここから先は、PGPに(既に公開されている)日本語モジュールに添付されている解説を読んで正しく 設置しても上記のトラブルに遭ってしまう方を対象に、その(ベストではなくてもベターな)改善方法を紹介します。


PGPの入手

日本で使える国際版「PGP 2.6.3i」を入手します。 ここで問題になるのは、入手したPGPが本物のPGPかどうかです。 PGPパッケージ自体に認証サインが入っていて確認ができますが面倒です。 PGPをダウンロードできるサイトはいくつもありますが、 全てを統括している大元のページからダウンロードすればまず問題ないでしょう。

  1. http://www.ifi.uio.no/pgp/へ行く
  2. 「Download PGP」をクリックする
  3. 「PGP 2.6.3i for Windows 95/NT (text-mode only)」を選択してボタンを押す
  4. 「Japan」をクリックする−「pgp263i-win32.zip」をダウンロードしてファイルに保存する

次に日本語モジュールを取得します。

  1. http://www.ifi.uio.no/pgp/modules.shtmlへ行く

    「Japanese」をクリックする−「pgp263i-japanese.zip」をダウンロードしてファイルに保存する ・・・しかし、下記の「日本語化カスタマイズ」を読むとわかるように、実際はこのファイルは使わずに設置できる。

  2. pgp263i-win95j.lzh」をダウンロードしてファイルに保存する

zip形式のファイルを展開するには、「Lhasa」が便利です。(インターネットマガジン添付CD−ROMにもあります)

まず、\pgpというフォルダを作成して、「pgp263i-win32.zip」と「pgp263i-japanese.zip」をそこに展開します。 後者は「\pgp\pgp263i-japanese」というフォルダが自動作成されてその中にファイルが展開され、前者は 展開された中にさらに「Pgp263ii.zip」というファイルができますので、これを同じフォルダ内に展開します。 次に、「pgp263i-win95j.lzh」を同じディレクトリに展開します。「\pgp\ja-win95」というフォルダが作成されてその中に展開されます。


日本語化カスタマイズ

  1. 「Language.txt」を回避させます−「Language.txt.bak」としてバックアップ
  2. 「\pgp\ja-win95」内にある「Language.txt」を「\pgp」にコピーする
  3. 「\pgp\ja-win95」内の「README_SJIS.ja」に書かれている説明のうち、 下記に抜き出した部分を読んで、「\pgp」内にある「Config.txt」を書き替える

    利用方法
    ========
    
    次の要領でセットアップします。
    
    	2)ファイルconfig.txtの言語指定をjaに設定する。
    
    	----
    	# Most of these codes are the ISO 639-1988 2-letter "Codes for
    	# Representation of Names of Languages"
    	# 
    	Language = ja
    	----
    
    	3)キャラクターセットの指定をnoconvに設定する。
    
    	----
    	# The default for CharSet is "noconv" which means no character conversion.
    	# Note that noconv, latin1, and koi8 are all treated as equivalent.
    	#
    	CharSet = noconv
    	----
    

  4. この他に、標準時(GMT)との時差を調整するために、下記の個所を設定しておきます (たぶん合っているとは思いますが間違っていたら教えてね)。

    	----
    	# TZFix is hours to add to time() to get GMT, for GMT timestamps.
    	# Since MSDOS assumes local time is US Pacific time, and pre-corrects 
    	# Pacific time to GMT, make TZFix=0 for California, -1 for Colorado, 
    	# -2 for Chicago, -3 for NY, -8 for London, -9 for Amsterdam.  
    	# However, if your MSDOS environmental variable TZ is properly defined 
    	# for your timezone, you can leave TZFix=0.  Unix systems probably 
    	# shouldn't need to worry about setting TZFix.
    	TZFix = -9
    	----
    
  5. 「\pgp\pgp263i-japanese」内の「ja.hlp」を「\pgp」にコピーすれば本当ならばPGPのヘルプ画面に 日本語で説明がでるのだが、ハングアップしてしまうのでコピーしないこと。
  6. その代わり、「ja-win95」内の「ja.txt」(これが本来ヘルプ画面で表示されるメッセージなのだ)を プリントアウトするなどして利用すればよい。

これでインストール終了となります。MS−DOSプロンプト(START-プログラム-MS−DOSプロンプト) を起動して、起動する度にPGPを設置したフォルダになるように、プロパティを設定しておきましょう。 作業ディレクトリに、設置した場所「A:\pgp」を設定すればOKです。「A:\pgp>pgp」と入力してみてください。 最初の起動で文字エラーがでますが動作に問題ないとおもいます。また、処理途中でもちょくちょく

   Language.txt:0: illegal escape sequence: '\・
と表示されますが、(たぶん)メッセージの表示エラーなので動作には影響ないようです。


基本的な使い方

まず、このPGPで暗号化したものは破る方法はないか(攻撃法)というと答えはNOです。 しかし、その解読には大変な費用と壮大な時間がかかることから、「計算量的に安全」であります。 このことを理解した上で使うことにしましょう。

さて、PGPにはWindows対応のものはありません。WindowsのようなGUI (マウスを使って画像画面で操作するインターフェース)しか知らない人にとっては突っ付きにくいでしょう。 Weindows95にはMS−DOSプロンプトというソフトがありますので、 コマンドレベルで操作することになりますが、PGPをウインドウ画面を使って操作するフロントエンドという ソフトも用意されていますので、別途利用するといいでしょう。 しかしここでは本来の基本的な操作方法を説明します。

共通鍵方式と公開鍵方式

ここで言う「鍵」とは暗号化されたファイルのことを指します。 その他に「パスフレーズ」と呼ばれる秘密鍵(ここでは暗証文字列を指す)を使います。 わかりやすく言えば、「鍵」は暗号化されてはいるものの目に見えるものなのでダイヤル併用式金庫で言えば「金属製のキー」、 「パスフレーズ」は頭の中で記憶しておく目に見えないものなので「暗証番号」ということになります。

「共通鍵方式」は鍵とパスフレーズを共有しなければならないので、自分のパソコン上のデータなどを 暗号化するのに使い、電子メールなどで広範囲に相手のいる場合は一般的に「公開鍵方式」を利用します。 共通鍵方式の欠点は、共通鍵(秘密鍵)を安全に渡さなければならない手間があるのと、 本当に発信者が書いたものなのかを認証(判断)できない点にありますので、 相手がいる場合には公開鍵方式が便利と言えます。しかし解読処理に時間がかかります、といっても 通常のメールで書くような量ではたいしたことはないです。従ってここでは「公開鍵方式」を利用する場合の 解説をします。とても簡単に書きますので、詳しく知りたい使いたい場合は他の文献で勉強してください。

公開鍵方式の利用法

ある文章があるとします。これを発信者(A)が相手(B)に公開鍵方式で暗号化して渡すとします。 この場合、AB双方相手の「公開鍵」を取得してPGPに組み込んでいることが前提です。 この鍵を渡す方法は後で説明します。 Aは「Bの公開鍵」と「Aの秘密鍵(パスフレーズ)」を使って暗号化し、 それを電子メールかなにかで渡し、Bは「Aの公開鍵」と「Bの秘密鍵(パスフレーズ)」を使って解読します。 これが基本です。

  1. 自分の鍵を作成する

    rescue@ask.or.jp というアドレスを持っている Kazu Yanaka という人が、1024ビットキーを作成するとします。 途中のメッセージは省略します。入力行は斜体で書いてあります。( )内は補足説明です。

    -----
    A:\pgp>pgp -kg 3 (数字を入れなければ生成ビット長を選択できます)
    
    公開キーの為のユーザIDを入力してください:
    Kazu Yanaka <rescue@ask.or.jp>(一般的な書式です)
    
    暗証フレーズを入力してください:(文字数制限なしスペース利用可能です)
    oosama no mimi ha neko no mimi (実際はエコーバックされません)
    
    再度同じ暗証フレーズを入力してください:(同じものを入力します)
    
    ビープ音がなるまでランダムにキーボードに文字を打ち込んでください:
    (説明の通りです)
    -----
    
    これで終了です。

  2. 自分の公開鍵を得る

    鍵ができましたので相手に渡す為の「公開鍵」を作成します。相手は遠くにいることもあるので、 電子メールで送ることにします。この場合、相手がOSが違うなどの理由でバイナリメールを読めないことも配慮し、 文字コード形式で得ることにします。

    -----
    A:\pgp>pgp -kxa
    
    キーのユーザID入力:rescue
    (IDを完全に入力することはなく、特定できるだけの文字を指定します)
    
    取り出したキーをどのファイルに入れますか?:PublicKey(と指定すると'PublicKey.asc'に入ります)
    

    'PublicKey.asc'をエディタで見てください。

    Type Bits/KeyID    Date       User ID
    pub  1024/45119A0D 1997/03/13 Kazu Yanaka 
    
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: 2.6.3i
    
    mQCNAzMnxUoAAAEEAKOGIon0HDHNdcF0WEAlAe0tEh5g62EMi2lrl+Ze/BTwhylO
    VwyevrWWbBSZIff6pdfnq8J54KowUMh+JPB+ojlwf+PwYt0qSiLB9i+n2TFAL8mN
    yyesqturvm6dNnkAqNYVhj802zVBKRYnAGIJXhIvFeZVDBFgaRmy1NNFEZoNAAUR
    tB5LYXp1IFlhbmFrYSA8cmVzY3VlQGFzay5vci5qcD6JAJUDBRAzJ8VKGbLU00UR
    mg0BAb1SBACXLtySh0foFGdF4z8inVIcsC86dtysb814/42sTzR3sZasPHseevnn
    v3s716TlTNuiCHLB6z4Hm3k9UILR1MlLjk7bcY/vKz39Y2jGrK5tL5uzJP4wTtTT
    pVRcdPLHpXBV0Cnnuu71D3TOTTSkzROI04gYdu97tnaYvfLIEpjx1A==
    =LseG
    -----END PGP PUBLIC KEY BLOCK-----
    

    これがあなたの「公開鍵」ですので、ホームページに公開するなり、相手に送付するなりします。

  3. 公開鍵の指紋を得る

    相手が取得した公開鍵が本当に本人のものであるかを判断する材料です。ここで表示された指紋 (英数字の羅列)を相手に教えて、相手が公開鍵を組み込む際の確認に使います。

    -----
    A:\pgp>pgp -kvc rescue(IDを指定しなければ、組み込んであるID全て表示します)
    
    Type Bits/KeyID    Date       User ID
    pub  1024/45119A0D 1997/03/13 Kazu Yanaka 
                     キーの指紋 = 2B 06 13 54 C4 52 9B 29  AF A0 01 7B 3E 8D A0 A6
    

  4. 公開鍵を組み込む

    相手が自分の公開鍵を使って暗号化したものを解読する場合、相手の公開鍵をもらっただけでは解読できません。 あなたのPGPに相手の公開鍵を組み込まなければなりません。一度組み込んでおけばずっと使えます。

    相手の公開鍵が、'user.asc'というファイルに保存されているとします。

    -----
    A:\pgp>pgp -ka user.asc
    
    (PGPに組み込まれていない公開鍵を発見したら組み込み開始です)
    
    これらのキーをあなた自身で保証を行いますか (y/N)? y
    (この公開鍵が本当に本人のものかをあなたが保証を与える作業をします)
    
    (キーの指紋が表示されますので、相手から教えてもらった指紋と照合します)
    
    あなた自身でこのキーの保証をかけますか (y/N)? y
    (照合結果が同じであれば保証することにします)
    
    (再度指紋が表示され、再確認をおこないます)
    
    本当ですね (y/N)? y
    
    (次に、この保証をするためのあなたのサインをします)
    
    暗証フレーズを入力してください:(あなたのパスフレーズです)
    oosama no mimi ha neko no mimi (実際はエコーバックされません)
    
    (次に、その信頼度を設定します)
    (一般的には1か2に設定すれば他のIDの組み込み時にこの鍵の有用性を確認できます)
    
    他者が持つ公開キーの紹介者や認証者として信頼しますか?
    (1=わからない 2=信頼しない. 3=通常は信頼する. 4=常に信頼する.) ? 2
    -----
    

  5. 暗号化する

    AがBの公開鍵を使って、'message.txt'を暗号化するとします。
    -----
    A:\pgp>pgp -ea message.txt
    
    (あとは表示されるメッセージに従ってBを指定して暗号化します)
    -----
    
    A:\pgp>pgp -sea message.txt
    
    (-sを付けると電子署名付きになり、私本人が暗号化したものという証明ができます)
    -----
    

  6. 復合化する

    BはAから送られてきた'message.asc'という暗号化されたファイルを、復号化することにします。 既にAの公開鍵は組み込んでおきます。

    -----
    A:\pgp>pgp message.asc
    

  7. その他は説明書を読んでください


Powered by CGI RESCUE(R)