🇹🇷 Türkçe
PROJENİN AMACI
Projenin amacı, kullanıcıların birbirleriyle uçtan uca şifreli ve anonim bir şekilde güvenli olarak mesajlaşabilmesini sağlamaktır.
KULLANILAN TEKNOLOJİLER
Backend --> .NET 9
Database --> MSSQLTEMEL ÖZELLİKLER
- Kullanıcılar, cihazlarında anahtar çiftlerini oluşturur ve yalnızca
nicknameilepublic keybilgilerini sunucuya göndererek kayıt olur. - Bir kullanıcı, iletişim kurmak istediği kişinin
nicknamebilgisiyle sunucudan onunpublic keyverilerini talep eder. - Uygulama belirli aralıklarla veritabanını kontrol ederek kullanıcıya gelen mesaj olup olmadığını sorgular.
GÜVENLİK NASIL SAĞLANDI
- Anahtarlar yalnızca kullanıcı cihazında oluşturulur; sunucuya sadece
publicanahtarlar gönderilir. - Gönderilecek mesaj, alıcının public key’i ve gönderenin key pair bilgileri kullanılarak Curve25519 (X25519) algoritmasıyla bir ortak gizli anahtar (shared secret) oluşturulur; ardından bu gizli anahtar kullanılarak mesaj AES-GCM algoritmasıyla şifrelenir.
Bu sayede yalnızca alıcı, kendiprivate key’i ve göndereninpublic key’i ile aynı shared secret’ı hesaplayabilir ve mesajı çözebilir. - Mesaj içeriği, gönderen ve alıcı bilgileri; gönderenin
private Ed25519anahtarı ile imzalanır. - İmza, mesaj veritabanına kaydedilmeden önce sunucu tarafında doğrulanır.
- Gönderilen mesajlar kullanıcı tarafında saklanmaz; böylece veritabanında ya da herhangi bir istemci cihazda mesajlar düz metin (plain text) olarak tutulmaz.
English
PROJECT PURPOSE
The goal of the project is to enable users to communicate securely with each other using end-to-end encryption and full anonymity.
TECHNOLOGIES USED
Backend --> .NET 9
Database --> MSSQLCORE FEATURES
- Users generate key pairs on their own devices and register by only sending their
nicknameandpublic keyto the server. - A user who wants to communicate with another requests that user’s
public keyfrom the server using theirnickname. - The application checks the database at intervals to see if any new messages have arrived for the user.
HOW SECURITY IS ENSURED
- Keys are generated only on the user's device; only
publickeys are sent to the server. - To send a message, a shared secret is generated using the recipient’s public key and the sender’s key pair via the Curve25519 (X25519) algorithm. This shared secret is then used to encrypt the message with the AES-GCM algorithm.
This ensures that only the recipient can decrypt the message using theirprivate keyand the sender’spublic key, as both parties derive the same shared secret. - The message content and metadata (sender and recipient info) are digitally signed using the sender’s
private Ed25519key. - The server verifies the signature before storing the message in the database.
- Sent messages are not stored on the client side, so neither the database nor any client device stores messages in plain text.