ニュース・システム、WWW、NTP

分散システム

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/dsys-2000/2000-02-20
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html

■暗号に関する追加情報

◆SSH 1 のプロトコル上の弱点

RSA社が提唱している公開鍵を使ってセッション鍵(秘密鍵)を交換する 方式(PKCS1 1.5 )そのものに、脆弱性がある [1]。

PKCS -- Public-Key Cryptography Standards

[1] Daniel Bleichenbacher, "Chosen ciphertext attacks on RSA encryption standard PKCS #1", Advances in Cryptology, CRYPTO 98. Springer.

サーバ鍵を1時間に1回しか変えない。

SSH 1.5 は、1024 ビットの鍵を使っている。 これを破るには、2 20 + 2 19 回接続でよい。毎 秒、約 400 回。

1個所からの接続に上限を付ける。OpenSSH はそうなっている。 Distributed 攻撃には、弱そう。 OpenSSH
http://www.openssh.com/

ssh.com ssh1 daemon には、接続の失敗でサーバ鍵を作り直すパッチが出た。

CORE SDI Advisories
http://www.core-sdi.com/advisories/ssh1_sessionkey_recovery.htm

Securityfocus Bugtraq
http://www.securityfocus.com/vdb/bottom.html?vid=2347

RSA PKCS1 1.5
http://www.rsasecurity.com/rsalabs/pkcs1/

その他。最近見つかったバグ。CRC の計算が、16ビットしかしていなかった。

CORE SDI Advisories
http://www.core-sdi.com/english/index.html

Securityfocus Bugtraq
http://www.securityfocus.com/vdb/bottom.html?vid=2344

◆使い捨てパスワード

一方向関数を使う。

初期化:f(f(f(f(f(key)))))を生成し、保存する。

  1. f(f(f(f(key)))) をパスワードとして送る。
  2. 送られた f(f(f(f(key)))) を、次回のために保存する。

■復習

◆インターネット

internet (小文字)
ネットワークとネットワークが相互接続したもの
The Internet (大文字)

◆サービス

基本は、コンピュータで扱えるデータのコピー

高度なサービス

■WWW (World Wide Web)

分散システムとして見た時には、あまり面白くない。

特徴

なぜ木構造やハイパーテキストを使うのか。その利点、問題点はどこにあるの か。

参考

1学期のシステムプログラムにある HTTP の簡単な説明
http://www.hlla.is.tsukuba.ac.jp/~yas/coins/syspro-2000/2000-05-08/http.html

共通科目情報処理での木構造の話
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/shigen-kougi-2000/2000-10-03/

◆WWWサーバの負荷均衡

アクセスが集中すると、1台のサーバで処理できない/ 1個所にネットワークで処理できなくなる。

サーバのコピーを世界中に置く(複製(replication))。

コピーの選択方法。

サーバのダウンした時、自動的に生きているものに接続できるか。

◆WWW Proxy

クライアント、Proxy、WWWサーバ、キャッシュ

図? クライアント、Proxy、WWWサーバ、キャッシュ"

設定によっては、WWW ブラウザは、直接 WWW サーバに要求を送らずに、Proxy サーバに要求を送る。 proxyとは、「代理」の意味。

WWW Proxy の利用目的

◆空間と時間の変換

キャッシングの意味 時間的に得をするのは、同じデータをもう一度使う場合だけ。1度しか使わな いなら、時間でも損。

WWWでのキャッシュのヒット率は高くはない。40%くらい。

◆クッキー

プリントは、先週配布。

■ニュース・システムの仕組み

◆ネットワーク・ニュース

編集でカットされない、誰でもメッセージを発信できるという意味では、n対 nの通信。

◆ニュースシステムの設計目標

◆ニュースの記事の形式

----------------------------------------------------------------------
Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!hagi!chiba-ns!odins-suita!news.cs.ritsumei.ac.jp!nf2.spnet.ne.jp!nf1.spnet.ne.jp!news.hits.ad.jp!spinnews!spin-hsd0-tky!news-relay.jpn!hpujjpo!hpscit.sc.hp.com!sdd.hp.com!vixen.cso.uiuc.edu!logbridge.uoregon.edu!hammer.uoregon.edu!cs.uoregon.edu!news.nero.net!takikawm
From: fj-committee@cow.nara.sharp.co.jp
Newsgroups: fj.news.lists,fj.news.group,fj.archives.answers
Subject: Active Newsgroups List of fj (1998/1/15)
Date: 16 Jan 1998 01:18:53 GMT
Organization: Fj Newsgroups Management Committee
Lines: 1033
Message-ID: <fj.active.newsgroups.19980115@cow.nara.sharp.co.jp>
References: <fj.active.newsgroups.19971228@cow.nara.sharp.co.jp>

Archive-name: fj-news/active-newsgroups/part1
Original-author: saitoh@ics.es.osaka-u.ac.jp (SAITOH akinori)
Last-change: 15 January 1998 by takikawm@cs.orst.edu (Masami Takikawa)

fjのニュースグループの一覧とその解説

・現在 fj にあるニュースグループ 373 個の名前と説明文です。
・この文書は「JUNET利用の手引 (第1版)」に由来するもので、現在
  はfjニュースグループ管理委員会が維持管理を担当しています。
  出所 (題名と日付) を明示すれば、引用、転載、複製等は、断り
  なく自由におこなって構いません。文書の一部を他の著作物に流用
  する等の利用は、完全に自由とします。
・・・
----------------------------------------------------------------------

◆記事のヘッダ

Newsgroups:
ニュース・グループ
From:
差出人の電子メールアドレス
Subject:
記事の題名(題目、表題)。
Date:
記事が書かれた日付
Message-ID:
メッセージ識別子。 その記事に対して世界中で重複がないように付けられた文字
Path:
記事が通過したサーバ。

◆ネットワーク・ニュースの記事の配送の仕組

図 ネットワーク・ニュースの記事の配送の仕組
図 ネットワーク・ニュースの記事の配送の仕組

サーバ NNTP

◆NNTP

NNTP(Network News Transfer Protocol) とは、ネットワーク・ニュースの記 事の転送や、記事の読み書きを行うためのプロトコルである。mnews や GNUS などのネットワーク・ニュースを読み書きするソフトウェアは、クライアント として NNTP サーバとの間に TCP/IP による通信路を開設する。そして、クラ イアントは、記事を要求する文字列や、ニュース・グループの一覧を要求する コマンドをサーバに送る。これに対してサーバは、要求された記事やニュース・ グループの一覧をクライアントに返す。表4に、クライアントからサーバへ送 られるNNTPのコマンド、表5に、サーバからクライアントへ返される応答を示 す。

表4 NNTPのコマンド

--------------------------------------------------------------------
GROUP	ニュース・グループ名
	ニュース・グループを選択する。結果として、記事の数、記事の番号
	の上限と下限が返される。

ARTICLE 記事番号
	その記事の内容を得る。ニュース・グループが選択されている状態の
	時に使える。

ARTICLE 
	メッセージIDの記事の内容を得る。
HELP
	ヘルプ・メッセージの表示
QUIT
	終了
POST
	記事を投稿する。
--------------------------------------------------------------------

表5 NNTPの応答

--------------------------------------------------------------------
応答コード	説明
--------------------------------------------------------------------
100		ヘルプのテキストが続く。
200		要求受け付け可能である(投稿可)。
201		要求受け付け可能である(投稿不可)。 
205		通信路を切断する。
211		ニュース・グループが選ばれた。
		記事の数、記事番号の上限、下限、ニュース・グループ名。
235		記事の転送は成功した。
335		記事を送れ。最後は、CR-LF . CR-LF 。
400		サービスを中断する。
411		そのようなニュース・グループがない。
421		もうそのニュース・グループには次の記事がない。
435		その記事は欲しくない。(もう既に受け取っている)
436		転送に失敗した。後でもう一度転送しB$iて欲しい。
437		転送に失敗した。もう転送するな。
500		コマンドが認識できなった。
501		コマンドの文法に誤りがあった。
502		アクセスが制限されている。
--------------------------------------------------------------------

以下に、telnet コマンドを利用して、NNTP サーバに接続した様子を示す。

----------------------------------------------------------------------
% telnet newshost nntp [←]
Trying XXX.YYY.ZZZ.UUU ...
Connected to newshost.
Escape character is '^]'.
200 newshost NNTP[auth] server version 1.5.11 (31 January 1991) ready at Fri Jul  5 15:58:07 1996 (posting ok).
help[←]
100 This server accepts the following commands:
ARTICLE     BODY         GROUP
HEAD        LAST         LIST
NEXT        POST         QUIT
STAT        NEWGROUPS    HELP
IHAVE       NEWNEWS      SLAVE

Additionally, the following extention is supported:

XHDR        Retrieve a single header line from a range of articles.
XHIST       Retrieve history file.
XMIME       Control MIME  article handling.

Bugs to Stan Barber (Internet: nntp@tmc.edu; UUCP: ...!bcm!nntp)
.
quit[←]
205 newshost closing connection.  Goodbye.
Connection closed by foreign host.
% []
----------------------------------------------------------------------
ここで、強調で示した部分が、キーボードからのタイプである。 この例では、ホスト newshost のポート番号119(nntp)のポートに、 TCP/IPにより接続を試みている。2行目から4行目は、telnet コマンドによる 定型的な表示である。通信路が開設されると、サーバは、 "200" という応答を返している。これは、NNTP で定義されて いる応答であり、サーバが、要求を受け付け可能であり、かつ、要求としては 投稿要求(POST)も受け付けることを意味している。"200" 以 降の文字列は、コメントである。

第6行では、"help" というコマンドをサーバに送っ ている。これに対して、サーバは、"100" という応答に続けて、 受け付け可能なコマンドなど、簡単な使い方を返している。23行目に "." からなる行がある。これが、1つのコマンドに対する応答 の終りを示している。

次に、24行において、"quit" というコマンドをサーバに送っている。これに たいして、サーバは、205 という応答を返し、続いて TCP/IP の通信路を切断 している。26行目は、telnet コマンドが生成したメッセージである。

参考

NNTP は、現在改定作業中。 http://www.ietf.org/ids.by.wg/nntpext.html

◆INN newsfeed

----------------------------------------------------------------------
ME\
        :!*/!local::
news.jks.is.tsukuba.ac.jp/jks-news:campus.*,coins.*,comp.*,denjo.*,fj.*,gnu.*,news.*,okinawa.*,tnn.*,tsukuba.*:Tf,Wnm:
nadesico.cc.tsukuba.ac.jp/nadesico.cc.tsukuba.ac.jp:comp.*,sci.*,rec.*,news.*,soc.*,talk.*,misc.*,fj.*,gnu.*,tsukuba.*,campus.*,tnn.*:Tf,Wnm:
etlnews.etl.go.jp/etlnews.etl.go.jp:tsukuba.*:Tf,Wnm:
----------------------------------------------------------------------
転送の様子


----------------------------------------------------------------------
maple% telnet gama.is.tsukuba.ac.jp nntp[←]
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
IHAVE  <YAS.98Feb2175819@is.tsukuba.ac.jp>
335
Newsgroups: denjo.test[←]
Path: is.tsukuba.ac.jp!gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!yas[←]
From: yas@is.tsukuba.ac.jp (Yasushi Shinjo)[←]
Subject: from maple[←]
Date: Mon, 2 Feb 1998 08:58:17 GMT[←]
Nntp-Posting-Host: hlla-gw[←]
Organization: Institute of Information Sciences and Electronics, University of[←]
Tsukuba[←]
Sender: news@is.tsukuba.ac.jp (News Manager)[←]
Message-ID: <YAS.98Feb2175819@is.tsukuba.ac.jp>[←]
Lines: 2[←]
[←]
fake Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!yas[←]
1998/02/02 17:58:13[←]
.[←]
235
QUIT[←]
205 .
Connection closed by foreign host.
maple% []
----------------------------------------------------------------------

◆故障への対応

サーバやネットワークが落ちることがある。 核攻撃が無くても落ちる。

冗長リンクを持つと、同じ記事が複数の隣接するサーバから送られて来る。

◆冗長のリンク

図? 冗長リンクを含むニュースの配送

図? 冗長リンクを含むニュースの配送

◆記事の重複への対応(1)

履歴を利用する。
----------------------------------------------------------------------
#gama[lib-news] 113# tail history
<19980131213101.QAA14061@ladder03.news.aol.com> 886406952~-~886282319   rec.collecting.sport.hockey/46595
<8E8622E.0015000738.uuout@venture.fipnet.fi>    886406953~-~886231080   comp.sys.ibm.pc.demos/3590
<34D57354.592B@pp.kolumbus.fi>  886406953~-~886403924   comp.sys.ibm.pc.games.action/24913
   886406953~-~886282077   control/403867
<01bd2b53$921e9680$LocalHost@santotan>  886406953~-~886282077
<6b3s6k$85k$1@talia.mad.ibernet.es>     886406953~-~886403962   comp.sys.ibm.pc.games.flight-sim/52150
<34cd5ecb.20149236@nntp.best.com>       886406953~-~885929344   rec.arts.sf.tv.babylon5.moderated/10108
<34d4eeb3.2546651@news.txdirect.net>    886406953~-~886370114   rec.backcountry/9841
  886406954~-~885923414   misc.fitness.weights/21696
<6b3s8r$dp0@sjx-ixn5.ix.netcom.com>     886406954~-~886404085   comp.sys.ibm.pc.games.flight-sim/52151
#gama[lib-news] 114# ls -l history*
-rw-rw-r--   1 news     110490739 Feb  2 17:09 history
-rw-rw-r--   1 news          122 Feb  2 17:14 history.dir
-rw-rw-r--   1 news      8294372 Feb  2 17:09 history.pag
#gama[lib-news] 115#
----------------------------------------------------------------------
同じ記事を送ろうとしたとき。

----------------------------------------------------------------------
maple% telnet gama.is.tsukuba.ac.jp nntp[←]
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
Trying 130.158.80.241 ...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews server INN 1.5.1sec2 25-Jul-1997 ready
IHAVE  <YAS.98Feb2175819@is.tsukuba.ac.jp>
435 Duplicate
QUIT[←]
205 .
Connection closed by foreign host.
maple% []
----------------------------------------------------------------------

◆記事の重複への対応(2)

Path: の利用 図? 冗長リンクを含むニュースの配送

Aで投稿された記事が、B,C,Dを通って E までやってきた時には、Path: には、通ってきたニュースのサイトの名前が入る。


Path: E!D!C!B!A!username
サイト E のサーバは、この記事は サイト A を通ったと判断し、その記事を サイト A には送らない。

実際の Path: の例。

----------------------------------------------------------------------
Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!hagi!chiba-ns!odins-suita!news.cs.ritsumei.ac.jp!nf2.spnet.ne.jp!nf1.spnet.ne.jp!news.hits.ad.jp!spinnews!spin-hsd0-tky!news-relay.jpn!hpujjpo!hpscit.sc.hp.com!sdd.hp.com!vixen.cso.uiuc.edu!logbridge.uoregon.edu!hammer.uoregon.edu!cs.uoregon.edu!news.nero.net!takikawm
From: fj-committee@cow.nara.sharp.co.jp
Newsgroups: fj.news.lists,fj.news.group,fj.archives.answers
Subject: Active Newsgroups List of fj (1998/1/15)
Date: 16 Jan 1998 01:18:53 GMT
Organization: Fj Newsgroups Management Committee
Lines: 1033
Message-ID: <fj.active.newsgroups.19980115@cow.nara.sharp.co.jp>
References: <fj.active.newsgroups.19971228@cow.nara.sharp.co.jp>

----------------------------------------------------------------------

◆制御メッセージ(Control Message)

----------------------------------------------------------------------
Path: gama.is.tsukuba.ac.jp!is.tsukuba.ac.jp!hagi!ume!igakukei!news.cs.ritsumei.ac.jp!kuis-news!kuee-news!tamaru-news!Q.T.Honey!news.hbl.or.jp!news.ksi.co.jp!spinosk!threeWeb-news!nf2.iij.ad.jp!nr0.iij.ad.jp!news.iij.ad.jp!newsgw.yokohama.tao.or.jp!news.yokohama.tao.or.jp!citron!miyano
From: fj-committee@cow.nara.sharp.co.jp
Newsgroups: fj.rec.trading-cards
Subject: cmsg newgroup fj.rec.trading-cards
Control: newgroup fj.rec.trading-cards
Date: 12 Jan 1998 23:53:28 GMT
Message-ID: 

For your newsgroups file:
fj.rec.trading-cards	Topics and discussions on trading-cards
----------------------------------------------------------------------

◆よく使われるコントロール・メッセージ

--------------------------------------------------------------------
名前
--------------------------------------------------------------------
cancel 	記事のキャンセル
newgrop groupname [moderated]
			ニュース・グループの作成
rmgroup groupname	ニュース・グループの削除
checkgroups		activeファイルの確認
ihave	systemname	送りたい記事のリスト
sendme	systemname	送って欲しい記事のリスト
sendsys			sysファイルの転送要求
version			ニュース・システムのバージョンの転送
--------------------------------------------------------------------
)

◆問題点

ニュース・システムは、権限のない制御メッセージに弱かった。

◆ディジタル署名

送られてきたメッセージが送信者本人のものであることを識別・確認する。

----------------------------------------------------------------------
Path: bounce-back
From: committee@fj-news.org (Fj Newsgroups Management Committee)
Newsgroups: fj.comp.dev.pc-card
Subject: cmsg newgroup fj.comp.dev.pc-card
Control: newgroup fj.comp.dev.pc-card
Approved: yas@is.tsukuba.ac.jp
Message-ID: <newgroup.fj.comp.dev.pc-card.19990112@fj-news.org>
Date: Tue, 12 Jan 1999 07:12:37 -0000
Lines: 26
X-Info: ftp://ftp.isc.org/pub/pgpcontrol/README.html
	ftp://ftp.isc.org/pub/pgpcontrol/README
X-PGP-Sig: 2.6.3ia Subject,Control,Message-ID,Date,From,Sender
	iQCVAwUBNpr16hf4TH9gf12pAQHabwP/SLnIuV26QMrAB6EdSahCzHniDvlmwjWB
	EXbPine+y0zcoSWYtj0h1ZBuY9HTV8h/Y3WMGEbsZ7UTDrK8HKYh3agEB1ZRQEe8
	jY3Ya1WCTk8ht7WGqf6mfihJB9pyXy2tkTLjaJ3CwjyQ/OGx+Ogo+4kr1oZeJ/Vt
	pC9OH+/G0CI=
	=KxP+

For your newsgroups file:
fj.comp.dev.pc-card	Discussion on PC Card(JEIDA/PCMCIA Card).
----------------------------------------------------------------------

◆まとめ

ニュース・システムに見られる分散システム構築の技術

■時刻同期

◆UTC (Universal Coordinated Time)

協定世界時:国際原子時と太陽時間との相違が800ミリ秒になると 閏秒をいれる。

12月31日23:59:59の後に12月31日23:59:60を入れる。

GMT (Greenwich Mean Time) は、もう古い。

今までに30秒以上入っている。 最近入ったのは、1999年1月1日。 総務省(郵政省) 通信総合研究所 CRL 周波数標準課
http://jjy.crl.go.jp/Pub/leapsec.html

◆UTCの供給元

◆UNIX の時刻


#include <sys/time.h>

struct timeval {
	long	tv_sec;		/* seconds */
	long	tv_usec;	/* and microseconds */
};

main()
{
    struct timeval t ;
    struct timezone tz ;
	gettimeofday( &t, &tz );
}
tv_sec は、1970年1月1日 0:00:00 からの経過時刻。

設定は、settimeofday()

閏秒。

◆rdateコマンド

他のマシンから時刻を取得(daytime)して、それを自分の時計にセット (settimeofday())する。

◆adjtime() システム・コール

じわりじわりと時計を合わせる。
int adjtime(struct timeval *delta, struct timeval *olddelta);
時計の進み方を調整する。
遅れている時
delta を正にして、時計の進み方を速くする
進んでいる時
delta を負にして、時計の進み方を遅くする

◆NTP(Network Time Protocol)

図 NTP で使う offset と delay
図 NTP で使う offset と delay

時刻差(通信遅延を往復で等しいと仮定)

offset[i] = (t[i-1]+t[i-2])/2 - (t[i1]-[ti+3])/2

この時刻差が0になるように adjtime() で調整する。

サーバを木構造で構成する。

参考:RFC1305 Network Time Protocol (Version 3) Specification, Implementation and Analysis


↑[もどる] ・[2月6日] →[2月13日]
Last updated: 2001/02/20 02:21:56
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>