情報セキュリティ 第 10 回 :2007 年 6 月 22 日 ( 金 )
今後の予定 第 10 回 :6 月 22 日 暗号化ソフトウェア :SSL,SSH 第 11 回 :6 月 29 日 サーバセキュリティ 第 12 回 :7 月 6 日 理論 : 計算論, 暗号プロトコル 第 13 回 :7 月 13 日 企業 組織のセキュリティ :ISMS, 個人情報保護法 第 14 回 :7 月 20 日 質問に答えます, おさらい問題 第 15 回 :7 月?? 日 ( 試験期間中 ) 試験 2
本日学ぶこと Web の通信を暗号化 :SSL (Secure Socket Layer) リモートログインの暗号化 :SSH (Secure SHell) https:// は HTTP + (SSL/TLS) ssh は telnet, rlogin, ftp などを置き換える 3
SSL/TLS HTTP などより下位の層に位置し, 暗号通信の枠組を提供するもの SSL と TLS (Transfer Layer Security) 大枠は同じ,TLS は SSL の後継 よく用いられるバージョンは,SSL 3.0 と TLS 1.0 4
SSL/TLS でできること HTTP の暗号化 (HTTPS) http:// から https:// へ アプリケーション層の他のプロトコルの暗号化 メール (SMTP,POP3) ファイル転送 (FTP) は FTPS(FTP Over SSL/TLS) (HTTPS) (FTPS) HTTP SMTP POP3 FTP SSL/TLS 5
暗号スイート 使用する暗号技術の お勧めセット クライアント サーバ間で暗号スイートが一致していなければ, 通信できない. 例 SSL_RSA_WITH_RC4_128_SHA SSL_RSA_WITH_RC4_128_MD5 SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_RSA_WITH_NULL_SHA TLS_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_RC4_128_MD5 RC4は対称暗号アルゴリズムの一つ DES40は鍵長 40ビットのDES NULLは暗号化しない 6
証明書 PKI の公開鍵証明書 だれが発行し, ディジタル署名をつける? ベリサイン社が最も有名 自分で作ることもできるが, 信頼度が下がる 鍵をもらえば, どのコンピュータにつけてもいいの? 鍵は通常, ホスト名 (FQDN) 単位で発行される オレオレ証明書 に注意! 偽装サイトに誘導されるかもしれない 通信が暗号化されるので安心です に騙されないように 7
ハンドシェイクプロトコル SSL/TLS 通信の確立をするため, クライアント - サーバ間で交わされるプロトコル 暗号化はしない すること 以降の通信で使用する暗号スイートを取り決める 証明書の検証により, ホストの正当性を確認する 基本的にはサーバ証明書をクライアントが検証する クライアント証明書をサーバが検証することも ( クライアント認証 ) 以降の通信で暗号化に使用する鍵など ( マスタシークレット ) を共有する 8
その他のプロトコル レコードプロトコル これ以外のプロトコルの基盤となる. 対称暗号で暗号化される. 暗号仕様変更プロトコル 暗号スイートを切り替える. 警告プロトコル エラーを通知する. アプリケーションデータプロトコル ハンドシェイクプロトコルを終えてから, 送りたい情報を ( 暗号化して ) やりとりする. 9
SSL/TLS が守らないもの 個々の暗号技術は守らない 個々の暗号技術の一つが安全でないと分かったら, それを使用しない暗号スイートを選べばよい 通信前の情報は守らない パスワード カード番号を入力したら, ショルダーハッキングやキーロガーによって知られてしまうかも 通信後の情報は守らない SMTPやPOP3の経路を暗号化しても, メールサーバ間のやり取りは平文になる 情報漏えいの原因の多くは, サーバのデータ管理ミス 10
SSH リモートホストとの通信を安全に行うためのプロトコル クライアントは, サーバ ( リモートホスト ) の認証をする サーバは, ユーザの認証をする telnet, rlogin, ftp などのコマンドを置き換える SSL/TLS や VPN (Virtual Private Network) とは別物 ローカルホスト (SSHクライアント) リモートホスト (SSH サーバ ) 11
SSH でできること リモートログイン ssh, slogin ポートの転送 ( ポートフォワーディング ) ファイルのコピー scp FTP と似た方法でファイルをコピー sftp 12
SSH の種類 製品かフリーか SSH Tectia SSH 社の製品 OpenSSH フリー.Linux でも広く使われている プロトコルバージョン SSH1 安全性に問題があり, 使われない SSH2 広く使われている 製品のバージョンとは別! 13
準備 リモートホストで SSHサーバを起動させておく TCPのポート番号 22にアクセスできるようにしておく 以下の説明で出るファイル名は,Linux + OpenSSH で ssh を利用するときの標準的なもの 14
SSH2 プロトコルの概要 クライアント ( ローカルホスト ) サーバ ( リモートホスト ) 接続要求 バージョン番号通知,ID 交換 鍵交換, ホスト認証, 暗号化情報の交換 セッション暗号化, ユーザ認証 データ通信 図の出典 : 情報セキュリティプロフェッショナル総合教科書 p.374( 一部改変 ) 15
SSH2 で使用される暗号アルゴリズム 公開鍵認証 RSAまたはDSAによるディジタル署名 鍵の共有 Diffie-Hellman 鍵交換の修正版 RC4 ( 本日のスライド p.6 参照 ) 互換の暗号アルゴリズム 認証後のデータ通信 AES / 3DES / Blowfish / Arcfour / CAST などから選ぶ データ通信の暗号化は公開鍵暗号ではなく対称暗号 鍵の共有や公開鍵認証で乱数を使う 16
サーバ公開鍵について ホスト認証 ( 利用者から見たサーバの認証 ) の注意点 サーバ公開鍵 ( サーバのホスト公開鍵 ) は,SSH サーバが最初に 1 回だけ生成する.( ユーザは生成しない.) サーバ公開鍵の送付時に man-in-the-middle 攻撃が可能! 最初に送付されるサーバ公開鍵は, ユーザの目で確認して, yes/no を選ばなければならない. 確認方法 fingerprint の照合 自己責任で yes を選ぶこともある サーバ公開鍵を, 何らかのメディアで転送してもよい. サーバ公開鍵は ~/.ssh/known_hosts に保存される. それ以降の同じサーバとの接続では, 自動的に確認される. サーバが鍵を作り直したら, クライアント側は古い公開鍵情報を削除しなければならない. 17
ユーザ認証の方法 ユーザ認証 ( サーバから見た利用者の認証 ) の注意点 パスワード認証 ログインごとにパスワードを入力従来のリモートログイン (telnet, ftpなど ) を安全に行える 字数が少なく安全性にやや不安 公開鍵認証 ログインごとに, ログイン用パスワードとは異なるパスフレーズ (passphrase) を入力 エージェント (ssh-agentコマンド) の利用により, パスフレーズ入力の省力化が可能 あらかじめローカルホストで鍵ペアを生成し, ~/.ssh/authorized_keys に公開鍵を登録しておく. どの認証方法を許可するかは,/etc/sshd/sshd_config に記載する ( 編集にはroot 権限が必要 ). 18
ポート転送 学外から ssh -L 10110:POP サーバ :110 リモートホスト を実行すると リモートホストにログインし, コマンド実行などができる. ローカルホストでは, POPサーバ :110 に代えて localhost:10110 でメール受信(POP) が安全にできる. リモートホスト -POP サーバ間は暗号化されていない ローカルホスト リモートホスト POP サーバ ssh -L ポート番号 :localhost: ポート番号リモートホスト が有用なことも 19
Windows で利用可能な SSH クライアント Cygwin の ssh コマンド UNIX 上のコマンドとほぼ同じ動作 PuTTY リモートログイン GUIで各種設定 WinSCP GUI でファイル送受信 20
PGP とSSL とSSH 共通点 セッション鍵を作り, 対称暗号で暗号化して通信する. ユーザやホストの正当性はディジタル署名による. そのために公開鍵を持つ. 公開鍵 ( 証明書 ) の正当性確認に人間が関わる. 相違点 PGPはファイル ( メール ) を暗号化する. あるいはファイル ( メール ) に署名をつける. SSLはHTTPやSMTP,POPなど, クライアント / サーバモデルの通信を暗号化する. SSHはリモートログイン ( ログアウトするまで ) を暗号化する. ポート転送などの機能で, ついでに他の通信も暗号化できる. 21