Daha Uzun Bir Blowfish Anahtarı 64 Bitlik Bloğu Neden Düzeltemez
Blowfish anahtarları 448 bite ulaşabilirken blok 64 bit kalır. Anlaşılan şifreleme türünü denetleyin ve daha uzun anahtar yerine desteklenen bir değiştirme planlayın.
Bir VPN profili 448 bitlik anahtarla Blowfish sunuyor ve biri şifrelemeyi korumak için en uzun anahtarın kullanılmasını öneriyor. Anahtar uzunluğu gerçektir, ancak optimize edilecek yanlış sayıdır. Blowfish, anahtar ne kadar uzun olursa olsun 64 bitlik blokları dönüştürür ve bir anahtarın güvenle ne kadar trafiği koruyabileceğini sınırlayan şey blok genişliğidir. Aşağıdaki denetimleri sırayla yürütün ve hizmeti temize çıkaran ilkinde durun, çünkü sonraki bir adım öncekini onaramaz.
Eşlerin gerçekte neyi anlaştığını denetleyin
Veri kanalı şifrelemesini dağıtmayı planladığınız profilden değil, her iki uçtan okuyun. Bir istemci yapılandırması birkaç şifreleme listeleyebilir ve seçilen, iki uygulama ile sürümleri arasındaki anlaşmanın sonucudur. Bir test bağlantısında günlük ayrıntı düzeyini artırın ve gerçekte başlatılan şifreleme ile anahtar boyutunu adlandıran veri kanalı satırını okuyun.
Anlaşılan şifreleme AES-GCM veya ChaCha20-Poly1305 ise burada durun. Bu yapılar 128 bitlik blok kullanır ve yükü kimlik doğrular, dolayısıyla aşağıdaki 64 bitlik çakışma argümanı onlara uygulanmaz.
Anahtar uzunluğunu blok genişliğinden ayırın
Blowfish 32 ila 448 bit arasındaki anahtarları kabul eder ve algoritmanın yazarının belgeleri her iki sayıyı ayrı ayrı belgeler. Anahtar sırdır; blok dönüşüm birimidir. Sırrı uzatmak tahmin etmeyi zorlaştırır ve şifrelemenin işlediği bloğun genişliğine hiçbir şey yapmaz.
CBC kipinde şifreleme sabit genişlikli bloklara uygulanır, önceki şifreli metin bloğuyla zincirlenir ve sonunda doldurulur. Blowfish için bu genişlik 64 bittir, yani sekiz bayt. Anahtar çizelgesi istediğiniz kadar büyük olabilir; zincir yine de seferde sekiz bayt ilerler.
Bu yüzden daha uzun anahtar bir hafifletme değildir. Anahtara karşı kaba kuvveti ele alır, oysa aşağıdaki çakışma riski blok genişliğinin ve kipin bir özelliğidir.
Doğum günü aritmetiğini blok boyutuna uygulayın
64 bitlik bir bloğun doğum günü ölçeği, çakışmalar olası hale gelmeden önce tek bir anahtar altında şifrelenen yaklaşık 2^32 bloktur. Her blok sekiz bayt taşır, bu yüzden aynı ölçek yaklaşık 2^35 bayt, yani tek bir anahtar altında 32 GiB veridir.
Bunu bir kota değil, bir ölçek olarak ele alın. Çakışmalar olasılıksaldır ve birinin bir şey sızdırıp sızdırmayacağı kipe, trafik düzenine ve saldırganın çevredeki açık metni tanıyıp tanıyamamasına veya etkileyip etkileyememesine bağlıdır. 32 GiB'den sonraki ilk bayt bir şifre çözme olayı değildir ve ilk 32 GiB güvenli olarak sertifikalandırılmamıştır.
Sweet32 araştırmacıları 2016'da 64 bitlik blok şifrelerine karşı, aralarında bir OpenVPN senaryosunun da bulunduğu pratik saldırılar gösterdi; bunlar gözlem ve trafik üretimi gerektiren koşullarda gerçekleşti. Yayımladıkları varsayılanlar ve yazılım sürümleri tarihsel bağlamdır, dağıtımınızın açıklaması değildir.
CBC'nin yeniden kullanımının burada önemli olup olmadığına karar verin
CBC'de yinelenen bir şifreli metin bloğu, zincirleme XOR'u kendini götürdüğü için iki açık metin bloğunun bilinen bir ilişkiyle farklılaştığı anlamına gelir. Şifreli metni gözlemleyebilen ve açık metinlerden birini bilen veya etkileyebilen bir saldırgan diğeri hakkında bilgi edinebilir. Blowfish anahtarı bunun için hiç gerekli değildir.
Dolayısıyla ilgili sorular, bir anahtarın ne kadar süre hizmette kaldığı, altından ne kadar trafik geçtiği ve birinin bu trafiği izleyip yönlendirip yönlendiremediğidir. Anahtar yenileme, anahtar başına blok sayısını düşürür, ancak bir zaman aralığı bayt sınırı değildir: yoğun bir tünel aynı saat içinde boş bir tünelden çok daha fazla veri taşıyabilir. Eski bir şifreleme tutuyorsanız sınırı yapıdan ve gerçek hacimden türetin, yuvarlak bir sayıdan değil.
Anahtar başına ölçülen hacim doğum günü ölçeğinin çok altında kalıyorsa maruz kalma daha küçüktür. Yine de sıfır değildir ve hâlâ endişelenmeyi bırakmak yerine bir geçiş planlamak için bir nedendir.
Anahtarı değil, şifrelemeyi değiştirin
Hizmeti desteklenen bir AEAD şifrelemesine taşıyın ve her iki eşin, sürümlerinin ve kriptografik arka uçlarının bunu anlaşabildiğini doğrulayın. Daha uzun bir Blowfish anahtarı önemli olan hiçbir şeyi değiştirmez ve tek bir istemcide yeni bir yönergeyi tahmin etmek, çalışan bir tünelin bozuk bir tünele dönüşme biçimidir. Değişikliği filonun geri kalanına dokunmadan önce bir istemcide ve bir sunucuda test edin. Yeni şifreleme tam bir bağlantı döngüsünü geçene kadar eski profili geri alma için kullanılabilir tutun.
Değişiklik sırasında sertifika doğrulamasını ve hesap kimlik doğrulamasını koruyun. Farklı soruları yanıtlarlar: başarılı bir oturum açma bir bloğu genişletemez ve daha iyi bir veri şifrelemesi yanlış sunucuya güvenmeyi mazur göstermez.
Denetimi yeni bir bağlantıda anlaşılan şifrelemeyi yeniden okuyup eski şifrelemenin artık kabul edilmediğini doğrulayarak kapatın. Bir eş hâlâ onu sunuyorsa, diğer taraftaki profil ne derse desin geçiş tamamlanmamıştır.