Upload
kaoru-maeda
View
1.730
Download
0
Embed Size (px)
Citation preview
https://lepidum.co.jp/ Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.
Token BindingとFIDO
株式会社レピダム
前田薫 (@mad_p)
#fidcon 2015/05/27
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
bearer tokenとholder-of-key token
bearer token holder-of-key token
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding
ベアラーセキュリティートークン
OAuth token
HTTPクッキー
盗まれて行使できてしまう
特定の者だけに許可したい
IDと関連づけて管理→ 行使時のIDを確認
draft-ietf-tokbind-protocol-00
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
IETF92 in Dallas
tokbind WG (Security エリア)
token bindingを標準化するWG
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding ID
#fidocon 2015/05/27
Public Keyを使ってToken Binding IDを定義
サーバーごとに1組の鍵ペア
セキュアストレージ
鍵ペア
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding(1) トークン要求
#fidocon 2015/05/27
TLS接続
tls-unique
tls-unique
tls-uniqueを秘密鍵で署名、TokenBindingIDとセットにして送る
もらった公開鍵とtls-uniqueで署名検証
• いま話してる相手が• この公開鍵に対応した秘密鍵を持っている
TokenBinding
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding(2) トークン発行
#fidocon 2015/05/27
TokenBindingIDとトークンを関連づける
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding(3) トークン行使
#fidocon 2015/05/27
tls-unique
TokenBinding
トークンとTokenBindingを送る TokenBindingを検証
トークンに関連づけておいたTokenBindingIDと比較
tls-unique
• いま話してる相手が• トークン発行先
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Token Binding IDの詳細
以下の要素を持つバイナリ構造体
TokenBindingType: providedまたはreferred
SignatureAndHashAlgorithm: p256またはrsa2048
公開鍵
タイプは後述
署名/ハッシュ方式もIDの一部とする
ダウングレード攻撃を防ぐ
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
ネゴシエーション
TokenBindingを使うかどうか ALPNで決める案
ALPN IDが長くなっちゃうのがいまいち
TLSの新しい拡張を作る案
TLSセッション確立後の最初のユーザープロトコルで送信
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
注意すべき点
プライバシー Token Binding IDはサーバーごとに別にする
複数サーバーの結託「こいつ同じやつだ」を防ぐ
Token Binding IDはクリアテキストで送らない 横から見て「あいつあのサーバー行った」を防ぐ
ユーザー要求で削除できるように
セキュリティー Man-in-the-Browserは防げない点に注意
秘密鍵をエキスポート不可な場所に保存 取り出して他のマシンで使われることを防ぐ
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
ChannelIDってのもありましたね?
#idcon 16th でちょろっと話が
draft-balfanz-tls-channelid-01 Google Chromeなどに実装済
individual draftのままexpire
著者のDirk Balfanzはtokbind-protocol-00の著者にも入っている
Channel IDとtokbindの比較 公開鍵と署名を送るのは同じ
ChannelIDはTLS拡張で送信
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
HTTPでのToken Binding
draft-ietf-tokbind-https-00 Token-Binding HTTPヘッダを使って
TokenBindingMessageを送る
クッキーやOAuthトークンをTokenBindingIDと関連づける トークン内に記入して署名 データベースに保存
#fidocon 2015/05/27
GET / HTTP/1.1
Host: example.com
Token-Binding: DLF02LDSK3DMS28SA…
User-Agent: …
おなじみ
Url-safe Base64
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
フェデレーションサポート
IdPから得たid_tokenをRPに提示 RPがid_tokenを見て確かに今これを持ってきた人はIdPからこのトークンをもらった人だと確認したい
id_tokenにToken Binding ID入れればいい! Token Binding IDはIdP用とRP用で異なる RP用のToken Binding IDをid_tokenに入れる必要がある
クライアントがRP用のToken Binding IDをIdPに渡す
#fidocon 2015/05/27
http://www.ietf.org/proceedings/92/slides/slides-92-tokbind-2.pdf
http://www.ietf.org/proceedings/92/slides/slides-92-tokbind-2.pdf
TokenBinding RP用
TokenBinding RP用TokenBinding IdP用
tls-unique-r
tls-unique-i
providedタイプ
providedタイプ referredタイプ
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
FIDO
#fidocon 2015/05/27
challenge
challengechallenge
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
tls-unique
Token BindingとFIDO
#fidocon 2015/05/27
challenge
challenge
tls-uniqueTokenBinding
challenge
tls-unique
FIDOデバイスを持っていればトークンが使える
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
まとめ
TokenBinding 鍵ペアとtls-uniqueで相手を特定
トークンを関連づけて行使者を限定
フェデレーションサポート
FIDOを使って署名
#fidocon 2015/05/27
Copyright © 2004-2015 Lepidum Co. Ltd. All rights reserved.https://lepidum.co.jp/
Any Questions? / Please Feedback!
https://lepidum.co.jp/
mailto:[email protected] / twitter: @mad_p
#fidocon 2015/05/27