OWASP kategorisi: MASVS-CRYPTO: Kriptografi
Genel Bakış
Veri gizliliğini ve bütünlüğünü korumak için kriptografinin yaygın olarak kullanılmasına rağmen, geliştiricilerin zayıf veya eski kriptografik algoritmaları yanlışlıkla uygulaması önemli bir risk oluşturur. Bu güvenlik açığı, gerekli hesaplama gücüne veya bilgiye sahip kötü amaçlı kişiler tarafından istismar edilebilecek bu algoritmalardaki doğal zayıflıklardan kaynaklanmaktadır. Bu tür istismarların sonuçları ciddi olabilir ve yetkisiz erişime, veri ihlallerine ve hassas bilgilerin manipülasyonuna yol açabilir.
Etki
Hassas veriler açığa çıkabilir, değiştirilebilir veya sahtesi oluşturulabilir. Bozuk veya riskli şifreleme algoritmaları güvenlik açıklarına yol açabilir ve hassas bilgilerin şifresini çözmek, verileri değiştirmek ya da yasal kuruluşların kimliğine bürünmek için kötüye kullanılabilir. Bu tür güvenlik açıklarının kötüye kullanılmasının etkileri; veri ihlalleri ve finansal kayıplardan itibar kaybına ve kullanıcı güveninin yitirilmesine kadar değişebilir.
Risk: Zayıf veya bozuk şifreli karma işlevleri
Zayıf veya bozuk kriptografik karma işlevlerinin (ör. MD5
veya SHA1
) kullanılması, verilerin güvenliği ve bütünlüğü açısından önemli bir risk oluşturur. Karma işlevleri, giriş verilerinin benzersiz ve sabit uzunluklu parmak izlerini (karma) oluşturmak için tasarlanmıştır. Bu nedenle, veri bütünlüğü doğrulama, şifre depolama ve dijital imzalar gibi çeşitli amaçlar için kullanışlıdır. Ancak zayıf veya güvenliği ihlal edilmiş karma işlevleri kullanıldığında çeşitli güvenlik açıkları ortaya çıkabilir:
- Çakışma saldırıları: Zayıf karma işlevleri, saldırganın aynı karma değerini üreten iki farklı giriş bulduğu çakışma saldırılarına karşı savunmasızdır. Bu durum, kötü amaçlı kişilerin meşru verilerin yerine kötü amaçlı veriler koymasına ve veri bütünlüğünü tehlikeye atmasına olanak tanır.
- Veri İhlalleri: Şifreler zayıf bir algoritmayla karma oluşturulursa sistemin başarılı bir şekilde ihlal edilmesi, kullanıcı kimlik bilgilerinin açığa çıkmasına neden olabilir. Saldırganlar daha sonra şifreleri kırmak için gökkuşağı tablolarını veya başka teknikleri kullanarak hesaplara yetkisiz erişim sağlayabilir.
- Dijital İmzaların Reddi: Dijital imzalarda kullanılan zayıf karma işlevleri, sahte imzalar oluşturmak için kullanılabilir. Bu durum, belgelerin veya mesajların gerçekliğini ve bütünlüğünü belirlemeyi zorlaştırır.
Risk azaltma önlemleri
Bu riskleri azaltmak için SHA-2
veya SHA-3
gibi güçlü ve iyi test edilmiş kriptografik karma işlevlerini kullanmak ve yeni güvenlik açıkları keşfedildikçe bunları güncel tutmak çok önemlidir. Ayrıca, şifrelere tuzlama işlemi uygulama ve bcrypt
veya Argon2
gibi şifreye özel karma oluşturma algoritmaları kullanma gibi güvenlik uygulamalarını benimsemek veri korumasını daha da artırabilir.
Risk: Zayıf veya bozuk şifreleme işlevleri
Zayıf veya bozuk kriptografik şifreleme işlevlerinin (ör. DES
veya RC4
) kullanılması, hassas verilerin gizliliği açısından ciddi riskler oluşturur. Şifreleme, bilgileri okunamaz bir biçime dönüştürerek korumak için tasarlanmıştır. Ancak şifreleme algoritması kusurluysa bu korumalar atlanabilir:
- Veri İhlalleri: Zayıf şifreleme algoritmaları; kaba kuvvet saldırıları, bilinen düz metin saldırıları ve kriptoanaliz teknikleri gibi çeşitli saldırılara karşı savunmasızdır. Bu saldırılar başarılı olursa şifrelenmiş veriler açığa çıkabilir ve kişisel bilgiler, mali kayıtlar veya gizli iş verileri gibi hassas bilgilere yetkisiz erişim sağlanabilir.
- Veri Manipülasyonu ve Kurcalama: Bir saldırgan verilerin şifresini tam olarak çözemese bile şifreleme algoritması zayıfsa verileri fark edilmeden manipüle edebilir. Bu durum, verilerin yetkisiz şekilde değiştirilmesine yol açabilir ve dolandırıcılık, yanlış beyan veya diğer kötü amaçlı faaliyetlere neden olabilir.
Risk azaltma önlemleri
Şifreleme işlevlerinde güçlü kriptografik algoritmalar kullanın.
Bu riskleri azaltmak için güçlü ve iyi test edilmiş şifreleme algoritmaları kullanmak, anahtar yönetimi ve şifreleme uygulamasıyla ilgili en iyi uygulamaları takip etmek çok önemlidir. Şifreleme algoritmalarını düzenli olarak güncellemek ve yeni tehditler hakkında bilgi sahibi olmak da güçlü bir veri güvenliği sağlamak için önemlidir.
Kullanılması önerilen bazı varsayılan algoritmalar:
- Simetrik şifreleme:
GCM
moduylaAES-128
/AES-256
Chacha20
- Asimetrik şifreleme:
OAEP
iç boşluğuylaRSA-2048
/RSA-4096
Sık karşılaşılan hataları azaltmak için bir şifreleme kitaplığındaki güvenli temel öğeleri kullanın.
Uygun bir şifreleme algoritması seçmek çok önemli olsa da güvenlik açıklarını gerçekten en aza indirmek için kolaylaştırılmış bir API sunan ve güvenli varsayılan yapılandırmaları vurgulayan bir kriptografi kitaplığı kullanmayı düşünebilirsiniz. Bu yaklaşım, uygulamalarınızın güvenliğini güçlendirmekle kalmaz, aynı zamanda kodlama hataları nedeniyle güvenlik açığı oluşma olasılığını da önemli ölçüde azaltır. Örneğin Tink, AEAD
ve Hybrid
şifreleme olmak üzere iki farklı seçenek sunarak şifreleme tercihlerini basitleştirir. Böylece geliştiricilerin bilinçli güvenlik kararları vermesi kolaylaşır.
Risk: Zayıf veya bozuk şifreleme imzası işlevleri
Zayıf veya bozuk kriptografik imza işlevlerinin (ör. RSA-PKCS#1 v1.5
ya da zayıf karma işlevlerine dayalı olanlar) kullanılması, verilerin ve iletişimin bütünlüğü açısından ciddi riskler oluşturur. Dijital imzalar, kimlik doğrulama, inkar edilemezlik ve veri bütünlüğü sağlamak için tasarlanmıştır. Böylece bir mesajın veya belgenin belirli bir gönderenden geldiği ve üzerinde değişiklik yapılmadığı doğrulanır. Ancak temel imza algoritması kusurlu olduğunda bu güvenceler tehlikeye girebilir:
- İmza sahteciliği: Zayıf imza algoritmaları, kötü niyetli kişilerin sahte imzalar oluşturmasına olanak tanıyan saldırılara karşı savunmasız olabilir. Bu nedenle, tespit edilmeden yasal kuruluşların kimliğine bürünebilir, dokümanları sahteleyebilir veya iletileri değiştirebilirler.
- İmzaların reddi: Bir imza algoritması bozulursa imzalayan kişi, bir belgeyi imzalamadığını yanlış bir şekilde iddia edebilir. Bu durum, inkar etmeme ilkesini zayıflatır ve yasal ve lojistik zorluklar yaratır.
- Veri manipülasyonu ve kurcalama: İmzaların verilerin bütünlüğünü korumak için kullanıldığı senaryolarda zayıf bir algoritma, saldırganların imzayı geçersiz kılmadan verileri değiştirmesine olanak tanıyabilir. Bu durum, kurcalamanın tespit edilememesine ve önemli bilgilerin güvenliğinin ihlal edilmesine yol açabilir.
Risk azaltma önlemleri
Güçlü kriptografik imza algoritmaları kullanın
Bu riskleri azaltmak için güçlü ve iyi test edilmiş şifreleme imzası algoritmaları kullanmak çok önemlidir:
PSS
iç boşluğuylaRSA-2048
/RSA-4096
- Güvenli eğrilerle Elips Biçimli Eğri Dijital İmza Algoritması (
ECDSA
)
Sık karşılaşılan hataları azaltmak için bir şifreleme kitaplığındaki güvenli temel öğeleri kullanın.
Doğru imza algoritmasını seçmek önemlidir ancak güvenlik açıklarını gerçekten en aza indirmek için varsayılan olarak güçlü güvenlik garantileri sağlayan bir kriptografi kitaplığı kullanmayı düşünebilirsiniz. Örneğin Tink, varsayılan seçenek olarak güvenli eğrilerle ECDSA
sunarak imza seçeneklerini basitleştirir. Tüm bunlar basit ve kapsamlı bir API içinde yapılır. Bu yaklaşım, güvenliği artırmanın yanı sıra karmaşık yapılandırma veya karar verme süreçlerine gerek kalmadığı için geliştirme sürecini de kolaylaştırır.
Kaynaklar
- Tink kriptografi kitaplığı
- Android uygulama kalitesi: Kriptografi
- Tink ile Dijital İmza
- Tink ile karma şifreleme
- Tink ile Kimliği Doğrulanmış Şifreleme
- Zayıf veya bozuk kriptografik karma ve şifreleme işlevleri Android güvenlik lint'i
- CWE-327: Bozuk veya Riskli Kriptografik Algoritma Kullanımı
- CWE-328: Zayıf karma kullanma
- CWE-780: OAEP olmadan RSA algoritmasının kullanılması
- Onaylanmış Karma İşlevler hakkında NIST sayfası
- Gelişmiş Şifreleme Standardı (Wikipedia)
- Secure Hash Algorithm 2 (Wikipedia)
- Secure Hash Algorithm 3 (Wikipedia) [Güvenli Karma Değer Algoritması 3 (Wikipedia)]
- RSA kriptosistemi (Wikipedia)
- Elliptic Curve Digital Signature Algorithm (Wikipedia)
- Akış şifresi ChaCha (Wikipedia)
- Şifreye tuz ekleme (Wikipedia)
- Karma kriptosistem (Wikipedia)
- Kimliği doğrulanmış şifreleme