ホーム » スタッフ » 斉藤徹 » 講義録 » 情報ネットワーク基礎

情報ネットワーク基礎」カテゴリーアーカイブ

2019年9月
« 8月    
1234567
891011121314
15161718192021
22232425262728
2930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

福井高専のドメイン名

そろそろ前期期末の成績締め切り。学生さんがレポート課題提出で先生にメールを送ることも多いが、メールアドレスの書き間違いでメールがエラーになって届かないトラブルがちらほら。

メールアドレスをどう書き間違えているのか確認すると、hoge@fukui-nctac.jp と書いていたりする。高専機構のドメイン名は、hoge@fukui.kosen-ac.jp で、ac の前がハイフンに間違えてるんだろうな。

まずは結論

高専機構(福井)のメールアドレスは、hoge@fukui.kosenac.jp です。

福井高専のメールアドレスは、hoge@fukuinct.ac.jp です。

ということで、以下解説。

ドメイン名の一般ルール

ちなみに、日本のドメイン名は古くは、組織ドメイン.種別ドメイン.国ドメイン の形式。

組織ドメイン=fukui-nct , 種別ドメイン=ac(教育機関) , 国ドメイン=jp(日本)

種別ドメインには、.co.jp(会社) , .ne.jp(ネットワークサービス) , .or.jp(団体) , .go.jp(政府機関) といったものがあるが、企業のサービスだと、.co.jp なのか .ne.jp なのか曖昧だったりするので、最近は省略したものを申請できるようになっている。

国ドメインは、アメリカはネットを作った所なので、国ドメインは省略され、.us(アメリカ) を使うことはめったに無い。一方、国ドメインも、.jp(日本) , .uk(イギリス) , .ch(中国) とかあっても、世界中に拠点を持つ企業では、.jp なのかよくわからないので、国ドメインを持たない種別ドメイン .com (企業) を取得することも多い。

高専機構のドメイン名

日本では最近様々な形式の学校が出てきたため、.ac.jp のドメインを取る時の審査は厳しくなっている。

このため、高専機構では、kosen.ac.jp を取得したいが審査が通らずしかたがないので kosenac.jp を取得している。

組織ドメイン=kosen-ac , 種別ドメイン=なし , 国ドメイン=jp(日本)

ちなみに、”-ac.jp” といった変則的なドメイン名は、教育機関を偽装したドメイン名と勘違いされやすく、kosen-ac.jp のドメイン名を見て「怪しい…」と思う人も多い。

福井高専のドメイン名

一方、高専機構ができた後の福井高専の英語の正式名称は、“National Institute of Technology, Fukui College” であり、福井高専のドメイン名としては、本来 “nit-fukui.ac.jp” を取得したい。

組織ドメインの綴りのルールは無いので、大学でも 大学名-u.ac.jp だったり u-大学名.ac.jp など色々あるが、最近は後者が主流となっている。(福井大学も以前は、fukui-u.ac.jp だったが、最近は u-fukui.ac.jp に変更されている)

しかし、.ac.jp の審査が厳しく、高専機構の1組織っぽい nit-fukui.ac.jp は審査が通らない可能性が非常に高く、どの高専も以前のドメイン名をそのまま使用しているのが現状である。

CTF講座・K-SEC第3ブロック学生向け講習会に参加

高専機構の情報セキュリティ人材育成プロジェクトの一環として、岐阜大学サテライトキャンパス(岐阜高専主幹)にて8/28(水)に開催された、CTF講座・K-SEC第3ブロック学生向け講習会に3EI学生1名が参加しました。

CTFとは

CTFとは、Capture The Flags という、情報セキュリティの知識を使ってクイズを解く競技です。

例えば、簡単なものでは、

  1. PGS{fnzcyr} からフラグを見つけよ。# rot13暗号化
  2. SQLインジェクションでデータ漏洩が発生するWebシステムが用意されていて、SQLインジェクションが発生するようなデータを入力させて情報を見る。

といった問題があります。複雑な問題では、

  1. C言語で生成された機械語があって、通常では何も表示されないけど、逆アセンブルして条件判断の一部をバイパスさせて、データを表示させる。

といった、OSや機械語の知識が要求されるものもあります。

初心者には大変だったかな

今回、4年はインターンシップなどで参加者があつまらず、初心者の3年の学生さんに参加してもらいました。CTFの初心者向け講習会ということで、基礎的演習もあるかと思いましたが、いきなりの簡易版CTF大会となりました。知識が不足していて、苦労していましたが基礎的問題をいくつか解けていたようです。

最後に、講習会の修了証をもらいました。

授業アンケート結果(ぷちブルーな気分)

情報ネットワーク基礎(3EI/後期)

楽しんで受講してくれた人からの意見があり、ポイントでも85ポイントと高評価であった。内容理解やシラバスについてポイントが若干低いようであるが、誤差の範疇と思われる。理解把握のポイントが最も低く、理解度確認のための質問などをもう少し増やしても良かったかと思う。

情報制御基礎(3年学際科目/前期)

学際科目ということで、初めて実施した科目であり、他学科からも受講生がある内容で、ポイントも70ポイントと低い評価であった。
プログラムを授業でやっていない学科の学生から、内容が理解できないとの意見が多かった。今年度は、他学科の学生にもわかるように、プログラムの説明を増やしたり、プログラムよりも基本的な内容を増やしたいと考えている。

情報構造論(4EI/通年)

意見の欄には、例年になく辛辣な意見もあった。他の同クラスのアンケートでも、全般的に厳しい意見が多くみられ、ポイントは74.8と例年よりも低くいが、このクラスのオフセットとも考えられる。
昨年から講義資料のWeb掲載などを行い、それを使った授業を中心としているが、ノート作成ができていない学生から、ノートをとる時間を十分にとってほしいとの意見があった。もう少し、授業の時間の作り方などを考えたいが、一方で不まじめな学生がノートもも一切とらないで受講する姿は、理解する意欲に欠けていることもあり、どのような対処とすべきか、時間をかけて考えていきたい。

データベース(5EI/後期)

ポイントでは78.6と、若干低めの評価であった。演習量や試験についての評価が他に比べて若干低く、意見でも図や表といった具体例を交えた例での説明を増やしたほうが理解が進むとの建設的な意見もあった。資料などもWebでの公開などを進めているが、今後も実例などを増やし解りやすい資料を目指したい。

オブジェクト指向プログラミング(PS2/前期)

他学科出身の受講者も含まれるため、例年進度に注意しながら授業を進めているが、ポイントでは80ポイントで、例年並みの評価であった。
もう少し、演習などをタイムリーに行いながら授業を進めたいと考えているが、演習環境などの準備も必要で自主学習などの課題を検討したいと思う。

情報ネットワーク基礎後半レポート課題

情報ネットワーク基礎の後半のレポート課題は、以下の通り

メールがどのように届いたか

自分宛にメールを出し、そのメールヘッダなどの内容を確認し、そのメールがどの様に届いたか確認し、状況をレポートにまとめ提出せよ。

レポートでは、以下の点をまとめること。

  • どのように出したメールか
  • メールヘッダなどをどのように確認したか
  • メールヘッダから何が分かるか。

“Received:” タグなどに何が記載されIPアドレスとそのホスト名などの値を確認せよ。その他の主要なメールヘッダについても、どういった内容が記載されているのか確認し、メールの仕組みについて考察すること。

なお、個人のメールアドレスなどが、知られたくない場合は該当部分を部分的に消して資料を作成すれば良い。

書類のマナーを守ること / 追記(2019/02/14)

テスト返却日を前にレポートがメールで送られてくる。

ただ、課題レポートのマナーとか、メールのマナーがダメダメ。

課題レポートのマナー

今回は、メールの状態を調べてた内容のレポート。でも、Wordで記載して送ってくるとしても、誰が記載したどういったレポートなのか分からないものばかり。遅れてレポート課題を提出してくる可能性もあるのだから、

  • 課題タイトル・学科・学年・氏名

は先頭に明記すべきだろう。「ファイル名で判るでしょう?」という反論はあるかもしれないけど、印刷して保存されることも考慮するのがビジネス書類のマナー。

ビジネス書類であれば、

  • 基本はA4(もしくは相手が指定した書類サイズ)
  • 印刷&ファイリングを想定して左余白をとること

今回は、メールの内容を調べるという課題とはいえ、実験レポートの記載マナーに沿って、

  • 課題の概要(どういった内容を調べたのか)
  • 実験の方法(今回なら、どこのメールアドレスからどこに送ったのか)
    • 実験は再現性があることが絶対条件。
  • 記載した図などには、図番号、表番号、プログラムリスト番号付け、本文で引用すること

といった内容も記載すべき。

ファイル名も、別課題などと区別できるように、”3EI-45-ほげ太郎-メール調査.docx” といったものが望ましいかな。

       メールの詳細調査
                    3EI 45 ほげ太郎
1. 目的
メールの仕組みを理解するために、個人のメールアドレスから学校のメール
アドレスにメールを送った時の、メールヘッダを解析し、メールの仕組みを
理解する。

2. 調査方法
自分の個人メールアドレスには、au のメールアドレス xxxxxx@ezweb.ne.jp
を使い、学校のメールアドレス s99945ht@fukui.kosen-ac.jp にタイトル
「じっけん」、本文「写真の添付も付けてみた」、添付ファイルに、1024x640
pixcel の写真を付けて送信を行った。

3. 送信および受信の結果
送信の際の添付画像を図1に示す。

図1の写真を掲載

学校のメールアドレスに届いたものを、WebブラウザでOffice365を開き、
Outlook の機能を使って受信を確認した。(図2参照)

図2の写真を掲載

この内容を、Outlookの ...... の詳細を使って得られたヘッダは、
図3のような情報であった。

図3の内容を掲載

4. メールヘッダの詳細の内容
:

メールのマナー

ビジネスメールであれば、もっと細かいマナーがあるけど、最低限でも

  • 誰が出したか判るようにすること。学校のメールアドレスだとしても、本人が誰かすぐに判るようにすべき。
  • メールタイトルを明記すべき。ここで誰か判るように名前を書くのもアリだけど、本来は要件を書くべき。今回なら、「情報ネットワーク基礎の後半課題」といった内容だろう。

これを踏まえると、必要最低限でも、メールを出すなら次のようになるだろう。

From: s99945ht@fukui.kosen-ac.jp
To: t-hoge@fukui-nct.ac.jp
Subject: 情報ネットワーク基礎のメール調査の課題(3EI45 ほげ太郎)

情報ネットワーク基礎のメール調査の課題を、
添付ファイルにて提出します。

-- 
3EI 45 ほげ太郎 ← こういう部分はシグネチャ(署名)と呼ばれる

ただし、会社でのビジネスマナーであれば、もっと細かい注意が必要。

本文の先頭に送付先の名前などの「◯◯様」を書くとか、軽い挨拶の1行で始めて、最後は御礼の一言で締めるとか…。

セキュリティ対策

2段階認証

前回授業の暗号化の説明でも解説したように、パスワードはブルートフォース攻撃をうければ、いつかはパスワードが破られる危険性がある。こういった対策で最も重要な方法が、2段階認証(多要素認証)である。

この方式では、通常のパスワード入力の後に、以下の様な方式でワンタイムパスワードを入力することでログインが可能となる。

  • 携帯電話にテキストメッセージ(SMS)でワンタイムパスワードを送る。
  • かかってきた電話の機械音声のワンタイムパスワードを伝える。
  • 時間で変化するワンタイムパスワード生成アプリの数字を入力する。
  • メールで送られてきたワンタイムパスワードを含んだURLにアクセスする。
  • 認証画面に表示されたQRコードのURLにアクセスする。


SMSやワンタイムパスワードアプリは、携帯電話などを常に持ち歩いていることが本人確認となっている。このような方式では、携帯電話などを失くすとシステムが使えなくなるので、バックアップコード(非常時用のパスワード)の保存や、login先とは別のメールアドレスを登録してあることが重要となる。

CAPTCHA

最近では、フリーで取得できるメールアドレスをプログラムで動くロボットで生成し、そのアカウントを使ってspamを送るなどの手口が問題となっている。このため、接続してきた相手が人間か判定することがある。判定には、読みづらく加工された英字を入力させたり、パズルを解かせるといった方法が使われる。

セキュリティ

バッファオーバーフロー

クラッカーがサーバを攻撃する場合、サーバ上のプログラムの脆弱性を利用する。
サーバプログラムの脆弱性を利用する最も典型的な攻撃方法には、バッファオーバーフローがある。


こういった問題が含まれるアプリケーションは危険であり、こういった脆弱性が見つかったらプログラムの更新が重要である。

マルウェア

ウィルスとは、パソコン利用者の上で動く、感染能力のある悪意のあるプログラム。機械語で書かれたものや、オフィスソフトのマクロ機能で動くものもある。パソコン内の情報を利用して、ウィルス付きメールを自動的に送ることが多い。(メールソフトを使うなど、人の操作が必要なもの)

ウォームとは、脆弱性のあるネットワークプログラムに、バッファオーバーフローを引き起こすようなデータを送りつけて、ウィルスを送りつけたり、そのコンピュータを踏み台にしてネットワークを利用した攻撃をさらに行うもの。(ネットワークを介して悪意のあるプログラムを起動させるもの)

通常、インターネットからの攻撃を防ぐために、各組織ではFireWall(後述)を設置している。一方、FIreWallの内側では、防御されていることから内部のコンピュータからの攻撃に甘く、無防備であることが多い。そこで、FIreWall の内側のコンピュータに、メールなどの添付ファイルでマルウェアを送付・感染させることで、FIreWall内で被害が拡大することもある。

このような、FireWall 内部での感染・被害拡大を狙ったマルウェアは、トロイの木馬型と呼ばれる。

ネットワークを介した攻撃では、攻撃対象のコンピュータを乱数で得られたIPアドレスや、そのアドレスを1つづつ増やしながら攻撃を行うことが多い。こういった攻撃は絨毯攻撃と呼ぶ。

ボットとは、感染しても表面上は何もせず、クラッカーの動かすインターネットの掲示板などを監視し、そこに書かれた命令を見て spam 送信や、DoS攻撃を行うものがある。

DoS攻撃(Denial of Service attack) – サーバなどに大量のデータを送りつけたりすることで、サーバがその処理に手間取り、他の利用者のサービスに悪影響を引き起こさせる攻撃。

最近では、ウィルスやウォームの区別が難しいため、マルウェアと呼ぶ。

ファイアウォール

サーバで動かしているプログラムにバッファオーバーフローのような不備が残っていて、全世界のどこからでもこういった不備があるプログラムに簡単に接続できたとしたら、極めて危険である。

サーバで動くプログラムは、接続するためのポート番号が決まっているので、相手のコンピュータのIPアドレスが分かったら攻撃を仕掛けてくるかもしれない。

FireWall は、これらの接続をできなくするための方法で、例えば学内のWebサーバへの攻撃を防ぎたいのなら、ルータで「宛先ポート番号が80のパケットは廃棄」といった設定をすればよい。また、危険な攻撃を加えてくるコンピュータのIPアドレスがわかっている場合は、「送信元IPアドレスXX.XX.XX.XXのパケットは廃棄」という設定をすればよい。こういった、ポート番号やIPアドレスを見てパケットを遮断するルータは、FireWall(防火壁)と呼ばれる。

よくある設定であれば、ポート番号23(telnet),137,139(Windows ファイル共有),513(リモートデスクトップ)を禁止など(ブラックリスト型)、基本は全面禁止だけどポート番号22(ssh)は許可(ホワイトリスト型)など。

セキュリティ対策

  • OSの更新・インストールアプリケーションの更新
    バッファオーバーフローのような脆弱性が無いようにソフトウェアを更新することが重要。
  • 不審なメールは開かない
    添付ファイルにマルウェアがしかけられている可能性。リンクや画像ファイルを開くと、実際に使われているメールアドレスとして迷惑メールが増える可能性がある。
  • 危険なWebサイトをアクセスしない
    OSやブラウザの脆弱性から、マルウェア被害の可能性。
  • パソコンで不要なサービスを動かさない
    ファイル共有や、リモート接続のサーバを不用意に動かさない。
  • ウィルス対策ソフトをインストール&更新
    ウィルス対策ソフトは、新しく発生したマルウェアの命令などのパターンを保存しておき、同じパターンのものをマルウェアとして判定する。

    •  マルウェアは日々新しいものが作られるため、ウィルス対策ソフトのメーカーから、常に新しいマルウェアのパターンをダウンロード&更新が重要。
    • OSの脆弱性が見つかった場合、ウィルス対策ソフトのメーカーがマルウェアパターンを登録する前にマルウェアが届く場合がある。ゼロディ攻撃
    • 特定の企業を攻撃する場合は、その企業専用のウィルスを作る場合もある。このためマルウェアパターンが無いため、ウィルス感染の可能性がある。標的型攻撃
    • 最近では、ブラウザによるWebアクセスからの感染を防ぐために危険なURLへのアクセスを監視したり、危険なIPアドレス・ポート番号へのアクセスを監視する機能も含まれている。
  • このパソコンは重要な情報が入っていないから、ウィルスに感染しても放置するのは危険。他のコンピュータを攻撃する踏み台、DoS攻撃のボット、トロイの木馬となって危険の元となる。

一般的に、Apple社のiPhone iOS では、ウィルス対策ソフトは不要である。これは、App Store でアプリを公開するためには、プログラムのソースコードを提出した上での審査があり、デバイスも、App Store 以外からのアプリをインストールできないため、マルウェアのインストールがほぼ不可能なためである。一方、Google社のAndroidは、アプリの審査が甘く、Google Play アプリ以外からのソフトのインストールも可能であり、ウィルス対策ソフトが必要である。

理解度確認

  • 標的型攻撃メールがウィルス対策ソフトでは防ぐことが難しい理由を述べよ。
  • ファイアウォールでは、どういった処理を行うのか説明せよ

リモート接続と暗号化

リモート接続と暗号化について説明

リモート接続

サーバなどの管理をしていると、インターネットの先にあるコンピュータを操作したい場合が多い。こういった場合には、リモート接続機能を用いる。

リモート接続による相手側のコンピュータを操作する場合、相手側のコンピュータには リモート接続 用のサーバプログラムを起動しておく。こういったリモート接続を利用するのは、”unix” の利用者が多いが、”unix” では、サーバ のプログラムは、一般的にデーモン(daemon/守護神)と呼ばれる。

telnet と rlogin

telnet は、最も基本的なリモート接続の方法であり、TCP の 23 番ポートを使う。telnetのサーバ(telnetd)は、送られてくるタイプされた文字を unix の shell (キーボードでの命令を実行するプログラム) に渡し、shell の実行結果の文字を接続元に送り返す。

telnet のクライアントの基本的動作は、タイプされた文字を送って、受信した文字データを表示するだけなので、通信の動作の確認にもよく使われる。

例えば、Webサーバは、80番ポートに”GET /ページの場所”を送ると、HTMLデータが受信できる。

rlogin は、TCP の 513 番ポートを使うリモート接続用のソフトで、サーバで rlogind を起動しておく。unix で rlogin クライアントを使うと、リモート側で命令を実行したりファイルをコピーすることができる

こういったリモート接続ができると、ネットワークの向こう側のコンピュータを自由に操作できる一方で、login のパスワードが破られるとコンピュータを悪用されたり情報を盗まれる可能性がある。
特に、telnet , rlogin では、通信の内容が暗号化されないため、パケット盗聴(後述)されると、サーバを悪用されてしまう。

このため、ルータや firewall では、ポート番号 23 , 513 などは、遮断するのが一般的である。

ssh(secure shell)

暗号化されない rlogin の通信を暗号化により安全に実行できるようにしたものが、ssh (secure shell) である。
ssh は、通常では TCP の 22 番ポートを使う。しかし、暗号化されていたとしてもパスワード破りなどの危険性があるため、ポート番号を変更したり、特定のコンピュータに対してのみ接続許可を与え、安全対策を行う。

リモートデスクトップ

Windows では、コンピュータの操作では、マウス操作が中心(GUI: Graphical User Interface)となる。これに比べ、telnet,rlogin,ssh などの方法では、キーボードによる操作が中心(CUI: Character User Interface)であり、初心者には難しい。こういう場合はリモートデスクトップ(remote desktop)が用いられる。

remote desktop では、サーバのディスプレイ画面の情報をクライアントに送り、クライアントの操作(キーボード入力やマウス操作)がサーバに送られ、サーバのコンピュータを自由に操作ができる。

sshやリモートデスクトップは、遠隔地のコンピュータを自由に操作できることから、様々なコンピュータを管理している場合、広く使われている。しかしながら、クラッキングなどの悪用の危険があるため、sshサーバ、リモートデスクトップサーバなどのソフトは、通常利用者は起動しないこと

クラッキングなどを行う場合、ウィルスを使ってリモート接続のためのソフトを動かされると、相手のコンピュータを自由に使える。このような、本来の使い方ではない侵入経路は、バックドアなどと呼ばれる。

暗号化

Ethernet では1本の通信線を共有したり、WiFiのような無線通信では、通信データの盗聴が簡単にできてしまう。クラッカーは、通信データの中から”login, password” といった文字を検索し、その近辺の文字を探すことでパスワードを盗み出す。

このようなことを防ぐために通信データの暗号化は重要な方法である。

暗号化アルゴリズム

暗号化の最も原始的な方法が、置換式 と呼ばれる方法で、特定の文字を別な文字に変更する。rot13は、A→N,B→Oに置き換える暗号。コナン・ドイル原作のシャーロック・ホームズに出てくる踊る人形などもこれに相当する。これらの方法では、アルファベットの文字の出現頻度から元の文を想像することで解読されてしまう。

エニグマ(Enigma)は、第2次世界大戦でナチス・ドイツが用いたロータ式暗号機であり、置換式の解読方法が不可能であった。しかし、イギリスのアラン・チューリングが電気式の解読器を開発することで暗号解読が可能となった。この解読器が現在のコンピュータの原型となっている。

チューリングによる暗号解読は、映画「イミテーションゲーム」を参照。

最近では、様々な暗号化アルゴリズムが開発されており、古くは “DES, AES“といったアルゴリズムが使われていたが、コンピュータの性能の向上と共に、解読に必要な時間が短くなったことから、RSA といった新しい暗号化方式が考えられ、さらに暗号化の鍵を長くすることで解読に要する時間を長くするようになっている。

パスワード解読方法

ログインなどで使われるパスワードは、どのように破られるのだろうか?

  • ブルートフォース攻撃:単純に全ての文字を試す方式。文字の組み合わせ問題なので、パスワード文字列長をNとした場合、数字だけ(10N)とか英字だけ(26N)といった組み合わせでは、短時間に解読されてしまう。数字,大文字,小文字,記号などを交えたパスワードが理想。
  • 英単語辞書を用いた辞書攻撃:パスワードが長い場合、文字列の全ての組み合わせを試すには長い時間が必要となる。しかし、パスワードはユーザが記憶して使うことから覚えやすい単語が使われる。このため英単語辞書の文字を組み合わせることで、解読時間を短くできる場合がある。
  • 漏えいパスワードによる辞書攻撃:サーバへのリモート接続などができてしまった場合、パスワード情報が盗まれる場合がある。この時、別なサイトに同じパスワードを使っていると、その漏えいしたパスワードで別のサイトも接続ができてしまう。これらのことから、同じパスワードを使いまわすことは避けるべきである。
  • ソーシャル攻撃:パスワードには、簡単に覚えられるように自宅の電話番号、誕生日、家族の名前といったものを使う人が多い。このため、SNS で相手に友達登録をしてもうことで、こういった情報を手に入れ、パスワードを破る方法。最近の有名人の個人情報漏洩はこの手の攻撃が多い。

    ソーシャル攻撃は、元クラッカーケビン・ミトニックが有名

攻撃が難しい暗号化へ

先に述べたような、login に使うパスワードなどは、ブルートフォース攻撃をうけると解読は時間の問題となる。これらの対策として毎回違う鍵(パスワード)を使えばいい。

  • 暗号表:置換式で読み取られるのを防ぐために、置換する文字の表を沢山作っておき、別の方法でその度毎に置換表を変更する
  • ワンタイムパスワード:使い捨てのパスワードをあらかじめ沢山作っておき、接続の度に次のパスワードを用いる方式。あるいは、時間から特殊な計算方法で生成されるパスワード。時間と共に変化するのでその度毎に違うパスワードとなる。毎回違うパスワードを入力するため、パスワード表を常に持ち歩いたり、入力が面倒なので数字だけを使うことが多く、この方法だけでは使いにくい。

公開鍵暗号方式

以前に使われていた暗号化の方式は、暗号化の鍵と復号化の鍵に同じものを用いる共通鍵方式であった。
しかし、この鍵をどうやって相手に渡すか…が問題となっていた。(鍵を相手に渡す瞬間のデータを盗聴されると危険)

このため、最近では公開鍵暗号方式が中心となっている。この方式は「暗号化するため専用公開鍵」と、「暗号化を復号するための秘密鍵」をペアにして用いる。公開鍵は、暗号化するため専用なので、この鍵が他の人に見られても、暗号を復号することはできない。

公開鍵暗号方式では、RSA などが最も有名で現在広く利用されている。

理解度確認

  • 公開鍵暗号における、秘密鍵・公開鍵・共通鍵とは何か。
  • ファイアウォールの仕組みを説明せよ。

WWWとhttp

WWWとhttp

WWWとは、ティム・バーナーズ=リーによって作られたサービスであり、元々は研究データの論文やデータの共有のために作られた。この際のWebサーバのデータのやり取りのためのプロトコルがhttp(Hyper Text Transfer Protocol)であり、ポート番号80のTCPを用いたものであり、最近では通信を暗号化したhttps(ポート番号443)も多く使われる。

httpでは、文字データの中に画像や音声といった情報に加え、他のデータへのリンクを埋め込むことができる HTML(Hyper Text Markup Language) のデータがやりとりされる。このHTML形式のデータを表示するためのソフトは、ブラウザと呼ばれる。

URL

WWWのデータの場所を示すものが、URL(Uniformed Resource Locator)であるが、最近ではインターネットが複雑化しLocator という表現が難しいため、URI(Uniformed Resource Identifier)と呼ぶようになってきた。

URLは基本的に、スキーマ://コンピュータ名/サーバ内ファイル位置 といった文字で構成される。URL は、HTTP だけでなく、インターネットの情報の場所を記述するために使われており、httpやhttps以外にも使う。

http

httpのサーバ(Webサーバ)とブラウザでは、以下のような手順で処理が行われる。例えば http://www.ei.fukui-nct.ac.jp/~t-saitoh/index.html のページが表示されるまでを考えると、

  1. ブラウザのURL欄に、目的サイトのURLを入力。
  2. 基本的には、スキーマ欄に記載されたプロトコル(http)名から、ポート番号と通信方法(http)を決める。
  3. コンピュータ名部分(www.ei.fukui-nct.ac.jp)を DNS に問合せして、得られたIPアドレスのコンピュータに接続。
  4. httpの最も簡単な GET メソッドでは、Webサーバに、サーバ内のファイル位置(/~t-saitoh/index.html)を伝えると、Webサーバは指定された場所のファイルを返送する。
  5. HTML形式のデータが指定された場合、ブラウザはその HTML をどの様に表示するか判断しながら表示する。

このような予め保存されているWebページを返送する場合は静的ページと呼ばれる。サーバのデータベースなどを参照しながらページ内容を返送する場合は、動的ページと呼ばれ、CGI(Common Gateway Interface) という手法が使われたり、動的なページを表示するためのプログラム言語(例えばPHP)が使われる。

サーチエンジン

インターネットでは、大量のWebページが出現してきたため、自分の目的に応じてWebページを探す機能が必要となってきた。このような目的のWebページを検索してくれるシステムは、サーチエンジンと呼ばれる。

ディレクトリ型

最初に現れた検索システムは、ページ作者が自分のページのURLと内容となるキーワードを登録しておき、内容のカテゴリー別に、ページの紹介文章が表示されるディレクトリ型であった。(初期のYahoo)

しかし、登録するキーワード以外の文字で探そうとすると、情報を見つけることができない。

ロボット型

これらの問題を解決すべく登場したのが、Google のようなロボット型サーチエンジンである。
ロボット型の検索システムでは、クローラーとかロボットとか呼ばれるプログラムを使い、Webページの内容をダウンロードし、そこに記載された文字を使ってURLのデータベースを作成する。

  1. 与えられた URL の先のページをダウンロードする。
  2. ページ内の文字を単語に切り分けして、それぞれの単語とURLを関連付けてデータベースに保存
  3. ページ内にリンクが含まれていたら、そのURLで、この作業を再帰的に繰り返す。

サーチエンジンで検索が行われると、クローラーの処理で作られたデータベースに問い合わせ、見つかったURLの情報を表示する。

Googleなどでは、多くのユーザが探したいページを提供するために、たくさん使われている単語を重要語としたり、たくさんのページからリンクされているページを表示順上位に表示するような工夫をしている。(逆にページランキングを不当に上げるようなページ作りをする人もいるので注意が必要)

理解度確認

  • URLが与えられてページが見れるまでに行われることを説明せよ。
  • サーチエンジンのディレクトリ型とロボット型の違いを説明せよ。

メールヘッダとspam

メールヘッダ

メールを出すときには、宛先やタイトルや本文などの情報がついている。

From: foo@bar.jp      送信元のメールアドレス
To:   hoge@piyo.jp    送り先のメールアドレス
Cc:   hogehoge@bar.jp 送信内容を確認してもらうためのコピーの送り先
Bcc:  hogefuga@bar.jp 送信相手にコピーしたことが見えないように送る時
Subject: 会議の議事録  メールのタイトル
Date: 2019年 1月 9日 12:34:56 メールを送った時間
本文
-- 
署名

送信相手に届くメールでは、上記以外にも様々な情報がつけられる。これらの情報を見ると、迷惑メールか確認することもある程度可能となる。

Received: from 送信元 by 受信サーバ
Reply-To: 返信する際の送り先
Return-Path: 送信に失敗した時に送り返す先
DKIM-Signature: メールサーバの公開鍵署名
Received-SPF: 送信元のDNS情報など

spam

メールでは、送信時に送信者の認証をしないので、送信元の名前を偽ってメールを送ることが簡単にできる。このため、広告目的、ウィルス感染目的にメールがよく使われる。こういったメールは、一般的に spam と呼ばれる。

イギリスのコメディグループ・モンティパイソンが、コントの中で、しつこくspam,spam,spam,spam….と、騒ぐ様からspamと呼ばれるようになった。大文字のSPAMと書かないこと。(ランチョンミートの缶詰)

なぜspamが届くのか?

たぶん、メールを利用していると、誰でも spam が送られてきた体験があるはず。でも、自分のメールアドレスがどうやって、送信元に知られてしまったのだろうか?

インターネットで企業などでメールアドレスを記入して、そこから情報が漏れたのだろうか?実際、企業がクラッキングに会い、情報漏えいの場合もあるが、一般的には、“aaa”さん、”aab”さん、”aac”さんといったように、文字列の組み合わせを順次組み合わせてユーザ名を作って送っているだけである。当然、このような方法では、宛先不明のメールが発生するが、迷惑メールの送信業者はそんなことは気にしない。ただし、大量の迷惑メールを送ると、インターネットの接続業者に目をつけられてアカウント停止となるため、ウィルスに感染させたパソコンを遠隔操作してspamメールを送るのが一般的である。このため、以下のことはしないこと。

  • 迷惑メールの送信元に抗議メールを送らない。(From欄にメールアドレスを勝手に使われる場合がある)
  • “I Love You”とか”くじに当選しました”といったメールはその時点で怪しい。
  • 怪しいメールを開封しない。(ウィルスなどが添付されている場合がある。)
  • メールの中のリンクをクリックするのは危険。(有名企業名を偽って怪しいサイトに誘導される可能性)

ポート番号とメールが届くまで

ポート番号

サーバとなるコンピュータでは、1台のコンピュータで様々なサービスを提供することから、サービスを区別する必要がある。このためにポート番号が使われる。1台毎のコンピュータに割り当てられたIPアドレスを電話番号に例えるなら、ポート番号は内線電話番号に例えることができる。

サーバと通信する場合、サービスを提供するプログラムに応じて標準的なポート番号が決められている。サーバに届いたパケットは、ポート番号に応じてサービスプログラムを起動する。以下の表によく使われるポート番号の一例をあげる。

通信パケットには、送信元IPアドレス送信元ポート番号送信先IPアドレス送信先ポート番号の情報がある。
パソコンがサーバと通信する場合は、(1)自分のIPアドレスを送信元IPアドレス、(2)その時に使われていないポート番号をランダムに選び、送信元ポート番号とする。(3)通信相手のIPアドレスと、(4)通信先のサービスのポート番号をセットして、パケットを送付する。サーバは、サービスを要求してきたクライアントの送信先ポート番号をみて、対応するサーバのプログラムを起動する。プログラムの結果を送り返す時は、送信元と送信先のIPアドレス、ポート番号を入替えてパケットを送信する。

1024未満のポート番号は、サービスを受けとるために用途が決められている(Well Known Port)ので、通常の通信では使われない。

ファイアウォール

ネットワークのサービスの中には、組織外に見せたくないものも多い。また、インターネットでは、悪意のあるプログラマが通信して攻撃を加えてくるかもしれない。こういった場合には、ルータなどで、パケットの送信相手のポート番号や、送信元のIPアドレスをみて、パケットを廃棄する場合がある。こういう、ネットワークからの攻撃を防ぐ装置は、ファイアウォール(防火壁)と呼ばれる。

メールが届くまで

電子メールは、非常に迅速にメッセージを相手に届けることができ、そのメッセージを蓄積・加工・編集・転送できる。また、音声や画像といった情報も、複雑な文字情報に置き換えることで、転送できるようになっている。

メールは、利用者のコンピュータに直接届けられるわけではなく、多くの場合はメールを蓄積するメールサーバに送られる。利用者がメールを読む場合、メールサーバから自分の端末に蓄積されたメッセージを読み込み、メッセージを確認する。このメールのやり取りにおいて、メールを送る時、あるいはメールサーバ間でメールを中継するときには、SMTP(Simple Mail Transfer Protocol) が用いられる。一方、メールサーバからメール
を読み出すときには、POP(Post Office Protocol)IMAP(Internet Message Access Protocol) と呼ばれるプロトコルが用いられる。

メールが届くまでの流れは、aさんが”foo@bar.jp”に送る場合、

  1. aさんは、自分の組織のメールサーバに、SMTPでメールを送る。
  2. メールサーバは、メールアドレスのコンピュータ名部分”bar.jp”をDNSに問合せ、そのIPアドレスを調べ、そのコンピュータにSMTPでメールを送る。
  3. “bar.jp”のメールサーバは、メールアドレスのユーザ名部分を取り出し、各ユーザ毎にメールを保存する。
  4. “foo”さんは、自分宛のメールを確認するために、POPまたはIMAPで自分のメールサーバ”bar.jp”に接続し、ユーザ名,パスワードで認証して自分宛のメールを受け取る。

上記の手順2で、相手のメールサーバに直接送れない場合は、コンピュータ名のMXレコードをDNSに問合せを行い、そこで得られたメールサーバに中継を依頼する。

$ nslookup -query=MX fukui-nct.ac.jp
Non-authoritative answer:
fukui-nct.ac.jp mail exchanger = 10 ews.ip.fukui-nct.ac.jp.

POPは、一般的に、メールサーバから自分のメールをダウンロードして削除してしまうため、メールはダウンロードしたコンピュータにしか残らない。このため、様々なコンピュータでメールを読む人には不便となってきた。IMAPでは、メールを読んでも、サーバに残しておく方式であり、別のコンピュータを使う時にもサーバに残っているメールを読むことができる。

通常、SMTPでメールを送る際には、ユーザ認証が行われない。このため、ウィルスに感染したプログラムから迷惑メールを出すことに利用されることが多い。そこで、SMTP送信の前にPOP/IMAP接続しユーザ認証を行った時だけメールを送れる、POP before SMTP(or IMAP before SMTP)といった方式をとる場合もある。

理解度確認

  • メールの送信から受信までの処理を、それに使われるプロトコルを交えて説明せよ。

ドメイン名とDNS

ドメイン名とDNS

インターネットでの通信では、IPプロトコルでコンピュータを指定するが、IPアドレスは無機質で覚えるのが大変であり、コンピュータに名前をつけて利用する。この際に、コンピュータの所属などが分かるようにしたものをドメイン名と呼ぶ。

例えば、電子情報工学科のドメイン名 www.ei.fukui-nct.ac.jp は、ピリオド部分で区切られ、以下のような意味を持つ。

  • .jp – 国ドメイン(.uk イギリス,.ch 中国,アメリカは無し)
  • .ac – 種別ドメイン(.co.jp,.com:会社,.ne.jp,net:ネットワーク系)
  • fukui-nct – 組織ドメイン
  • .ei. – サブドメイン(組織内が細分化されている場合)
  • www. – ホスト名

ただしアメリカでは、国ドメインを一般的に使わない。また最近では、世界的な企業では国ドメインが意味をなさないので、アメリカ以外でも .com や .net といった、トップレベルドメインが使われる。様々なサービスを展開している企業では、組織種別が意味をなさないため、toyota.jp といったものも増えてきた。

以下に、主要な組織ドメイン・国ドメインをあげる。

DNSのしくみ

DNSは、Domain Name Service であり、コンピュータ名(ドメイン名)から、IPアドレスを調べるサービスで、ポート番号53,UDPを使っている。

インターネットに接続する際には、最も身近なDNSの情報が与えられ、ユーザがコンピュータ名を問い合わせると、身近なDNSがコンピュータのIPアドレスを返してくれる。この際に、検索結果はキャッシュとして一定期間保存される。身近なDNSがそのコンピュータ名を知らない場合は、上位のDNSに問い合わせを行い、DNSルートサーバもコンピュータ名をキャッシュしていない場合は、管理元の組織のDNSに問い合わせが行われる。


DNSと様々な情報

DNS では、様々な情報が取得できる。IPアドレス以外にも、メールを送ってもらうサーバのIPアドレス(MXレコード)なども取得できる。

DNSとセキュリティ

DNSは、コンピュータ名とIPアドレスを対応付けるものであり、これには正引き(コンピュータ名からIPアドレスを求める)と、逆引き(IPアドレスからコンピュータ名を求める)がある。セキュリティ対策が厳しい場所では、

  • 正引きを使うことで、特定の組織のドメイン名を持つコンピュータからのアクセスを許可/禁止する。
  • 正引きで、コンピュータ名が登録されている所からのみ許可する。
  • IPアドレスから逆引きして求めたコンピュータ名をさらに正引きして同じIPアドレスが求まるかを確認

といった対策を行う。

  • DNSのドメイン名は、当初は最初に申請した人に割り当てられる。このため、nintendo.com といったドメイン名を、関係ない人が取得するといったトラブルがあった。(サイバースクワッティング)
  • DNSを用いたクラッキングでは、ウィルスに感染させたパソコンに偽物のIPアドレスを教えることで、偽装した別コンピュータに誘導し個人情報を盗む手口がある。(DNSポイズニング)
  • 他にもウィルスに感染させた大量のパソコンから、同時にルートサーバに大量のDNSの問合せを送ることで、処理能力を低下させると、インターネット全体でDNS参照ができなくなる攻撃もある。(DNSルートサーバへの分散DoSアタック)