Lompat ke konten

Dompet kunci sesi

Pelajari cara kunci sesi akun pintar mendelegasikan wewenang terbatas, batasan yang harus diterapkan, serta cara memverifikasi, mencabut, dan menangani kunci yang bocor.

Diperbarui

Hanya untuk tujuan edukasi; bukan nasihat investasi. Kunci sesi yang bocor atau memiliki hak berlebihan dapat menyebabkan kehilangan aset digital yang tidak dapat dipulihkan.

Jawaban langsung

Kunci sesi dompet biasanya berupa kunci penandatangan sekunder, atau kredensial delegasi yang terikat padanya, yang hanya diterima akun pintar berdasarkan aturan tertentu. Aturan itu dapat membatasi waktu, kontrak tujuan, pemilih fungsi, jumlah token, jumlah transaksi, atau kondisi lain. Tujuannya adalah agar aplikasi dapat melakukan tindakan berulang tanpa meminta pemilik menyetujui setiap operasi dengan penandatangan utama.

“Kunci sesi” adalah pola desain, bukan satu standar Ethereum yang universal. ERC-4337 menyediakan validasi akun yang dapat diprogram dan validasi UserOperation berbatas waktu, sedangkan sistem modular seperti ERC-7579 dapat menampung validator, eksekutor, dan hook. Kode akun dan modul yang diterapkan pada akhirnya menentukan kemampuan kunci. Masa berlaku saja tidak membuat sesi aman, dan menghapus salinan di peramban belum tentu mencabut wewenang yang terdaftar on-chain atau termuat dalam delegasi yang belum kedaluwarsa.

Cara kerjanya

Alur umum memiliki 5 tahap:

  1. Pemilik membuat pasangan kunci baru pada perangkat atau mengotorisasi kredensial yang mengidentifikasi penandatangan sesi. Kunci privat sesi tidak boleh dikirim ke server aplikasi kecuali desain secara tegas menjadikan server itu kustodian tepercaya.
  2. Pemilik mengotorisasi kebijakan dengan dompet utama. Sebagian sistem memasang kunci dan kebijakan on-chain; sistem lain memakai delegasi bertanda tangan yang divalidasi akun ketika operasi datang.
  3. Aplikasi menyusun operasi dan menandatanganinya dengan kunci sesi. Dalam alur ERC-4337, logika validateUserOp akun memeriksa tanda tangan dan kebijakan; simulasi bundler adalah pemeriksaan penerimaan, bukan bukti eksekusi atau keamanan.
  4. Akun harus menerapkan setiap batasan sebelum eksekusi. Wewenang efektif dapat diringkas sebagai A_effective = K ∩ P ∩ S: kepemilikan kunci (K), kebijakan terkonfigurasi (P), serta kondisi akun atau jaringan saat ini (S) semuanya harus mengizinkan tindakan.
  5. Sesi berakhir karena kedaluwarsa, nonce atau kuota habis, pencabutan eksplisit, penghapusan modul, atau jalur invalidasi khusus implementasi lainnya. Konfirmasikan kondisi akhir akun pada jaringan yang benar.

Sebelum mengotorisasi sesi, periksa:

  • ID jaringan, alamat akun pintar, implementasi akun, serta alamat validator atau modul;
  • kunci publik sesi atau pengidentifikasi kredensial dan lokasi penyimpanan materi privatnya;
  • setiap tujuan, pemilih fungsi, token, dan aturan penerima yang diizinkan, batas nilai aset asli, serta batas per panggilan atau kumulatif;
  • validAfter, validUntil, aturan nonce, jumlah penggunaan, dan apakah waktu diukur dari stempel waktu blok atau sumber lain;
  • apakah batch, panggilan bertingkat, delegatecall, persetujuan token, pemasangan modul, peningkatan akun, dan tanda tangan pesan ERC-1271 diblokir kecuali benar-benar diperlukan;
  • siapa yang dapat mencabut sesi, apakah pemilik mempertahankan jalur pemulihan independen, dan apakah pencabutan memerlukan Gas atau bundler atau paymaster yang berfungsi.

Kebijakan harus memeriksa tindakan yang benar-benar akan dieksekusi. Memeriksa hanya tujuan luar suatu batch dapat membiarkan panggilan di dalamnya tanpa batas; memeriksa hanya penerima sambil mengabaikan fungsi dan nilai menimbulkan masalah yang sama. Batas hanya bermakna jika kode penerapannya mencakup setiap jalur eksekusi.

Contoh

Dompet gim membuat sesi selama 24 jam. Sesi hanya mengizinkan panggilan ke kontrak gim terverifikasi, memblokir delegatecall dan persetujuan token, membatasi nilai aset asli pada 0.02 ETH per panggilan dan total pengeluaran pada 20 USDC. Gim dapat mengirim tindakan yang diizinkan tanpa konfirmasi berulang, tetapi permintaan memindahkan NFT yang tidak terkait harus gagal divalidasi.

Sebelum digunakan, pemilik mencatat akun, jaringan, modul, kunci publik sesi, kedaluwarsa, batas, dan cara pencabutan. Pemilik menguji satu tindakan bernilai rendah, memverifikasi panggilan yang didekode dan peristiwa akun, lalu menguji pencabutan secara terpisah. Ini mengonfirmasi jalur yang dikonfigurasi; bukan bukti bahwa modul bebas kerentanan atau perangkat yang disusupi tidak dapat membelanjakan sisa batas.

Risiko dan pengendalian

  • Kebijakan terlalu luas: tujuan wildcard, pemilih tanpa batas, persetujuan token tak terbatas, batch, atau delegatecall dapat mengubah kunci “terbatas” menjadi hampir setara pemilik. Gunakan daftar izin eksplisit dan larang tindakan administratif.
  • Pencurian kunci: penyimpanan peramban, log, cadangan, ekstensi, malware, dan perangkat bersama dapat mengekspos kunci. Utamakan penyimpanan terisolasi atau terlindungi perangkat keras jika didukung, masa singkat, dan batas kumulatif rendah.
  • Penerapan cacat: akun, validator, eksekutor, atau hook dapat salah mendekode panggilan atau melewatkan jalur lain. Gunakan penerapan terverifikasi, kode yang ditinjau, audit, dan pengujian skenario bypass.
  • Replay dan kekeliruan konteks: penanganan nonce yang lemah atau tidak ada ikatan ke jaringan, akun, modul, atau kebijakan tujuan dapat memungkinkan penggunaan ulang. Verifikasi domain tanda tangan yang tepat dan perlindungan replay on-chain.
  • Asumsi tentang kedaluwarsa: validUntil dapat membatasi satu operasi ERC-4337 tanpa otomatis menghapus kunci terdaftar, allowance token, atau delegasi lain. Periksa kondisi nyata setiap izin setelah kedaluwarsa.
  • Pencabutan gagal: menghapus data lokal hanya menghilangkan satu salinan rahasia. Cabut melalui jalur terdokumentasi dan verifikasi hasil on-chain; pertahankan Gas yang cukup dan jalur cadangan di bawah kendali pemilik.
  • Modul yang dapat ditingkatkan atau berbahaya: modul dapat memiliki hak eksekusi kuat dan peningkatan dapat mengubah kebijakan. Periksa pemilik, jeda peningkatan, hak penghentian, alamat implementasi, dan prosedur penghapusan.
  • Penyalahgunaan Gas dan sponsor: sesi dapat menghabiskan dana akun untuk Gas atau tidak dapat digunakan saat ditolak paymaster. Batasi perilaku biaya jika memungkinkan dan pertahankan jalur pengiriman independen.

Jika kunci mungkin terekspos, hentikan penggunaan aplikasi terkait, simpan pengidentifikasi sesi dan hash transaksi penting, lalu cabut atau nonaktifkan kunci dari perangkat bersih yang dikendalikan pemilik. Setelah itu periksa operasi tertunda dan terkini, persetujuan token, modul terpasang, peningkatan akun, serta saldo pada setiap jaringan yang didukung. Pindahkan aset tersisa hanya jika desain membuat pencabutan tidak dapat diandalkan; terburu-buru menuju situs “pemulihan” yang belum diverifikasi dapat memperbesar kerugian.

Kesalahpahaman umum

  • “Kunci sesi tidak dapat memindahkan aset.” Kunci dapat melakukan semua tindakan yang diizinkan kebijakan, termasuk transfer, swap, persetujuan, atau tanda tangan.
  • “ERC-4337 menentukan izin kunci sesi.” ERC-4337 menyediakan kerangka validasi dan eksekusi; kebijakan tetap khusus dompet atau modul.
  • “Masa berlaku singkat membatasi kerugian maksimum.” Kerugian juga bergantung pada batas per panggilan dan kumulatif, frekuensi, Gas, persetujuan, harga, dan semua jalur yang dapat dijangkau.
  • “Keluar dari aplikasi mencabut kunci.” Itu mungkin menghapus salinan lokal, tetapi tidak membuktikan pendaftaran on-chain atau delegasi bertanda tangan telah tidak berlaku.
  • “Simulasi berhasil berarti operasi aman.” Simulasi dapat menunjukkan validasi saat ini menerima operasi; bukan bukti niat, inklusi nanti, eksekusi, finalitas, atau ketiadaan kerentanan.

Topik terkait

Sumber

Navigasi

Cari di wiki...