Uçtan Uca Şifreli P2P Dosya Transferi: Teknik Rehber
Uçtan uca şifreli eşler arası dosya transferi sistemleri inşa edin. NAT geçişi, sinyalleşme sunucuları ve uçtan uca şifreleme uygulaması.
Eşler arası dosya transferi, baytları dosya hiçbir zaman sunucuya uğramadan doğrudan iki tarayıcı veya cihaz arasında gönderir. RFC 8825-8837'de standartlaştırılan WebRTC, aktarımı sağlar: DTLS 1.3 üzerinde UDP ile şifreli veri kanalları, ICE, STUN ve TURN aracılığıyla NAT geçişi ve WebSocket veya HTTP üzerinden sinyalleşme. Snapdrop, Wormhole.app ve Magic Wormhole gibi araçlar modelin işe yaradığını kanıtlar. İşte nasıl inşa edeceğiniz: sinyalleşme el sıkışması, NAT geçişi tuzakları, şifreleme katmanlaması ve bulut aktarmalı transfer servislerine kıyasla ne kazanıp kaybettiğiniz.
Dosya Transferi İçin P2P'nin Cazibesi
Çekiciliği basittir: hiçbir sunucu dosyanızı depolamaz, transfer servisi için bant genişliği faturası gelmez ve gönderenin yüklemesi, araya kopyalama olmadan alıcının indirmesidir. Aynı gigabit yerel ağdaki iki kullanıcı arasındaki 10 GB'lık bir transfer için P2P 80 saniyede tamamlanabilirken, bulut aktarmalı sistem uzaktaki bir sunucuya yükleyip tekrar indirerek bant genişliği kullanımını ve gecikmeyi ikiye katlar. Gizlilik de cazip bir unsurdur: dosya baytları yalnızca gönderici ve alıcı cihazlarda bulunur. Ödünler: her iki tarafın aynı anda çevrimiçi olması gerekir, NAT geçişi bazen başarısız olur ve bağlantı yavaş katılımcının yükleme hızıyla sınırlıdır.
Aktarım Olarak WebRTC Veri Kanalları
WebRTC video/ses protokolü olarak başladı, ancak RTCDataChannel, güvenilir sıralı (TCP gibi) veya güvenilmez sırasız (UDP gibi) teslimla keyfi binary mesaj aktarımı sağlar. Arka planda veri kanalları, UDP üzerinden DTLS 1.3 üzerinden SCTP üzerinde çalışır. DTLS katmanı, anlaşma sırasında müzakere edilen AES-128-GCM veya ChaCha20-Poly1305 aracılığıyla gizlilik ve kimlik doğrulanmış bütünlük sağlar. Dosya transferi için güvenilir bir sıralı kanal oluşturun, dosyayı mesaj başına 16 KB ila 64 KB olarak parçalayın (Chrome tarihsel olarak mesaj boyutunu 256 KB ile sınırlandırmıştır) ve akış kontrolüyle tampon miktarı eşiği üzerinden sıralı olarak gönderin.
Sinyalleşme Sunucusunun Rolü
WebRTC, eşler arasında bağlantı bilgisi (SDP teklifleri ve yanıtları, ICE adayları) alışverişi için bir sinyalleşme sunucusuna ihtiyaç duyar. Sinyalleşme sunucusu dosya baytlarını aktarmaz, yalnızca yaklaşık 5 KB'lık bağlantı metadata'sını. Node.js, Python veya Go'da WebSocket tabanlı bir sinyalleşme servisi bunu birkaç yüz satır kodla yönetir. Firebase Realtime Database, Supabase Realtime ve Pusher tamamı sinyalleşme arka ucu olarak çalışır. Sinyalleşme sunucusu kimlerin ne zaman konuştuğunu görür ancak dosya içeriklerini hiçbir zaman görmez. Çoğu P2P dosya transfer servisi sinyalleşmesini ücretsiz çalıştırır çünkü bant genişliği önemsizdir.
NAT Geçişi: STUN, TURN ve ICE
Çoğu cihaz NAT'ın arkasında oturur ve doğrudan IP bağlantılarını imkânsız kılar. RFC 8445'te tanımlanan ICE (Interactive Connectivity Establishment), birden fazla bağlantı yolunu dener. RFC 8489'daki STUN, bir eşin genel STUN sunucusu aracılığıyla genel IP ve portunu keşfetmesine izin verir; Google, stun.l.google.com'u ücretsiz olarak işletir. Her iki eşin de makul NAT'ları (tam koni veya kısıtlı koni) varsa, doğrudan UDP bağlantısı çalışır; belki de girişimlerin %70'inde. Simetrik NAT'lar, kurumsal güvenlik duvarları ve CGNAT için RFC 8656'daki TURN, trafiği bir sunucu üzerinden aktarır. TURN sunucuları gerçek dosya baytlarını taşıdığı için pahalıdır. Kendi kendine barındırılan coturn, twilio.com/stun veya Cloudflare Calls seçenekler sunar. Gerçek dünyada P2P transferlerinin %10-30'unun TURN'e geri düşmesini bekleyin.
DTLS'nin Üstünde Şifreleme Katmanlaması
DTLS zaten WebRTC verilerini şifreler, bu nedenle ek uygulama katmanı şifreleme çift güvencedir. DTLS el sıkışması eş sertifikalarını doğrular, ancak WebRTC genellikle kimliği değil yalnızca bağlantının SDP'yi imzalayan aynı eşe olduğunu doğrulayan kendinden imzalı sertifikalar kullanır. Sinyalleşme randevusundan türetilen paylaşılan bir sır ile AES-256-GCM kullanan uygulama katmanı şifreleme, kimlik güvencesi ekler. Magic Wormhole'un SPAKE2 PAKE'si (Şifre Kimlik Doğrulamalı Anahtar Değişimi), kısa insan tarafından okunabilir bir ifradeden güçlü bir anahtar türetir; bu sayede tehlikeye girmiş bir sinyalleşme sunucusu bile şifresini çözemez.
P2P Dosya Transferi İçin Parçalama Stratejisi
WebRTC veri kanallarının mesaj boyutu sınırı vardır (çoğu tarayıcıda 256 KB, daha büyük mesajlara parçalama uygulanır ancak güvenilirliği azalır). Uyumluluk için mesaj başına 16-64 KB olarak parçalayın. Geri basınç uygulamak için bufferedAmount ve bufferedAmountLowThreshold aracılığıyla tamponlanmış miktarı izleyin; tampon 1 MB'ı aşınca gönderimi duraklatın, 256 KB'ın altına düşünce devam edin. Bütünlük için her parçayı SHA-256 ile hash'leyin ve hash'i önce gönderilen bir manifesto dosyasına ekleyin. Alıcı yeniden birleştirir, hash'leri doğrular ve File System Access API veya Blob indirme aracılığıyla diske yazar.
Mobil ve Çapraz Cihaz Değerlendirmeleri
Masaüstünden masaüstüne P2P iyi çalışır. Mobilden masaüstüne geçiş karmaşıklıklar getirir: mobil tarayıcılar agresif sekme askıya alma uygular, bu nedenle gönderenin tarayıcı sekmesini ön planda tutması gerekir. iOS Safari'nin veri kanalı uygulaması tarihsel olarak Chromium'dan daha az güvenilir olmuştur. Mobilde arka plan yüklemeleri uygulama destekli uygulamalar gerektirir. Mobilde sürekli WebRTC oturumları, HTTPS indirmelerinden daha hızlı pil tüketir. Aynı Wi-Fi üzerindeki mobil-to-mobil transferler için AirDrop (iOS/macOS) ve Nearby Share (Android), doğrudan cihaz protokollerini kullanarak tarayıcı P2P'yi geride bırakır.
Merkezi Hesaplar Olmadan Eş Keşfi
Hesap tabanlı bir sistem olmadan iki yabancı nasıl bağlanır? Birkaç desen işe yarar. Magic Wormhole'un "4-kamyon-roger" gibi kısa kodu hem buluşma adresi hem de parola işlevi görür; sinyalleşme sunucusu kodları oturumlara eşler. Oturum URL'sini kodlayan QR kodları, yüz yüze transferler için çalışır. Android'de NFC dokunarak bağlanma, yakınlık yoluyla bağlanır. Daha büyük ağlar için BitTorrent'in Mainline DHT'si gibi bir DHT, merkezi sunucu olmadan eş keşfini başlatabilir; ancak DHT aramaları saniyeler sürer ve gündelik dosya paylaşımına uygun değildir.
P2P'ye Özgü Güvenlik Tehditleri
P2P, bulut aktarımlarının sahip olmadığı tehditleri beraberinde getirir. IP adresi ifşası: doğrudan bağlantılar, her eşin genel IP'sini diğerine açar; bu, gizlilik hassas bağlamlarda (ihbarcılık, aktivizm) kullanıcıları açığa çıkarabilir. Bazı P2P servisleri, performans pahasına IP'leri gizlemek için TURN aktarmasını zorunlu kılar. Kötü amaçlı yazılım dağıtımını denetlemek zordur çünkü servis operatörü dosya içeriklerini hiçbir zaman görmez. Sinyalleşme sunucusundaki bağlantı tükenmesine yönelik hizmet reddi, hız sınırlaması gerektirir. Ekstra hassas transferler için Tor onion servisi, her iki IP'yi de gizlemek için sinyalleşmenin önüne ağır gecikme pahasına geçebilir.
Gerçek Performans Değerlendirmesi
P2P hızı, yavaş eşin yükleme bant genişliği ve gidiş-dönüş gecikmesiyle sınırlıdır. Konut bağlantılarında indirme gigabit olsa bile yükleme hızları genellikle 20-50 Mbps ile sınırlıdır. 20 Mbps ev yüklemesinden gigabit alıcıya 10 GB P2P transferi en az 68 dakika sürer. Hızlı bağlantılı bir sunucu ve CDN destekli indirme ile bulut aktarması, iyi bağlantılı bir sunucuya bir kez yükleyerek bunu geride bırakabilir. P2P; aynı yerel ağ transferlerinde (gigabit veya daha hızlı), sunucu tarafı kopyasının kabul edilemez olduğu hassas veriler için ve bant genişliği faturaları ağır olacaksa maliyet optimizasyonunda kazanır.
Bulut Aktarmasının Hâlâ Kazandığı Durumlar
Gönderici ve alıcının aynı anda çevrimiçi olmadığı eşzamansız transferler için P2P tamamen başarısız olur — alacak bir eş yoktur. Oturum penceresini aşan büyük transferler için (mobil tarayıcı sekmeleri kapanır, dizüstü bilgisayarlar uykuya geçer), bulut aktarmasının "yükle ve bağlantı paylaş" modeli çok daha pratiktir. Bire-çok dağıtım için N eşzamanlı P2P oturumu yürütmekten ziyade tek yükleme artı CDN yayılımı çok daha iyidir. HexaTransfer, istemci taraflı AES-256-GCM şifrelemeyle bulut aktarma modelini kullanarak P2P'nin gizlilik avantajlarını çok daha iyi eşzamansız ve çok alıcılı destekle elde eder.
hexatransfer.com'da deneyin — ücretsiz, hesap gerekmez, maksimum 10 GB.
Uçtan uca şifreleme ile büyük dosyaları güvenle gönderin
Uçtan uca şifreleme ile 10 GB'a kadar dosya ücretsiz aktarın. Hesap gerekmez. Dosyalarınız yüklenmeden önce tarayıcınızda şifrelenir — başka kimse okuyamaz.
Dosya gönder