q q 情報セキュリティ 第10回:2005年6月17日(金) q q 今後の予定 第10回:6月17日 q q 第11回:6月24日 q 企業・組織のセキュリティ:ISMS,個人情報保護法 第14回:7月15日 q 理論:計算論,暗号プロトコル 第13回:7月8日 q サーバセキュリティ 第12回:7月1日 q 落ち穂拾い(1) 暗号化ソフトウェア:PGPとGnuPG,SSH 落ち穂拾い(2),おさらい問題 第15回:7月22日 q 試験 2 落ち穂拾い:RSAの安全性(1) 素因数分解が効率よく行えるなら,RSAは安全でない. 略証: q q NとEを既知とし,(素因数分解により)Nの素因数pが知られて いるときに,Dを計算できればよい. q=N/p,L=lcm(p-1,q-1) とし,aE+bL=1を満たす整数の組(a,b) を拡張ユークリッド法により求めれば,D = a mod L. 3 落ち穂拾い:RSAの安全性(2) 離散対数問題を効率よく解けるなら,RSAは安全でない. 略証: q q NとEを既知とし,ここから「任意の整数値Mに対して (ME mod N)D mod N = M」となる整数Dを計算できればよい. 整数n1 を2≦n1<N の範囲で任意に選び,n2=n1E mod Nを計 算してから,n2x mod N = n1を満たす整数xを求めると(離散対 数問題),D=xかもしれない. n1がNの生成元であれば,D=xとしてよい. n1がNの生成元でなければ,複数の解があり得るが, n1 をいくつか選んで計算すれば,Dを特定できる可能性が 高くなる. 4 本日学ぶこと 暗号化ソフトウェア q q PGP (Pretty Good Privacy) と GnuPG (GNU Privacy Guard) …メールやファイルの暗号化 SSH (Secure SHell) …通信の暗号化 5 PGPの鍵リング(key ring) 各利用者が鍵を管理 q q q それぞれの鍵は,作成者も鍵長も暗号アルゴリズムも様々 [email protected]の鍵は,だれでも生成可能 GnuPGでは,~/.gnupg 以下のファイル 6 GnuPGで行う操作(1) 自分の鍵(公開鍵&プライベート鍵) q q q q 鍵ペア生成 破棄証明書の作成 公開鍵暗号による復号 署名(ファイル,他人の鍵) 他人の鍵(公開鍵) q q q q q インポート 署名 信頼度設定 公開鍵暗号による暗号化 署名の検証 7 GnuPGで行う操作(2) 鍵リング q q q q その他 q q 鍵の書き出し(テキスト化) 鍵のインポート・削除 鍵一覧・fingerprint 公開鍵サーバへ鍵を送受信 公開鍵サーバで鍵の検索 対称暗号による暗号化と復号 使い方は,ここをブックマーク! q http://seorg.moo.jp/nateha/index.php?GnuPG 8 PGPのインポート(import) 鍵を鍵リングに取り込むこと q q q 鍵の入手方法は… q q 主に他人の公開鍵 自分の鍵(公開鍵&プライベート鍵)は, 鍵ペア生成で自動的にインポートされる 破棄証明書をインポートすることも 本人,または信頼できる人からファイルで インターネットで,公開鍵サーバ(keyserver)から インポートの後は? q q まず①正当性を確認,②自分の鍵で署名,③信頼度設定 そうすれば,暗号化や,署名の検証ができる. 9 公開鍵をインポートしたら 他人の公開鍵をインポートしただけでは q q その鍵が正当なものかわからない. その鍵で暗号化・署名の検証などをしてはいけない. 正当性の確認:所有する鍵のfingerprintを求め, 別に公開されているfingerprintと照合する. q 「Takehiko Murakawa <[email protected]>」 (ID: 3A423EBE)のfingerprintは 564B 8D8E C58A 0D78 8294 F3E9 0D23 DE18 3A42 3EBE 自分のプライベート鍵で「鍵に署名」をつけると,自分はその 鍵を信頼したことになる. 信頼度(所有者信頼)は,第三者がその鍵を信頼するための 情報 q 信頼度情報を,公開鍵サーバに送ることができる. 10 鍵の破棄 鍵リングから鍵を削除するコマンドを実行する 自分の鍵は? q q 鍵ペア生成後すぐ,破棄証明書を作成しておく 不要になったほかに,漏洩(compromise)の疑惑があれば, 破棄証明書を鍵リングにインポートしたのち, 公開鍵サーバに送信すればよい. (鍵リングからの削除はしないほうがよい.) 11 Windowsで利用可能なGnuPG Cygwinのgpgコマンド Windows Privacy Tools (WinPT) 12 PGPで暗号化・復号のできるメールクライアント Windows用 q q q Datula (シェアウェア) Becky! (シェアウェア) Thunderbird + enigmail など Linux用 q q Sylpheed (6階演習室ではできない) Emacs + Mew 13 PGPで暗号化メールを送ってみたい人へ 第2回レポートを, 「Takehiko Murakawa <[email protected]>」の鍵で暗号化して メールで送ってかまいません. q q q 期限は,Thu, 23 Jun 2005 12:00:00 +0900まで.それ以降の メールは平文で送ること. 復号できたら,その旨返信するとともに,加点します. 復号できなかったら,再送依頼のメールを送ります. メールクライアントで暗号化するのでも,レポートのファイル (doc, pdf, txt)を暗号化して添付するのでもかまいません. ディジタル署名はつけないでください. 14 SSH リモートホストとの通信を安全に行うためのプロトコル q q クライアントは,サーバ(リモートホスト)の認証をする サーバは,ユーザの認証をする telnet, rlogin, ftp などのコマンドを置き換える SSL/TLSやVPN (Virtual Private Network)とは別物 ローカルホスト (SSHクライアント) リモートホスト (SSHサーバ) 15 SSHでできること リモートログイン…ssh, slogin q ポートの転送(ポートフォワーディング) ファイルのコピー…scp FTPと似た方法でファイルをコピー…sftp 16 SSHの種類 製品かフリーか q q SSH Tectia…SSH社の製品 OpenSSH…フリー.Linuxでも広く使われている プロトコルバージョン q q q SSH1…安全性に問題があり,使われない SSH2…広く使われている 製品のバージョンとは別! 17 準備 リモートホストでSSHサーバを起動させておく TCPのポート番号22にアクセスできるようにしておく 18 SSH2プロトコルの概要 クライアント サーバ 接続要求 バージョン番号通知,ID交換 鍵交換,ホスト認証,暗号化情報の交換 セッション暗号化,ユーザ認証 データ通信 『情報セキュリティプロフェッショナル総合教科書』p.374より(一部改変) 19 SSH2で使用される暗号アルゴリズム 公開鍵認証 q 鍵の共有 q Diffie-Hellman鍵交換の修正版 認証後のデータ通信 q RSAまたはDSAによるディジタル署名 AES / 3DES / Blowfish / Arcfour / CAST などから選ぶ データ通信の暗号化は公開鍵暗号ではなく対称暗号 鍵の共有や公開鍵認証で乱数を使うが,チャレンジ-レスポ ンス方式ではない(SSH1では使用する) 20 サーバ公開鍵について サーバ公開鍵(サーバのホスト公開鍵)は,SSHサーバが 最初に1回だけ生成する.(ユーザは生成しない.) サーバ公開鍵の送付時にMan-in-the-middle攻撃が可能! 最初に送付されるサーバ公開鍵は,ユーザの目で確認して, yes/noを選ばなければならない. q q q ホスト認証(利用者から見た サーバの認証)の注意点 確認方法…fingerprintの照合 自己責任で「yes」を選ぶこともある サーバ公開鍵を,何らかのメディアで転送してもよい. サーバ公開鍵は ~/.ssh/known_hosts に保存される. q q それ以降の同じサーバとの接続では,自動的に確認される. サーバが鍵を作り直したら,クライアント側は古い公開鍵情報を 削除しなければならない. 21 ユーザ認証の方法 パスワード認証 q q q ログインごとにパスワードを入力 従来のリモートログイン(telnet, ftpなど)を安全に行える 字数が少なく安全性にやや不安 公開鍵認証 q q q ユーザ認証(サーバから見た 利用者の認証)の注意点 ログインごとに,ログイン用パスワードとは異なるパスフレーズ (passphrase)を入力 エージェント(ssh-agentコマンド)の利用により,パスフレーズ入 力の省力化が可能 あらかじめローカルホストで鍵ペアを生成し,リモートホストの ~/.ssh/authorized_keys に公開鍵を登録しておく. どの認証方法を許可するかは,/etc/sshd/sshd_config に 記載する(編集にはroot権限が必要). 22 ポート転送 学外から「ssh -L 10110:POPサーバ:110 リモートホスト」を実 行すると q q リモートホストにログインし,コマンド実行などができる. ローカルホストでは,「POPサーバ:25」に代えて 「localhost:10110」でメール受信(POP)が安全にできる. リモートホスト-POPサーバ間は暗号化されていない ローカル ホスト リモート ホスト POP サーバ 「ssh -L ポート番号:localhost:ポート番号 リモートホスト」 が有用なことも 23 Windowsで利用可能なSSHクライアント Cygwinのsshコマンド q PuTTY q q UNIX上のコマンドとほぼ同じ動作 リモートログイン GUIで各種設定 WinSCP q GUIでファイル送受信 24 ファイル構成(Linuxの場合) GnuPG q SSH q ~/.ssh config known_hosts authorized_keys id_rsa.pub id_rsa いずれのディレクトリも,パーミッションは 700 (他のユーザ からは読み書き実行できない)にする. q ~/.gnupg gpg.conf pubring.gpg random_seed secring.gpg trustdb.gpg 各ファイルのパーミッションは 600 が望ましい. 詳細は,man gpg と man ssh で 25 暗号化通信の実演 ① 暗号化したいファイルを右クリックし,WinPTの機能で暗号化 q パスワードやパスフレーズは入力しない ② CygwinのscpコマンドでLinux計算機にコピー q パスワード認証 ③ CygwinのsloginコマンドでLinux計算機にログイン q ここでも,パスワード認証 ④ リモートホストのシェル上で,gpgコマンドによりファイルを 復号 q プライベート鍵を使うためのパスフレーズを入力 ⑤ 復号されたファイルが同じものかを,それぞれで md5sumコマンドを実行して確認 26 まとめ PGPは,メールやファイルを暗号化するためのソフトウェア SSHは,通信を暗号化するためのプロトコル 最低1回は,人手による鍵の正当性確認が行われる. 27
© Copyright 2024 ExpyDoc