Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Macaroons

 Macaroons

ライトニングノード実装のLNDは、RPCコールにTLS暗号化とMacaroonsによる認証機構を組み込んでいます。今回は、このMacaroonsの原著論文を掘り下げてみたいと思います。

暗号通貨読書会 #75 Macaroonsでの発表資料となります。
https://cryptocurrency.connpass.com/event/276334/

Toshihide Hara

March 27, 2023
Tweet

More Decks by Toshihide Hara

Other Decks in Technology

Transcript

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

    View Slide

  2. 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サービスの連携が増え、デジタルアイデンティティの共有が問題となってきた時代に提案された

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. 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を使う

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. Macaroonsについて
    応用例
    CookieとしてMacaroonsを利用する
    全てのOutbound Cookieを単一のクライアント IPに制限し、有効期限を数秒に制限することで、 Cookie盗
    難時のリスクをさげられる

    クライアントがAPIリクエストを行う際に Cookie Macaroonsに付加された制限を Clientが持つ秘密鍵で
    検証するということ? クライアントの子クライアントにて Cookie Macaroonsを保持するということ?

    View Slide

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

    View Slide

  13. 疑問

    View Slide

  14. 疑問
    JWTと何が違うの?

    View Slide

  15. 疑問

    View Slide

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

    View Slide

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

    View Slide

  18. 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/

    View Slide

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

    View Slide

  20. Appendix

    View Slide

  21. 株式会社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より速い暗号化法
    ・暗号化したまま比べる技術

    View Slide

  22. 株式会社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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide