deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Hard-Chat: hiçbir şey saklamayan, sunucusuz çalışan, tarayıcı tabanlı uçtan uca şifreli eşler arası sohbet

Hacker News'te öne çıkan Hard-Chat, iki tarayıcının doğrudan WebRTC bağlantısı üzerinden AES-GCM şifrelemesi, ortak 100 karakterlik bir anahtar ve sekme kapatıldığında hiçbir geçmişin saklanmamasıyla sohbet etmesini sağlıyor.

Hard-Chat: hiçbir şey saklamayan, sunucusuz çalışan, tarayıcı tabanlı uçtan uca şifreli eşler arası sohbet

Hardlint Cybersecurity Team'in açık kaynak projesi olan ve Hacker News'in ana sayfasında öne çıkan Hard-Chat, iki kişiye arka uçta mesaj ileten bir sunucu, hesap ve saklanan geçmiş olmadan şifreli, doğrudan peer-to-peer bir bağlantı üzerinden sohbet etme imkânı sunuyor. Terminal görünümüne rağmen — uygulama kendini Zero-Trace Terminal adında retro bir komut satırı arayüzü olarak sunuyor — statik bir web sayfası: GitHub Pages'te barındırılan düz HTML, CSS ve JavaScript'ten oluşuyor ve tamamen her kullanıcının tarayıcısında çalışıyor.

Bağlantının kurulması

Bir kullanıcı oda başlattığında, tarayıcının kriptografik olarak güvenli rastgele sayı üreticisi kullanılarak (crypto.getRandomValues — kriptografi için uygun olmayan Math.random yerine bilinçli olarak tercih edilmiş) 100 karakterlik bir Room Key üretiliyor. Anahtar, entropiyi en üst düzeye çıkarmak için harfler, rakamlar ve sembollerden oluşuyor. Bu anahtarın daha sonra diğer tarafla bant dışı paylaşılması gerekiyor — yüz yüze, sesli aramayla ya da başka bir şifreli kanal üzerinden. İkinci kullanıcı anahtarı yapıştırıyor ve iki tarayıcı da aynı iki değeri türetiyor: bir şifreleme anahtarı ve yalnızca eşlerin birbirini bulması için kullanılan kısa bir tanımlayıcı.

Birbirini bulmak, üçüncü taraf altyapıyı içeren tek adım. Projenin dokümantasyonuna göre signaling, herkese açık PeerJS cloud broker üzerinden yürütülüyor: her iki taraf da Room Key'i hash'leyip ortaya çıkan tanımlayıcı altında kaydoluyor veya bağlanıyor, böylece broker onları tanıştırıyor. Broker, eşler bağlandıktan sonra ayrı bir WebRTC DataChannel üzerinden iletilen mesaj içeriğini hiçbir şekilde taşımıyor.

NAT ve güvenlik duvarlarını aşmak için uygulama, 18 STUN ve TURN sunucusunu öncelik sırasına göre yapılandırıyor — önce kendi kimlik bilgilerine sahip özel bir Metered.ca TURN servisi, ardından Google, Cloudflare, Twilio, OpenRelay ve diğerlerinden herkese açık yedekler. TURN aktarımı yalnızca doğrudan bir bağlantı kurulamadığında devreye giriyor. 120 saniye içinde bağlantı kurulmazsa oturum sona eriyor ve Room Key geçersiz hale geliyor; bu da bir anahtarın herkese açık broker üzerinde süresiz kayıtlı kalmasını engelliyor.

Şifreleme modeli

Her iki taraf da Room Key'den, SHA-256 ile 100.000 iterasyonlu PBKDF2 kullanarak 256 bitlik bir AES-GCM anahtarı türetiyor. Her mesaj, taze rastgele bir 12 baytlık IV ile tek tek şifreleniyor; bu IV, byte dizisi olarak gönderilmeden önce şifreli metnin başına açık biçimde ekleniyor. GCM bir kimlik doğrulama etiketi içerdiğinden, aktarım sırasında yapılan herhangi bir müdahale, sessizce bozulmuş düz metin yerine görünür bir şifre çözme hatası üretiyor.

Öne çıkan bir tasarım tercihi var: PBKDF2 salt'u sabit kodlanmış ve tüm oturumlarda aynı. Proje bunu, sabit bir salt'un yalnızca zayıf, tekrar kullanılan parolaların söz konusu olduğu senaryolarda güvenliği zayıflattığı — ve 100 karakterlik rastgele bir anahtarın bu senaryoya uymadığı gerekçesiyle savunuyor.

Diske hiçbir şey yazılmıyor

Her şey bellekte yaşıyor. Room Key ve türetilen şifreleme anahtarı yalnızca JavaScript değişkenlerinde duruyor, mesajlar yalnızca açık sayfada ve RAM'de var oluyor ve uygulama hiçbir cookie, localStorage veya IndexedDB kullanmıyor. Panic Purge düğmesi anahtarları, bağlantı durumunu ve görünür sohbet kaydını anında siliyor; sekmeyi kapatmak da aynı şeyi yapıyor.

Pratik gereksinimler de var. Web Crypto API ve WebRTC güvenli bir bağlam gerektirdiğinden sayfanın HTTPS üzerinden sunulması gerekiyor — yerel bir dosya olarak açmak çalışmıyor. Her iki tarafın da bağlantı denemesi sırasında sayfayı aynı anda açık tutması gerekiyor ve 100 karakterlik anahtar, fazladan karakter veya boşluk olmadan birebir kopyalanmalı.

Neyi korumuyor

Dokümantasyon sınırları konusunda açık sözlü. Araç sohbetlerin içeriğini koruyor, kimin bağlandığını değil: ağ düzeyinde anonimlik sunmuyor ve ekip her iki cihazda da VPN kullanılmasını şiddetle öneriyor. Diğer uçta kimin olduğuna dair kriptografik bir doğrulama yok — Room Key'e sahip herkes katılabiliyor. Ayrıca bir anahtar yeniden kullanıldığında oturumlar arası forward secrecy yok, ancak normal akış her seferinde taze bir anahtar üretiyor. Proje, hassas iletişimler için bir garanti olarak değil, eğitim ve güvenlik araştırma amaçlarıyla dağıtılıyor.

Neden önemli

Hard-Chat, tarayıcı platform API'larının ne kadar ilerlediğinin kompakt bir gösterimi: tek bir statik sayfa, sekme kapatıldığında arkada hiçbir şey bırakmayan, sunucusuz, uçtan uca şifreli iletişim sunabiliyor. Varsayılan olarak geçici tasarımı, genellikle mesaj arşivleri, hesaplar ve metadata saklayan ana akım mesajlaşma uygulamalarıyla keskin bir tezat oluşturuyor.

Aynı zamanda, projenin kendi uyarıları daha öğretici olan kısım. Ortak gizli anahtar modeli, herkese açık bir signaling broker'ı ve trafik modellerini gözlemleyebilen TURN aktarımları, zero-trace kavramının mesaj içeriğine uygulandığını, bir sohbetin varlığına değil gösteriyor. Gizlilik odaklı kullanıcılar için bu tür araçlar gerçekten faydalı — ama geliştiricilerin de belirttiği gibi, herhangi bir hassas şeyle bu uygulamaya güvenmeden önce tehdit modelini dikkatle okumak gerekiyor.

  • #end-to-end-encryption
  • #webrtc
  • #privacy
  • #open-source
  • #p2p

İlgili yazılar