
Kriptografi, düşman olarak bilinen kötü niyetli üçüncü tarafların varlığında güvenli iletişim sağlar. Şifreleme, bir girişi (yani düz metin) şifreli bir çıktıya (yani, şifreli metne) dönüştürmek için bir algoritma ve bir anahtar kullanır. Aynı anahtar kullanılırsa, belirli bir algoritma her zaman aynı düz metni aynı şifreli metne dönüştürür.
Bir saldırgan, şifreli metin verildiğinde düz metin veya anahtarın herhangi bir özelliğini belirleyemiyorsa, algoritmalar güvenli kabul edilir. Bir saldırgan, anahtarı kullanan çok sayıda düz metin/şifreli metin kombinasyonu verildiğinde bir anahtar hakkında hiçbir şey belirleyememelidir.
Simetrik ve asimetrik kriptografi arasındaki fark nedir?
Simetrik kriptografide hem şifreleme hem de şifre çözme için aynı anahtar kullanılır. Gönderici ve alıcı, her ikisinin de bildiği bir paylaşılan anahtara sahip olmalıdır.
Asimetrik kripto ile şifreleme ve şifre çözme için iki farklı anahtar kullanılır. Asimetrik bir şifreleme sisteminde her kullanıcının hem bir genel anahtarı hem de bir özel anahtarı vardır. Özel anahtar her zaman gizli tutulur, ancak açık anahtar serbestçe dağıtılabilir.
Genel bir anahtarla şifrelenen verilerin şifresi yalnızca ilgili özel anahtarla çözülebilir. Bu nedenle, birine mesaj göndermek, mesajı o kişinin açık anahtarıyla şifrelemeyi gerektirir. Yalnızca o kişinin özel anahtarı olduğu için, yalnızca o kişi mesajın şifresini çözebilir. Özel bir anahtarla şifrelenen herhangi bir verinin şifresi yalnızca ilgili ortak anahtarla çözülebilir. Benzer şekilde, diğer bir kişi kendi özel anahtarıyla bir mesajı dijital olarak imzalayabilir ve o diğer bir kişinin genel anahtarına sahip olan herhangi biri, imzalı mesajın şifresini çözebilir ve onu gerçekten o diğer bir kişinin gönderdiğini doğrulayabilir.
Simetrik genellikle çok hızlıdır ve büyük miktarda veriyi şifrelemek için idealdir (örneğin, tüm disk bölümü veya veritabanı). Asimetrik çok daha yavaştır ve yalnızca anahtar boyutundan daha küçük (genellikle 2048 bit veya daha küçük) veri parçalarını şifreleyebilir. Bu nedenle, asimetrik kripto genellikle daha büyük veri bloklarını şifrelemek için kullanılan simetrik şifreleme anahtarlarını şifrelemek için kullanılır. Dijital imzalar için, asimetrik kripto genellikle tüm mesajların yerine mesajların karmalarını şifrelemek için kullanılır.
Bir şifreleme sistemi, anahtarların oluşturulması, değiştirilmesi, depolanması, kullanılması, iptali ve değiştirilmesi dahil olmak üzere kriptografik anahtarların yönetilmesini sağlar.
Kriptografi hangi sorunları çözer?
Güvenli bir sistem, verilerin gizliliği, bütünlüğü ve kullanılabilirliğinin yanı sıra özgünlük ve inkar edilemezlik gibi çeşitli güvenceler sağlamalıdır. Doğru kullanıldığında kripto bu güvencelerin sağlanmasına yardımcı olur. Kriptografi, hem aktarım halindeki verilerin hem de beklemedeki verilerin gizliliğini ve bütünlüğünü sağlayabilir. Ayrıca gönderenlerin ve alıcıların kimliklerini birbirine doğrulayabilir ve reddedilmeye karşı koruma sağlayabilir.
Yazılım sistemleri genellikle birden çok uç noktaya, tipik olarak birden çok istemciye ve bir veya daha fazla arka uç sunucusuna sahiptir. Bu istemci/sunucu iletişimleri, güvenilemeyen ağlar üzerinden gerçekleşir. İletişim, İnternet gibi açık, genel ağlar veya harici saldırganlar veya içeriden kötü niyetli kişiler tarafından tehlikeye atılabilecek özel ağlar üzerinden gerçekleşir.
Güvenilmeyen ağlardan geçen iletişimleri koruyabilir. Bir saldırganın bir ağ üzerinde gerçekleştirmeye çalışabileceği iki ana saldırı türü vardır. Pasif saldırılar, bir saldırganın yalnızca bir ağ kesimini dinlemesini ve seyahat ederken hassas bilgileri okumaya çalışmasını içerir. Pasif saldırılar çevrim içi (saldırganın trafiği gerçek zamanlı olarak okuduğu) veya çevrim dışı (saldırganın trafiği gerçek zamanlı olarak yakaladığı ve daha sonra -belki de şifresini çözmek için biraz zaman harcadıktan sonra- görüntülediği) olabilir. Aktif saldırılar, bir saldırganın bir istemcinin veya sunucunun kimliğine bürünmesini, aktarım sırasında iletişimi engellemesini ve içerikleri hedeflenen hedefe iletmeden (veya tamamen bırakmadan) önce görüntülemesini ve/veya değiştirmesini içerir.
SSL/TLS gibi kriptografik protokoller tarafından sunulan gizlilik ve bütünlük korumaları, iletişimleri kötü niyetli gizli dinlemelere ve kurcalamaya karşı koruyabilir. Orijinallik korumaları, kullanıcıların sistemlerle gerçekten amaçlandığı gibi iletişim kurduğuna dair güvence sağlar. Örneğin, internet bankacılığı şifrenizi bankanıza mı yoksa başka birine mi gönderiyorsunuz?
Duran verileri korumak için de kullanılabilir. Çıkarılabilir diskteki veya veritabanındaki veriler, fiziksel ortamın kaybolması veya çalınması durumunda hassas verilerin ifşa edilmesini önlemek için şifrelenebilir. Ek olarak, kötü niyetli kurcalamayı tespit etmek için hareketsiz durumdaki verilerin bütünlüğünü korumasını da sağlayabilir.
İlkeler nelerdir?
Akılda tutulması gereken en önemli ilke, asla kendi şifreleme sisteminizi tasarlamaya çalışmamanız gerektiğidir. Dünyanın en parlak kriptografları (Phil Zimmerman ve Ron Rivest dahil) rutin olarak ciddi güvenlik açıkları olan kriptosistemler yaratırlar . Bir kriptosistemin “güvenli” olarak kabul edilebilmesi için güvenlik camiasından yoğun bir incelemeyle karşı karşıya kalması gerekir . Belirsizlik veya saldırganların sisteminiz hakkında bilgi sahibi olmayabileceği gerçeği nedeniyle asla güvenliğe güvenmeyin. Kötü niyetli kişilerin ve kararlı saldırganların sisteminize saldırmaya çalışacağını unutmayın.
Güvenli bir kriptosistem söz konusu olduğunda “gizli” olması gereken tek şey anahtarların kendisidir. Sistemlerinizin kullandığı tüm anahtarları korumak için uygun adımları attığınızdan emin olun. Şifreleme anahtarlarını asla korudukları verilerle birlikte düz metin olarak saklamayın. Bu, ön kapıyı kilitlemeye ve anahtarı paspasın altına koymaya benzer. Saldırganın ilk bakacağı yer burasıdır. Anahtarları korumak için yaygın olarak kullanılan üç yöntem (en az güvenliden en güvenliye doğru):
- Anahtarları bir dosya sisteminde saklayın ve bunları güçlü erişim kontrol listeleri (ACL’ler) ile koruyun. En az ayrıcalık ilkesine bağlı kalmayı unutmayın.
- Veri şifreleme anahtarlarınızı (DEK’ler) ikinci bir anahtar şifreleme anahtarı (KEK) ile şifreleyin. KEK, parola tabanlı şifreleme (PBE) kullanılarak oluşturulmalıdır. Minimum sayıda yönetici tarafından bilinen bir parola, bcrypt, scrypt veya PBKDF2 gibi bir algoritma kullanarak bir anahtar oluşturmak için kullanılabilir ve kriptosistemi önyüklemek için kullanılabilir. Bu, anahtarı herhangi bir yerde şifrelenmemiş olarak saklama ihtiyacını ortadan kaldırır.
- Bir donanım güvenlik modülü (HSM), anahtarları güvenli bir şekilde saklamak için kullanılabilen, kurcalamaya karşı dayanıklı bir donanım cihazıdır. Kod, gerektiğinde anahtarları sağlamak veya HSM’nin kendisinde verilerin şifresini çözmek için bir HSM’ye API çağrıları yapabilir.
Yalnızca sektördeki en iyi uygulamalara uyan algoritmaları, güçlü yönleri ve çalışma modlarını kullandığınızdan emin olun. Gelişmiş şifreleme standardı (AES) (128, 192 veya 256 bit anahtarlarla) simetrik şifreleme için standarttır. En az 2048 bit anahtarlı RSA ve eliptik eğri şifrelemesi (ECC), asimetrik şifreleme için standarttır. Elektronik Kod Defteri (ECB) modundaki AES veya dolgusuz RSA gibi güvenli olmayan çalışma modlarından kaçındığınızdan emin olun.