連載 / プログラマー入門ー① 図 11 5 条イ表 C D E C D E C D E C D E C D E C D E C D E C D も 図 12 4 条イ初カルノー図 AB AB AB AB 図 13 2 個のするセルを囲む弡形 AB AB AB AB ス B ス召 AB A B CD CD : 1 CD ・ 1 CD 図 14 3 個のするセルを囲む弡形 AB AB AB AB CD CD . 1 CD 1 CD ・ 1 IQ なので C の条件だけが違います。 2 要素の簡ヒ カルノー図桑作の基本は、 1 か隣接している表のセル ( 要素 ) を攵研彡で囲むことです。ただし、どんな攵研彡でもか まわないわけではなく、表のセルの数が 2 刎音数になるよ うにします。 たとえば、図 13 はセルが 2 個なので正しい囲み方に なっています。図 14 は、セルが 3 個になっていて正しい 囲み方ではありません。 すでにお話ししたように、カルノー図において隣接する 2 個のセルは条件が 1 つ違うだけなので、その 2 個の論理 式の論理和をとると、牛式の牛を 1 イ咸らして簡田翻ヒ できます。 図 13 の場合、隣接する 2 個のセルの論理和は C の条 負初項を削除したかたちに書き換えられます。いに、と にかく謝妾する 2 個のセルを失研彡て悃めば、そオけごけ論理 式カ吶単になります。 ・ B ・ C ・ D 十 A ・ B ・ C ・ D 員・ B ・ (C 十 C) ・ D ・ B ・ D それでは、図 14 のように奇数個のセルか隣接している ときにはどのように扱えばよいのでしよう。セルを囲むま巨 形は重なってもかまわないので、図 15 のように 2 個の矩 牛が 2 個の場合のカルノー図は、 図 8-a のとおりで す。牛が 3 個または 4 個のときには、条件の真偽値の 並べ方を変更してカルノー図を作ります。 4 条 f ) 表では B 、 CD の真偽値を、 00 , 01 , 10 , 11 の順に並べていますが、 これを、 00 , 01 , 11 , 10 の順に並べ替えて、図 12 に示した表に書き換えます。条 件が 3 個のカルノー図も同様に作れます。 カルノー図の秘密は、条件の並べ方にあります。図 12 のどの列、どの行をとっても、隣り合う要素どうしは牛 が 1 つだけ違います。さらに、表の左端と右端、上端と下 端がつながっていると考えても、やはり隣り合う要素どう しは牛が 1 つだけ異なるようになっています。 たとえば、 ( 1 , 2 ) の要素と ( 1 , 3 ) の要素は、次のように の条件だけが異なります。 員・ B ・ C ・ D 員・ B ・ C ・ D また、 ( 4 , 1 ) の要素と ( 1 , 1 ) の要素は、 A ・ B ・ C ・ D A ・ B ・ C ・ D 95 UNIX MAGAZINE 1995.8
連載 / プログラマー入門ー① 図 8 2 条イ表 4 条イ表 ( その 1 ) 図 9 (b)A + キ B エ工 のの A ・ B = A 十 B なので、この式も成立しますが、これはまさしく ド・モノレ ガンの定理の式 ( 5 ) です。 ほかにも、 員十 A = 1 と・員 = 0 は双対ですし、 ス十 A ・ B = と員 も双対です。 たとえば、キーポード入力の例では、 ス・ B 十員・ B 十 A ・ B = A 十召 カ城り立つので、双対の式、 も成立します。 図 10 4 条イ表 ( その 2 ) ス召 AB ス B A B C D C D C 〃 C 〃 ります。 ェの部分にはま B の牛を組み合わせたときの結果を 0 または 1 て表しますが、どうせ 0 か 1 しかありえない のなら、 1 の部分を埋めるだけでも十分です 3 。 条件式の書き方によっては、 員十 A ・ B の最初の項のように B に関する条件か陽には現れない場 合がありますが、そのようなときも表に言己主するには、 A = A ・ B 十 A ・ B カルノー図 を利用して図 8-b のように書きます。 条件が 3 個の場合には素直に考えると 3 次元の表、つ 公理や定理を利用して論理式を簡ヒするには、経験と まり立方体を 8 分割した表になってしまいますが、 3 次 勘が必喫です。簡単な条件式ならともかく牛か複雑にな 元、 4 次元、 、れ次元の表なんて考えたくないので、 ると、頭をフル回転させてももっと簡単にできるかどうか 平面に展開します。 は判断できません。機勺に論王野にを簡田翻ヒするガ去はな 3 牛以 - ヒの表を作るには、縦横の方向に複数の牛を いものでしようか。 書きます。たとえば、 4 個の条件ま召、 C 、 D の表は図 、、カルノー図 " は、論理式を機械的に変換するガ去の 1 つ 9 のように書けます。 です。これは 4 個以下の条件の組合をを簡略化するときに A と B の真偽値、 C と D の真偽値をまとめて図 10 の とくに有効です。カルノー図の利点は視 : 勺に判断できる ように表現することもあります。 点で、ふだんから表を作って考える人には向いている手法 同しように 5 個の条件ま B 、 C 、 D 、刃の表は、図 です。 11 のように表現します。 条件を表にする カルノー図を作る カルノー図の第一歩は複数の牛の組合を表にするこ 条件の表を作れるようになったら、カルノー図を書くと とです。 ころまであとわすかです。 牛が 2 個の場合は、キーポード入力の例で示した表と 3 実際にプログラムを書いていると、 同しです。条件を、 B とすると図 8 ー a のような表にな 場合もあります。 、どちらでもない " や、ありえない " 94 UNIX MAGAZINE 1995.8
連載 / プログラマー入門ー① 図 15 3 個 ~ するセルの囲み方 ( その 1 ) AB AB AB AB 図 17 3 個のするセルの囲み方 ( その 2 ) AB AB AB AB 0 00 ■ 00 ■ 0 0 ロロ 0 新■■ 方 み 囲 長 6 1 図 CD CD : 1 CD 図 18 複数の囲み方のパターンができる場合 AB AB AB AB Å長 冗 CD CD IQ 形で囲んでください。 図 15 て示した 2 個の失研彡で囲んだ条件の論理和をとっ た場合と、 1 個の攵研彡で囲んだ条件と残りの 1 条件の論理 和をとったのとでは、抔呈度の複雑さに思えるかもしれま せんが、 鴃研彡で囲むと論理式カ吶単になる」 ので、たとえ論理和の演算回数か変わらなくても、攵研彡で 囲めるところは皆括ってしまうほうがお得なのです。たと えば、図 15 を表す論理式は、 図 17 のようにカギ型に並ぶパターンでも簡略化の手法は 員・ B ・〃十 A ・ B ・ C ( 6 ) 同しです。 ( 2 , 1 ) の要素と ( 3 , 1 ) の要素の論理和は、 ですが、 ( 2 , 1 ) の要素と ( 3 , 1 ) の要素を結合したものと 員・ B ・ D ( 4 , 1 ) の要素の論理和は次のようになります。 ( 3 , 1 ) の要素と ( 3 , 2 ) の要素の論理和は、 A ・ B ・ D 十 A ・ B ・ C ・ D ただし、図 16 のようにすでに囲まれているセルどうし A ・ C ・ D をさらに攵研彡で囲んでも、冗長なだけで条件式の簡田翻ヒは したがって、図 17 を表す論理式は次のようになります。 できません。 式 ( 6 ) は、 ・ B ・ D 十ス・ C ・ D 亠 B ・ (D + C) 1 カ俵のところどころに散らばっている場合には、攵研彡 と書き換えてさらに演算回数を減らせますが、論理式の複 の囲み方が踟凾り考えられることもあります ( 図 18 ) 。し 雑度は同じなので、 こでは括弧で結合して演算の回数を かし、冗長な囲み方をしていないかぎり、どのパターンを 減らすことについては言及しません。 選んでも複雑度は変わりません。条件式に直したときに意 図 15 は隣接する 1 が直線的に並ぶパターンでしたが、 味を理解しやすいかどうかで尺してください。 AB AB AB AB 96 UNIX MAGAZINE 1995.8
METAFONT の遊び方 6 図 8 タコに墨をかけられた水中眼鏡 図 6 水中眼鏡 図 7 ぶよぶよ 9 図 9 X のロゴの言十図 っています。 METRFONT もこのような消しゴムをもっ ています。こオ功ゞ erase draw 命令です。何を省略した かは説明しなくても分かりますね。これを使うと、何回黒 く塗ったところでも確実に白くなります。 最後に、次のコマンドを実行してください。 *clearit; 幅 l( 高さⅡ *draw z 1 .. z4.. z 1 ; *f i11 21 .. z4..21 ; ! Not a cycle . く tO be read again> addto_currentpicture ー > addt 0 . CUrrentPiCtUre (TEXTO ) ; ペースライン gap ゅー g 叩ゅー それでは、図 6 のような図形は塗り潰せないのかという と、これができてしまうのです。次のように強引に cycle を付け足すと、図 8 の図形カ碍られます。 *f i11 z9.. z6 .. z5 .. z 11 .. z 10.. z9.. cycle ; showit く tO be read again> く * > f i11 z 1 .. z4.. z 1 ; 0 0 X のロゴ あれオせしつ。工ラーが出てしまいました。 6 Ⅱ命令の実 これで 6 Ⅱと unfill の真髄が理解できたので ( ホンマ 行直後に出力されているエラーメッセージを見てくださ か ? ) 、何かロゴを作ってみることにしましよう。 、、 ! Not a cycle. " と文句を言っています。 直線と塗潰しだけでできる適当なロゴはないかいなと探 METRFONT で塗潰し命令を実行するときは、かなら していたら、目の前にびったりの教材がありました。 X ウ すそのパスが cycle て終っていなけれはいけないのです。 インドウ・システムのロゴ X です ( 図 9 ) 。 draw のあとに指定するパスの最後で cycle を使うと、曲 「 X のロゴを作るのはええけど、コントロール・ポイント 線の始点と終点か滑らかにつながります。憶えています はどこにあるんかいな」 か ? たとえは、 ます、 X のクライアント・プログラム xl 。 g 。を起動して *draw z9.. z6 .. z5 .. 211 .. 210 .. z9 ; 画面いつばいにロゴを表示します。 xv でこのウインドウ を実行すると、図 6 のような図形になります。しかし、最 のダンプをとって PostScript に変換し、プリンタに出力 後の z9 を cycle に変えると、図 7 のように角のない図形 します。そして、紙に定規を当てて「ここからここまでは になります。 なんセンチやから・・・・・・」と測ります。 ・・と思ってせっ せと目盛りを読んでいたのですが、ふと、 「 X のソースが *draw 29.. z6..25 .. 211.. z 10.. cycle ; 105 UNIX MAGAZINE 1995.8
METAFONT の遊び方 6 図 3 チェック 図 2 円を描いてみた 図 1 十字マーク 3 METAFONT : が算出したパス 8 5 8 5 6 7 コ 0 7 中心を合わせてなぞる 図 4 あれ ? 図 5 ちゃんとでけた 1 つ目の 6 Ⅱを実行するとウインドウカ鯛き、 2 つ目の 6 Ⅱの実行カ鮗ったところで、図 1 のような図形が表示さ れます。 コントロール・ポイントがある位置をよく見てください。 塗り潰された領域の端にありますね。画面を一所懸爺兄ん でいるあなた、ウインドウにはコントロール・ポイントは 表示されません。誌面を見てください こで、「 fill 命令は、計算された領域の内側を塗り潰 す」ことが分かりました。一方、 draw 命令は言算された パスに沿ってペンを走らせます。違いが分かる男になるに は、実際に試してみるのカ一番です。 *draw zl .. z2.. z7 .. z8.. z3.. z4.. z5 .. z6.. cycle ; コントロール・ポイントに沿って円を描いてみました。 ちょっと違いますが、新翡の家紋のように見えなくもあ りません ( 図 2 ) 。 こではペンの種類をとくに指定していないので、 METAFONT は一番最初に手にした先端の丸いペンを使 って円を描きました。説明のための絵を描き足しましたが、 ペンの中央を算出したパスにくるようにして円を描いてい るのが分かるでしようか ? 絵が下手なのは、ここでは間 題ではありません。 またまた画面を一戸丿隱翁兄んでいるあなた、ウインドウ にはコントロール・ポイントは表示されません。誌面を見 てください。 円を消すには undraw 命令を使います。 *undraw z 1.. z2..27.. z8.. z3.. z4.. z5..26.. cycle ; 0 次に、図 3 のような図形を描いてみましよう。十字マー クの中央部分をくりぬいてみました。 rfill の反対は unfill やろ。簡単、簡単」 *unfill 29 ーー N10 ーー Z11 ーー Z12 ーー cycle ; あれ ? どうしたんや ? 真ん中が白くなりません ( 図 4 ) 。 「もういっぺんやったろ」 *unfill z9——z10—-z11——z12——cyc1e; 今度は、ちゃんと図 5 のようになりました。 「なんで 1 回目の unfill 命令が効かんかったんやろ。 METRFONT のやつも古いプログラムやしな、ポケてき よったんやろか」 いえいえ、そのようなことはありません METAFONT がどのように絵を描いているのかを説明し ましよう。 METRFONT が内部でもっているお苗き帳はカ長紙 のようなもので、描画命令カ甘旨定されるごとにそのマス目 103 UNIX MAGAZINE 1995.8
連載 / プログラマー入門ー① 図 1 里ゲート (a)0R ゲート 工 1 ト (c)NOT ゲー (b)AND ゲート 工 1 0 工 0 図 3 b の登蛔路 図 2 a の蛔路 SHIFT SHIFT CAPS LOCK 図 4 c 里回路 SHIFT CAPS LOCK ll 、 12 が入力、 O カ咄力です。 ll 、 12 の両方の入力が 真のときだけ O に真の出力か現どちらかカイ為だと 0 の出力は偽になります。 NOT ゲートは 1 入力 1 出力の論理ゲートで、 MIL 記 号では三角形の先端に小さな丸を付けた形状て表されます ( 図 l-c)o I が入力、 0 カ咄力で、 I に真の値が入力されると O に は偽の値が、 I に偽の値が入力されると 0 には真の値か現 れます。 CAPS LOCK 図 5 d の譿蛔路 SHIFT CAPS LOCK を表す論理可路は図 3 、 c の条件式、 SHIFT を押すⅡ (SHIFT を押さない & & CAPS LOCK を押す ) を表す論理回路は図 4 、 d の牛式、 SHIFT を押すⅡ CAPS LOCK を押す 論理回路の例 を表す論理回路は図 5 のようになります。 論理回路と条件式が似ていることを知ってもらうため に、キーポード入力の例を論理回路に当てはめてみまし 論理回路と条件式 図 2 ~ 5 のそれぞれの論理ゲートの数を数えてみてくだ SHIFT キーや CAPS LOCK キーか胛されていると きに H レベルの電圧を出力するキーポードがあったとし ます。この信号を入力として、アルファベットのキーか胛 a の牛式 : 7 個 されたときに大文字にするか小文字にするかを決定する論 b の牛式 : 4 個 理回路を言 t します。この論理回路の真の出力は大文字に c の牛式 : 3 個 対応させます。 d の牛式 : 1 個 前節では 4 通りの条件式を書きました。今度は、これら 一番複雑な牛式を実現するには 7 個の論理ゲートが必 の牛式を 4 通りの論理可路で表してみましよう。 要ですが、もっとも簡単な牛式だと 1 個の論理ゲートで 図 2 は一番複雑な a の牛式、すなわち、 寒見できます。 (SHIFT を押す & & CAPS LOCK を押す ) Ⅱ 論理可路の言 t においては、論理ゲートの個数はなるべ (SHIFT を押す & & CAPS LOCK を押さない ) Ⅱ く減らさなくてはなりません。論理ゲート数か増えると、 (SHIFT を押さない & & CAPS LOCK を押す ) をそのまま表現した論理可路です。 ・コストカ噌える 同しように b の条件式、 ・チップ ( 回路 ) 耐責カ並がる 分留まりか落ちる ! (SHIFT を押さない & & CAPS LOCK を押さない ) 90 UNIX MÄGAZINE 1995.8
連載 / プログラマー入門ー① 図 19 4 個のセルを矩形て囲む合 AB AB AB AB 0 ロロロ 0 ロ驫ロロ 0 ロロロ 0 ロ罍ロロ 0 ロ 0 ロ 0 ロ能載ロ 0 ロロ 0 ロロ ロロ 0 ロ動ロ 直糸勺に囲むパターン。条件式は・ B になる 図 20 端どうしてしているパターン」 AB AB AB AB CD CD 上端と下端のセルを囲列 図 21 8 要素を矩形て囲むパターンの例 AB AB AB AB CD 、 1 CD ・ 1 中央付近の 8 個のセルを囲列 4 要素の簡ヒ 正方形伏に囲むパターン。条件式は B ・ D になる CD CD . AB AB AB AB 3 0 ロ罍ロ 0 ロ秘ロ AB CD い CD CD AB AB 0 動ロロ 4 隅のセルを囲む例 AB AB 1 AB AB 運よく謝妾する 4 要素を炯杉で悃めた場合には、牛を 2 価成らすことができます。図 19 は 4 個の要素を攵研彡で 囲む場合で、直辛勺に囲む場合と正方形状に囲む場合の 2 不頁のパターンを示しました。 攵研彡で悃むときには、左右の端と上下の端がおのおのつ ながっていることを忘れてはいけません。図 20 に示した パターンも 4 要素か隣接している例です。 8 要素の簡ヒ 謝妾した 8 要素を去研彡で囲めれば、牛を 3 価咸らす ことカそきます。手法は 2 要素、 4 要素を囲む場合と同し なので説明は省略します。図 21 に 8 要素を囲む場合のパ ターンを示したのて参考にしてください。 UNIX MAGAZINE 1995.8 CD CD 97 ( あらい・みちこ ASTEC) きに利用できる手法を紹介します。 のこうした話題と、組み合わせる牛数がもっと増えたと についても説明しませんでした。次回は引続きカルノー図 ついては触れていません。また、簡田翻ヒできないパターン ついて説明しましたが、条件が 5 個以 - ヒある場合の操作に カルノー図については 4 個以下の条負っ基本的な操作に 点、欠点があるので場合に応して使い分けてください。 カルノー図のパターンに目を凝らすガ去も、どちらにも利 手法を 2 通り紹介しました。式をしっと見つめるガ去も、 今回は、 if 文や while 文で使用される条件式の簡略化の まとめ 上端と下端の 8 個のセルを囲列
連載 / インターネットの利用と仕組みーの 図 8 PCIMAC ISDN アダブタのインストー ノレ ー船レベル印 : VO ・、一スドレ 0 = 至 : こ : 国一 口末蓄理を可能にする ( 当 メモリべ - スアドしス ) : こ国 装着されているデバイス ( △ ) スイ , チのここー 論理ま引 サービスプロファイル旧 : [ こここ : : こ : : ] をと番号れ 匡蓮亟重二 : こ : こここコ ポートの使用法 ) ・ダイヤルアウトのみ 0 0 着信のみ ( 区 ) 0 タイヤルアウトと着信 ( ) 図 9 RAS のセットアップーポート吏用法 説明 ( I ) : ー のどュ・タ名 : CAMEt タイプ ポート ( 円デバイス 検出 を「 = 下 7 行戯 タイブ S2 ? 662 なものも出てくるでしよう。 RAS ではモデムや、 ISDN ターミナル・アダブタを利用した非同期 28.8Kbps や 38.4Kbps での接続もできますが、 ISDN ポードを使っ た 64Kbps での接続は、速度の面はもちろん設定も簡単 て接続も安定しており、・商に動きます。 PCIMAC のインストール PCIMAC は、 ISA のカードです。 IRQ は使用しませ ん。 I/O ポートは、ほかのアタブタカードと衝突しないよ うに気をつけます。デフォルトの 0X320 でも、おもなア ダブタカードとは」っからないと思われます。 Windows NT のインストールでは、コントローノレヾネ ルから、ネットワーク " を選び、アタブタカードの追加で、 、 DigiBoard PCIMAC ー ISA ISDN アタフ。タ " を追加 します。図 8 のように、各パラメータ、電話番号を設定し ます。米対のサーピスにも適用できるようになっているた め、サーピスプロファイル ID などの項目がありますが、 NTT の INS 64 では必要ありません。その代わりサプア ドレスには対応していない 6 ので、これを用いて機器の選 択をおこなうことはできません。 PCIMAC ISDN アタブタを追加すると、 RAS もイ ンストールされます。 RAS では、ポートの使用法に発信、 着信、発着信両用の尺 ( 図 9 ) や、どのプロトコルを使 用するか窈尺 ( 図 10 ) をします。インターネット接続 だけであれば、必要なのは TCP/IP のみです。 リモートアクセスの設定 次に相手青報を設定します。リモートアクセス ( 図 11 ) のアイコンをクリックし、助『を選んで相手の情報 6 米対の ISDN にはサフアドレスはありません。 図 10 RAS のセットアップープロトコル タイプ ポート ( 円デバイス ネ外アり⑩ ... ア朝 ) に ; い N 阡 im 亜にい NI Pcimac ネ歹 ~ ト、、ヴ = クの嘴 ダイヤルアウトプロトコル : ロ伯由 I( 図 TCP/IP(I) ロ IPÅ(I) 図 11 リモートアクセス・サービス ーモー アセスサーヒス通 ) 0 多 全 を設定します。最初に電話番号を設定します。相手が NT サーバーでないときは、次の、、現在のユーサー名とパスワ ードを認証する " ことはできないので、このチェックポッ クスは外します。ネットワーク・プロトコルは、 PPP で TCP/IP を使います。、、 LCP 刻長子 ( RFC1570 ) を要 求 " は、 IIJ のサーピスの場合には外しますが、 RT-100i を利用するときには設定されていても接続できます。ふつ うは、孑がうまくいかなかったら外してみるというガ去 で進めていけはいいでしよう ( 図 12 ) 。 リトト乃セス リトトアクセスモリトト乃セス管理 アクセスとインネット 説明万イル リトト 乃セスのア リ←ト 60 UNIX MAGAZINE 1995.8
連載 / 転ばぬ先のセキュリティー① 公開鍵の交換 図 7 図 5 暗号化 占占 愛し 愛し 図 8 B さんにしか読めない暗号文乍成 図 6 電子署名 1234 3712 愛し ー参。兼し、 化することに注意してください。 B さんだけか読める電子メールを A さんが作成する方 法は、直征聊勺に分かると思います。つまり、 B さんの公開 鍵で本文を暗号化すれはよいのです。 B さんの公開鍵て暗 号化された暗号文を復号できるのは、 B さんの秘曾建しか ありません。 B さんの秘密鍵は、彼しかもっていないの で、これで B さんにしか読めない暗号文ができあがりま す ( 図 8 ) 。 しかし、電子メールの暗号化は、こんな単純な考えで実 現できるほど生易しいものではありません。もちろん、電 前回は、ファイルの暗号化を説明しました。ファイルの 子メールは宛先が 1 人の場合も多いのですが、複数人のこ 暗号化には、暗号化と復号化に同し鍵を用いる共有鋤暗号 ともよくあります。上記の単純なガ去では、複数人に暗号 IDEA (lnternational Data Encryption AIgorithm) 文を送る場合、受信者ごとに本文を各人の公開鍵で暗号化 が使われていました。今回説明する電子メールの暗号化に して送る必があります。つまり、それぞれの受信者の受 は、暗号化と復号化に別々の鍵を用いる公開暗号 RSA け取る暗号文が違ってくるわけです ( 図 9 ) 。この方法だ を使います。 と、同し本文を何回も暗号化するのて処理に手間がかかり こでは、 A さんが B さんへ電子メールを暗号化して ます。 RSA の暗号イし度は遅いので、このことはけっこ 送る場合を考えてみましよう。このときの A さんの要望 う問題になります。また、同じ電子メールを複数人に一度 は、、、 B さんにしか復号できないように暗号化すること " に送る場合と、同し複数の宛先でも別途に送るのとでは、 です。両者は、それぞれ RSA の秘密鍵と公開鍵の組を生 後者のはうが sendmail へより重い負荷をケえることがあ 成し、公開鍵をお互いに安全に交換しているとします ( 図 ります。なにより困るのは、保存した暗号電子メールを、 7 ) 。公開鍵の醋却叔こ、改竄されぬようにするガ去は次回 送信者自身か読めない点です。 お話ししますので、ここでは安全に交換されたとして考え そこで、 PGP では、処理 !j 度の速い共有釶暗号 IDEA ましよう。公開鍵て暗号化して秘密鍵で彳夏号化するので、 と公開鋤暗号 RSA を組み合わせることで、これらの間題 図 7 では公開鍵を錠前、秘靆を鍵として表しました。た を角夬します。その手順は、まず IDEA の鍵をランダム だし、 RSA では、公開鍵も秘密鍵もそれぞオ団音号鍵と復 に生成し、この鍵を使って本文を IDEA で号化します。 号鍵のどちらにも使え、電イ署名のときは、秘靆で暗号 盗聴の防止は本文の暙号化 ( 図 5 ) で、改竄の発見は電子 署名を施す ( 図 6 ) ことで実現しています。また、なりす ましは公開鍵の指紋をとることで防ぎますが、これは鍵管 理をテーマにする次回に譲ります。以下では、まず暗号化 のイ督はみを説明したあと、電子署名の機構を解説します。 暗号化 78 UNIX MAGAZINE 1995.8
連載 / 転ばぬ先のセキュリティー① 図 1 内容の盗聴 トウェアであり、ユーザーは将来のバージョンにスムーズ に移行できるであろう。 RSA の特許は米国国外には効力 がないので、 RSAREF (RSA REFerence) がヨーロッ パのユーサーの妨げにならないことは道理にかなったこと だろう。しかし、 : 対のユーサーが 2.6. i を使う理由はま ったくない。 NetNews には和米国国外のユーサーを見 放したと心配している記事がたくさん投稿されているけれ ども、そうではないのだ。私は、データ・セキュリティが 世界中の誰にでも、自由かっ合却勺に利用できるように、 できるかぎりの努力を払う。この目標の意義を理解してく れる人が引続き PGP をサポートしてくれることを望んで し ) る」 PGP を好きになった人は、ぜひ Zimmermann を応 援してあげてください。今回は電子メールの暗号化 / 復号 化そして電イ署名とその本正力法について述べます。ま す、電子メールのプライバシーを守るための仕組みを説明 したあとで、手ⅱ加未噌ながら実際に Mew から PGP を利 用する去について解説します 5 。 電子メールのプライバシー 愛し 愛し し、 図 2 内容の改竄 愛し 嫌い 図 3 なりすまし 図 4 な電子メールの送信 々兼し、一・ 嫌い 電子メールをこれから使おうという人には、「電子メー ルは、はがきのように酉当幻全中で誰かに見られるおそれが あることを知っておいてね」と教えています。これは糸辧卆 な電子メールには、プライバシーがあまり考慮されていな いこともあっての措置です。電子メールに対する脅威をま とめると、以下のようになるでしよう。 ・内容の盗聴 ( 図 1 ) ・内容の改竄 ( 図 2 ) ・なりすまし ( 図 3 ) ・不要な電子メールの送信 ( 図 4 ) 内容を盗聴することは上如く癇単におこなえます。たと えば、電子メールを酉占医する sendmail を乗っ取り、本来 の受信者への醋医に加えて、コピーを自分宛に送るように 操作すれば、受信者や送信者に気づかれることなく中身を 覗くことカそきます。また、回線自体を盜聴し、トラフィ ックを角斤するのもそれはど困難ではありません。 5 バージョン 0.91 あるいは 0.92 について説明します。 Mew は現在さ かんに史新されているので、 こでの説明とは重川勧嗹ってくる可能性が あります。 改竄も電子メールを乗っ取れば簡単でしよう。特定の文 字列をほかの文字列に変えるだけなら、 sed や perl スク リプトを起動けるだけです。 From: に言当されるアドレス を偽って誰かになりすまし、電子メールを送信するのはい たって容易です。イ腰な電子メールをたくさん送りつけて 相手のスプールを溢れさせたり、不幸のメールを送りつけ る嫌がらせ行為は日常茶飯事てす。 PGP では、酉当斈路は信頼できないという悲雇聊勺な仮 定にもとづき、末端どうしでのプライバシーを矼ヒするよ うに言 t されています。つまり、 TCP などの通イ各自体 に暗号の機能がなくても、また sendmail に改竄を防止す る機能がなくても、 PGP を使えは盜聴の防止、改竄ゃな りすましの発見かできます。残念ながら、イな電子メー ルの送信を防止するのは PGP でも不可能です。 77 UNIX MAGAZINE 1995.8