· kaynak dev.to (home feed)
Apple Pay şifre çözme dokümantasyonunda yanlış KDF girdileri rapor edildi; arşivlenmiş sayfa hâlâ doğru
Apple'ın yayındaki Apple Pay şifre çözme referansında ECDH paylaşılan sırrının yerine bir hash fonksiyonu geçtiği ve AES-GCM algoritma kimliğinin düştüğü bildiriliyor; dolayısıyla dokümantasyondan geliştirilen entegrasyonlar hiçbir zaman şifre açamayan anahtarlar türetiyor.

Yayındaki sayfa ile arşiv uyumsuz
Tom Wang'ın dev.to'daki yazısına göre Apple'ın Apple Pay ödeme token'larının şifresini çözmeye ilişkin güncel referans sayfasında, anahtar türetme fonksiyonu (KDF) tablosunda hatalar var. Tabloda ECDH paylaşılan sırrının bulunması gereken yerde bir hash fonksiyonu listelendiği ve id-aes256-GCM algoritmasını tanımlayan byte dizisinin tamamen atlandığı bildiriliyor. Wang, aynı sayfanın arşivlenmiş bir kopyasının doğru değerleri gösterdiğini, yani hataların baştan beri var olmak yerine yayındaki sayfaya sonradan sızmış göründüğünü belirtiyor.
Hata sessizce ortaya çıkar. Yalnızca yayındaki dokümantasyondan titizlikle oluşturulmuş bir şifre çözücü, ciphertext'i hiçbir zaman açamayan bir anahtar türetir ve AES-GCM, hatalı biçimlendirilmiş bir KDF girdisine işaret eden herhangi bir hata vermez. Etrafındaki kod doğru görünür; anahtar basitçe yanlıştır ve nedenini söyleyen hiçbir şey yoktur.
Bir Apple Pay token'ının içinde ne var
Ödeme sayfası tamamlandığında token'ın ödeme verisi, dört üst düzey anahtara sahip bir JSON nesnesidir: bir sürüm, base64 ciphertext, ayrık (detached) bir PKCS #7 imzası ve ephemeral public key, bir public key hash, işlem kimliği ile isteğe bağlı uygulama verisini taşıyan bir header.
Sürüm neredeyse her yerde EC_v1'dir. Apple, RSA_v1'in mevzuat kaygılarının ECC şifrelemeyi kullanılamaz kıldığı bölgelerde göründüğünü söylüyor ve Mart 2026 tarihli teknik notu TN3206 bunu fiilen Çin anakarasına karşılık getiriyor: Payment Processing sertifika imzalama talebi (CSR) küresel olarak 256 bitlik bir ECC anahtarı, orada ise 2048 bitlik bir RSA anahtarıdır. Bir RSA_v1 header'ı ephemeralPublicKey yerine wrappedKey içerir.
Wang, en çok önem taşıyan alan olarak publicKeyHash'i işaret ediyor. Bu, token'ın özel anahtarlarınızdan hangisine şifrelendiğini tanımlayan tek sinyaldir ve bu yüzden kesinti yaşamadan sertifika rotasyonundan çıkmanın merkezinde yer alır.
Arşivlenmiş sayfanın anlattığı türetme
EC_v1 için şifre çözme sırası şöyledir: ECDH, ardından tek geçişli bir NIST SP 800-56A concatenation KDF, ardından AES-GCM. Wang'ın yazısına göre adımlar:
- header.publicKeyHash değerini, elinizdeki her Payment Processing sertifikası public key'inin SHA-256 değeriyle eşleştirerek anahtarı seçin.
- Özel anahtarınız ile token'ın ephemeralPublicKey'i arasında ECDH ile bir sır üzerinde anlaşın. Apple yalnızca 256 bitlik bir ECC anahtar çifti belirtir; açık kaynak şifre çözücüler bunu P-256 olarak ele alır.
- Anahtarı, 0x00000001 sayaç değeri, ECDH paylaşılan sırrı Z, AlgorithmID, PartyUInfo ve PartyVInfo üzerinden SHA-256 alarak türetin. AlgorithmID, uzunluk öneki byte'ı 0x0D ve ardından 13 karakterlik ASCII dizisi id-aes256-GCM'dir. PartyUInfo "Apple" ASCII dizisidir. PartyVInfo, tüccar (merchant) kimliğinizin SHA-256 değeridir; bu, sertifika subject alanındaki UID'den hash'lenerek ya da 1.2.840.113635.100.6.32 OID'sindeki extension'dan hex olarak çözülerek elde edilir.
- Veriyi, 16 sıfır byte'lık bir IV ve associated data olmadan AES-256-GCM ile çözün; ciphertext'in son 16 byte'ı GCM etiketidir.
Neden önemli
Referans dokümantasyonu fiili spesifikasyon olarak iş gördüğünde, KDF tablosundaki bir yazım hatası spesifikasyonda sessiz bir değişikliğe dönüşür. Şifre çözmeyi yayındaki sayfadan gerçekleştiren ekipler, kimlik doğrulamasında başarısız olan kodu yayınlayacak, sonra dokümanları kontrol etmeyi akıllarına getirmeden önce günlerini kendi ECDH, sertifika işlemleri ve GCM parametrelerini denetleyerek geçirecek. Önlemler cazipsiz: yayındaki sayfayı arşivlenmiş sürümüyle diff'leyin, yeni bir şifre çözücüyü bilinen iyi bir açık kaynak uygulamasına karşı doğrulayın ve test vektörlerini sabitleyin. Wang ayrıca, rehberinin etrafında döndüğü daha geniş soruyu da gündeme getiriyor — çoğu ekibin token'ları bir ödeme servis sağlayıcısına devretmek yerine kendilerinin şifresini çözmesi gerekip gerekmediği. Şifre çözme yoluna sahip olması gerekenler için ders şudur: anahtar türetmede her byte yüke biner ve dokümantasyon hataları tıpkı sizin hatalarınız gibi yüksek sesle patlar.
- #apple-pay
- #payments
- #cryptography
- #documentation
- #encryption