AES-256-GCM ve 600.000 PBKDF2 Turu, Açıklamalı
Bir fotoğraf kasasının özellik listesindeki sayıların gerçekte ne anlama geldiği ve kapsamadıkları şeylerin dürüst bir anlatımı.
AES-256-GCM, 256 bitlik anahtarla, GCM adı verilen bir şekilde kullanılan AES şifreleme yöntemidir. GCM kısmı dikkate değer: verileri karıştırmanın yanında kontrol de eder, böylece kurcalanmış bir dosya sessizce yanlış dönmek yerine açılmaz. 600.000 turda PBKDF2, şifrenizi bilerek yavaş bir şekilde anahtara dönüştürür; böylece bir saldırganın her tahmini 600.000 turluk işe mal olur. Bu sayı bizim değil, OWASP'ın herkese açık bir önerisidir.
Bunların hiçbiri, kasa açıkken ele geçirilmiş bir telefonu veya başka birinin bildiği bir şifreyi korumaz. Ayrıntılar ve sınırlar aşağıda.
Fotoğraf kasası özellik listeleri sayılarla doludur: AES-256, GCM, 600.000 tur, PBKDF2. Konuyu kapatıyormuş gibi yazılırlar ve çoğu okuyucu haklı olarak onları atlar. On dakikanızı ayırmaya değerler. Her birinin ne yaptığını bilmek, somut bir iddiayı kulağa etkileyici gelen bir iddiadan ayırmanızı sağlar. Bu sayfa her terimi sade bir dille açıklıyor. Ardından 8. bölümde şifrelemenin neye karşı korumadığını anlatıyor. Kararları değiştiren kısım bu ikincisidir.
1. Kısa sürüm
| Terim | Ne yapar |
|---|---|
| AES | Şifreleme yöntemi. Verileri bir anahtarla karıştırmak için yayımlanmış bir standart. |
| 256 | Bit cinsinden anahtar boyutu. Her anahtarı denemenin pratik olmayacağı kadar büyük. |
| GCM | AES'i kurcalamayı da kontrol edecek şekilde kullanmanın bir yolu. Değiştirilmiş veriler sessizce kabul edilmek yerine yakalanır. |
| Nonce | Her şifrelemede bir kez kullanılan bir sayı. Aynı anahtarla asla tekrarlanmamalıdır. |
| PBKDF2 | Bir şifreyi bilerek yavaş bir şekilde anahtara dönüştüren işlem. |
| 600.000 tur | İşlemin ne kadar yavaş olduğu. Bir saldırganın her tahmini 600.000 turluk işe mal olur. |
| Tuz (salt) | Karıştırılan rastgele veriler; böylece saldırganlar yanıtları önceden hazırlayıp kullanıcılar arasında yeniden kullanamaz. |
2. AES-256 nedir
AES, Advanced Encryption Standard (Gelişmiş Şifreleme Standardı) anlamına gelir. Birkaç yıl süren herkese açık bir yarışmanın ardından 2001'de ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından yayımlanan bir şifreleme yöntemidir. Gizli değildir ve kimseye ait değildir. Tasarımı herkese açıktır. Üniversitelerden ve sektörden uzmanlar onu yirmi yılı aşkın süredir inceliyor ve yöntemin tamamını kırmanın pratik bir yolunu bulamadılar.
256, bit cinsinden anahtar boyutudur. Bu boyuttaki her olası anahtarı denemek, 2 üzeri 256 olasılığı taramak demektir. Bu, daha hızlı bilgisayarları beklemekle ilgili bir mesele değildir. Sıradan bilgisayarların ulaşabileceği her şeyin çok ötesindedir. Bu yüzden pratikte sorun neredeyse hiçbir zaman yöntemin kendisinden çıkmaz.
“AES-256 kullanıyoruz” ifadesinin göründüğünden daha az şey söylemesinin nedeni de tam olarak budur. Bu, neredeyse asgari şarttır. İlginç sorular şunlardır: neyin şifrelendiği, nasıl kullanıldığı ve anahtarın nasıl üretildiği.
3. GCM ne ekler
Şifreleme tek başına verileri gizli tutar: anahtar olmadan okunamaz. Tek başına verilerin bozulmamış olduğunu vaat etmez. Açtığınız şeyin içeri konan şey olduğunu söyleyemez.
Bu boşluk gerçektir. Kontrol yapmayan bir yöntemle, saklanan dosyayı değiştirebilen biri karıştırılmış verileri değiştirebilir. Onu açmak hiçbir hata vermeden farklı, yanlış veriler üretir. Size bir veri döner; yalnızca içeri konan veri değildir ve hiçbir şey bunu size söylemez.
GCM bu kontrolü ekler. Karıştırılmış verilerin yanında bir kontrol değeri üretir ve bu değer veriler her açıldığında doğrulanır. Kendi güvenlik belgemizden:
“Diskte değiştirilmiş tek bir bayt, şifre çözmenin belli belirsiz yanlış bir düz metin döndürmek yerine açıkça başarısız olmasına yol açar. ‘Şifresi çözüldü’ ifadesini ‘şifrelendiğinden beri değiştirilmedi’ ile eşdeğer kılan budur.”
Bir özellik listesinde aranacak en faydalı şey budur, çünkü kesinliğin kendini gösterdiği yer burasıdır. “AES-256” bir yöntemin adını verir. “AES-256-GCM” ise bir yöntemin ve onu kullanma şeklinin adını verir; kurcalama kontrolünün var olup olmadığı da tam burada belli olur.
4. Nonce'lar ve klasik hata
GCM sistemindeki her şifreleme bir nonce kullanır; bu, bir kez kullanılan sayı demektir. Gizli olması gerekmez. Belirli bir anahtar için benzersiz olması gerekir.
Aynı anahtarla bir nonce'u tekrarlarsanız GCM'nin koruması ciddi şekilde çöker. Bu nadir bir uç durum değildir. GCM kullanan gerçek sistemlerin kırılmasının en yaygın yoludur ve AES'teki bir zayıflıktan değil, sistemlerin kurulmasında yapılan kestirmelerden kaynaklanır.
Asla tekrarlanmamasını sağlamanın iki sağlam yolu vardır. Biri, her şifreleme için yeni bir rastgele sayıdır. Obscura Photo Vault tek dosyalar için bunu yapar: her seferinde 128 bitlik bir kontrol değeriyle birlikte yeni bir 96 bitlik rastgele sayı. Diğeri, tekrarlanmadığı kanıtlanabilen bir sayaçtır. Büyük videolar için kullandığımız biçim bunu kullanır. Dosya başına seçilen rastgele bir sayıyı parça numarasıyla birleştirir, böylece hiçbir dosyadaki iki parça aynı nonce'u paylaşmaz.
Bu yaklaşımların hiçbiri diğerinden daha doğru değildir. Önemli olan, uygulamanın birini bilerek seçmiş olmasıdır. Bu, yayımlanmış bir tasarım belgesinin gösterdiği, bir özellik listesinin ise gösteremediği türden bir şeydir.
5. Zayıf halka şifrenizdir
256 bitlik bir anahtar 256 bit rastgelelik içerir. Şifreniz içermez. İyi bir parola cümlesi bile belki 60 ila 80 bit içerir, tipik bir şifre ise çok daha azını. Şifre doğrudan anahtar olarak kullanılsaydı devasa anahtar boyutunun bir önemi kalmazdı. Saldırgan anahtarları değil, şifreleri tahmin ederdi.
Şifre ile anahtar arasındaki köprü, şifreyi anahtara dönüştüren işlemdir. PBKDF2, şifreyi ve bir tuzu alır ve bir anahtar üretmek için onları belirli sayıda, tekrar tekrar bir karıştırma işlevinden geçirir. Tekrarlamanın amacı maliyettir. Siz anahtarı her kilit açışta bir kez üretirsiniz ve bunun aldığı bir saniyeyi neredeyse fark etmezsiniz. Milyonlarca tahmini deneyen bir saldırgan ise bu maliyeti her birinde öder.
Bakmanız gereken sayı budur ve en sık atlanan da odur. Bir uygulama, şifrenizi tek adımda anahtara dönüştürürken AES-256 kullandığını doğru bir şekilde söyleyebilir. Bu da onu, tam olarak bu işlemin önlemek için var olduğu çevrimdışı tahmin saldırısına açık bırakır.
6. Neden 600.000
Bu sayı rastgele değildir ve bize ait değildir. OWASP Password Storage Cheat Sheet, bu konuda en yaygın kullanılan herkese açık kaynaktır. HMAC-SHA-256 ile PBKDF2'yi 600.000 veya daha fazla turla önerir. Obscura Photo Vault'un kasa şifreleri için kullandığı sayı budur.
Bununla birlikte söylenmesi gereken iki dürüst uyarı var.
Hareketli bir hedeftir. Önerilen tur sayıları donanım hızlandıkça artar. Güncel sayı, bugünün grafik işlemcilerine karşı yapılan testlerden gelir. Birkaç yıl önce yeterli olan bir sayı bugün yeterli değildir ve bugünkü de sonsuza dek yeterli olmayacaktır. Yayımlanmış bir tur sayısını, tarihi olan bir iddia olarak görün.
Şifrenizi çarpar, yerine geçmez. Turlar her tahmini çok daha maliyetli kılar. Gereken tahmin sayısını değiştirmezler. Küçük bir seçenek kümesinden seçilmiş bir şifre 600.000 turdan sonra da zayıftır, çünkü saldırganın yalnızca o küçük kümeyi taraması gerekir. Bu işlem, şifrenizin tahmin edilmesinin zaten ne kadar zor olduğuyla orantılı olarak zaman kazandırır.
Bu yüzden herhangi bir şifreli kasa için pratik öneri sıkıcı ama doğrudur: birbiriyle ilgisiz kelimelerden oluşan uzun bir parola cümlesi kullanın ve onu güvenli bir yere yazın. Anahtarın gerçekten şifrenizden üretildiği bir uygulamada, o yazılı kopya var olan tek kopyadır. Bu, kasa şifrenizi unutursanız ne olacağı üzerine rehberimizin konusudur.
7. Tuzlar
Tuz (salt), şifre anahtara dönüşmeden önce onunla karıştırılan rastgele verilerdir. Şifrelenmiş verilerin yanında saklanır. Gizli değildir ve gizli olması da gerekmez.
Görevi, saldırganların önceden hazırlık yapmasını engellemektir. Tuzlar olmasaydı bir saldırgan yaygın şifrelerden oluşan bir listenin anahtarlarını bir kez hesaplayıp bu listeyi bir uygulamanın tüm kullanıcılarına karşı yeniden kullanabilirdi. Kasa başına benzersiz bir rastgele tuzla bu işin her hedef için sıfırdan yeniden yapılması gerekir. Böylece tek bir hazırlık tüm kullanıcılara karşı kullanılamaz.
Obscura Photo Vault, kasa dosyasının kendi başlığında saklanan, kasa başına 32 baytlık rastgele bir tuz kullanır.
8. Bunların hiçbirinin korumadıkları
Yukarıdaki her şey durağan verilerle ilgilidir: kullanılmayan, depolama alanında duran dosyalar. Bu gerçek ve faydalı bir korumadır. Aynı zamanda dardır. Güvenlik belgemizin 11. bölümü bunun dışında kalanları sıralıyor. Sade bir dille:
- Kasa açıkken ele geçirilmiş bir telefon. Size bir fotoğrafı göstermek için uygulamanın onun şifresini çözmesi gerekir. Yani anahtar ve okunabilir fotoğraf bellektedir. O anda uygulamanın içinde çalışan her şey ikisine de ulaşabilir. Hiçbir uygulama düzeyi şifreleme ele geçirilmiş bir telefonu düzeltemez.
- Şifrenizi bilen herkes. Şifreleme, sahibini, onu yazarken izleyen veya şifre kendisine söylenen birinden ayırt edemez.
- Ekran görüntüleri, ekran kaydı ve omuz üstünden bakma. Ekrandakinin şifresi zaten çözülmüştür. Bu, şifrelemenin kapsamı dışındadır.
- Başka yerlerde oluşturduğunuz kopyalar. Film rulonuzda hâlâ duran orijinal, bir mesajla gönderdiğiniz sürüm, siz taşımadan önce alınmış bulut yedeği. Bir kopyayı şifrelemek diğerlerine hiçbir şey yapmaz.
- Uygulamanın var olduğu gerçeği. Şifreleme içeriği gizler. Gizlenecek bir şey olduğunu gizlemez.
Bunların hepsini, aksi halde yapı taşlarının ne kadar iyi olduğunu anlatan bir sayfada söylememizin nedeni şu: gerçek bir başarısızlıkta yanlış giden şey neredeyse hiçbir zaman şifreleme yöntemi değildir. Genellikle yukarıdaki beş şeyden biridir.
9. “Askeri düzey” üzerine
Bu ifadenin teknik bir anlamı yoktur. Genellikle, herkesin kullanabileceği ve orduya ayrılmış olmayan, herkese açık bir standart olan AES'i ima eder. Her büyük işletim sistemi, tarayıcı ve mesajlaşma uygulaması onu kullanır.
Sorun, ifadenin yanlış olması değildir. Hiçbir şey vaat etmemesidir. Hiçbir yöntemin, kullanım şeklinin, anahtar boyutunun veya bir şifreyi anahtara dönüştürme işleminin adını vermez. Bu yüzden her dosyayı şifreleyen bir uygulama da, yalnızca ayarlarını şifreleyen bir uygulama da onu doğru bir şekilde kullanabilir.
Bu, ifadenin kendisine dair bir şikâyet değildir. Bir sayfa onu kullanıp yine de size bir şey söyleyebilir. Bir iddiayı kontrol etmeye çalışan biri için onu faydalı kılan, ardından gelenlerdir: yöntem, mod, anahtar işlemi, tur sayısı ve neyin kapsandığı. Bu ifadede kalan bir sayfa hiçbir şey vaat etmemiştir. Bunların adını vermeye devam eden bir sayfa ise neyle başlarsa başlasın kontrol edilebilir.
10. Sık sorulan sorular
AES-256-GCM ne anlama gelir?
AES, yayımlanmış bir şifreleme yöntemidir. AES-256, 256 bitlik anahtarlı sürümüdür. GCM ise yöntemi, verilerin kurcalanmadığını da kontrol edecek şekilde kullanmanın bir yoludur. Günlük hayatta en çok önemli olan kısım bu kontroldür. Değiştirilmiş bir dosya, sessizce yanlış veri olarak açılmak yerine açılmaz.
AES-256 ile AES-256-GCM arasındaki fark nedir?
İkincisi yalnızca yöntemin adını değil, nasıl kullanıldığını da verir. GCM bir kurcalama kontrolü ekler; böylece değiştirilmiş veriler sessizce yanlış dönmek yerine açılırken yakalanır.
Fotoğraf kasası uygulamaları neden 600.000 PBKDF2 turu kullanır?
Bir şifre kısadır ve tahmin edilebilir. Bir şifreleme anahtarı öyle değildir. Bu yüzden şifrenin, bilerek yavaş tutulan bir işlemle anahtara dönüştürülmesi gerekir. Her tur, bir saldırganın yaptığı her tahmine iş ekler. 600.000 tur, OWASP Password Storage Cheat Sheet'in bu yöntem, yani HMAC-SHA-256 ile PBKDF2 için önerdiği sayıdır.
AES-256 şifreleme güvenli mi?
AES-256 herkese açık bir standarttır. Uzmanlar onu yirmi yılı aşkın süredir inceliyor ve yöntemin tamamını kırmanın pratik bir yolunu bulamadılar. Gerçek uygulamalarda zayıf nokta nadiren yöntemin kendisidir. Nasıl kullanıldığındaki bir hata, tahmin edilebilir bir şifre veya telefona kilidi açıkken erişen biri çok daha olası sorunlardır.
AES-256, AES-128'den daha mı iyi?
Daha büyük anahtar daha geniş bir güvenlik payı bırakır. İkisi de bugünkü yöntemler ve donanımla her anahtarı tek tek denemeye karşı güvenli kabul edilir. Pratikte bu ikisi arasındaki seçimin bir uygulamanın dayanıp dayanmayacağını belirlemesi pek olası değildir.
“Askeri düzeyde şifreleme” ne anlama gelir?
Teknik bir anlamı yoktur. Genellikle, herkesin kullanabileceği ve orduya ayrılmış olmayan, herkese açık bir standart olan AES'i ima eder. İfade hiçbir yöntem, mod veya anahtar boyutu belirtmediği için her şeyi şifreleyen bir uygulama da, neredeyse hiçbir şeyi şifrelemeyen bir uygulama da onu kullanabilir.
Kuantum bilgisayarlar AES-256'yı kırabilir mi?
Bilinen kuantum kısayolu olan Grover algoritması, bu tür bir anahtarın gücünü kabaca yarıya indirir. 256 bitlik bir anahtar için bu yine de çok büyük bir güvenlik payı bırakır. 256 bitlik anahtarların uzun vadede mantıklı bir seçim olarak görülmesinin bir nedeni budur. İnternet üzerinden anahtar değiş tokuşu için kullanılan şifreleme türünün kuantum sorunu AES'inkinden çok daha büyüktür.
600.000 tur kilidin açılmasını yavaşlatır mı?
Modern bir iPhone'da her kilit açışta bir kez, yaklaşık bir saniye sürer. Bu dengesizlik işin özüdür: bir kez yapıldığında neredeyse fark edilmez, milyonlarca kez yapıldığında ise felç edicidir.
Daha fazla tur, daha zayıf bir şifre kullanabileceğim anlamına mı gelir?
Hayır. Bu, en yaygın yanlış anlamadır. Daha fazla tur her tahminin maliyetini artırır. Zayıf bir şifre için gereken tahmin sayısını azaltmaz. Kısa bir şifre zayıf kalır.
Kaynaklar
- OWASP Password Storage Cheat Sheet, PBKDF2 iş faktörleri üzerine
- NIST FIPS 197, Gelişmiş Şifreleme Standardı (Advanced Encryption Standard)
- Obscura Photo Vault güvenlik belgesi, temel yapı taşları ve anahtar hiyerarşisi üzerine 2. ile 4. bölümler
- Güvenlik belgesi, 11. bölüm, tehdit modelinin dışında kalanlar üzerine
Obscura Photo Vault
iPhone için şifrelenmiş bir fotoğraf kasası. Fotoğraflar ve videolar cihazınızda AES-256-GCM ile şifrelenir. Hesap, sunucu ve analiz yoktur, uygulama ağ bağlantısı gerektirmez. Şifrenizi unutursanız biz dahil hiç kimse içeriği kurtaramaz.
App Store'da görüntüle →