コンテンツへスキップ
0%

RIP-7212とは?secp256r1曲線サポートのためのプリコンパイル

Dogan Alpaslan headshot

執筆者 Dogan Alpaslan

2024年3月11日 公開読了時間 3 分

RIP-7212 secp256r1 プリコンパイル解説バナー

Account Abstractionは、Ethereumアカウントにアカウントプログラマビリティという重要な機能をもたらした。これにより開発者は、1日あたりの支出上限の設定、異なる署名者の使用、任意のトークンでの手数料支払いなど、何千もの新機能を作成できるようになる。本稿では、rollup上へのRIP-7212(旧EIP-7212)の統合により、生体認証署名者の利用が可能になることで、開発者がどのようにユーザー体験を改善できるかに焦点を当てる。

現在のEthereum署名

**デフォルトアカウントの多くがexternally owned account(EOA)であるEVMネットワークでは、**所有権は楕円曲線暗号(ECC)によって証明される。これは、鍵を明かすことなく、鍵を保有していること、およびそのメッセージがその鍵で署名されたことをトラストレスに証明する方式である。

現在、ユーザーが資金を管理する方法は、self-custodialウォレット(シードフレーズとして鍵を保管する方式)か、custodialソリューション(鍵管理を第三者に委ねる方式)のいずれかである。

一方で、web2セキュリティ研究の数十年の蓄積により、実戦で鍛えられたハードウェア・ソフトウェア・ソーシャルの秘密鍵管理スタックが確立されている。その結果、現代のデバイスにはユーザーの鍵を保護するために設計されたセキュアなハードウェア要素が搭載されている。しかし、これらはEthereumが現在採用しているsecp256k1楕円曲線をサポートしていない。そのため、こうしたセキュリティのベストプラクティスをEOAに組み込む手段は存在しない。

スマートコントラクトアカウントは、secp256k1(Ethereumが唯一ネイティブサポートする曲線)以外の楕円曲線を含む、さまざまな認証方式を可能にする。生体認証署名者のような異なる認証方式を用いることで、ユーザー体験の向上とセキュリティの強化が同時に実現できる。本節では、これらのセキュアエンクレーブがどのように機能するか、そしてスマートアカウントと組み合わせた場合にどうなるかを説明する。

身近なデバイス上のセキュアエンクレーブ:ポケットの中のハードウェアウォレット

現代のほぼすべてのデバイスは、チップ設計にTrusted Execution Environment(TEE)と呼ばれるものを組み込んでいる。これは、ユーザーの最も機密性の高いデータを保護するシールドとして機能するよう特化して設計された高度なハードウェア要素である。

例えば、Apple製品には2013年以降、Secure Enclaveと呼ばれるTEEが搭載されている。アプリのプロセスや通知など、あらゆる処理を担うデバイスの他の部分とは異なり、TEEはデバイスの他のコンポーネントから隔離された独立したマイクロチップである。この隔離により、生体情報や暗号鍵などの機密データは、デバイスの他の部分を侵害する可能性のある脅威から切り離される。TEEの活用は、現代のデバイスで鍵を保管する最も安全な方法であり、事実上、日常使いのデバイスを生体認証でのみアクセス可能なハードウェアウォレットへと変える。

TEEをスマートアカウントとどう組み合わせるか

セキュアエンクレーブを使うと、ユーザーはTEE内部で鍵を生成し、その鍵で任意のメッセージに署名できる。これはまさに、オンチェーンでの検証に必要なものである。TEE内部に存在する秘密鍵から導出されたオーナーを持つスマートアカウントを作成できる。これらの鍵はデバイスから外に出ることがなく、(生体認証によって)デバイスの所有者のみがアクセスできる。

trusted execution environment の仕組みを示す図

パスキー:パスワードレスなwebへの道

ハッキングに関連する侵害の約81%は、盗まれた、あるいは脆弱なパスワードの使用が関与している。この問題に対処するため、研究者たちはFIDO AllianceとW3Cによって開発されたWebAuthnプロトコルに注目してきた。これは公開鍵暗号を用いたより安全な鍵管理システムを提供し、セキュリティとユーザー体験の両方を向上させるものである。WebAuthnはこれまでに、Google、Amazon、Microsoft、Coinbaseなどの大企業に認証方式として採用されており、その普及は急速に進んでいる。

WebAuthnは、ドメイン固有の公開鍵暗号をユーザー認証に用いることで、従来のパスワード方式が抱える弱点や不便さの克服を目指している。このアプローチにより、パスワード、パスワードの失念、アカウントロックアウトが不要になり、一般的なセキュリティリスクも軽減される。

パスキーの仕組み

パスキーはWebauthn標準の実装であり、現代のほぼすべてのデバイスで動作する。ユーザーがアカウントに登録すると、OSはそのアプリやウェブサイトに固有の、アカウントに紐づく一意の鍵ペアを生成する。これらの鍵は多くの場合生体認証を伴うSecure Enclaveによって暗号化され、iCloud Keychainなどのパスワードマネージャーを通じてデバイス間で同期される。

パスキーには、ブロックチェーンにおけるアカウント管理のユースケースが数多く存在する。ブロックチェーンで利用するには、開発者はパスキーの公開鍵をスマートコントラクトに格納し、それを認証手段として使用すればよい。

passkey の仕組みを示す図

残念なことに、ほぼすべてのセキュアエンクレーブとパスキーは、NISTが開発したsecp256r1曲線(P256)をサポートしているのに対し、Ethereumがネイティブにサポートするのはsecp256k1曲線のみである。そのため、所有権をピアに証明するにはオンチェーンでの検証が必要になるが、どうすればそれが可能なのか。

その答えがRIP-7212である。

RIP-7212とは何か:secp256r1曲線サポートのためのプリコンパイル済みコントラクト

RIP-7212は、プリコンパイル済みコントラクトによって安価かつ安全、高速なP256曲線検証を可能にする、Ethereumプロトコルにおける中核的な変更である。これは、Layer 2ブロックチェーンによって提案され、承認された最初のRollup Improvement Proposalである。

プリコンパイル済みコントラクトとは何か

プリコンパイル済みコントラクトは、伝統的な意味での「コントラクト」ではなく、Ethereumプロトコルにネイティブに組み込まれているために「プリコンパイル」と呼ばれる、あらかじめ定義されたネイティブ関数である。

プリコンパイル済みコントラクトは、暗号計算(secp256k1やsecp256r1の署名検証など)やハッシュ関数といった特定の演算に対して、パフォーマンスとガスコストの低さに最適化されている。プリコンパイル済みコントラクトがなければ、これらの演算をEthereum Virtual Machine上で実行するにはより多くのコードと計算能力が必要になり、ガス代が高くなる。evm.codesのウェブサイトでEthereumのプリコンパイル一覧を確認できる。

RIP-7212は他のソリューションとどう比較されるか

RIP-7212を用いると、P256の検証はわずか3450ガスで済み、プロトコル変更を伴わない最良の選択肢と比べて100分の1に削減される。RIP-7212は、EVMチェーン上でP256を検証する最もガス効率がよく、安全で、高速な方法である。

前述の通り、生体認証署名者(Passkeysやセキュアエンクレースに基づくものなど)の利用は、オンチェーンでP256曲線を検証する手段があって初めて可能になる。オンチェーンでP256曲線を検証する方法はいくつか存在するが、いずれも安価ではない。

Verifier
Gas Consumption (Account Creation)
Gas Consumption (Single Transaction)
Proving Time
Type

Obvious' Solidity Verifier

330k

330k

Instant

Smart Contract Verifier

Alembic's Solidity Verifier

2M

375k

Instant

Smart Contract Verifier

FCL's Solidity Verifier w/o precomputation

205k

205k

Instant

Smart Contract Verifier

FCL's Solidity Verifier with precomputation

3.2M

69k

Instant

Smart Contract Verifier

Risc0 Verifier

250k

250k

Nearly instant

Zero Knowledge Verifier

KnowNothingLab's Verifier

520k

520k

~4 seconds

Zero Knowledge Verifier

Circom

230k

300k

Nearly instant

Zero Knowledge Verifier

A Verifier with EVMMAX

73k

73k

Instant

Core Protocol Change

EIP-7212 Precomiler Contract for P256

3450

3450

Instant

Core Protocol Change

RIP-7212の現状とユースケース

RIP-7212の仕様は確定しており、いくつかのチーム(Kakarot、Polygon、Optimism、zkSync、Arbitrum)が既にこのプリコンパイルを自社のrollupエコシステムに実装することを表明している。Polygonは最近RIP-7212をテストネットに導入し、開発者による検証が始まっている。

RIP-7212のユースケースはスマートアカウントに限らない。RIP-7212は、分散型ブロックビルディング(SUAVE)やrollup向けの2FA(TaikoやScroll)など、Trusted Execution Environmentのリモートアテステーション検証にも利用でき、その用途はさらに広がっている。

RIP-7212を利用したERC-6900互換のP256バリデータコントラクトの構築

RIP-7212が稼働した後の次のステップは、開発者がエンドユーザー体験を改善するためにこれを最大限利用しやすくすることである。スマートアカウントに新しいコードを組み込むことは摩擦とリスクの大きい作業であり、RIP-7212が提供するような大幅に簡素化されたフローであっても、慎重な設計、テスト、監査が必要である。

ここでERC-6900の出番となる。

ERC-6900: Modular Smart Contract Accounts and Pluginsは、開発者がロジックの単位をプラグインとして切り出し、他のアカウント開発者がそれを利用できるようにするためのEVM標準である。これにより開発者は、自前でプラグインを構築する代わりに、実戦で検証済みのプラグインに頼ることでエンドユーザー体験を向上させられる。

RIP-7212とERC-6900を組み合わせることで、効率的なP256検証のためのシンプルなアカウントプラグインが実現し、開発者側の負担を最小限に抑えつつ、ユーザーに安価で安全な生体認証を提供できるようになる。mainnetでのRIP-7212の採用が加速するにつれ、対応するrollup上でこのプラグインをリリースできることを楽しみにしている。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。