Selam dostlar, sizleri bilgilendirmek istediğim konu siber güvenlik için çok önem arz ediyor bence. Uçtan uca şifreleme.
Uçtan uca şifreleme nedir?
Uçtan uca şifreleme (End-to-End Encryption), mesajın yalnızca gönderen ve gönderdiğiniz kişi tarafından okunabileceği şekilde şifrelenmesidir. Aradaki sunucular dahil hiç kimse mesajın içeriğini çözemez. WhatsApp gibi ünlü sohbet uygulamalarıda aktif olarak bu sistemi kullanıyor.
Peki nasıl çalışıyor?
Key üretimi: her kullanıcı kendine ait bir public veya private key çifti üretir.
Mesaj şifreleme: gönderen kişi, alıcının açık keyi ile mesajı şifreler.
Mesaj çözme: alıcı kişi kendi private keyi ile mesajı çözer.
Örnek veriyorum tarayıcılarda anahtar üretimi için basit e2ee mesajlaşması yapalım javas ile
Mesajı Çözme:
Backend'de e2ee (phpde openssl)
PHP: openssl, sodium
Node.js: crypto, node-forge, openpgp js
JavaScript: crypto subtle, tweetnacl, libsodium
Şimdi siz sormadan söyleyeyim, RSA en çok kullanılan asimetrik şifreleme algoritmasıdır. Açılımı rivest, shamir ve adleman.
RSA iki farklı anahtarla çalışır beyler public key ve private key. Şöyle açıklayabilirim sanırım biraz garip örnek olacak ama ,"al gülüm ver gülüm."
Gönderen senin public anahtarınla mesajı şifreler, Sende özel anahtarınla bu mesajı çözersin.
Örnek yazılımda kullandığımız RSA OAEP var fark ettiyseniz bu nedir peki?
RSA'de aynı mesajı iki kez şifrelersen aynı sonucu alırsın. Bu durum sıkıntı. Çünkü bu demek ki biri mesajı yakalarsa tekrar tekrar deneyebilir.
OAEP bu açığı kapatır. Her şifrelemeyi rastgeleleştirir. Aynı mesajı 100 kez şifrelersen, 100 farklı sonuç elde edersin. Bu da saldırganların işini aşırı zorlaştırır.
Umarım bu konu bir gün işinize yarar, eğer kendi forum sitenizi bir gün oluşturursanız uçtan uca şifreleme yapmada bu işinize yarar.
Uçtan uca şifreleme nedir?
Uçtan uca şifreleme (End-to-End Encryption), mesajın yalnızca gönderen ve gönderdiğiniz kişi tarafından okunabileceği şekilde şifrelenmesidir. Aradaki sunucular dahil hiç kimse mesajın içeriğini çözemez. WhatsApp gibi ünlü sohbet uygulamalarıda aktif olarak bu sistemi kullanıyor.
Peki nasıl çalışıyor?
Key üretimi: her kullanıcı kendine ait bir public veya private key çifti üretir.
Mesaj şifreleme: gönderen kişi, alıcının açık keyi ile mesajı şifreler.
Mesaj çözme: alıcı kişi kendi private keyi ile mesajı çözer.
Örnek veriyorum tarayıcılarda anahtar üretimi için basit e2ee mesajlaşması yapalım javas ile
Mesejı şifreleme:const keyPair = await window.crypto.subtle.generateKey(
{
//örnek veriyorum keyi generate ediyoruz burada
name: "RSA-OAEP",
modulusLength: 2048,
publicExponent: new Uint8Array([1, 0, 1]),
hash: "SHA-256",
},
true,
["encrypt", "decrypt"]
);
// keyi dışarı çıkarıyoruz
const publicKey = await crypto.subtle.exportKey("spki", keyPair.publicKey);
const privateKey = await crypto.subtle.exportKey("pkcs8", keyPair.privateKey);
const encrypted = await crypto.subtle.encrypt(
{
name: "RSA-OAEP"
},
recipientPublicKey, // Alıcının keyi
new TextEncoder().encode("HAK, HUKUK, ADALET!")
);
Mesajı Çözme:
const decrypted = await crypto.subtle.decrypt(
{
name: "RSA-OAEP"
},
myPrivateKey, // Alıcının özel keyi
encrypted
);
console.log(new TextDecoder().decode(decrypted));
Backend'de e2ee (phpde openssl)
KÜTÜPHANELER// key üretimi
$res = openssl_pkey_new([
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
]);
openssl_pkey_export($res, $privateKey);
$details = openssl_pkey_get_details($res);
$publicKey = $details["key"];
// Şifreleme
openssl_public_encrypt("ZIPLA, ZIPLA, ZIPLAMAYAN TYPE-C", $encrypted, $publicKey);
$base64Encrypted = base64_encode($encrypted);
// Şifre çözme
openssl_private_decrypt(base64_decode($base64Encrypted), $decrypted, $privateKey);
echo $decrypted;
PHP: openssl, sodium
Node.js: crypto, node-forge, openpgp js
JavaScript: crypto subtle, tweetnacl, libsodium
Şimdi siz sormadan söyleyeyim, RSA en çok kullanılan asimetrik şifreleme algoritmasıdır. Açılımı rivest, shamir ve adleman.
RSA iki farklı anahtarla çalışır beyler public key ve private key. Şöyle açıklayabilirim sanırım biraz garip örnek olacak ama ,"al gülüm ver gülüm."
Gönderen senin public anahtarınla mesajı şifreler, Sende özel anahtarınla bu mesajı çözersin.
Örnek yazılımda kullandığımız RSA OAEP var fark ettiyseniz bu nedir peki?
RSA'de aynı mesajı iki kez şifrelersen aynı sonucu alırsın. Bu durum sıkıntı. Çünkü bu demek ki biri mesajı yakalarsa tekrar tekrar deneyebilir.
OAEP bu açığı kapatır. Her şifrelemeyi rastgeleleştirir. Aynı mesajı 100 kez şifrelersen, 100 farklı sonuç elde edersin. Bu da saldırganların işini aşırı zorlaştırır.
Umarım bu konu bir gün işinize yarar, eğer kendi forum sitenizi bir gün oluşturursanız uçtan uca şifreleme yapmada bu işinize yarar.


