Lompat ke konten

Tanda tangan dompet

Tanda tangan dompet membuktikan bahwa kunci atau akun kontrak menyetujui data yang tepat menurut aturan verifikasi tertentu. Bedakan pesan, transaksi, permit, replay, dan phishing.

Diperbarui

Hanya untuk tujuan edukasi; bukan nasihat investasi atau keamanan. Permintaan tanda tangan berbahaya dapat menyebabkan kerugian yang tidak dapat dipulihkan.

Jawaban langsung

Tanda tangan dompet adalah bukti kriptografis bahwa kunci privat, atau kebijakan akun pintar, menyetujui pesan terenkode tertentu. Verifikasi mengidentifikasi akun penanda tangan untuk byte dan aturan tersebut; hal itu tidak membuktikan identitas hukum, pemahaman penanda tangan, atau kejujuran penjelasan situs.

Penandatanganan bukan satu tindakan yang seragam. Tanda tangan transaksi langsung mengizinkan transaksi jaringan. Pesan off-chain bisa berupa tantangan login tanpa wewenang aset, atau order, permit token, instruksi tata kelola, maupun otorisasi lain yang dikirim relayer kemudian. Tidak ada permintaan gas bukan berarti tidak ada risiko.

Sebelum menandatangani, kenali jenis permintaan, tindakan yang terbaca, domain atau pemverifikasi tujuan, jaringan, kontrak pemverifikasi, alamat, jumlah, nonce, dan kedaluwarsa. Tolak hash tanpa penjelasan, byte yang tidak terbaca, kolom tak terduga, atau tampilan dompet yang tidak cukup untuk verifikasi mandiri.

Tanda tangan dompet
0 / 5
0 item yang ditinjau; 5 item yang masih belum terselesaikan

Menyelesaikan tinjauan ini tidak membuktikan suatu aset, transaksi, atau sistem aman.

Cara kerja

  1. Aplikasi mengenkode transaksi, pesan biasa, atau objek data bertipe. Perubahan kecil saja menghasilkan digest berbeda.
  2. Dompet menampilkan yang dapat didekode dan meminta persetujuan. Kunci privat tetap di dompet atau perangkat; dompet menandatangani digest dan mengembalikan tanda tangan.
  3. Pemverifikasi menyusun ulang digest yang sama. Untuk akun eksternal, alamat biasanya dipulihkan atau diperiksa; akun kontrak dapat menerapkan kebijakan saat ini melalui ERC-1271.
  4. Pemverifikasi menafsirkan hasil sesuai aturan aplikasi. Server dapat membuat sesi; kontrak dapat memakai permit, mengeksekusi order, mengubah tata kelola, atau menjalankan panggilan lain.
  5. Perlindungan replay bergantung pada aplikasi. EIP-712 memberi enkode bertipe dan pemisahan domain, tetapi tidak mencegah replay; aplikasi harus memberlakukan nonce, deadline, pemverifikasi tujuan, jaringan, atau batas sekali pakai lain.

ERC-191 memisahkan data bertanda tangan dari enkode transaksi Ethereum biasa dan menetapkan format termasuk personal_sign. EIP-712 mengikat kolom terstruktur ke domain yang dapat memuat name, version, chainId, dan verifyingContract. Pesan login ERC-4361 menambahkan domain, URI, ID jaringan, nonce, dan waktu penerbitan, tetapi layanan tetap harus memvalidasinya.

Contoh

Leah menerima permintaan login ERC-4361 dari layanan resmi dengan domain dan URI yang benar, nonce baru, dan masa berlaku singkat. Pesan hanya meminta autentikasi. Setelah memeriksa domain dan akun, ia menandatangani; server memverifikasi dan membuat sesi. Pesan ini sendiri tidak membuat allowance token atau transaksi on-chain.

Di situs tiruan, tombol masih bertuliskan “Masuk”, tetapi dompet menampilkan data EIP-712 Permit berisi token, spender, jumlah, nonce, dan deadline. Tanda tangan dapat memungkinkan relayer membuat wewenang belanja menurut aturan kontrak. Leah harus menolak: teks tombol tidak mengubah byte yang ditandatangani.

Risiko dan pengendalian

  • Makna menipu: situs dapat menyebut permit atau order sebagai login. Percayai payload terdekode dan kontrak terverifikasi, bukan tombol.
  • Tanda tangan buta: hash mentah dan byte buram menghalangi pemeriksaan. Batalkan jika pesan tepat dan jalur eksekusinya tidak dapat direproduksi dengan alat tepercaya.
  • Domain salah: nama merek tidak mengautentikasi chainId, verifyingContract, domain web, atau URI. Periksa tiap kolom dan alamat lengkap secara mandiri.
  • Replay atau eksekusi tertunda: pemegang tanda tangan valid dapat memakainya sampai nonce digunakan atau deadline lewat. Gunakan nonce baru, batas pendek, dan jangan publikasikan tanda tangan.
  • Wewenang luas: permit, order, kunci sesi, dan operasi akun pintar dapat mengizinkan tindakan berikutnya tanpa prompt baru. Periksa aset, spender, penerima, jumlah, cakupan, dan pembatalan.
  • Penanda tangan dikompromikan: dompet perangkat keras mencegah ekstraksi kunci, bukan membuat pesan jahat aman. Jika seed phrase atau kunci privat bocor, tangani seluruh akun sebagai kompromi.

Jika menandatangani permintaan mencurigakan, simpan payload terdekode dan tanda tangan tanpa memublikasikannya, putuskan situs, lalu identifikasi skemanya. Untuk approval atau transaksi on-chain, periksa status di jaringan yang benar dan gunakan pencabutan, pembatalan nonce, atau migrasi aset terdokumentasi. Tidak ada cara universal untuk mencabut semua tanda tangan off-chain; memutus situs tidak membatalkannya.

Kesalahpahaman umum

  • “Semua tanda tangan memindahkan dana.” Banyak yang hanya mengautentikasi atau menyatakan niat; sebagian mengizinkan pemindahan dana kemudian.
  • “Tanpa gas berarti aman.” Relayer dapat membayar gas dan mengirim permit, order, atau otorisasi lain yang sudah ditandatangani.
  • “EIP-712 menjamin keamanan.” Standar ini memperbaiki tampilan dan pemisahan domain, tetapi tidak mencegah replay atau memvalidasi klaim aplikasi.
  • “Alamat yang dipulihkan membuktikan persetujuan sadar.” Ia mengaitkan data tepat dengan kunci menurut aturan, bukan membuktikan identitas, pemahaman, atau kehendak bebas.
  • “Tanda tangan dompet kontrak sama dengan akun biasa.” Validitas ERC-1271 dapat bergantung pada status dan kebijakan kini; pemverifikasi harus memanggil kontrak.

Topik terkait

Sumber

Navigasi

Cari di wiki...