=================================================================== RCS file: /home/cvs/OpenXM/doc/Attic/genkou19991125.tex,v retrieving revision 1.26 retrieving revision 1.29 diff -u -p -r1.26 -r1.29 --- OpenXM/doc/Attic/genkou19991125.tex 1999/12/20 16:01:35 1.26 +++ OpenXM/doc/Attic/genkou19991125.tex 1999/12/20 19:02:02 1.29 @@ -151,8 +151,8 @@ CMO 形式で定義されているデータは多倍長整数以外にも $Bなお、 tag は各データ毎に 32 bit の整数で表されており、 多倍長整数は 20 となっている。 ここで 32 bit の整数の表現方法について説明する必要がある。 -OpenXM では 32 bit の整数 20 をバイト列で {\tt 00 00 00 14} と表す方法と -{\tt 14 00 00 00} と表す方法がある。 +OpenXM ではバイト列で 32 bit の整数 20 を +{\tt 00 00 00 14} と表す方法と {\tt 14 00 00 00} と表す方法がある。 この表現方法の違いはクライアントとサーバの最初の接続時に 双方の合意で決定することになっている。 なお、合意がない場合には @@ -193,21 +193,20 @@ $4294967298 = 1 \times 2^{32} + 2$ を network by \section{MathCap について} サーバおよびクライアント双方ともに OpenXM で規定されている -メッセージの中のデータ形式をすべて理解できるわけではない。 +メッセージの中のデータ形式をすべて受け取れるわけではない。 しかも、 OpenXM 規約で規定されているデータ形式だけが 受渡しに使われるというわけではない。 - -そこで、 OpenXM では相手側が受け取ることができるデータ形式の種類を +そこで、 OpenXM では相手側が受け取ることができるデータ形式を 収得する方法を用意している。 + CMO 形式で定義されている MathCap データは %理解可能なメッセージの -受け取ることができるデータ形式の種類を表す -データであり、 +受け取ることができるデータ形式を表すデータであり、 要求されればサーバはサーバ自身の MathCap データをスタックに積む。 また、クライアントから MathCap データをサーバへ送ることもでき、 MathCap データをサーバとクライアントの間で交換することによって、 お互いに相手側が受け取ることができないデータ形式で -メッセージを送ってしまうことを防ぐことができる。 +メッセージを送ってしまうのを防ぐことができる。 なお、 MathCap データの中では CMO 形式で定義されている 32 bit 整数、文字列、リスト構造が使われており、 MathCap データに含まれている内容を理解できるためには @@ -246,7 +245,18 @@ OpenXM 対応版の asir サーバである ox\_asir 最後の {\tt [ [514,[1,2,3,$\cdots$,60]],[2144202544,[0,1]] ]} の部分は 理解可能なデータの形式を表している。 この部分はさらに {\tt [514,[1,2,3,$\cdots$,60]]} と -{\tt [2144202544,[0,1]]} に分けることができ、 +{\tt [2144202544,[0,1]]} にの部分に分けることができ、 +それぞれが一つのデータ形式についての情報となっている。 +どのデータ形式についての情報かは最初の要素にある整数値をみれば +分かるようになっている。 +この整数値は CMO 形式では 514 となっている。 +最初のデータ形式を区別する整数値以後の要素は +各データ形式によってどのように使われるか定まっている。 +CMO 形式では理解可能なデータの tag がリストの中に収まっている。 +前節で CMO 形式では多倍長整数を表す tag が 20 であることを述べたが、 +このリストに 20 が含まれているので、 +ox\_asir は CMO 形式の多倍長整数を受け取れることがわかる。 + %%このリストの要素はまたリストとなっており、 %この最後の部分もまたリストとなっており、 %あるデータ形式で理解可能なものを表現したリストを要素としている。 @@ -254,35 +264,44 @@ OpenXM 対応版の asir サーバである ox\_asir %での理解可能なデータを表していることを示しており、 %その後のリストでは CMO 層で定義されているデータのうち、 %理解可能なデータの tag が並んでいる。 -%前節で CMO 形式では多倍長整数を表す tag が 20 であることを述べたが、 -%このリストに 20 が含まれているので、 ox\_asir は CMO 形式の -%多倍長整数が理解できることがわかる。 -最初のリストがサーバの情報を表しているといったことが理解できることと、 -データが受け取れることとはまったく別物であるので +なお、データが受け取れることと、 +データの論理構造が理解できることとはまったく別物であるので 注意する必要がある。 -\section{security 対策} +\section{セキュリティ対策} -OpenXM では幾らかのセキュリティ対策を行なっている。 +OpenXM では幾らかのセキュリティ対策を考えている。 +OpenXM に対応したソフトウェアをクラックしても +大した利点はないと思えるが、それは設計上の話であって、 +予期せぬ手段で攻撃を受けた場合にどのような事態を +招くかは想像し難い。 -まず、接続が必要になった時に、クライアントがサーバ側からの -接続を待つようになっている。これは常に接続を待つことによって、 -侵入者に接続の機会を与えてしまうことを減らすためである。 +そこで、 OpenXM では侵入者に攻撃の機会を +できるだけ与えないようにしている。 +具体的には、接続が必要になった時のみ接続を待つようにし、 +常に接続に関与するといったことは避けている。 -次に、クライアントが接続毎に接続を待つ port 番号をランダムに決定する -ことになっている。これにより、侵入者がどこに接続を行なえばよいのか -わかりにくくしている。 +しかし、これだけでは侵入者が接続を行なう一瞬のすきを +狙ってくる可能性もある。 +そこで接続を行なう時に、 +接続を待つ port 番号をランダムに決めている。 +こうすることで、特定の port 番号を狙って接続を行なう +瞬間を待つ手口を幾らか防ぐことができる。 -最後に、接続時にクライアントが 1 回のみ有効なパスワードを発行し、 -認証を行なうようになっている。このパスワードは一旦使用されると -無効になるので、もし仮になんらかの手段でパスワードが洩れたとしても -安全である。なお、このパスワードは安全な手段で送られていないと -いけない。また、現在の実装ではサーバ、およびクライアントの動作している -コンピュータ上ではこのパスワードがわかってしまうため、 -同一のコンピュータ上に悪意のあるユーザはいないと仮定している +さらにもう一段安全性を高めるために、 +接続時に 1 回だけ使用可能なパスワードを作成し、 +そのパスワードを使って認証を行なう。 +このパスワードは一旦使用されれば無効にするので、 +もし仮になんらかの手段でパスワードが洩れたとしても安全である。 + +なお、上記の port 番号とパスワードは安全な手段で送られて +いると仮定している。 +また、同一のコンピュータ上に悪意のあるユーザはいないと仮定している ことに注意しなければならない。 +なぜなら、現在の実装ではサーバ、およびクライアントの動作している +コンピュータ上ではこの port 番号とパスワードがわかってしまうためである。 なお、接続が確立した後のメッセージの送受信に関しては、 特に暗号化などの処置が行なわれているわけではない。