PHP 7 ile birlikte özellikle performans bakımından büyük bir ivme kazanacak olan PHP uygulamaları, ayrıca 2017 sonu itibariyle daha güvenli kodlanabilecek. PHP 7.2 sürümü sayesinde PHP, modern şifreleme öğelerini standart kütüphanesinde barındıran ilk programlama dili olacak.
Modern Şifreleme nedir?
Bir şifreleme kütüphanesinin modern olduğunu söyleyebilmek için iki önemli gereksinime sahip olması gerekmektedir:
- Yan kanallı kriptoanalize karşı koymak için tasarlanmış hızlı primitiflerin kullanılması.
- Ön tanımlı olarak güvenli ve basit bir yüksek seviye API’nin kullanılması.
Güvenli Primitifler
Açık anahtar şifreleme ve dijital imzayı örneğin OpenSSL ve Golang’a uyguladığınızda, RSA ve NIST ECC’den birini kullanmaya zorlanmaktasınız. Doğrusunu söylemek gerekirse her ikisi de iyi bir seçim değil.
- RSA kullanımı
- e = d = 1
- Geliştiricileri RSA-ECB kullanmaya zorluyor.
- PKCS1c1.5 takviyesi
- NIST Eliptik Eğri Kripgotrafi (Elliptic Curve Cryptography)
- Geçersiz eğri saldırıları, saldırganın eğri üzerinde bulunmayan (x,y) koordinatlarını sunması halinde gizli anahtarların ele geçirilmesini sağlıyor.
- ECDSA halinde, ECSDSA imzaları için tekrarlanan “k” değerleri daha önce gizli anahtarların verilmesine sebep oluyordu.
- NIST Eğrileri yeterince sağlam değil.
Modern şifreleme güvenli primitiflerin kullanılmasına ihtiyaç duymaktadır. Açık anahtar şifrelemede primitifler RFC 7748 ve RFC 8032’de ana hatlarıyla belirtilmiştir.
Libsodium primitifleri şunları içermektedir:
- X25519
- Ed25519
- Xsalsa20poly1305
- BLAKE2
- Argon2
- SipHash-2-4
- ChaCha20-Poly1305
Basit ve Güvenli Yüksek Seviye API
Libsodium’da açık anahtar şifrelemeyi kolaylaştırmak için şuna ihtiyacınız bulunmaktadır:
Bir mesajı deşifrelemek için:
Tüm bunlar ne anlama geliyor?
Eğer web uygulamalarınızı PHP ile geliştiriyorsanız, piyasaya sürüldüğü anda, modern şifreleme yeteneklerine sahip olmak için sürümü 7.2’ye güncelleyebilirsiniz. Böylelikle artık herhangi bir PHP eklentisi kullanmaya gerek olmaksızın, Ed25519 dijital imzalarını kullanan bir web uygulaması geliştirebilirsiniz.
Kaynak: Scott Arciszewski