2026.1.0 sürümünden itibaren E2EE (Uçtan Uca Şifreleme) desteklenmektedir (yalnızca eSeGeCe All-Access aboneleri için).
Uçtan Uca Şifreleme (E2EE), yalnızca iletişim kuran eşlerin değiş tokuş edilen mesajların içeriğini okuyabilmesini sağlar. Mesajları yönlendiren sunucu bile bunları şifresini çözemez. Bu makale, mesajları güvenli bir şekilde değiş tokuş etmek için açık anahtarlı kriptografi kullanarak E2EE'nin iki eş arasında nasıl çalıştığını açıklar.
E2EE Açıklaması
E2EE'nin Temel İlkeleri
İki eşli bir E2EE sisteminde:
- Her eş, cihazından asla ayrılmayan bir özel anahtara sahiptir.
- Her eş, başkalarının görebileceği bir açık anahtar yayımlar.
- Mesajlar gönderenin cihazında şifrelenir ve yalnızca alıcının cihazında şifresi çözülür.
- Sunucu yalnızca bir mesaj aktarıcısı olarak görev yapar, güvenilir bir taraf olarak değil.
Anahtar Materyaline Genel Bakış
Her eşin (örneğin Alice ve Bob) şunlara sahiptir:
- Özel Anahtar
Yerel olarak saklanan gizli bir değer. Asla paylaşılmamalıdır. - Açık Anahtar
Özel anahtardan türetilen bir değer. Serbestçe paylaşılabilir.
Açık ve özel anahtarlar matematiksel olarak birbirine bağlıdır, ancak açık anahtarı bilmek özel anahtarı ortaya çıkarmaz.
Adım 1: Açık Anahtar Değişimi
Şifreli iletişim gerçekleşmeden önce, Alice ve Bob birbirlerinin açık anahtarlarını bilmelidir.
Tipik yaklaşımlar:
- Sunucu açık anahtarları saklar ve istek üzerine teslim eder.
- Açık anahtarlar hesap oluşturma veya ilk temas sırasında değiş tokuş edilir.
Bu değişim güvenliği tehlikeye atmaz, çünkü açık anahtarlar gizli değildir.
Adım 2: Paylaşılan Bir Gizli Anahtar Oluşturma (ECDH)
Mesajları verimli bir şekilde şifrelemek için, Alice ve Bob önce Elliptic Curve Diffie–Hellman (ECDH) kullanarak bir paylaşılan gizli anahtar türetir.
ECDH Kavramsal Olarak Nasıl Çalışır- Alice, bir paylaşılan gizli anahtarı şunları kullanarak hesaplar:
- Kendi özel anahtarı
- Bob'un açık anahtarı
- Bob, bir paylaşılan gizli anahtarı şunları kullanarak hesaplar:
- Kendi özel anahtarı
- Alice'in açık anahtarı
Eliptik eğrilerin matematiksel özellikleri nedeniyle, hiçbir taraf bu gizli anahtarı asla iletmese de her iki hesaplama da aynı gizli değeri üretir.
Paylaşılan gizli anahtar hiçbir noktada ağ üzerinden gönderilmez.
Adım 3: Simetrik Bir Şifreleme Anahtarı Türetme
Ham ECDH paylaşılan gizli anahtarı doğrudan şifreleme için kullanılmaz. Bunun yerine, bir Anahtar Türetme Fonksiyonu (KDF) aracılığıyla, tipik olarak SHA-256 gibi kriptografik bir hash ile işlenir.
Anahtar türetmenin amacı:
- Doğru uzunlukta bir anahtar üretmek (örneğin AES-256 için 32 bayt)
- Ham ECDH çıktısındaki yapısal sapmayı gidermek
- Kriptografik dayanıklılığı artırmak
Sonuç, yalnızca Alice ve Bob tarafından bilinen bir simetrik şifreleme anahtarıdır.
Adım 4: Mesajı Şifreleme
Alice, Bob'a bir mesaj göndermek istediğinde:
- Alice mesajı baytlara dönüştürür.
- Alice mesajı simetrik bir şifre (genellikle AES-GCM) kullanarak şu şekilde şifreler:
- Türetilen simetrik anahtar
- Rastgele bir başlatma vektörü (IV)
- Alice şifrelenmiş mesajı ve IV'yi sunucu aracılığıyla Bob'a gönderir.
AES-GCM yaygın olarak kullanılır çünkü şunları sağlar:
- Gizlilik (şifreleme)
- Bütünlük (kurcalama tespiti)
- Kimlik doğrulama (sahte mesajları tespit eder)
Adım 5: Mesajın Şifresini Çözme
Bob şifrelenmiş mesajı aldığında:
- Bob, ECDH ve aynı KDF'yi kullanarak aynı simetrik anahtarı bağımsız olarak türetir.
- Bob, simetrik anahtarı ve IV'yi kullanarak mesajın şifresini çözer.
- Kimlik doğrulama başarılı olursa, Bob orijinal düz metni elde eder.
Mesaj değiştirilmişse veya yanlış anahtar kullanılmışsa, şifre çözme başarısız olur.
Sunucunun Rolü
Bu mimaride sunucu:
- Açık anahtarları teslim eder
- Şifrelenmiş mesajları yönlendirir
- Kullanıcı varlığını veya meta verileri yönetir
Sunucu şunları yapamaz:
- Paylaşılan gizli anahtarları türetmek
- Mesajların şifresini çözmek
- Geçerli şifrelenmiş mesajlar üretmek
Bu, Uçtan Uca Şifrelemenin tanımlayıcı özelliğidir.
Özet
İki eş arasındaki Uçtan Uca Şifreleme, aşağıdakileri birleştirerek çalışır:
- Açık anahtarlı kriptografi (anahtar anlaşması için)
- Simetrik kriptografi (verimli mesaj şifrelemesi için)
- Anahtar türetme fonksiyonları (güvenlik ve doğruluk için)
Sonuç, şöyle bir sistemdir:
- Mesajları yalnızca eşler okuyabilir
- Sunucu bir taşıma rolüne indirgenir
- Gizlilik, politikayla değil, tasarımdan dolayı korunur
Bu model, modern güvenli mesajlaşma sistemlerinin kriptografik bel kemiğidir.
E2EE Örneği
// ... Create the Server
WSServer := TsgcWebSocketHTTPServer.Create(nil);
WSServer.Port := 80;
WSPE2EE := TsgcWSPServer_E2EE.Create(nil);
WSPE2EE.Server := WSServer;
WSServer.Active := True;
// ... Create 2 clients
WSClient1 := TsgcWebSocketClient.Create(nil);
WSClient1.Host := '127.0.0.1';
WSClient1.Port := 80;
E2EE1 := TsgcWSPClient_E2EE.Create(nil);
E2EE1.Client := WSClient1;
E2EE1.E2EE_Otpions.UserId := 'client-1';
WSClient1.Active := True;
WSClient2 := TsgcWebSocketClient.Create(nil);
WSClient2.Host := '127.0.0.1';
WSClient2.Port := 80;
E2EE2 := TsgcWSPClient_E2EE.Create(nil);
E2EE2.OnE2EEMessageText := OnE2EEMessageTextEvent;
E2EE2.E2EE_Otpions.UserId := 'client-2';
E2EE2.Client := WSClient2;
WSClient2.Active := True;
// ... client-1 send a message to client-2
E2EE1.SendDirectMessage('client-2', 'Hello Client-2');
// ... read the message in the OnE2EEMessageText event
procedure OnE2EEMessageText(Sender: TObject; const aFrom, aText: string);
begin
DoLog('#direct_message: ' + aText);
end;
