Yazı 9 / 124 dk okuma

Tarayıcı cüzdanı olmadan dApp'ler

Web siteleri tarayıcıda bir cüzdan bekler. Tarayıcı ise bilgisayardaki saldırıya en açık programdır. AirNox bunu, sayfaya cüzdan gibi görünen ama hiçbir şey tutmayan bir eklentiyle çözer.

Köşesinde anahtarsız eklenti rozeti bulunan bir tarayıcıdaki takas sayfası, masaüstü cüzdana yerel bir bağlantı, air gap ve telefon
Eklenti iletir. Masaüstü karar verir. Telefon imzalar.
İçindekiler

Cüzdan olmayan bir eklenti

AirNox tarayıcı eklentisi (browser extension), merkeziyetsiz uygulamaların aradığı standart arayüzleri sayfaya enjekte eder: EVM ağları için EIP-1193 ve EIP-6963, TON Connect, ayrıca Solana ve Sui wallet standards. Sayfa açısından o bir cüzdandır. "Hangi hesaplar", "hangi zincir", "lütfen bunu imzala" sorularını alışılmış şekilde yanıtlar.

İçeride ise bir kuryedir. Anahtar tutmaz, kurtarma ifadesi (seed) saklamaz ve hiçbir şey imzalayamaz. Bir sayfanın yaptığı her istek, yalnızca yerel bir kanal üzerinden masaüstündeki AirNox Wallet'a iletilir ve yanıt da aynı yoldan geri gelir. Eklenti yarın kötü niyetli bir kopyayla değiştirilse bile ne çalacak bir şeyi ne de imza atacak bir aracı olurdu.

Klasik bir eklenti cüzdanının nesi yanlış

Klasik bir web3 cüzdanı, anahtarlar dahil, tamamen tarayıcının içinde yaşar. Bu da anahtarları bilgisayardaki saldırıya en açık programa koyar. Bir sayfaya enjekte edilen kod, eklentinin arayüzüne ulaşabilir. Saklanan sırlar, modern ekran kartlarının büyük ölçekte kaba kuvvetle (brute force) kırabildiği bir şifrelemeyle korunur. Çoğu izleyiciler ve reklamlarla gelir. Değiştirilmiş bir alıcı adresine karşı koruma sunanı azdır. Üstelik bu ayrıcalık için bütün gün bellek ve işlemci zamanı tüketirler. AirNox tarayıcıdaki kısmı bir kuryeyle sınırlar; önemli olan her şeyi tarayıcının dışına, native bir masaüstü programına, AirGap modunda ise hiç çevrimiçi olmayan bir telefona taşır.

Yalnızca yerel

Eklenti ile masaüstü arasındaki kanal bilgisayarınızdan asla çıkmaz. Aktarma sunucusu yok, bulut oturumu yok, hesap yok. İki uç birbirinin kimliğini doğrular; böylece kendini cüzdan gibi gösteren bir program hiçbir şey alamaz, kendini eklenti gibi gösteren bir sayfa da.

İzinler masaüstünde

İzinler tarayıcıda değil, AirNox Wallet'ta durur. Köken (origin) ve zincir bazında, tek tek verilir ve hiçbir izin dolaylı olarak varsayılmaz. Ethereum hesabınızı görmesine izin verilen bir site, Polygon hesabınızı görme izni almış olmaz. Bir cüzdanda izin verilen bir site, başka bir cüzdanda izin almış olmaz.

Kökenleri zincirlere karşı gösteren, izin verildi ve verilmedi işaretli bir ızgara; cüzdan kilitliyken her şeyin reddedildiği bir satır
Köken bazında, zincir bazında, fail-closed.

Köken, sayfanın gönderdiği bir metin değil, tarayıcının kanıtladığı kökendir. Bir sayfa başka bir site olduğunu iddia edemez. Tüm sistem de fail-closed çalışır: açıkça izin verilmemiş her şey reddedilir, cüzdanın anlamadığı bir istek de reddedilir.

Kilitli demek hayır demek

Cüzdan kilitliyken eklenti, istek nasıl ifade edilirse edilsin hiçbir şeye yanıt vermez. Bir sayfa cüzdanı uyandıramaz, hesapları listeleyemez, kilidi açtığınızda atılmak üzere bir imzayı sıraya koyamaz. Cüzdanın kilidini siz, cüzdanın içinde açarsınız; tarayıcı ancak ondan sonra yanıt alır.

İmzalama

İşlemler, mesajlar ve tipli veriler (typed data) aynı yolu izler. Masaüstü önce isteği çözer ve denetler; standart işlemleri tanır, benzer görünümlüleri, sınırsız harcama izinlerini (allowances) ve bilinmeyen harcayıcıları (spender) işaretler. AirGap modunda imzasız istek ardından telefona geçer; orada baytlardan yeniden çözülür, size gösterilir ve ancak siz Accept (Kabul et) düğmesine bastıktan sonra imzalanır. İmza geri gelir, masaüstü onu ağa yayınlar ve sayfa bir işlem hash'i alır. Zincir değiştirme de aynı şekilde ele alınır; geçişe izin verilip verilmeyeceğine cüzdan karar verir.

Kurtarma ifadesi masaüstünde duran bir cüzdanda ise imzayı, aynı denetimden sonra, telefonda değil cüzdan penceresinde masaüstü atar.

Ele geçirilmiş bir sayfa neler yapabilir, neler yapamaz

Ele geçirilmiş bir sayfa ya da tarayıcının içindeki zehirlenmiş bir betik size yalan söyleyebilir. Bir işlem gösterip başka bir işlem isteyebilir. Bir claim işlemini doğrulama gibi gösterebilir. Yapamayacağı şey ise imza atmaktır. Karar, siz isteği telefonun çözdüğü haliyle okuduktan sonra, anahtarların bulunduğu yerde verilir. Tarayıcıdaki bir açılır pencereden kolayca geçen bir drainer onayı, telefona olduğu gibi ulaşır: bu harcayıcıya, bu tutar için verilen bir harcama izni. Sınırsızsa telefon bunu söyler.

İstediğimiz denge buydu: sayfa için bir tarayıcı cüzdanının kolaylığı, sizin içinse onun risklerinin hiçbiri.

Serinin tamamı

  1. Bilgisayarın ele geçirildiğini varsayın
  2. Mass Adoption Security: imzalayıcı, zaten sahip olduğunuz bir telefon
  3. Air gap'in üzerinden üç yol: QR kodları, Bluetooth LE ve NFC
  4. Radyo dalgalarında görünmez: kimsenin tarayarak bulamayacağı bir imzalayıcı
  5. Aktarım kanalına asla güvenilmez
  6. Telefonun size gösterdikleri: imzalayıcıda işlem analizi
  7. Telefon kendi kaydını tutar
  8. Masaüstünüzdeki kasa: Argon2id ve tahmine direnen bir profil
  9. Tarayıcı cüzdanı olmadan dApp'ler
  10. Kuralları olan bir MCP sunucusu: sınırlar içinde yapay zekâ ajanları
  11. Her şey için tek korumalı cüzdan
  12. Küçük ve native: C++, JavaScript çalışma ortamı yok; iş istasyonunda da Raspberry Pi'da da

Bekleme listesine katılın

E-posta adresinizi bırakın, size sürüm haberlerini gönderelim. Başka hiçbir şey göndermeyiz.