クラウド&PKI

Download Report

Transcript クラウド&PKI

1
PKI (PUBLIC KEY INFRASTRUCTURE)
とクラウド
情報ネットワーク特論 講義資料
インターネット上の認証
2

各種 Webサービス


計算機利用サービス


買い物、銀行口座、
ホテル予約、講義登録、etc.
計算機センター、クラウド、グリッド、etc.
求められるセキュリティの要件
本人であること
 内容が不正に書き換えられていないこと
 内容が他人に盗み見られないこと

例) クラウド
3

インターネット上のサービスを、
今すぐ、
必要な量だけ、
利用するための環境を提供する

PaaS (Platform as a Service)


SaaS (Software as a Service)


プラットフォーム(計算機そのもの)として提供
ソフトウェアとして提供
クラウドの実用事例:
「エコポイント申請窓口サイトを1カ月で構築」
http://www.publickey1.jp/blog/09/1.html
Amazon EC2
4


PaaSの代表的なサービスのひとつ
http://aws.amazon.com/jp/ec2/
計算機、ハードディスク装置、
ネットワーク回線について、
必要な利用量と利用期間を指定して利用
 提供された計算機の管理者として利用可能:
ソフトウェアのインストール、ユーザ登録、
等
Amazon EC2のアカウント申請
5



メールアドレス、
パスワードの登録
住所等の
個人情報入力
本人確認
本人確認
6


電話番号を入力
電話がかかってくるので、
画面に表示される数字を入力
Amazon EC2の計算機利用
7



Webサイトにログイン
使う計算機の種類、量を指定
"Key Pair" の作成
Key Pair?
PKI (Public Key Infrastructure)
8

Key Pair (鍵の対) による暗号化技術
「公開鍵暗号方式(Public Key Cryptosystem)」
を用いたセキュリティ基盤技術
 Key

Pair: 公開鍵 + 秘密鍵
PKI の目的:
 通信内容の暗号化
= のぞき見への対策
 通信内容の保証 = 改ざんへの対策
従来の暗号化技術:共通鍵暗号
(Symmetric Key Cryptosystem)
9

暗号化 (encrypt) と復号 (decrypt) に
同じ鍵を利用
 例)
シーザー暗号 (Caesar cipher)
My name is James Bond.
encrypt
decrypt
Oa pcog ku Lcogu Dqpf.
 実際は、もっと複雑で実用的なものを利用
DES, AES

安全に鍵の情報を教える手段が必要
公開鍵暗号方式の概要
10

2個の鍵 (key1, key2) の片方を使って暗号化、
もう片方を使って復号
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...

confidential
confidential
encrypt
(key1)
decrypt
(key2)
confidential
encrypt
(key2)
confidential
decrypt
(key1)
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
POINT: 暗号化に使った鍵では復号できない
暗号化に使った鍵では復号できな
い
11
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...

confidential
confidential
encrypt
(key1)
decrypt
(key1)
confidential
encrypt
(key2)
confidential
decrypt
(key2)
2個の鍵 (key1, key2) の片方を使って暗号化したら、
必ずもう片方を使って復号
12

公開鍵 (Public Key) と
秘密鍵 (Private Key)
Key Pair の片方(例えば key1)を「公開鍵」とす
る
 公開鍵は、他人に見られても問題ない

もう片方(key2)は「秘密鍵」として、誰にも
見せない
例1) 公開鍵と秘密鍵を使った
通信内容の隠蔽
13

user A から user Bに秘密のメールを送る手順
 予め、user
Bの公開鍵を user A に渡しておく
 user A: user B の公開鍵を使って暗号化
 user B: user B の秘密鍵を使って復号

user Bの秘密鍵を持っていないと、メールが読め
ない
user A
user B
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
confidential
confidential
encrypt
(user B's public key)
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
decrypt
(user B's private key)
peep
need user B's private key
to decrypt
例2) 公開鍵と秘密鍵を使った
通信内容の保証
14

user A の送信した内容が不正に書き換えられていない
ことを保証する手順
user A: user Aの秘密鍵で暗号化したものを、本文と一緒に送
付
 user B: user Bの公開鍵で復号したものを、本文と比較
user A
user B

..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
compare
encrypt
(user A's private key)
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
decrypt
(user A's public key)
共通鍵暗号方式と公開鍵暗号方式
の併用
15

共通鍵暗号方式の問題:
 共通鍵を安全に渡すことが困難

公開鍵暗号方式の問題:
 鍵の暗号化が複雑で時間がかかる
(共通鍵暗号方式の数百倍~数千倍)
= 大メッセージの暗号化には不適

両方式の併用:
 公開鍵暗号方式で、共通鍵を送付
 共通鍵暗号方式で、本文を送付
公開鍵暗号方式のもう一つの問
題: 本当に本人の公開鍵か?
16


他人になりすまして(impersonation) 公開鍵を送付す
る
⇒ のぞき見や不正な書き換えが可能
公開鍵が本人のものであることの保証が必要
⇒ 電子証明書 (Electric Certificate)
17
一般的な証明書の例:パスポー
ト

国 (外務省) が本人であることを保証

発行時に、本人であることを十分確認
 写真付きの証明書(運転免許等)
 もしくは、写真の無いもの
2点以上
 保険証、印鑑登録等
 社員証や学生証は、写真付きでも別途
1点
X.509 証明書
18

PKI で定められたフォーマットによる電子証明書
 「秘密鍵の所有者」と
「その秘密鍵に対応する公開鍵」
の関係を保証する。



発行機関: CA (Certification Authority)
本人確認機関: RA(Registration Authority)
インターネット上で利用できるようファイルで
発行
CA (Certification Authority)
19

電子証明書の発行機関
key の所有者と public key の関係を保証する
電子署名(digital signature) をファイルに追加する.
 private

どの CA を信用するかは、計算機毎に設定可能
certificate
server A
CA1, CA2 を信用
発行機関: CA1
server B
CA2 を信用
RA (Registration Authority)
20

PKIにおいて,本人確認を行う機関.
 通常,利用者に近い場所に設置
 本人確認の手段:
 身分証明書(運転免許,パスポート等)
+ 対面
 遠い場合は電子メール等

確認できたら,発行機関に証明書発行依頼
 本人確認は時間がかかるので
大きな組織では発行機関と別に用意
 必要に応じて複数
例) 各学部にRAを設置し,大学事務局で認証書発行
 小さな組織では発行機関が RA を兼務
X.509 証明書の例
21
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
c1:73:39:44:df
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, O=Amazon.com, OU=AWS, CN=AWS Limited-Assurance CA
Validity
Not Before: Oct 28 02:14:23 2010 GMT
Not After : Oct 28 02:14:23 2011 GMT
Subject: C=US, O=Amazon.com, OU=AWS-Developers, CN=1mpq368escdn
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:97:98:59:69:08:56:5c:48:4f:e6:fd:9f:ff:c7:
CA
有効期間
Distinguished Name
(識別名)
public key
...
Signature Algorithm: sha1WithRSAEncryption
90:f8:78:c9:1e:0b:a7:40:96:54:62:4f:37:b7:2e:7c:fb:2c:
CAの電子署名
識別名 (Distinguished Name)
22

PKI 上で個人(や特定の計算機など)を
識別するための名前

通常,
いくつかの情報の組み合わせで構成
country
 locality
 organization
 section
 common name(固有名詞)
 E-mail アドレス



一つのCA内で重複しない.
証明書は、この個人と公開鍵の関係を保証する
電子署名 (Digital Signature)
23

証明書の要約 (digest)をCAの秘密鍵で暗号化した
もの
 証明書に添付して、証明書の内容を保証
CA
user
server
User's public key + DN
............
.........
...........
.......
............
digest
......... encrypt
......
certificate
certificate
............
.........
...........
.......
............
秘
秘
CA's private key
............
.........
...........
.......
............
deliver
............
.........
...........
.......
............
digest
秘
send
.........
......
compare
decrypt
CA's public key
.........
......
要約 (digest)
24

長いメッセージから固定バイト長(20byte程度)の
digest を作成.
 公開鍵暗号化の時間を短縮

悪質な書き換えの防止
 同じ
digest が生成されるようにメッセージを書き換
えることが出来ると電子署名としての信頼性が維持
できない
 特殊な関数を利用: MD5, SHA1, etc.
から元の文への復元は不可能
 元の文が 1bit でも違うと digest が大きく変化
 digest
証明書発行の流れ
25
user
RA
CA
key pair 作成
private key
public key
証明書発行申請
public key
distinguished
name
JP,
Kyushu Univ.,
...
Takeshi Nanri
証明書取得
本人確認
OK
証明書発行依頼
public key
distinguished
name
重複確認
OK
電子署名作成
証明書発行
CA, validity
public key
distinguished
name
digital
signature
サーバーによる利用者の認証
26

証明書の公開鍵を用いて認証
user
server
random message
.........
......
.........
......
encrypt
compare
user's
private key
decrypt
.........
......
user's
public key
利用者によるサーバの認証
27

サーバの「成りすまし」(impersonation)防止
user
server
random message
.........
......
.........
......
encrypt
compare
.........
......
decrypt
server's
public key
server's
private key
秘密鍵の暗号化
28

PKIでは、秘密鍵が他人に見られないことが重要
 パソコンが盗まれる
 サーバの管理者が悪意で秘密鍵を見る

秘密鍵を、さらに暗号化可能
 パスフレーズ(=パスワード)による暗号化
 秘密鍵を参照するたびにパスフレーズ入力
SSO(Single Sign-On) 技術
29

一度の認証で、以降の認証を自動化
 秘密鍵のパスフレーズ入力を省略

複数のサーバによるサービスの利用に有効

どうやって?
代理人 (Proxy) による SSO
30

一時的に利用可能な公開鍵と秘密鍵を持った 代
理人を作成.
 一般に短時間(12時間程度)有効.
 利用者の電子署名で,代理人であることを保証.

有効時間が比較的短いため,
秘密鍵を暗号化する必要なし.
→ 認証の度にパスフレーズを入力しなくて良い
Proxyの作成
31

短期間利用可能な Key Pair を作成.
 それらを元に証明書を作成.
 証明書に自分の秘密鍵で電子署名.
⇒ 一度だけパスワードの入力が必要.
certificate
一時的に作成
private key
public key
名前
発行機関
etc.
public key
digest,
利用者の秘密鍵で暗号化
電子署名
Proxy証明書の例
32
Certificate:
Data:
...
Issuer: O=Grid, O=Globus, OU=cc.kyushu-u.ac.jp, CN=Takeshi Nanri
Validity
validity = 12h
Not Before: Dec 1 04:42:12 2002 GMT
Not After : Dec 1 16:47:12 2002 GMT
Subject: O=Grid, O=Globus, OU=cc.kyushu-u.ac.jp, CN=Takeshi Nanri, CN=proxy
proxy's DN
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (512 bit)
Modulus (512 bit):
00:ac:f1:8f:81:98:04:ef:da:6a:a1:53:4e:53:ea:
...
temporal public key
4e:1b:4b:7f:e7
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
18:7a:a4:9c:7c:50:89:9f:97:e5:55:8b:aa:2a:a2:ae:f7:a3:
user's
...
digital signature
b4:23
CA = user
Proxyによる認証
33

2つの証明書を利用
 利用者の証明書
 proxyの証明書

proxy が正規の代理人であることを確認
 CA
の公開鍵でユーザの証明書の電子署名を確
認
 ユーザの証明書に含まれる本人の公開鍵で
proxy の証明書の電子署名を確認
まとめ
34

インターネット上の認証技術
 公開鍵暗号方式
 X.509証明書
 電子署名
 Proxy
実習
35


実験に使うサーバを、キャンパスクラウド上
に用意する
サーバの管理者となって、友人のアカウント
を、
安全に作成する
 パスワードを使わず、公開鍵を使う
キャンパスクラウド
36

九州大学で提供するクラウドサービス
学生IDで利用可能
 仮想的に、自分専用のサーバを持つことが出来る
 管理者として利用可能


目的に応じて形態を選択

開発用クラウド:
1週間程度利用
 クラウド内のサーバ同士の通信も可能


教育用クラウド:
数時間程度利用
 クラウド内のサーバ同士の通信は制限

今回は、
開発用クラウド
を利用
実習の前に、メモの準備

紙、もしくは PCのソフト(メモ帳、エディタ
など)で以下を記録できるようにしておく
 ホスト名
 グローバルアドレス
 管理者のパスワード
開発用クラウド利用の手順
38
0. Windowsの場合、必要なソフトを PCにインストール
- ログイン用ソフト(putty)
- ファイル転送ソフト(winscp)
1.
鍵のペア(公開鍵と秘密鍵)を作成
2.
キャンパスクラウドのWebページにログイン
3.
開発用クラウドでサーバを起動
4.
管理者のパスワード取得
5.
起動したサーバにログインして、利用
0. 接続用ソフトのインストール
(Windowsの場合のみ)

端末ソフト PuTTY
以下のファイルをダウンロード
http://tartarus.org/~simon/putty-snapshots/x86/putty-installer.exe
 ダウンロードしたファイルを実行してインストール


ファイル転送ソフト WinSCP
以下のサイトから Installation Package をダウンロード
http://winscp.net/eng/download.php
 ダウンロードしたファイルを実行してインストール


インタフェーススタイルは「エクスプローラスタイル」がおすすめ
1. 鍵のペア(秘密鍵と公開鍵)を
作成
Windowsの場合

インストールした PuTTYgenを実行

「すべてのプログラム」→「PuTTY」→「PuTTYgen」

Generateをクリック

鍵が作成されるまでマウスを適当に動かし続ける

Public key for pasting into OpenSSH authorized_keys file
の中の文字列(=公開鍵)を全て選択して右クリック→「コピー」


「メモ帳」を開き、選択した文字列を「はりつけ」


文字列は最後まで表示されていないので、マウスを下に移動させて、
最後まで選択する
デスクトップフォルダにkeysフォルダを作りその中に保存すると便
利
Save Private Key で秘密鍵を保存
1. 鍵ペア(秘密鍵と公開鍵)を作
成
MacOS Xの場合


ターミナルを起動
以下のコマンドを実行し、id_rsaや id_dsa が無
いことを確認
ls .ssh
 もしあったら、次のスライドへ

無ければ以下のコマンドを実行
ssh-keygen -t rsa
 Passphraseは、何も入力せずに改行
2. キャンパスクラウドの Webペー
ジ
42

以下の URLにアクセス
http://qc.kyushu-u.ac.jp/
「開発用クラウド」 を選択

学生IDでログイン

3. サーバの起動

3.1 新しいインスタンスの作成

「インスタンス」
→「すべてのインスタンス」
→「インスタンスの追加」

「フィーチャーテンプレート」
→ CentOS(5.8-64bit)-Standardを選択
→ 「2に進みます」
3. サーバの起動



3.2 サービスオファリングで
「Linux」を選択 → 「3に進みます」
3.3 データディスクオファリングで
「必要有りません」を選択 → 「4に進みます」
3.4 ネットワークで
「以下のポートによるアクセスを許可します」の SSH に
チェック
→ 「5に進みます」
SSH
3. サーバの起動

3.5 確認で



ホスト名: 適当な名前(半角英数字)を入力し、メモに
も記録
有効期限: 「日数」に 3を入力
公開鍵:



「有効」にチェック
「アカウント名」に適当な名前(半角英数字)を入力
「公開鍵」に作成した公開鍵の内容を貼り付け




Windowsの場合、公開鍵をメモ帳で開いてコピー
MacOS Xの場合、ターミナルで
cat .ssh/id_rsa.pub
を実行して表示される内容をコピー
「送信」
少し待つ。


「すべてのインスタンス」を時々クリックして、様子を見る。
Runningが表示されたら、準備完了。
4. 管理者のパスワード取得

「すべてのインスタンス」をクリック


ホスト名をクリックし、「停止」→「Confirm」
stopped になるまで待つ





時々「すべてのインスタンス」をクリック
「アクション」→「パスワードリセット」→「Yes」
しばらく待ち、表示される「新しいパスワード」をメモに記録
「開始」→「Confirm」
停止
開始
Runningになるまで待つ
アクション
5. 起動したサーバに接続

5.1 グローバルアドレスの確認
→ 「IPアドレス」で表示されるア
ドレスをメモに記録
 「ネットワーク」
5. 起動したサーバに接続
Windowsの場合

5.2 接続ソフトを使ってログイン




Puttyを起動
ホストの IPアドレスを入力
Connection (接続) -> SSH -> Auth (認証)で
Private key file for authentication (秘密鍵)
として、作成した秘密鍵ファイルを指定
Session で Saved Session に適当な名前を入力し、
Saveをクリック




次回から、この名前を Loadするだけで秘密鍵の情報が設定さ
れる
Openをクリック
ユーザ名を入力
以下が表示されたらログイン成功
[ユーザ名@ホスト名 ~]$

ログアウトしたい場合、exit と入力
5. 起動したサーバに接続
MacOS X の場合

5.2 ターミナルで接続
 ターミナルから、以下のコマンドを実行
ssh ユーザ名@ホストの IPアドレス
 以下が表示されたらログイン成功
[ユーザ名@ホスト名 ~]$
 ログアウトしたい場合、exit
と入力
うまくいかない場合
50

サーバを破棄して最初からやり直す
 「インスタンス」→「すべてのインスタンス」
→「破棄」→「Confirm」
 ホストが見えなくなるまで待つ
 時々「すべてのインスタンス」をクリック
 「ネットワーク」→「IPアドレス」→「ファイア
ウォール」
→「開始ポート」が 22の項目を「削除」
51
実習: サーバの管理者になり、
友人のアカウントを作成
する


パスワードを渡すと他人に見られるかもしれ
ないので、公開鍵暗号方式を使い、公開鍵の
交換だけで、安全にアカウントを作成する
実習の流れ
1.公開鍵を友人と交換
2.友人の公開鍵をサーバにアップロード
3.友人のアカウントを作成
4.友人の公開鍵登録
5.友人に接続確認してもらう
1. 公開鍵の交換
52

メールもしくは USBメモリを利用して、
友人に公開鍵を送付
注意!! 秘密鍵を送らない

友人から受け取った公開鍵を PCに保存

友人に、希望のアカウント名を聞いておく
2.公開鍵のアップロード
Windowsの場合








インストールしたWinSCPを起動
「New」をクリック
「Host name:」にホストの IPアドレスを入力
「User name:」に自分のユーザ名を入力
「Private key file:」の ... をクリックし、
自分の秘密鍵を指定
「Save」をクリック
作成された「ユーザ名@IPアドレス」をダブルク
リック
ホストのファイルが見えるので、通常のファイル
と同様にマウスでファイルのコピーが可能

友人の公開鍵をホストにコピーする
2.公開鍵のアップロード
MacOS Xの場合

ホストへのアップロード
scp ファイル名 ユーザ名@IPアドレス:アップロード先ディレクトリ

例) PCのファイル key.pub を、ホストのホームディレクトリ(~)
にアップロード

ユーザ名 nanri、ホストのIPアドレス 133.5.151.10 の場合:
scp

key.pub
[email protected]:~/
参考) ホストからのダウンロード
scp ユーザ名@IPアドレス:ダウンロード元ファイル ダウンロード先
フォルダ

例) ホストのホームディレクトリのファイル test.c (~/test.c)を、
PCの現在のディレクトリ(.)にダウンロード
scp [email protected]:~/test.c .
ピリオド
3. 友人のアカウント作成
55

サーバにログインし、
su コマンドで管理者になる
su
 メモに記録したパスワードを使用

新規アカウント作成
/usr/sbin/useradd
-m
友人の希望するアカウント名
4. 友人の公開鍵の登録
56

cd
以下を実行
/home/友人のアカウント名
mkdir
.ssh
chmod
700
cp
.ssh
/home/自分のアカウント名/友人の公開鍵ファイル名
chmod
600
chown
-R
.ssh/authorized_keys
友人のアカウント名
.ssh
.ssh/authorized_keys
5. 友人に接続確認してもらう
57

友人にサーバの IPアドレスを教えて、
ログインできるかどうか確認してもらう
 友人が希望したアカウント名を使用

公開可能な情報だけを使って、
安全に新しいアカウントを用意できた。