Detecting network status...

Obfuscation Nedir?

Obfuscation

Obfuscation, en basit tanımıyla, bir veriyi, kodu ya da iletişim trafiğini kasıtlı olarak karmaşık ve anlaşılmaz hale getirme işlemidir. Bunu, bilgiyi tamamen şifrelemekten (Encryption) farklı düşünebilirsiniz. Şifreleme, veriyi okunamaz bir formata sokar ve sadece doğru anahtara sahip olanlar eski haline getirebilir. Obfuscation ise veriyi saklamaz, sadece kamufle eder.

Bir örnekle açıklayalım:

Şifreleme (Encryption): Bir mektubu kilitli bir kutuya koyup anahtarı saklamaktır.

Obfuscation: Mektubu farklı bir dilde ya da şifreli bir el yazısıyla yazmaktır. Mektup hala okunabilir durumdadır, ancak içeriği anlamak çok zordur veya özel bir bilgi (bu durumda kullanılan “dilin” ne olduğu) gerektirir.

VPN bağlamında, Obfuscation, internet trafiğinizin VPN trafiği gibi görünmesini engeller ve onu sıradan, normal internet trafiği gibi gösterir. Bu şekilde VPN servisi en sert DPI ağlarında bile engellenemez.

VPN İçin Neden Önemlidir?

VPN‘in temel amacı, internet bağlantınızı şifreleyerek gizlilik ve güvenlik sağlamaktır. Ancak, internet servis sağlayıcınız (ISS), hükümetler veya bazı ağ yöneticileri, şifreli de olsa bir trafiğin VPN trafiği olduğunu anlayabilirler. Bunu genellikle şu yöntemlerle yaparlar:

Port Analizi: VPN protokollerinin (WireGuard, L2TP, vs.) sıklıkla kullandığı standart portları tespit ederek.

Derin Paket İncelemesi (DPI): Trafiğin içindeki belirli kalıpları ve “imzaları” (örneğin, OpenVPN el sıkışması) arayarak.

İşte tam bu noktada Obfuscation devreye girer ve VPN için hayati bir rol oynar:

1. Engellemeyi Aşma (Bypassing Restrictions)

Bazı ülkeler (Çin, Rusya, İran gibi) veya kısıtlayıcı ağlar (okullar, iş yerleri), standart VPN trafiğini DPI kullanarak tespit edip aktif olarak engeller. Obfuscation, VPN trafiğinin imzalarını gizleyerek, trafiğin bir VPN bağlantısı değil de normal bir internet trafiği gibi görünmesini sağlar. Bu, kısıtlayıcı güvenlik duvarlarının (Firewall) trafiği engellemesini zorlaştırır.

2. Ekstra Gizlilik Katmanı (Extra Privacy)

VPN kullandığınızın tespit edilmesi dahi, bazı durumlarda sorun teşkil edebilir. Karartma, hem verinizi şifreler hem de o şifreli verinin ne olduğunu (bir VPN olduğunu) gizleyerek, kimliğinizi ve faaliyetlerinizi izleyenlerin işini çok daha zorlaştırır.

3. Sansürü Atlama

Karartılmış bir VPN bağlantısı, çevrimiçi sansürün en sıkı uygulandığı bölgelerde bile internete özgürce erişim sağlamanın en etkili yollarından biri haline gelir.

Kısacası, Obfuscation, VPN‘inize bir “hayalet modu” ekler. VPN sizi güvende tutar, Obfuscation ise güvende olduğunuzu kimseye belli etmez.

Obfuscation Nasıl Çalışır?

Aşağıdaki kod parçacığı, LunoVPN’in karartma katmanını (Biz whirlpool diyoruz) nasıl uyguladığını gösteren basitleştirilmiş bir simülasyondur. Bu katmanın amacı, içerideki gerçek WireGuard (VPN) paketini alıp, onu dışarıdan tamamen masum görünen Zoom (STUN/RTP) paketlerinin içine sarmaktır.

1. Temeller ve Şifreleme Anahtarı

Bu kısım, kodun çalışması için gerekli kütüphaneleri dahil eder ve şifreleme anahtarlarını ayarlar.

package main

import (
"crypto/chacha20poly1305"
"crypto/cipher"
"crypto/rand"
"encoding/binary"
// ... (diğer kütüphaneler)
)

const (
LunoVPNMagic = "I1" // LunoVPNWG obfuscation prefix
)

var (
key = []byte("0123456789abcdef0123456789abcdef") // 32-byte, client ve server aynı olacak
aead, _ = chacha20poly1305.NewX(key)
)


import: Kriptografik işlemler (chacha20poly1305), rastgele veri oluşturma (rand) ve ağ protokolleri için gerekli kütüphaneler eklenir.

LunoVPNMagic = “I1”: Bu sabit, LunoVPN’in kullandığı obfuscation sürümünün (I1) imzasıdır. Bu imza, sahte paketin içinde gizlenir ve sadece LunoVPN sunucusu tarafından tanınır.

key ve aead:

key, istemci ve sunucunun ortak bildiği 32-byte’lık gizli anahtardır.

aead (Authenticated Encryption with Associated Data), WireGuard paketini sarmalamak için kullanılan ChaCha20-Poly1305 şifreleme algoritmasının bir örneğidir. Bu, paketi sarmalamadan önce bile ekstra bir güvenlik katmanı sağlar.

2. Kılık Değiştirme Fonksiyonları (The Disguise)

Bu iki fonksiyon, VPN trafiğinin içine saklanacağı dış kabuğu (kılıfı) oluşturur. Bunlar, bir ağ izleyicinin görmeyi beklediği gerçek zamanlı iletişim (VoIP) paketlerini birebir taklit eder.

func zoomStunBindingRequest() []byte {
pkt := make([]byte, 200+rand.Intn(800)) // 200–1000 byte arası (Rastgele boyut)
binary.BigEndian.PutUint16(pkt[0:2], 0x0001)       // STUN Binding Request kodu
binary.BigEndian.PutUint32(pkt[4:8], 0x2112A442)   // Magic cookie
rand.Read(pkt[8:20])                               // Transaction ID
// ... (Diğer Zoom'a özgü STUN/ICE nitelikleri eklenir)
return pkt
}

func zoomRtpPacket() []byte {
pkt := make([]byte, 180+rand.Intn(1200)) // 180–1380 byte (Rastgele boyut)
pkt[0] = 0x80                              // RTP Versiyon 2
pkt[1] = byte(96 + rand.Intn(32))          // Dinamik Payload Tipi (96–127 arası)
// ... (Sequence Number ve 90kHz'lik zaman damgası eklenir)
return pkt
}


zoomStunBindingRequest(): Bu fonksiyon, Zoom’un NAT’ı aşmak için kullandığı STUN protokolünün bir talebini taklit eder. Paket boyutu rastgeleleştirilir ve protokolün gerektirdiği standart başlıklar (Magic Cookie, Transaction ID) ile doldurulur.

zoomRtpPacket(): Bu, bir video/ses akışındaki gerçek veri taşıyıcısı olan RTP paketini taklit eder. En kritik kısım, 96-127 arasındaki dinamik Payload Tipini ve paket boyutunu Zoom’un gerçek dağılımına yakın olacak şekilde rastgele seçmesidir.

3. Paket Sarmalama (The Obfuscation Core)
Bu fonksiyon, LunoVPN’in kalbidir. WireGuard’dan gelen gerçek yükü (payload) alır ve onu sahte bir Zoom paketinin içine gizler.

func wrapZoom(payload []byte) []byte {
var outer []byte
if rand.Intn(10) < 7 {
outer = zoomRtpPacket()
} else {
outer = zoomStunBindingRequest()
}

// 1. Gerçek WireGuard paketini şifrele (Ekstra Katman)
salt := make([]byte, 16) 
lenBuf := make([]byte, 4)
binary.BigEndian.PutUint32(lenBuf, uint32(len(payload)))

plaintext := append(salt, lenBuf...)
plaintext = append(plaintext, payload...) // Plaintext: Tuz + Uzunluk + Gerçek Paket

nonce := make([]byte, 24)
rand.Read(nonce[:12])
ciphertext := aead.Seal(nil, nonce, plaintext, nil) // Yeni şifreli yük

// 2. LunoVPN Magic imzasını ekle
final := append([]byte(LunoVPNMagic), ciphertext...)

// 3. Şifrelenmiş yükü (final), sahte Zoom paketinin sonuna ekle
outer = append(outer, final...)

return outer
}

Kılıf Seçimi: rand.Intn(10) yapısıyla, trafiğin çoğunluğu (%70) RTP gibi (sürekli akış), geri kalanı ise STUN gibi (sık olmayan sinyalizasyon) gösterilerek gerçek bir video konferans uygulamasının davranışı taklit edilir.

İkinci Şifreleme: WireGuard paketi (payload) önce alınır ve salt ile paket uzunluğu bilgisi eklenerek ChaCha20-Poly1305 ile tekrar şifrelenir. Bu, iki kat şifreleme sağlar.

Gizleme: Son olarak, şifreli bu yeni yükün başına LunoVPNMagic (“I1”) imi eklenir ve tüm bu yapı, rastgele oluşturulmuş sahte Zoom paketinin (outer) hemen arkasına eklenir.

Sonuç: Ağ üzerinde dolaşan paket, başlangıçta Zoom’un imzasını taşır. Bu imza, DPI’ın onu normal bir video görüşmesi sanmasını sağlar. Gizli VPN yükü, paketin sonuna eklenmiş ekstra şifreli bir parça olarak kalır ve tespit edilemez.

Neden Karartma Önemli?

Gördüğünüz gibi, LunoVPN sadece verilerinizi şifrelemekle kalmıyor; trafiğinizin ne olduğunu gizleyerek bir adım öteye gidiyor.

Eğer kısıtlayıcı ağlar veya hükümet sansürü ile karşı karşıyaysanız, standart bir VPN bağlantısı hızla engellenebilir. LunoVPN’in dinamik Obfuscation katmanı sayesinde, trafiğiniz, milyonlarca insanın kullandığı, meşru bir protokol akışıyla karıştırılır. Teknik detaylar için IETF’in MASQUE draft’ına bakabilirsiniz.

LunoVPN’i tercih ederek, sadece bir VPN‘e değil, aynı zamanda dünyanın en gelişmiş sansür aşma teknolojilerinden birine sahip olursunuz.

LunoVPN, özgürlüğünüzü ve gizliliğinizi en kısıtlı bölgelerde bile korumanız için tasarlanmıştır.

Paylaş

Protect Your Privacy - Install FREE !

Secure. Private. Fast.