3月30日のLightning Labsのブログ投稿以降、Lightning Service Authentication Tokens (LSAT)が話題になっています。ブログ投稿自体は俯瞰的な位置づけですが、それでもある程度の前提知識がないとわからないので、LSATが何か、どういう仕組みか、どういう活用方法があるかについて解説させていただきます。
HTTPステータスコード「402 PAYMENT REQUIRED」
HTTPステータスコードとは、クライアント(ブラウザなど)がHTTPリクエストを送ったときにサーバーから返ってくる返答の種類を規定した3ケタの数字です。おそらく皆さんも「404 Not Found」や「502 Bad Gateway」は見たことがあると思います。
HTTP1.0が登場した1996年にステータスコードが規定されましたが、このときすでに402 Payment Requiredが予約されていました。しかし今に至るまで、「Payment Required」という語句以外は将来的に使用するために予約されているだけで何も定められていません。リソースを表示するのに支払いが必要というコードですが、1996年当時から現在に至るまで、広く普及したオープンな電子決済手段がなかったからと考えられています。
今回のLSATは、思想的にはLightningとMacaroonを使ってHTTP 402を使ったシームレスなオンライン支払いを実装したいという側面があります。
MacaroonとはGoogleが開発を主導している認証・権限管理スキームで、ブラウザでよく使われるCookieや、様々なAPIの利用に必要なAPIキーに似ています。
Cookieをサーバーに送り、サーバーの情報と照らし合わせてログイン状態を確認するように、Macaroonもサーバーに送ることでアクセス権を確認できます。ただし、あくまでアクセス権はMacaroon自体に規定してあり、そのMacaroonに規定してある内容と、正規のものであることはサーバーが暗号学的に検証できます。アカウントとの紐付けは必要ありません。
また、固有の特徴として、Macaroonはサーバー側が生成時にMacaroon自体に制限を付加したり、ユーザーがさらなる制限を加えてから別のユーザーに移譲することもできます。
MacaroonはLndで使われていますが、まだ一般的には使われていないので日本語情報を見つけるのが大変です…。
LSATとは
一言で言えば、LSATとはライトニング払いで「トークン(Macaroon)」を入手して、それを使って有料コンテンツにアクセスするための枠組みです。技術的にはHTTP + Macaroon + Lightningと表現されています。