ietf97 update oauth tokbind
TRANSCRIPT
https://lepidum.co.jp/ Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.
IETF97SeoulOAUTH関連レポート
株式会社レピダム
前田薫 (@mad_p)IETF97報告会 2016/12/16
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
Agenda
n WGn oauthn tokbind
n IETF97n Seoul,KRn Nov13-18,2016
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
⾃⼰紹介
n 名前n 前⽥薫@mad_p
n 所属n 株式会社レピダムシニアプログラマ
n コミュニティー活動n ISOC-JPPCn LightweightLanguagen IdentityConferencen http2study
n 業務領域n 認証・認可、デジタルアイデンティティー、プライバシー
n 標準化⽀援n ソフトウェアセキュリティー、脆弱性
n IETFとの関わりn IETF89Londonよりn ART,SECエリア中⼼
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/ IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
oauth WGOverview
n ⽉曜⽇と⽔曜⽇の2コマ開催n Minutes draft
n https://www.ietf.org/proceedings/97/minutes/minutes-97-oauth-00.txt
n DeviceFlow:ログイン⼿段のないデバイスはスマホで認証
n OAuth2向けTokenBindingの話がまだ続くn セキュリティー等に関するBCPを作成する
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
oauth WGDocumentsUpdaten draft-ietf-oauth-amr-values-03 →IESG
AuthenticationMethodReferenceValuesn 認可に際し、使⽤した認証⼿段(パスワード、指紋など)を表現するための語彙
n draft-ietf-oauth-jwsreq-09 →IESGTheOAuth2.0AuthorizationFramework:JWTSecuredAuthorizationRequest(JAR)n 認可リクエストをJWTにパッケージし、署名(JWS)または暗号化
(JWE)を可能とするn draft-ietf-oauth-native-apps-05
OAuth2.0forNativeAppsn スマホなどのネイティブアプリでのOAuth/OpenIDConnectフローにおけるベストプラクティス
n いくつかの最終調整を経てIESGへ
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
oauth WGPresentations(1/2)
n HannesTschofenig:DeviceFlown TVなど⼊⼒装置がないが表⽰装置はあるデバイス。スマホや
PCから表⽰されたコードを⼊⼒して認可を⾏うn MikeJohns:AuthorizationServerMetadata
n IdP Mix-upAttackに対する緩和策として、エンドポイント情報をサーバーメタデータとして提供する形式を定める
n →認可サーバーのメタデータを独⽴した⽂書としてpublishn →リソースサーバーについては説明不⾜
n BrianCampbell:OAuth2.0TokenBindingn tokbind WGからoauth WGへ持ってきた。OAuth2.0でのToken
Bindingの活⽤⽅法
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
oauth WGPresentations(2/2)n Brain Campbel: OAuthTokenExchange
n すでに得ている認可トークンを利⽤して権限委譲や偽装を⾏うトークンを得る
n →WGLC前にもっと実装経験が必要n TorstenLodderstedt:OAuthSecurity
n OAuth2のセキュリティー上の問題やantipatternsなどをまとめるn 前回BerlinでBCPの必要性が⽰されたn →セキュリティーに限定せずBCPとしてWGアイテムに
n JustinRicher:HTTPSigningn リソースサーバーへのリクエストをJWTにパッケージして署名/暗号化するn →MLで議論。実装者がいるのかどうか
n JohnBradley:ResourceIndicatorn access_tokenを使⽤するリソースサーバーをクライアントから認可サーバーに伝えるためのパラメータ
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
DeviceFlow(1/2)
IETF97報告会 2016/12/16
https://www.ietf.org/proceedings/96/slides/slides-96-oauth-2.pdf
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
DeviceFlow(2/2)n 3openissues
n pollingn AS→device向きにポーリングするのださいよねn そのままがシンプルでよいn HTTP/2ベースのlong-pollingならリソース⾷わないn OpenIDMODRNAWGではpull/pushを検討中
n UI関連n codeと verificationURIをユーザーがデバイスで⼊⼒しなければならない
n ガイダンスが必要か?n 他の⼿段
n 例:ユーザーが電話番号を⼊⼒、SMSでcodeを送るn このような他の⼿段もdocumentすべきかn 結論:experienceがあれば⼊れる、なければ⼊れない
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
TokenBindingforOAuth(1/2)
n tokbind側の⽂書を修正n referredTBIDtrigger
n applicationspecificに決めてよいn keyscopingrules
n TBIDは特にnativeappで、何をしているかわかるときにはIdPとRPとで同⼀にしてもよい
n JWT、id_tokenでのtoken bindingの表現n cnfクレーム(RFC7800)にtbhとしてTBIDのハッシュを⼊れる
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
TokenBindingforOAuth(2/2)n AccessToken
n トリガ問題(前回) →アプリが知っているでOKn ATをtokenbindした場合、resourceserverが検証できるためにはRS向けのTBIDにbindする必要がある
n TBIDはeTLD+1をスコープとするべき(SHOULD)n →複数ドメインにまたがるリソースで同⼀のATを使えない
n Authorizationcoden codeを提⽰する接続にbindする
n nativeclient: nativeclient→★→tokenendpointn appserverclient:browser→★→ redirect_uri →tokenendpoint
n pkce_challengeの仕組みを使って運ぶ案が⽰されたn 対downgrade attack
n tokenbindingを使うかどうかをメタデータに⼊れる
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
oauth WGまとめn OAuth2プロトコル成⽴後、周辺の拡張、プロファイルなどの策定が進む
n TokenBindingについて議論が進んだn OAuth2に対する攻撃と緩和策をBCPとしてまとめる作業に着⼿n セキュリティーに限定しない
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/ IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
tokbind WGOverview
n ⽉曜⽇開催n Minutesdrafthttps://www.ietf.org/proceedings/97/minutes/minutes-97-tokbind-01.txt
n TokenBindingのコアドキュメントは順調n WGLC〜11/30
n 0-RTTやreverseproxyでの扱いについて検討n Chromeを使ったデモ
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
TokenBindingの概要n 参考:http://www.slideshare.net/KaoruMaeda/tokbindfido
IETF97報告会 2016/12/16
TLS接続ExportedKeyMaterial(EKM)
EKM
EKMを秘密鍵で署名、TokenBindingID(公開鍵)とセットにして送る
もらった公開鍵とEKMで署名検証
• いま話してる相手が• この公開鍵に対応した秘密鍵を持っている
• トークンとTBIDを関連づける
TokenBinding
サーバーごとに鍵ペアを⽣成
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
tokbind WGPresentationsn AndreiPopov:ChangesintheCoreTokenBindingI-DsSince
IETF96n コア⽂書3件の残ったissueなど。renegotiation、0-RTT、OAuth関連の議論
n コア⽂書はWGLCに突⼊し、残issueはWGLCコメントと扱うn NickHarper: TokenBindingfor0-RTTTLS1.3Connections
n →WGアイテムn TLS 1.3で導⼊される0-RTTでtokenbindingを使う場合の
exportedkeymaterial(EKM)についてn BrianCampbell:HTTPSTokenBinding&TLSTermination
n →WGアイテムn reverseproxyでTLSを終端する場合、どのようにtokenbinding情報をアプリサーバーに渡すか
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
core⽂書関連の議論n renegotiationによってEKMが変わる
n 変更前/変更後どちらのEKMを使うか?n →アプリがEKMを取得してTBmessageを作ってから、送信するまでの間にリネゴが⾛る可能性は常にある
n →そのような場合はリトライn Profileで規定されない限りrenegotiation禁⽌
n OAuthにやさしいTB修正案n oauthの項(前述)で⽰した修正案でOKn JavaScriptからのFetchでreferredTBIDを指定したい
n JSのオリジン以外のTBIDを送信指⽰できるべきでないn →おっとそれだといろいろ困るんだけど!n →CORSAccess-Control-Allow-Referred-Token-Binding?
n →まぬけなRSがあって同⼀のeTLD+1の送出許可を出すおそれ
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
0-RTTとtokenbindingEKMの問題n RFC5705exporterはTLShandshakeが終わらないと使えない→0-RTTでは使えない
n 現ドラフトの案: earlyexporterを定義n 0-RTTacceptされたらearlyexporterをずっと使うn rejectされたらRFC5705を使う
n replayprotectionn 新しいTLSextensionでnonceを送り、サーバーから返す案
n TB専⽤でなく、より⼀般的な解があるはず。もっと考えよう
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
reverse proxy
n TLSterminatorからアプリサーバーへ「何か」情報を渡さないとTBは使えないn 「何か」を標準化しないと実装がたくさんできて困りそう
n 2つのアプローチn TLSterminatorでTBをvalidateして、TB系ヘッダーとしてバックエンドサーバーへ検証済と送る
n LBでアプリレイヤの検証をするのか?n TLSterminatorからexportしてTBメッセージをヘッダーで渡し、アプリサーバーが検証する
n 検証失敗時のアプリサーバーからの切断指⽰が難しい。HTTPstatuscode?
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
tokbind WGまとめn TokenBindingのコア⽂書はWGLCに
n 残ったissueはコーナーケースだが重要n OAuthとの親和性向上n 実⽤化に向けての検討も進む
n 0-RTT、reverseproxyのサポートn JSFetchAPIとSameOriginPolicyについて注視
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/ IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
まとめn oauth WG
n 攻撃ベクターと緩和策BCP⽂書に着⼿n TokenBindingとの整合性を確認
n tokbind WGn コア⽂書が⼗分な品質に→WGLCn 0-RTT、reverseproxyでの活⽤について検討
IETF97報告会 2016/12/16
Copyright© 2004-2016LepidumCo.Ltd.Allrightsreserved.https://lepidum.co.jp/
AnyQuestions?FeedbacksWelcome!
https://lepidum.co.jp/mailto:[email protected]/twitter:@mad_p
IETF97報告会 2016/12/16