Slide 1

Slide 1 text

暗号通貨読書会 #75 Macaroons 原 利英 AndGo, Inc. Excite The World with Technology

Slide 2

Slide 2 text

Macaroonsとは Macaroonsの原論文: A. Birrell, et al. "Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud." 2014. https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/41892.pdf 背景 1997年 DHTML登場、CookieがRFC標準化 - HTML+CSS+JavaScriptなWeb1.0時代に 2005年 Ajax登場 - Google Mapを筆頭に動的に通信する UIがはじまる 2006年 マッシュアップはじまる - WebサービスAPIが提供され、Web2.0時代に 2007年 OAuth1.0登場 - APIアクセス権限委譲のしくみが標準化される 2008年 Chrome Browser登場 - JS V8エンジンが次元を上げた 2012年 AngularJS v1.0.0登場、OAuth2.0 RFC標準化 - SPA時代に 2017年 LND v0.2がgRPCの認証方式としてMaracoonsを導入 Webサービスの連携が増え、デジタルアイデンティティの共有が問題となってきた時代に提案された

Slide 3

Slide 3 text

Macaroonsが解決したいこと Webサービス間での連携は大変だよ問題 実現したいこと ● Google Photoで管理しているプライベートな写真を、 ● その画像へのURLリンクを電子メールで安全に送信し、 ● Apple写真アプリで家族だけに共有する 課題感 これら2つのサービスが独自に連携を作り込めば可能だけど... 公開鍵証明書ベースな仕組みを構築すると、”認可”をサービス間で委任できるけど、証明書の取消問題、 公開鍵ベースは重い問題等が課題になる また、アイデンティティの共有を要求するページにリダイレクトされたりなど、UXは微妙 技術的背景 主なWEBサービスでの制御は、Bearer Tokenを運ぶHTTP Cookie認証メカニズムに基づいている 利用可否が「トークンの所有」のみで決定されるもの

Slide 4

Slide 4 text

Macaroons Macaroonsによる解決案 (1) 高速な暗号プリミティブに基づくBearer Tokenの幅広い適用可能性、使いやすさ、プライバシー面 の利点 (2) SPKI/SDSIといった認可機構に基づく真に分散されたクレデンシャルの表現力 (3) いつ、どこで、どのようにクレデンシャルを使用できるかの一般的で正確な制限 スプーキー、サドシーと発声するらしい。認証局( CA)に頼らな い公開鍵基盤の欲しき これらを提供し、シンプルなBearer Tokenと柔軟な公開鍵 証明書とを組合わせた認証方式をつくる

Slide 5

Slide 5 text

とりあえず試してみる http://macaroons.io/

Slide 6

Slide 6 text

Macaroons 特徴 シンプルなデータ構造 ● 特定の場所に紐付けられている ● 特定の識別子に紐付けられている ● 秘密鍵で署名されている 秘密鍵を所有する者※だけがMacaroonsの記載内容が真か検 証できる ※ ユーザーじゃないよ ※ 公開鍵暗号のセンスはなく、第三者による検証はできない

Slide 7

Slide 7 text

Macaroons Macaroonsは制限(Caveat)を付加できる Hash(secret, identifier, location) => signature Hash(signature, “user = emily”) => signature Hash(signature, “action = read”) => signature Hash(signature, “resource =cat.gif”) => signature Predicates 実際にはHMACを使う

Slide 8

Slide 8 text

雰囲気をコードでみてみる https://github.com/nitram509/jmacaroons

Slide 9

Slide 9 text

Macaroonsについて 3rd party macaroons ● cIdは公開鍵による暗号化メッセージに取り 替えることも可 ● サービス提供者はvIdを復号することで、 dischargeされたMacaroon(上段)を検証でき る(そのMacaroonの署名f5..30を得られる ため)

Slide 10

Slide 10 text

Macaroonsについて ProsCons Federationな仕組みをつくる際に、効率良く簡単に導入できる 既存の方法 ● 単純なBearer Tokenベースで、無条件に権限が付与され、ドメイン間で直接送信される ● APIキー、OAuthトークン、SAML、OpenIDアサーションなど ● これらが使われているのは効率性、幅広い適用性、採用のし易さのため Macaroonsの利点 ● HMACベースであり、上記特性をすべて備える ● BearerベースなのでMacaroonsを集めるだけで権限を得ることができる ● ユーザーがクレデンシャルをいつ、どこから使うかを制限できる Macaroonsの欠点 ● 検証できるのは(鍵を持つ)サービス提供者だけ ● 鍵を使い回すような複雑な仕組みには応用できない(セクション IV-D, V-B, V-Hで公開鍵を使った ワークアラウンドを提案)

Slide 11

Slide 11 text

Macaroonsについて 応用例 CookieとしてMacaroonsを利用する 全てのOutbound Cookieを単一のクライアント IPに制限し、有効期限を数秒に制限することで、 Cookie盗 難時のリスクをさげられる ❓ クライアントがAPIリクエストを行う際に Cookie Macaroonsに付加された制限を Clientが持つ秘密鍵で 検証するということ? クライアントの子クライアントにて Cookie Macaroonsを保持するということ?

Slide 12

Slide 12 text

疑問 OAuthのScopeと何が違うの?

Slide 13

Slide 13 text

疑問

Slide 14

Slide 14 text

疑問 JWTと何が違うの?

Slide 15

Slide 15 text

疑問

Slide 16

Slide 16 text

Macaroons まとめ OAuthのScopeと何が違うの? →Scopeは予め定義された権限範囲を提供、Caveatsは動的で柔軟な制約設定が可能 JWTと何が違うの? →ネストできて委譲できる点

Slide 17

Slide 17 text

Macaroons ディスカッション LNDはなぜOAuthじゃなくてMacaroonsを採用した?

Slide 18

Slide 18 text

References Macaroonsの原論文: A. Birrell, et al. "Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud." 2014. LND (Lightning Network Daemon): ● GitHubリポジトリ: https://github.com/lightningnetwork/lnd ● LND Macaroonsドキュメント: https://github.com/lightningnetwork/lnd/blob/master/docs/macaroons.md ChatGPT https://chat.openai.com/chat/

Slide 19

Slide 19 text

試したい方 JavaScript https://github.com/nitram509/macaroons.js 今年 discontinued になったっぽい C言語 https://github.com/rescrv/libmacaroons Go言語 https://github.com/go-macaroon/macaroon LND実装のベースになったもの

Slide 20

Slide 20 text

Appendix

Slide 21

Slide 21 text

株式会社AndGo代表取締役 原 利英,博士(理学)  2010年3月 東京理科大学理工学研究科情報科学専攻博士後期課程卒業  2010年4月 - 2015年3月 東京理科大学理工学部情報科学科助教  2015年4月 - 2017年4月 アクテイブ株式会社IT研究所主任研究員  2017年4月 株式会社AndGo創業 著書:数理物理と数理情報の基礎, 近代科学社, 2016. SNS: 専門: 電子工作 天空の城ラピュタ ドラゴンボール 東芝J3100 (白黒液晶) QBasic, Delphi Doom, Quake, Unreal 小学生 中学生・高校生 ゲノム解析手法 塾教師/がん研究会 アーチェリー github/toshihr @ToshihideHara 大学生 Genome Analysis / Drug Delivery System / Chaos / Crypto 研究職 暗号と出会う ゲノムは暗号! ・高精度アライメント法 ・AESより速い暗号化法 ・暗号化したまま比べる技術

Slide 22

Slide 22 text

株式会社AndGo代表取締役 原 利英,博士(理学)  2010年3月 東京理科大学理工学研究科情報科学専攻博士後期課程卒業  2010年4月 - 2015年3月 東京理科大学理工学部情報科学科助教  2015年4月 - 2017年4月 アクテイブ株式会社 IT研究所主任研究員  2017年4月 株式会社AndGo創業 著書:数理物理と数理情報の基礎 , 近代科学社, 2016. SNS: 専門: 電子工作 天空の城ラピュタ ドラゴンボール 東芝J3100 (白黒液晶) QBasic, Delphi Doom, Quake, Unreal 小学生 中学生・高校生 ゲノム解析手法 塾教師/がん研究会 アーチェリー github/toshihr @ToshihideHara 大学生 Genome Analysis / Drug Delivery System / Chaos / Crypto 研究職 暗号と出会う ゲノムは暗号! ・高精度アライメント法 ・AESより速い暗号化法 ・暗号化したまま比べる技術 Who is me

Slide 23

Slide 23 text

MUFG Digital Accelerator 第3期プログラム採択 実績

Slide 24

Slide 24 text

エンタープライズ向けウォレット プロダクト・サービス デジタルアセット事業 ANDGOは次世代デジタルアセットを支える基礎技術を提供します。 デジタルアセットという、私たちの社会を根本から革新するしくみを 複数の事業者と連携しながら推進しています。 金融事業者 商社  複数人による認可を可能とする強固な鍵管理技術

Slide 25

Slide 25 text

コンシューマ向けアプリ プロダクト・サービス

Slide 26

Slide 26 text

ビットコイン研究所 プロダクト・サービス