More Related Content
Similar to HSM用ミドルウェア Conduit Toolkitの概要と使い方 (20)
More from Hiroshi Nakamura (9)
HSM用ミドルウェア Conduit Toolkitの概要と使い方
- 2. 内容
1. SEEのプログラミングモデル
1-1. SEEの仕組み
1-2. プログラミングモデル
1-3. SEE開発の注意点
2. HSM用ミドルウェアConduit Toolkitの機能と利点
2-1. Conduit Toolkitとは
2-2. Conduit Toolkitのプログラミングモデル
2-3. 機能と利点
2-4. Conduit Toolkitを利用したシステム構成
2-5. プログラミングモデルの比較
3. Conduit Toolkitによる開発の流れ
4. 最後に
Copyright © 2009 Sarion Systems Research All rights reserved.
- 4. 1-1. SEEの仕組み
クライアントホスト nCipher HSM
• Thales社のnCipher HSMには、暗号処理機能、
鍵管理機能、NVRAM、 RTCが備わっている
(nCore API経由で利用)
• 加えて、独自処理をHSM内部に実装・実行可能
(CodeSafe API経由で利用)
暗号処理モジュール
鍵管理モジュール
NVRAM
RTC
ホスト
プロセス
SEE
プロセス
nCore API
CodeSafe API
nCore API
Copyright © 2009 Sarion Systems Research All rights reserved.
- 7. A) 汎用SEEライブラリのモジュール構成
• SEEアプリの機能は、ホストアプリから、
CodeSafe APIの通信制御APIにより利用
ホストアプリ
(C/C++またはJava言語)
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTCCodeSafe
SEE
クライアントホスト
CodeSafe
SEEアプリ
(C言語)
LAN/PCILAN/PCI
専用プロトコル専用プロトコルCipherTools
Copyright © 2009 Sarion Systems Research All rights reserved.
nCore API
nCore API CodeSafe API CodeSafe API
- 8. B) BSDライブラリのモジュール構成
• SEEアプリが、ホスト上のproxyを介してソケット、
標準入出力を公開し、ホストアプリや外部から利用
• SSLサーバライブラリが利用可能で、
SSLエンドポイントをHSM内部に引き込める
ホストアプリ
(言語は任意)
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTC
CodeSafe
SEE
クライアントホスト
TCP
proxy
SEEアプリ
(C言語)
PCIPCI
専用プ
ロトコル
専用プ
ロトコル
CipherTools
bsdlib
TCP
ncssl
Copyright © 2009 Sarion Systems Research All rights reserved.
nCore API
nCore APIUnix socket API
Unix socket API
- 12. 2-1. Conduit Toolkitとは
1. SEEアプリを利用する上で必要となる各種機能を
ソフトウェアライブラリとしてパッケージ化
• アプリケーション開発を支援する機能を提供し
開発期間の短縮化、高品質化に貢献
2. 水平展開による可用性向上
3. 弊社開発での利用実績
Copyright © 2009 Sarion Systems Research All rights reserved.
- 13. 2-2. Conduit Toolkitのプログラミングモデル
• 汎用SEEライブラリを拡張
• ホスト側、SEE側にライブラリ提供
• ホスト – SEE間はRPC通信
ホストアプリ
(C/C++またはJava言語)
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTC
CodeSafe
SEE
クライアントホスト
CodeSafe
SEEアプリ
(C言語)
LAN/PCILAN/PCI
専用プロトコル専用プロトコル
CipherTools
Conduit
Toolkit Core
Part
Conduit
Toolkit
Stub Part
拡張プロトコル拡張プロトコル
Copyright © 2009 Sarion Systems Research All rights reserved.
RPCRPC
nCore API
nCore API
- 15. a) ホスト – SEE間通信でのトラブル
• 一度に送信可能なデータサイズが8K弱に
制限されている(bsdlibでは制限なし)
• ホストからポーリングする生の半二重通信で、
手続きミスによる通信エラーでトラブルになり易い
(bsdlibではUnixスタイルのソケット)
• データタイプのサポートがなく、構造化データの
送受信処理が煩雑
(通常、エラーコード、ユーザ情報、鍵データ、
暗号化パラメータ、署名結果などの転送が必要)
Copyright © 2009 Sarion Systems Research All rights reserved.
- 16. A) RPC通信管理機能
• ホスト – SEE間で、RPCによる通信を可能に
• RPCコードジェネレータ(ホスト側、SEE側)
• RPC通信管理ライブラリ
• SEE側は、Cの関数として独自処理を実装
• ホスト側から、Cの関数、またはJavaのメソッドと
して透過的に呼び出し可能
ホストアプリ
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTCCodeSafe
SEE
クライアントホスト
CodeSafe
SEEアプリ
LAN/PCILAN/PCI
専用プロトコル専用プロトコル
CipherTools
Core PartStub Part 拡張プロトコル拡張プロトコル
Copyright © 2009 Sarion Systems Research All rights reserved.
Sun RPCSun RPC
- 18. B) サイドストリームロギング機能
• SEE用ログメッセージAPIをライブラリとして提供
• SEE内部で出力したログを、セキュアかつ自動的
にホスト側に転送し、ファイル出力。
• RPC通信と共存する透過的なログ転送機構
ホストアプリ
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTCCodeSafe
SEE
クライアントホスト
CodeSafe
SEEアプリ
LAN/PCILAN/PCI
専用プロトコル専用プロトコル
CipherTools
Core PartStub Part 拡張プロトコル拡張プロトコル
ログ
Copyright © 2009 Sarion Systems Research All rights reserved.
ログAPI
- 19. c) 鍵管理でのトラブル
• nCipher HSMの鍵管理の仕組みを理解していな
いと、性能問題を引き起こし易い
• SEEアプリでの鍵の利用
1.ホスト側でnCore APIを利用し鍵を
HSMに読み込み、チケット入手。(遅い)
2.SEE側にチケットを転送。
3.SEE側でチケットから鍵を復元・利用。
• カタログ性能を出すには、ホスト側でチケット
のキャッシュが必須だが、設計上、簡単には
実現できない場合が往々にして存在する
• アクセス権限APIが複雑かつデバッグが困難なた
め、SEE側で権限不足によるトラブルが起こり易い
Copyright © 2009 Sarion Systems Research All rights reserved.
- 20. C) 鍵管理機能
• RPC構造体として鍵オブジェクトを定義
ホスト側では鍵IDのみ渡せばよい。
• SEE側への転送時、自動的にチケットの取得
とキャッシュを行う。 HSMを再起動した場合で
も、必要に応じて自動的に再キャッシュ。
• SEE専用鍵の自動構成
• SEE専用鍵を利用するために必要な証明書を
自動送信・自動インポート
ホストアプリ
nCipher HSM
暗号処理モジュール
鍵管理モジュール
NVRAM
RTCCodeSafe
SEE
クライアントホスト
CodeSafe
SEEアプリ
LAN/PCILAN/PCI
専用プロトコル専用プロトコル
CipherTools
Core PartStub Part 拡張プロトコル拡張プロトコル
Copyright © 2009 Sarion Systems Research All rights reserved.
鍵ID 鍵チケット
- 21. d) 可用性確保に関するトラブル
• nCore APIによる暗号モジュール利用には負荷
分散機能があるが、SEE利用時には効果がない
• 必要な場合はホスト側で、処理の振り分け、
障害検知、回復を独自実装する必要がある。
• 1つのSEEプロセスに、複数クライアントから接続
できない(共用不可)
• SEEの暗号処理機能を、冗長化されたアプリ
ケーションサーバ等から利用する際に問題と
なる。
• 複数クライアントから利用可能にするため、
接続のたびにSEEプロセスを初期化すると、
大幅な性能劣化。
Copyright © 2009 Sarion Systems Research All rights reserved.
- 26. 2-4. Conduit Toolkitを利用したシステム構成
• 3つの構成が可能
• 必要な機能に応じた構成を選択
機能 A) 単一構成 B) SEE共有構成 C) 冗長化構成
障害回復 ○ ○ ○
複数クライアント × ○ ○
負荷分散 × × ○
モニタリング ○ ○ ○
Copyright © 2009 Sarion Systems Research All rights reserved.
- 28. B) SEE共有構成
• 冗長化サーバーを別ホストに分離。
• 複数クライアントから接続可能。
nCipher HSM
クライアント
ホスト
LAN/PCILAN/PCI
冗長化
サーバー
ホスト
クライアント
ホスト
LANLAN
LANLAN
ホストアプリ
nCipher HSM
暗号処理
鍵管理
NVRAM
RTC
クライアント
ホスト
SEEアプリ
Core Part
冗長化
クライアント
RPCRPC
冗長化
サーバー
拡張
プロトコル
拡張
プロトコル
SSL
相互認証
SSL
相互認証
冗長化
サーバー
ホスト
LANLAN LAN/PCILAN/PCI
Copyright © 2009 Sarion Systems Research All rights reserved.
- 29. C) 冗長化構成
• 冗長化サーバーとHSMのペアを水平展開。
nCipher HSM
クライアント
ホスト
拡張プロトコル
LAN/PCI
拡張プロトコル
LAN/PCI
冗長化
サーバー
ホスト
クライアント
ホスト
SSL相互認証
LAN
SSL相互認証
LAN
nCipher HSM
冗長化
サーバー
ホスト
nCipher HSM
冗長化
サーバー
ホストクライアント
ホスト
クライアント
ホスト
Copyright © 2009 Sarion Systems Research All rights reserved.
- 33. 2-5. プログラミングモデルの比較
seelib bsdlib
Conduit
Toolkit
通信 独自 ソケット RPC
ログ取得 独自対応
ホスト上に
標準エラー出力
ホスト上に
ファイル出力
鍵管理支援 × × ○
障害回復 × × ○
複数クライアント × △(*1) ○
負荷分散 △(*2) × ○
netHSM対応 ○ × ○
(*1) 複数クライアントから同時にTCP通信することが可能だが、セキュアにするためにはncsslなどを
利用し、独自に認証、暗号化、署名が必要になる。
(*2) 独自に複数HSMとの接続を管理し、個別に読み込んだ鍵チケットを1つにマージした上で利用
する、という対応が必要。障害に弱い。
Copyright © 2009 Sarion Systems Research All rights reserved.
- 35. 3-1. コーディング
1. 関数呼び出しインタフェース定義
(RPC記述ファイル作成)
2. RPCスタブコード生成
3. ホスト側プログラム開発(関数呼び出し側)
4. SEE側プログラム開発(関数の実装)
サンプル
• 指定した鍵により、SEE内部で独自アルゴリズ
ムによる署名を行う。
• SEE専用鍵として構成し、SEE外部からは利用
できないようにする。
Copyright © 2009 Sarion Systems Research All rights reserved.
- 38. 3. ホスト側プログラム開発(C/C++言語)
...
client = clnt_psrpc_create("localhost", SIGN_PROG, SIGN_PROG_VER,
"psconduit");
PSCKeyInfo_construct(&request.key);
PSCString_set(&request.key.keyname, strlen(keyname), keyname);
request.msg.message_len = (u_int)strlen(signedMessage);
memcpy(request.msg.message_val, signedMessage,
request.msg.message_len);
rv = do_sign_1(client, &request, &response);
if (rv == RPC_SUCCESS) {
printf("%d bytes¥n", response.signature.signature_len);
clnt_psrpc_freeres(client, psdr_sign_response, &response);
}
PSCKeyInfo_destruct(&request.key);
...
RPC通信の初期化
SEEに渡す署名鍵を指定
署名対象を指定
SEE側署名関数を呼び出し
Copyright © 2009 Sarion Systems Research All rights reserved.
- 41. 3-2. サービス配備
1. ホストアプリのビルド
• Visual Studio等ホスト側コンパイラでコンパ
イルし、Conduit Toolkitのライブラリと共に
リンク
2. SEEアプリのビルド
• gccでのクロスコンパイル後、Conduit
Toolkitのライブラリと共にリンク
• CodeSafeに添付のツールを利用し、
SEEコードを生成
• 冗長化サーバーに、SEEコードを指定
(自動読み込みのため)
3. 冗長化サーバーの起動
Copyright © 2009 Sarion Systems Research All rights reserved.
- 42. 4. 最後に
4-1. Conduit Toolkitの利点
4-2. HSMを活かした独創的なサービスの構築を
Copyright © 2009 Sarion Systems Research All rights reserved.
- 43. 4-1. Conduit Toolkitの利点
• コード開発の難易度が下がる
• 煩雑な通信処理、鍵管理処理がカプセル化される
• プログラマはアプリケーションロジックに専念できる
• 開発工数の削減
• 下請けルーチンがライブラリとして提供される
• デバッグを支援する機能が提供される
• 設計が容易になる
• Conduit ToolkitのRPCモデルに従って設計をする
• 可用性確保が容易になる
• nCipher HSMの稼動原理と、負荷分散、障害回復
実装テクニックの詳細が隠蔽される
• サービス開始後に性能が足りなくなってからの
水平展開
Copyright © 2009 Sarion Systems Research All rights reserved.
- 44. 4-2. HSMを活かした独創的なサービスの構築を
サービスの実現、運用、継続のため
必要なセキュリティーレベルに応じた選択肢
構築するサービスの例 要件 HSM活用
署名・暗号化による
サービス間連携
鍵の漏洩防止が必要 nCipher HSM
複数サービスでHSMを共有 鍵の不正利用防止も必要 + SEE
クレジット会社からカード番号
とパスワードを預かる
鍵だけではなく、データの漏
洩防止も必要
+ SEE
サービス運用が外部委託
鍵だけではなく、プログラム
の改ざん防止も必要
+ SEE
開発リスクを低減したい
素早くプロトタイプ実装で
フィージビリティーチェック
+ Conduit Toolkit
自動運用で耐障害性が必須
必要な性能に応じた導入計画
性能向上、耐障害性向上を
狙った水平展開
+ Conduit Toolkit
Copyright © 2009 Sarion Systems Research All rights reserved.
- 45. お問い合わせ
• 株式会社サリオンシステムズリサーチ
• 〒101-0054 東京都千代田区神田錦町3-23 西
本興産錦町ビル14F
• 電話: 03-5217-2980(代) FAX: 03-5217-3590
• お問い合わせ: prod_contact@sarion.co.jp
• Web: http://www.sarion.co.jp
※本セミナーの弊社資料は、
上記ウェブサイトからダウンロードできます。
Copyright © 2009 Sarion Systems Research All rights reserved.