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

分散システム

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

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

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

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

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

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

◆ニュースの記事の形式

----------------------------------------------------------------------
Path: gama.is.tsukuba.ac.jp!ie.u-ryukyu.ac.jp!u-ryukyu.ac.jp!oix.u-ryukyu.ac.jp!newsfeed.media.kyoto-u.ac.jp!cancer.nca5.ad.jp!133.16.7.70.MISMATCH!news!not-for-mail
From: committee@fj-news.org (Fj Newsgroups Management Committee)
Newsgroups: fj.1st-readme
Subject: v001i0060: Active Newsgroups List of fj (2001/10/01) (1/1)
Supersedes: <readme60.1012119600.635@news.kit.ac.jp>
Followup-To: fj.1st-readme.discussion
Date: 7 Feb 2002 08:14:02 GMT
Organization: Fj Newsgroups Management Committee
Lines: 1235
Approved: chiaki@ipc.kit.ac.jp
Message-ID: <readme60.1013069700.5985@news.kit.ac.jp>
NNTP-Posting-Host: front.ipc.kit.ac.jp
X-Trace: news.kit.ac.jp 1013069642 17927 133.16.130.20 (7 Feb 2002 08:14:02 GMT)
X-Complaints-To: news
NNTP-Posting-Date: 7 Feb 2002 08:14:02 GMT
Summary: #000060: fj-news/active-newsgroups/part1 - Active Newsgroups List of fj (2001/10/01)
X-Original-Date: 1 Oct 2001 17:57:30 GMT
Xref: gama.is.tsukuba.ac.jp fj.1st-readme:430

-------------------------------------------------------------------------------
Original-by:	Fj Newsgroups Management Committee <committee@fj-news.org>
Submitted-by:	Fj Newsgroups Management Committee (fjニュースグループ管理委員会) <committee@fj-news.org>
Summary:	fj-news/active-newsgroups/part1 - Active Newsgroups List of fj (2001/10/01)
Summary-Number:	000060
Posting-Number:	Volume 1 / Issue 60
Part-Number:	(1/1)
-------------------------------------------------------------------------------

Archive-name: fj-news/active-newsgroups/part1
Original-author: saitoh@ics.es.osaka-u.ac.jp (SAITOH akinori)
Last-change: 2001/10/01 by fuchs@vega.ocn.ne.jp (Tohru FUKUSHIMA)

##### moderator からの御注意 #####
# fj.1st-readme の Active Newsgroups List of fj は
# 初めて参加する方に最低限の情報を提供する為のものです.
# ついている日付に御注意下さい. 最新版は fj.news.lists,
# fj.news.group, fj.archives.documents に投稿されます.
# News server の管理には, 最新版の投稿を待って, それを
# 御利用下さい.
##################################

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

・現在 fj にあるニュースグループ 420 個の名前と説明文です。

・この文書は「JUNET利用の手引 (第1版)」に由来するもので、
  現在はfjニュースグループ管理委員会(committee@fj-news.org)が
  維持管理を担当しています。

  出所 (題名と日付) を明示する限りにおいて、引用、転載、複製等は、
  著作者等に断りなしに、自由におこなって構いません。
  文書の一部を他の著作物に流用する等の利用は、完全に自由とします。

・・・
----------------------------------------------------------------------

◆記事のヘッダ

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の記事の内容を得る。
LIST
	ニュースグループの一覧を得る。
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 $NNTPSERVER 119[←] [←]
Trying 192.168.0.1...
Connected to gama.is.tsukuba.ac.jp.
Escape character is '^]'.
200 gama.is.tsukuba.ac.jp InterNetNews NNRP server INN 2.2 21-Jan-1999 ready (posting ok).
group fj.1st-readme[←]
211 37 336 447 fj.1st-readme
article 430[←]
220 430 <readme60.1013069700.5985@news.kit.ac.jp> article
Path: gama.is.tsukuba.ac.jp!ie.u-ryukyu.ac.jp!u-ryukyu.ac.jp!oix.u-ryukyu.ac.jp!newsfeed.media.kyoto-u.ac.jp!cancer.nca5.ad.jp!133.16.7.70.MISMATCH!news!not-for-mail
From: committee@fj-news.org (Fj Newsgroups Management Committee)
Newsgroups: fj.1st-readme
Subject: v001i0060: Active Newsgroups List of fj (2001/10/01) (1/1)
...

-------------------------------------------------------------------------------
Original-by:	Fj Newsgroups Management Committee <committee@fj-news.org>
Submitted-by:	Fj Newsgroups Management Committee (fjニュースグループ管理委員会) <committee@fj-news.org>
...

+fj.mail-lists.fj-committee	Messages sent to fj-committee mailing list. (Moderated)
  fjニュースグループ管理委員会MLのメッセージを公開する場。(直接投稿できない)

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

接続されると、"group" というコマンドをサーバに送っ ている。これに対して、サーバは、"211" という応答に続けて、 記事の数、記事番号の上限、下限、ニュース・グループ名を送っている。

次に "article" コマンドを送っている。これによ り記事が転送されている。記事の最後には、"." からなる行が ある。これが、articleコマンドに対する応答の終 りを示している。

最後に "quit" というコマンドをサーバに送ってい る。これにたいして、サーバは、205 という応答を返し、続いて TCP/IP の通 信路を切断している。その下の Connection closed... は telnet コマンドが生成したメッセージである。

参考

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

◆INN newsfeed

----------------------------------------------------------------------
ME:!*/!local::
spn.ie.u-ryukyu.ac.jp/ie.u-ryukyu.ac.jp:fj.*,okinawa.*:Tm:innfeed!
nadesico.cc.tsukuba.ac.jp/nadesico.cc.tsukuba.ac.jp:comp.*,sci.*,rec.*,news.*,soc.*,talk.*,misc.*,fj.*,gnu.*,tsukuba.*,campus.*,tnn.*:Tm:innfeed!
news.esys.tsukuba.ac.jp/news.esys.tsukuba.ac.jp:coins.*,tsukuba.*:Tm:innfeed!
keknews.kek.jp/keknews:tsukuba.*:Tm:innfeed!
----------------------------------------------------------------------
転送の様子


----------------------------------------------------------------------
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).
----------------------------------------------------------------------

◆まとめ

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

■WWW (World Wide Web)

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

特徴

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

参考

総合科目「IT革命を解き明かす」での木構造の話
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2001-11-12/

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

◆WWWサーバの負荷均衡

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

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

コピーの選択方法。

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

◆WWW Proxy

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

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

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

WWW Proxy の利用目的

◆空間と時間の変換

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

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

◆クッキー

cookieは、コンピュータ・サイエンスの専門用語。

協調して動作しているプログラムの間で、ある一連の作業を識別するための数 を意味する。

RPC、HTTP(WWW)で使われる。

◆NFS/RPC での cookieの利用

ディレクトリの読み込み手続き nfsproc_readdir() で、ディレクトリのどの 位置まで読み込んだかを示すために使われている。

NFS が利用している SunRPC では、UDP/IP実装の制限から最大のメッセージの 長さが決まっている。上限を越えるディレクトリを読み込む場合、1回のRPC で終らない。

/usr/include/rpcsvc/nfs_prot.x:


/*
 * Arguments to readdir
 */
struct readdirargs {
        nfs_fh dir;             /* directory handle */
        nfscookie cookie;
        unsigned count;         /* number of directory bytes to read */
};
struct entry {
        unsigned fileid;
        filename name;
        nfscookie cookie;
        entry *nextentry;
};

struct dirlist {
        entry *entries;
        bool eof;
};

union readdirres switch (nfsstat status) {
case NFS_OK:
        dirlist reply;
default:
        void;
};

                readdirres
                NFSPROC_READDIR(readdirargs) = 16;

nfsproc_readdir() の1回目と2回目の RPC の間にディレクトリの内容が更 新された場合、どのような結果になるのか予想できない。

◆WWWでのcookie

WWW(World Wide Web)では、1回のデータ転送ごとに通信路が切断される ので、通常はWWWのブラウザ(クライアント)とWWWサーバの間では、途 中経過を保持することができない。

途中経過を保存したい時:

WWWで途中経過を保存するためには、cookie が使われる。

サーバは、その情報を利用して、適切なページ(たとえば前回最後に訪れたペー ジ)を表示させるようにすることができる。

◆WWW cookieとプライバシ

現在の Cookie の実現では、利用者のプライバシーを犯す危険性が高いという 問題が指摘されている。

普通のWWWサーバでは、要求を送ってきたコンピュータのIPアドレスを記 録しているので、コンピュータ単位でのアクセス状況を記録することはできる が、個人を特定することはできない。

クッキーを利用することにより、コンピュータではなくどの個人がアクセスし てきたかを記録することができる。

クッキーから電子メールのアドレスや氏名まで調べることはできない。 しかし、インターネットをサーフしている間にどこかでそれを打ち込んだが最 後、クッキーと電子メール・アドレスや氏名との対応が記録されてしまう危険 性がある。

参考 Netscape社によるWWWにおけるクッキー実現の案
http://www.netscape.com/newsref/std/cookie_spec.html

■暗号

参考 共通科目情報処理(講義)、体育専門学群対象、2001年06月14日、
http://www.hlla.is.tsukuba.ac.jp/~yas/ipe/taiiku-kougi-2001/2001-06-14/

共通鍵暗号系(対称暗号系)
暗号化鍵と復号化鍵が同じ(または片方から片方が簡単に計算できる)。
公開鍵暗号系(非対称暗号系)
暗号化鍵から復号化鍵を容易に類推できない。
暗号は、ディジタル署名に使える。

鍵がある。鍵を長くすると、指数関数的に解読が難しくなる。

■SSL(Security Session Layer)

SSL は、Netscape 社によって開発された通信路を暗号化する仕組み。 認証機能もある。 HTTP に広く使われている(他にも使える)。 SSL を IETF により標準化したものが、TLS(Transport Layer Security).

◆フリーの実装

◆プログラミング

Socket で書かれたプログラムを簡単に SSL 対応に書き換えられる。

Socket 版

/* Returns the number of characters successfully written */ size_t write(int file_descriptor, void *buf, size_t len)

OpenSSL 版

/* Returns the number of characters successfully written */ int SSL_write(SSL *socket_info, char *buf, int len)

http://www-6.ibm.com/jp/developerworks/security/011005/j_s-stun.html

◆3種類認証モデル

良く使われるのは、2番目。

認証には、証明書が使われる。 鍵の交換には、証明書に含まれている

◆証明書

X.509 形式(バイナリ)を、テキストに変換したものの例:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 0 (0x0)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=JP, ST=Ibaraki, L=Tsukuba, O=University of Tsukuba, OU=COINS, 
CN=Distributed Systems/Email=yas@is.tsukuba.ac.jp
        Validity
            Not Before: Feb 18 14:42:56 2002 GMT
            Not After : Feb 18 14:42:56 2003 GMT
        Subject: C=JP, ST=Ibaraki, L=Tsukuba, O=University of Tsukuba, OU=COINS,
 CN=Distributed Systems/Email=yas@is.tsukuba.ac.jp
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d0:94:49:23:dd:29:10:f4:c5:d9:df:07:72:07:
                    91:14:5c:a7:2a:0c:96:51:b5:93:31:a9:09:c0:1d:
                    f0:3f:5b:61:3f:bc:75:14:b8:54:49:f6:e7:db:a6:
                    9f:22:0c:af:23:a4:8a:70:fb:96:56:cc:26:fa:f8:
                    ce:47:32:2a:ea:f6:12:64:96:4a:73:11:52:f7:fa:
                    15:2a:6f:8a:60:f4:77:f5:e9:dc:cc:2f:37:bc:a5:
                    ef:7a:a5:13:48:73:ad:c3:a5:90:15:9b:c8:94:f0:
                    9b:33:39:2f:a4:6e:8d:61:c0:54:3f:5b:5f:4e:a9:
                    30:a6:a3:cd:a0:e8:2b:80:89
                Exponent: 65537 (0x10001)
    Signature Algorithm: md5WithRSAEncryption
        a4:eb:18:03:f4:0a:93:cc:ad:fd:75:5b:60:b0:5c:ec:3f:2e:
        d5:fc:92:cc:41:d4:69:66:5b:5b:19:16:8f:e9:35:78:2d:1d:
        ad:c2:81:79:d8:7f:6d:68:8f:a5:5a:7c:f7:22:1f:69:a6:66:
        28:c6:3a:59:26:c2:57:92:c6:8d:8c:94:75:5e:4c:33:af:17:
        e7:d2:28:9a:06:f8:c6:86:5c:67:8b:e2:f9:fc:c9:d6:b6:f7:
        b3:8b:3d:0f:cd:c3:b5:a9:f8:bd:41:88:27:2e:35:fb:93:fb:
        e9:93:f4:ae:b3:49:1e:b9:db:c5:16:a6:38:b0:7e:ef:ce:a9:
        17:fd
この例は、自分の秘密鍵で自分を公開鍵を署名したものなので、何の証明にも なっていない。

◆認証局の階層

証明書がついていたとして、それが本物であるかをどうやって確認するか。

認証局(CA, Certificate Authority)に、証明書を発行してもらう。(認証局の 秘密鍵でディジタル署名をしてもらう)

その認証局は、信頼できるか?

WWWブラウザには、ルート認証局の証明書が予め含まれている。

末端のWWWサイトは、ルート認証局、または、中間認証局から発行された証 明書を提示する。

◆ハンドシェーク

接続時に、乱数(共通鍵暗号に基づく暗号化の鍵を生成するため)を交換する。 その乱数は、普通、サーバ側が提示した証明書に含まれている公開鍵で暗号化 される。

ハンドシェークで使われる公開鍵暗号系

データを暗号化するために使われる共通鍵暗号系

■SSH (Secure Shell)

Unix r系コマンドの置き換え。

◆r系コマンドの弱点

IP spoofing (なりすまし).

rsh のセッションで行われるであろうパケットを偽造する。

IP アドレスでホストを認証すると危ない。

DNS spoofing.

偽のDNSのサーバを立てる。

source routing。

◆SSHでの解決

ホストの認証を、IP アドレスではなく、公開鍵で行う。

サーバは、2つの鍵と64ビットの乱数を送る。 クライアントは、乱数を送り返す。 乱数が一致したら、IP spoofing されていない。

クライアントは、セッション鍵(対称暗号系の鍵)をサーバの2つの公開鍵で 暗号化して送る。

対象暗号の鍵(セッション鍵)を生成し、公開鍵で送る。

これ以降の通信は、セッション鍵で暗号化される。

◆SSHでのユーザの認証

暗号化された通信絽が確立された後は、パスワードを流しても安全。

個人ごとに RSA 公開鍵での認証機能を利用したほうがよい。

◆トンネリング(port forwarding)

SSH で暗号化された通信路の中に一般のアプリケーションの通信を通す。

よくつかわれるもの。

使い方:

ssh -L 10110:remote:110 remote

ローカルのポート番号 10110 に来た要求を、remote の 110 に転送する。

◆SSH1の弱点

SSH1 には、プロトコル上、いくつかの弱点が見つかっている。

SSH2 を使った方がよい。

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/


↑[もどる] ←[2月5日] ・[2月19日]
Last updated: 2002/02/19 00:33:10
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>