セキュリティモデル
Paliは非カストディアルウォレットです。dappsに秘密鍵を公開しません。dappsは注入されたプロバイダーへリクエストを送り、Paliがそれらのリクエストを検証してルーティングし、ユーザーは拡張機能UIで重要な操作を承認します。
基本原則
- Originごとの接続: 接続はdappホストごとに保存されます。
- dappごとに1つのアクティブアカウント: 多くのサイトを接続できる一方で、接続済みサイトが同時に持てるアクティブアカウントは1つです。
- 直列化された承認: ポップアップを開くブロッキングリクエストは、競合する承認でユーザーが埋もれないよう調整されます。
- ネットワークファミリーの確認: EVMメソッドとUTXOメソッドは分離されています。誤ったファミリーの呼び出しは、回復可能なdappエラーとして扱うべきです。
- 明示的な署名: トランザクション、PSBT、typed data、メッセージ署名、passkey作成、passkey実行、アセット監視リクエスト、チェーン変更には、適切なウォレット状態とユーザー承認が必要です。
- プロバイダー分離: Paliはトップレベルページにプロバイダーを注入します。iframesには注入しません。
dappsが受け取るもの
dappsは公開アカウント識別子、プロバイダー状態、署名、トランザクションハッシュ、明示的なRPC結果を受け取ります。seed phrase、秘密鍵、passkeyの秘密素材、認証器の秘密情報を受け取ることはありません。
Passkeyの安全性
PasskeyスマートアカウントはWebAuthn credentialsを使用します。Paliは公開メタデータとcredential識別子を保存しますが、秘密鍵素材は認証器内に残ります。Paliはcross-originのWebAuthn assertionsを拒否し、passkeyアクションハッシュが準備済みトランザクションセットと一致することを検証します。
スポンサーpolicyの安全性
機関向けスポンサーpolicyは次の2つに分かれます。
- オンチェーンpolicy: mode、スポンサーsigner、sponsor URL。
- ウォレットメタデータ: 表示用policy textとその他のローカルウォレットコンテキスト。
policyTextフィールドは文脈としてユーザーに表示されます。これはオンチェーンの強制プリミティブではありません。