RSA-OAEP (Optimal Asymmetric Encryption Padding)
Gelir İdaresi Başkanlığı teknik kılavuzları, Vergi Usul Kanunu ve UBL-TR standartları referans alınarak doğrulanmıştır.
Tanımı ve Asimetrik Şifreleme Evrimi (RFC 8017 / PKCS#1 v2.2)
RSA-OAEP (Optimal Asymmetric Encryption Padding - En Uygun Asimetrik Şifreleme Dolgulaması); Mihir Bellare ve Phillip Rogaway tarafından 1994 yılında tasarlanan, RSA açık anahtarlı şifreleme algoritması ile oturum anahtarlarının ve hassas verilerin şifrelenmesinde kullanılan en gelişmiş dolgu standardıdır. IETF tarafından RFC 8017 (PKCS#1 v2.2) ve RFC 3447 kapsamında standartlaştırılmıştır.
Klasik RSA şifrelemesinde (PKCS#1 v1.5), aynı metin aynı açık anahtarla şifrelendiğinde benzer şifreli metin yapıları oluşmakta veya şifreli metin üzerinde matematiksel oynamalar (malleability) yapılabilmektedir. RSA-OAEP, Feistel ağı benzeri iki adımlı simetrik maskeleme döngüsü kullanarak şifrelenecek düz metni tamamen rastgele bir gürültüye dönüştürür ve şifreli metnin bütünlüğünü matematiksel olarak garanti eder.
Klasik PKCS#1 v1.5 Zafiyetleri ve Bleichenbacher Saldırısı
1998 yılında İsviçreli kriptograf Daniel Bleichenbacher, PKCS#1 v1.5 şifreleme dolgusuna karşı Milyon Mesaj Saldırısı (Million Message Attack - MMA) olarak bilinen Uyarlanabilir Seçilmiş Şifreli Metin Saldırısını (Adaptive Chosen-Ciphertext Attack - CCA2) yayınlamıştır. Bu saldırıda saldırgan, sunucuya modifiye edilmiş şifreli paketler göndererek sunucunun döndürdüğü dolgu hatası yanıtlarını (Padding Oracle) dinler; birkaç yüz bin denemede özel anahtara sahip olmaksızın şifreli oturum anahtarını tamamen çözebilir.
RSA-OAEP, bu tehlikeli zafiyeti kökten yok etmek üzere IND-CCA2 (İkincil Seçilmiş Şifreli Metin Saldırılarına Karşı Ayırt Edilemezlik) güvenlik ispatına sahip olarak tasarlanmıştır. RSA-OAEP'te en ufak bir bitlik tahrifat durumunda bile tüm dolgu yapısı çözülmez bir çelişkiye girer ve saldırgana hiçbir bilgi sızdırmaz.
OAEP Feistel Ağı Kodlama Mimarisi (EME-OAEP)
RSA-OAEP kodlama süreci (EME-OAEP - Encoding Method for Encryption) iki girişli bir Feistel ağı biçiminde çalışır:
- Parametre Hazırlığı: Şifrelenecek düz metin ($M$), isteğe bağlı etiket özeti ($lHash = \text{Hash}(L)$) ve sıfır baytlık dolgu ($PS$) birleştirilerek veri bloğu oluşturulur:
$$DB = lHash \parallel PS \parallel 0x01 \parallel M$$
- Tohum (Seed) Üretimi: Kriptografik rastgelelik üretecinden özet fonksiyonu uzunluğunda (örneğin SHA-256 için 32 Bayt) tekil bir rastgele tohum ($seed$) üretilir.
- Veri Bloğu Maskeleme: Tohum değeri Maske Üretim Fonksiyonuna (MGF1) verilerek maske üretilir ve $DB$ ile XOR'lanır:
$$dbMask = \text{MGF1}(seed, k - hLen - 1), \quad maskedDB = DB \oplus dbMask$$
- Tohum Maskeleme: Maskelenmiş veri bloğu tekrar MGF1 fonksiyonuna verilerek tohum maskelenir:
$$seedMask = \text{MGF1}(maskedDB, hLen), \quad maskedSeed = seed \oplus seedMask$$
- Kodlanmış Blok (EM): Başına tek bir sıfır baytı eklenerek blok tamamlanır:
$$EM = 0x00 \parallel maskedSeed \parallel maskedDB$$
- RSA Şifreleme: Kodlanmış blok alıcının açık anahtarı ($e, n$) ile modüler üs alma işlemine tabi tutularak şifreli metin ($C$) elde edilir:
$$C = EM^e \pmod n$$
Şifre Çözme ve Sabit Zamanlı (Constant-Time) Doğrulama
Şifre çözücü taraf, özel anahtarını ($d, n$) kullanarak $EM = C^d \pmod n$ değerini açar. Feistel ağını tersine işletip $seed$ ve $DB$ bloklarını ayıklar. Ardından $lHash$ eşleşmesini, ayrıcı $0x01$ baytının konumunu ve baştaki $0x00$ baytını denetler.
Burada kritik güvenlik kuralı; doğrulamada bir hata oluştuğunda sunucunun hangi adımda hata verdiğini saldırgandan gizlemesi ve tüm kontrolleri sabit zamanlı (constant-time) olarak icra etmesidir. Böylece yan kanal zamanlama analizleri (timing attacks) engellenir.
Hibrit Şifreleme, KEP, HSM ve Bulut Güvenliğindeki Rolü
RSA algoritması yapısı gereği yalnızca kendi anahtar boyutu kadar veri şifreleyebilir. Bu nedenle modern mimarilerde RSA-OAEP, doğrudan dosyanın kendisini değil; dosyayı şifreleyen 256-bitlik simetrik AES oturum anahtarını (Session Key) açık anahtarla paketlemek için (Key Encapsulation / Key Wrapping) kullanılır:
- Kayıtlı Elektronik Posta (KEP): KEP iletilerinin ve eklerinin şifrelenmesinde AES-256 oturum anahtarları alıcının sertifikasına RSA-OAEP ile sarılır.
- Bankacılık ve Donanımsal Güvenlik Modülleri (HSM): Kurumsal bankacılık API'lerinde ve ödeme ağ geçitlerinde hassas kart verilerini ileten oturum anahtarları FIPS 140-3 seviyeli HSM donanımlarında RSA-OAEP ile korunur.
- Web Kriptografi API (WebCrypto): Modern tarayıcılarda JavaScript üzerinden güvenli istemci-taraflı asimetrik şifreleme yapmak için W3C tarafından zorunlu kılınan standart RSA-OAEP'tir.