
Menandatangani pesan: apa yang sebenarnya dibuktikan oleh “masuk dengan dompet Anda”
Cepat atau lambat, sebuah situs akan meminta Anda untuk “menandatangani pesan” alih-alih mengirim transaksi. Tanpa gas, tanpa konfirmasi on-chain, tidak ada yang terlihat di riwayat Anda. Rasanya tidak berbahaya – dan sering kali memang begitu. Namun tanda tangan berarti kunci Anda menjamin sesuatu, dan pertanyaan yang layak diajukan setiap kali sangat sederhana: menjamin apa?
Apa yang dibuktikan oleh tanda tangan
Tanda tangan digital membuktikan satu hal: siapa pun yang mengendalikan kunci privat tertentu telah menyetujui data tertentu. Siapa saja dapat memeriksanya terhadap alamat publik Anda tanpa mengetahui apa pun tentang kunci Anda.
Hal itu membuat tanda tangan berguna jauh melampaui pengiriman koin. Sebuah situs dapat memastikan Anda memiliki sebuah alamat tanpa Anda membayar biaya. Seorang pengembang dapat membuktikan bahwa ia merilis sebuah versi. Operator node dapat membuktikan bahwa sebuah server miliknya. Tidak satu pun menyentuh blockchain, dan semuanya bertumpu pada jaminan yang sama: kunci tersebut menandatangani persis byte-byte ini.
Masalahnya ada pada frasa “persis byte-byte ini”. Tanda tangan tidak membawa niat. Ia tidak tahu apakah Anda mengira sedang masuk atau menyetujui pembayaran. Ia hanya mengikat kunci Anda ke data – dan siapa pun yang memegang tanda tangan itu dapat menggunakannya untuk apa pun yang diizinkan oleh data tersebut.
“Masuk dengan dompet Anda”
Pesan paling umum yang akan Anda lihat adalah permintaan masuk. Alih-alih kata sandi, situs mengirimkan sepotong teks, Anda menandatanganinya, dan situs memeriksa tanda tangan itu terhadap alamat Anda. Jika cocok, Anda berhasil masuk.
Pesan masuk yang dibuat dengan baik terbaca seperti kontrak kecil, dan format standar untuk Ethereum (dikenal sebagai Sign-In with Ethereum, EIP-4361) merincinya:
- Domain yang meminta – seharusnya cocok dengan situs di bilah alamat Anda.
- Alamat yang sedang masuk.
- Pernyataan dalam bahasa sederhana, misalnya “Masuk ke Example”.
- Nonce – nilai acak sekali pakai agar tanda tangan tidak dapat diputar ulang di kemudian hari.
- Waktu penerbitan dan kedaluwarsa, agar tanda tangan lama menjadi basi.
Jika semua itu ada dan cocok, tanda tangan masuk berisiko rendah: ia memberikan sesi di satu situs dan tidak lebih. Jika domain dalam pesan tidak cocok dengan situs yang sedang Anda buka, berhentilah. Ketidakcocokan itulah yang akan dihasilkan oleh halaman phishing yang mencoba menggunakan ulang tanda tangan Anda di tempat lain.
Tanda tangan yang memindahkan uang
Di sinilah anggapan “tanpa gas, jadi tidak berbahaya” runtuh. Beberapa jenis tanda tangan off-chain nantinya dapat dikirim oleh orang lain untuk memindahkan dana Anda:
- Permit token. Banyak token memungkinkan Anda memberi izin pembelanjaan dengan tanda tangan alih-alih persetujuan on-chain. Pihak yang dibelanjakan kemudian mengirimkannya dan dapat mentransfer hingga jumlah yang diizinkan. Dari sisi Anda, kelihatannya seperti menandatangani pesan. Itu adalah persetujuan dalam segala hal kecuali namanya.
- Order marketplace. Listing dan penawaran yang ditandatangani dapat dieksekusi oleh siapa pun yang memegangnya, dengan ketentuan yang Anda tandatangani – termasuk ketentuan yang diisi oleh situs jahat untuk Anda.
- Penandatanganan hash mentah. Beberapa metode lama menandatangani hash 32 byte sembarang tanpa konten yang dapat dibaca dan tanpa awalan yang menandainya sebagai “hanya pesan”. Sebuah hash bisa merupakan sidik jari dari transaksi sungguhan. Menandatangani hash yang tidak dapat Anda baca adalah penandatanganan buta dalam bentuk paling murni.
Aturan yang mengikutinya singkat: jika Anda tidak bisa membaca apa yang Anda tandatangani, Anda tidak bisa tahu apa yang diizinkannya.
Cara membaca permintaan tanda tangan
Sebelum menyetujui pesan apa pun, ajukan empat pertanyaan yang sama:
- Siapa yang meminta? Bandingkan situs yang meminta dengan situs yang ingin Anda gunakan.
- Alamat dan jaringan mana? Permintaan untuk alamat atau rantai yang berbeda dari yang Anda harapkan adalah tanda peringatan.
- Bisakah Anda membacanya? Teks biasa yang Anda pahami adalah satu hal. Hex, hash, atau JSON panjang tanpa penjelasan adalah hal lain.
- Apa yang memungkinkan seseorang lakukan? Masuk, membuktikan kepemilikan – tidak masalah. Membelanjakan, mendaftarkan untuk dijual, mentransfer, menyetujui – perlakukan seperti transaksi, karena memang itulah wujudnya.
Apa yang ditampilkan SSP kepada Anda
Saat dApp yang terhubung melalui WalletConnect meminta SSP menandatangani pesan, permintaan tersebut menampilkan situs yang meminta, alamat dan jaringan, serta pesannya sendiri. Pesan yang dikodekan dalam hex terlebih dahulu didekodekan menjadi teks yang dapat dibaca, dengan byte mentah di balik bagian yang dapat diperluas jika Anda ingin memeriksanya.
Pesan teks biasa diberi awalan “pesan bertanda tangan” standar Ethereum, yang menandainya sebagai pesan, bukan transaksi, sehingga tidak dapat diputar ulang sebagai transaksi. Permintaan data bertipe yang terstruktur menampilkan seluruh konten mentahnya sebelum Anda menyetujui.
Seperti segala hal di SSP, tanda tangan pesan dari dompet Anda memerlukan kedua kunci: Anda menyetujui di SSP Wallet, lalu mengonfirmasi di SSP Key. Langkah kedua itu adalah pemeriksaan ulang yang sungguh-sungguh di perangkat terpisah, dan layak digunakan sebagaimana mestinya.
Yang tidak dapat dilakukan SSP adalah memberi tahu Anda apa yang hendak dilakukan sebuah situs dengan tanda tangan. SSP menampilkan data dengan setia – membacanya tetap tugas Anda.
Ringkasan yang jujur
Menandatangani pesan adalah cara membuktikan sesuatu dengan kunci Anda tanpa membelanjakan apa pun, dan hampir selalu memang sama tidak berbahayanya seperti kelihatannya. Pengecualiannya adalah tanda tangan yang mengizinkan pembelanjaan, pendaftaran untuk dijual, atau transfer – dan sering kali tampak identik sampai Anda membacanya.
Jadi bacalah. Periksa domain, alamat, rantai, dan isinya. Tandatangani apa yang Anda pahami, dan anggap apa pun yang tidak bisa Anda baca sebagai penolakan.


