クラウド & Public Key Infrastructure (PKI)

クラウド
& Public Key Infrastructure (PKI)
情報ネットワーク特論
南里 豪志
1
内容
• クラウド
• 公開鍵暗号方式と Public Key Infrastructure (PKI)
• 公開鍵暗号方式を使った実習
• クラウドの VM上に友人のユーザ登録
2
クラウドの背景
• 従来=所有型の計算機利用: ハード、ソフトを所有
•
•
•
•
•
計算機、ソフトウェアの選定、購入
初期設定
運用、修理
(必要に応じて)増強
廃棄
• 所有型計算機利用の問題:
• ピーク時の計算負荷に合わせて購入、増強
⇒ ピーク時以外は無駄
• 初期設定、運用、修理
⇒ 計算機管理者の負荷
• 廃棄
⇒ 廃棄に要するコスト
• その他:
電力、設置場所、 etc
3
クラウド型
• 物(ハード、ソフト)ではなく、「サービス」を購入して利用
• 必要な期間、必要な量だけ、必要な種類のサービスを購入
• 初期設定、障害対応、電力、設置場所等のコストも含む
Microsoft Office
Word, PowerPoint,
Excel, OneNote, ...
Google
Mail, Calender, ...
• 利用事例:
「エコポイント申請窓口サイトを1ヶ月で構築
http://www.publickey1.jp/blog/09/1.html
4
主なクラウドの種類
• Software as a Service (SaaS)
• 特定用途のソフトウェアを利用
• 例) Google関連 (Gmail, Calendar, etc.)、Office365
• Platform as a Service (PaaS)
• ハードウェア + OS + 最小限の基盤ソフトウェア
• 例) Windows Azure
• Infrastructure as a Service (IaaS)
• ハードウェア (+ OS)
• 例) Amazon EC2、Gooble Compute Engine
実際のサービスは、明確な区分が困難。
それぞれ、どこまでクラウド業者が責任を持つか、が重要。
5
Amazon Elastic Compute Cloude (EC2)
http://aws.amazon.com/jp/ec2/
• 計算機の構成や規模、ソフトウェアの種類を選択可能なク
ラウドコンピューティングサービス
• 計算機の構成
• 汎用
• 低速 CPU、共有ストレージ
• コンピューティング
• 高速 CPU、専用ストレージ(SSD)
• メモリ
• 大容量メモリ、専用ストレージ
• GPU
• GPU搭載
• ストレージ
• 規模
• 大容量専用ストレージ
• 1~32CPU、RAM 1GB~244GB、 SSD 0~ 2TB
• ソフトウェア
• Linux, Windows, SAP, LAMP, Drupal
6
Amazon EC2のアカウント申請
• メールアドレス、
パスワードの登録
• 住所等の
個人情報入力
• 本人確認
7
本人確認
• 電話番号を入力
• 電話がかかってくるので、
画面に表示される数字を入力
8
Amazon EC2の計算機利用
• Webサイトにログイン
• 使う計算機の種類、
量を指定
• "Key Pair" の作成
Key Pair?
9
Key Pair (鍵の対)
• 公開鍵暗号方式(Public Key Cryptosystem)で
使用する二つの鍵
公開鍵 (Public Key)
秘密鍵 (Secret Key)
の対
• インターネット上で「安全」、「安心」を維持した通信
を実現する社会基盤
Public Key Infrastructure (PKI)
に利用する基盤技術
10
インターネット上の
「安全」、「安心」な通信に向けて
• 求められる性質
• 機密性
• 盗聴されないこと
• 認証
• 本人やサーバのなりすましがされていないこと
• 完全性
• 不正に書き換えられていないこと
• 否認防止
• 本人が書いた内容を後から否定できないこと
• 用いられる技術や基盤
•
•
•
•
•
共通鍵暗号方式
公開鍵暗号方式
ハッシュ関数
電子署名
Public Key Infrastructure (PKI)
11
共通鍵暗号方式
(Symmetric Key Cryptosystem)
• 暗号化(encrypt)と復号化(decrypt)に同じ鍵を利用
• 例) シーザー暗号 (Caesar cipher)
My name is James Bond.
encrypt
decrypt
Oa pcog ku Lcogu Dqpf.
• 鍵 = 2。26通りの鍵を試せば、盗聴可能。
• 実際は、もっと複雑で実用的なものを利用
• DES、AES、
• 問題点:
• 共通鍵を相手に「安全に」渡す方法
• 通信相手ごとに別の共通鍵が必要
12
公開鍵暗号方式
(Public Key Cryptosystem)
• 2個の鍵(公開鍵、秘密鍵)を使用
• 公開鍵(public key): 誰でも入手可能
• 秘密鍵(secret key): 誰にも見られないように保管
• 公開鍵暗号方式を使った暗号化と復号化
• 例) Bさんが Aさんに暗号化した文書を送付
• 事前に Bさんは Aさんの公開鍵を取得
• Bさんが Aさんの公開鍵で文書を暗号化して送付
• Aさんは自分の秘密鍵で文書を復号化して読む
Aの公開鍵
Aの公開鍵
Bさん
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
暗号化
暗号化された文書
復号化
Aの秘密鍵
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
Aさん
13
公開鍵暗号方式の特徴
• 公開鍵で暗号化したものは、
秘密鍵でなければ復号化できない
• Aさん以外の人は、文書を読むことが出来ない
• 共通鍵暗号方式との違い
• 復号化に必要な鍵を事前に渡す必要が無い
• 暗号化に必要な鍵だけ公開すればよい
• 一つの鍵の対で複数の通信相手と安全な通信可能
• 暗号化、復号化の計算に、共通鍵暗号方式の数百倍
の時間が必要
• 長文の暗号化には適さない
14
パスフレーズ
• 秘密鍵の暗号化に使用
• 秘密鍵は公開しないものの、常に他人に見られる危険
性がある
• パソコンが盗まれる
• サーバの管理者が悪意で秘密鍵を見る
• key pair作成時にパスフレーズ設定
• 共通鍵暗号方式により暗号
• 秘密鍵を利用するたびにパスフレーズの入力が必要
Aの公開鍵
暗号化された文書
復号化
Aの秘密鍵
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
Aさん
パスフレーズ
15
公開鍵暗号方式と
共通鍵暗号方式の組み合わせ
• 一時的な共通鍵(セッション鍵)を作成し、
それを利用して文書を暗号化して送付
• 共通鍵は、相手の公開鍵で暗号化して送付
Aの公開鍵
Aの公開鍵
Aの秘密鍵
Bさん
共通鍵
共通鍵
暗号化
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
暗号化
暗号化された
共通鍵
暗号化された
文書
Aさん
復号化
復号化
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
16
ハッシュ関数
• 入力データから、一定の大きさのデータを出力
abcdefghi
abcdefghij
ハッシュ
関数
#7fa!
%q25A
• ハッシュ関数に求められる性質
• 一方向性
• 出力データから入力データを推測できない
• 第2現像計算困難性
• ある入力データと同じ出力データとなる別の入力データを見つけ
るのが困難
• 衝突困難性
• 同じ出力データを生成する 2つの入力データを見つけるのが困難
• 利用例
• パスワード管理
• 電子署名
17
ハッシュ関数の利用例:
パスワード管理
• パスワード保管方法の選択肢
• 平文(=暗号化しない状態)で保管
• 当然、非常に危険
• 暗号化して保管
• これも、常に復号化される可能性があり、危険
• ハッシュ関数でパスワードを変換して保管
• 絶対に復号化できないため、安全
• 認証の手順
• 認証時に入力されたパスワードをハッシュ関数で変換
• 出力データが保管されている値と一致すれば、
同じパスワードが入力されたとみなして認証
• 一方向性、第2現像計算困難性、衝突困難性により保証
18
電子署名
• 電子的な文書の正当性を検証する技術
• 本人認証: 作成したのが本人であること
• 完全性: 文書が不正に書き換えられていないこと
• 公開鍵暗号方式による電子署名
• 送信者:
• 秘密鍵とハッシュ関数を利用して、文書の署名を作成
• 文書と署名を一緒に送付
• 受信者:
• 公開鍵とハッシュ関数を利用して、文書の署名と文書の内容
を検証
19
RSAを使用した電子署名
• RSA: 公開鍵暗号方式の一つ
• 特徴: 公開鍵と秘密鍵が対称
• 秘密鍵を使って「暗号化」した文書は、
対応する公開鍵でなければ「復号化」できない
• RSAによる電子署名の流れ
Aの公開鍵
Aの公開鍵
Aの秘密鍵
Bさん
Aさん
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
..........
...........
... . ... .. ......
... ....... .. . .
.... ........ ...
ハッシュ
関数
ハッシュ
関数
検証
復号化
電子署名
暗号化
20
Public Key Infrastructure (PKI)
• 公開鍵暗号方式技術を利用した電子証明書によ
るインターネット上の社会基盤
• 構成要素
• 認証局 (Certification Authority (CA))
• 鍵の対(公開鍵、秘密鍵)と所有者を結び付ける公開鍵証明
書を発行
• 登録局 (Registration Authority (RA))
• 公開鍵証明の窓口
• 申請の受付、本人確認、証明書発行要求、証明書失効要求
• リポジトリ (Repository)
• 証明書リスト、証明書失効リストの公開
21
認証局
Certification Authority(CA)
• 電子証明書の発行機関
• 秘密鍵の所有者と公開鍵の関係を保証する電子署名を発行。
• CA自身の公開鍵で内容を保証
• CAに求められる性質
• 本人以外に電子署名を発行しない
• CAの秘密鍵が漏えいしない
• Trusted Third Party (TTP)
• CAを行うための、信頼性を持った機関
• どの CA を信用するかは、計算機毎に設定可能
server A
発行機関: CA1
CA1, CA2 を信用
server B
CA2 を信用
22
登録局
Registration Authority(RA)
• PKIにおいて、本人確認を行う機関.
• 証明書申請の受付
• 本人確認
• 身分証明書(運転免許,パスポート等) + 対面
• 遠い場合は電子メール等
• 確認できたら、 CAに証明書発行依頼
• 小さな組織では CAが RA を兼務
23
証明書発行の流れ
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
24
X.509 証明書
• PKI で定められたフォーマットによる電子証明書
• 「秘密鍵の所有者」と
「その秘密鍵に対応する公開鍵」
の関係を保証する。
• インターネット上で利用できるようファイルで発行
25
X.509 証明書の例
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の電子署名
26
証明書の失効
• 失効の理由
•
•
•
•
有効期限を過ぎた
秘密鍵の紛失、もしくは漏えい
証明書を所有する資格を失った
証明書の内容に変更があった
• 失効の方法
• 失効リスト(Certificate Revocation List (CRL)) への追加
• PKIの利用者は定期的に CRLを取得し、認証時に参照
• Online Certificate Status Protocol (OCSP)の確認
• 認証時に失効しているか否かを CAに確認(オンライン)
• 失効から認証拒否までの時間
• CRL、OCSPのいずれでも、失効してから認証拒否が始まるま
でには一定の時間を要する。
27
実習
• 実験に使うサーバを、キャンパスクラウド上に用意
する
• サーバの管理者となって、友人のアカウントを、
安全に作成する
• パスワードを使わず、公開鍵を使う
28
実習の手順
0. (まだVMを作成していない人は)VMを作成
1.VMの一つにグローバルアドレスを設定
2.Windowsの場合、必要なソフトを PCにインストール
- ログイン用ソフト(putty)
- ファイル転送ソフト(winscp)
3.鍵のペア(公開鍵と秘密鍵)を作成
4.2人組(もしくは3人組)になり、互いに公開鍵を交換
5.公開鍵を VMにアップロード
6.公開鍵を使って新しいユーザを VM上に用意
7.相手の VMにログインできるようになったことを確認
8. グローバルアドレスを解放
29
0.VMの作成
• 既に VMを作成し、まだ破棄していない人は、
前々回の資料を参照して VMを一つ再開させて、
次のスライドへ。
• VMを作成していない人は、前々回の資料を参照
して VMを一つ作成。
30
1.VMにグローバルアドレスを
設定
• キャンパスクラウドシステムの Webサイト
http://qc.kyushu-u.ac.jp
の、
「ネットワークの設定」
の手順 i) ~ xi) に従って、 VMへのグローバルアド
レスの設定と、ファイアウォールの設定を行う。
31
2.接続用ソフトのインストール
(Windowsの場合のみ)
• 端末ソフト PuTTY
• 以下のファイルをダウンロード
http://tartarus.org/~simon/putty-snapshots/x86/putty-installer.exe
• ダウンロードしたファイルを実行してインストール
• ファイル転送ソフト WinSCP
• 以下のサイトから Installation Package をダウンロード
http://winscp.net/eng/download.php
• ダウンロードしたファイルを実行してインストール
• インタフェーススタイルは「エクスプローラスタイル」がおすすめ
3.鍵のペア(秘密鍵と公開鍵)を作成
Windowsの場合
• MacOS Xの場合は次ページ
• インストールした PuTTYgenを実行
• 「すべてのプログラム」→「PuTTY」→「PuTTYgen」
• Generateをクリック
• 鍵が作成されるまでマウスを適当に動かし続ける
• Public key for pasting into OpenSSH authorized_keys file
の中の文字列(=公開鍵)を全て選択して右クリック→「コピー」
• 文字列は最後まで表示されていないので、マウスを下に移動させて、
最後まで選択する
• 「メモ帳」を開き、選択した文字列を「paste」。その後、名前を付けて保存。
• デスクトップフォルダにkeysフォルダを作りその中に保存すると便利
• ファイル名は適当でよい。例えば、 test.pub 等。これが、公開鍵。
• Save Private Key で秘密鍵を保存
(上記の keysフォルダの中に、保存すると便利)
• パスフレーズは、適当に入力。記憶しておく。
3.鍵ペア(秘密鍵と公開鍵)を作成
MacOS Xの場合
• Windowsの場合は前ページを実行後、4.へ
• ターミナルを起動
• 以下のコマンドを実行し、id_rsa.pubもしくは id_dsa.pub が
あったら、次のスライドへ
ls .ssh
• .ssh/id_rsa.pub もしくは .ssh/id_dsa.pub が公開鍵
• 無ければ以下のコマンドを実行
ssh-keygen -t rsa
• Passphraseは、適当に入力。記憶する。
• .ssh/id_rsa.pub が公開鍵となる。
4.公開鍵の交換
• 2人組もしくは 3人組となり、
メールもしくは USBメモリを利用して、
3.で作成した公開鍵を友人に送付。
注意!! 秘密鍵を送らない
• 友人から受け取った公開鍵を PCに保存
• 友人に、希望のユーザ名を聞いておく
35
5.公開鍵のアップロード
Windowsの場合
•
•
•
•
•
•
•
MacOS Xの場合、次ページへ。
2.でインストールしたWinSCPを起動
「New」をクリック
「Host name:」に自分の VMのグローバルアドレスを入力
「User name:」に root と入力
「Save」をクリック
作成された「root@VMのグローバルアドレス」をダブルク
リック
• 鍵を登録するかどうか聞かれた場合、OKをクリック
• rootのパスワード入力
• VMのファイルが表示される。
• 通常のファイルと同様にマウスでファイルのコピーが可能。
• 友人の公開鍵を VMにコピーする
5.公開鍵のアップロード
MacOS Xの場合
• Windowsの場合は、前ページを実行後、6.へ。
• VMへのアップロード
scp ファイル名 root@VMのグローバルアドレス:アップロード先ディレクトリ
• 例) PCのファイル key.pub を、ホストのホームディレクトリ(~)にアップロー
ド
• VMのグローバルアドレスが 133.5.151.10 の場合:
scp
key.pub
[email protected]:~/
• 参考) VMからのダウンロード
scp root@VMのグローバルアドレス:ダウンロード元ファイル ダウンロード先フォルダ
• 例) VMのホームディレクトリのファイル test.c (~/test.c)を、
PCの現在のディレクトリ(.)にダウンロード
scp
[email protected]:~/test.c
.
ピリオド
6. 友人のユーザ登録
• VMにログイン
• 新規ユーザ作成
/usr/sbin/useradd
-m
友人の希望するユーザ名
• 友人の公開鍵を登録
• 公開鍵ファイル authorized_keysや格納ディレクトリ .ssh
の所有者とアクセス権を適切に設定
cd /home/友人のユーザ名
mkdir .ssh
chmod
700 .ssh
cp /root/友人の公開鍵ファイル名
.ssh/authorized_keys
chmod
600
.ssh/authorized_keys
chown
-R
友人のアカウント名 .ssh
注意:
勝手に
authorized?_keys
となる場合があるので、
authorized_keys
に修正して実行
38
7. 接続確認
• 友人に VMのグローバルアドレスを教えてもらい、
ログインできるかどうか確認
• 希望したユーザ名を使用
• Windowsの場合:
• puttyを使用(次ページ参照)
• MacOS X の場合:
• 以下のコマンドでログイン
ssh ユーザ名@友人のVMのグローバルアドレス
• パスフレーズには、秘密鍵のパスフレーズを入力
• 公開可能な情報だけを使って、
安全に新しいアカウントを用意できた。
39
Puttyを使ったログイン
• MacOS Xの場合、次ページへ。
• putty を起動
• ホスト名に、友人の VMのグローバルアドレス入力
• 画面左の「Connection」 - 「SSH」 - 「Auth」を選択
• Private Key file として、puttygenで作成して保存した秘
密鍵を選択し、「open」
• パスフレーズには、鍵作成時に入力したパスフレーズ
を入力
40
8.友人が接続を確認後、グロー
バルアドレスを開放
• CloudPlatformの「ネットワーク」を選択し、
自分のネットワーク名を選択
• 「表示 - IPアドレス」
• 新しく取得した方の IPアドレスを選択
(「送信元 NAT」では無い方)
• X をクリックして、解放
41