2016'nın ilk gününde Mozilla, Firefox web tarayıcısında SHA-1 adlı zayıflayan bir güvenlik teknolojisi desteğini sonlandırdı. Bazı eski web sitelerine erişimi keseceği için neredeyse anında kararlarını tersine çevirdiler. Ancak Şubat 2017'de korkuları nihayet gerçek oldu: araştırmacılar SHA-1'i oluşturarak ilk gerçek dünya çarpışma saldırısı . İşte tüm bunların anlamı.
SHA-1 nedir?
SHA-1'deki SHA, Güvenli Hash Algoritması ve basitçe söylemek gerekirse, bunu bir tür matematik problemi veya yöntemi olarak düşünebilirsiniz. içine yerleştirilen verileri karıştırır . Amerika Birleşik Devletleri NSA tarafından geliştirilen, internetteki önemli aktarımları şifrelemek için kullanılan birçok teknolojinin temel bileşenidir. Duymuş olabileceğiniz yaygın şifreleme yöntemleri SSL ve TLS, tarayıcınızın araç çubuğunda gördüğünüz imzalı sertifikaları oluşturmak için SHA-1 gibi bir karma işlev kullanabilir.
Herhangi bir SHA işlevinin matematik ve bilgisayar bilimine derinlemesine girmeyeceğiz, ancak işte temel fikir. Bir "karma" herhangi bir verinin girişine dayalı benzersiz bir kod . SHA-1 gibi bir karma işlevine girilen küçük, rastgele harf dizileri bile uzun, belirli sayıda karakter döndürür ve karakter dizisini orijinal verilere geri döndürmeyi (potansiyel olarak) imkansız hale getirir. Parola depolaması genellikle bu şekilde çalışır. Bir parola oluşturduğunuzda, parola girişiniz karma hale getirilir ve sunucu tarafından saklanır. İadeniz üzerine şifrenizi yazdığınızda tekrar karma hale getirilir. Orijinal hash ile eşleşirse, girişin aynı olduğu varsayılabilir ve verilerinize erişim hakkı elde edersiniz.
Karma işlevler öncelikle yararlıdır çünkü girişin, örneğin bir dosya veya parola değişip değişmediğini anlamayı kolaylaştırırlar. Girdi verileri bir parola gibi gizli olduğunda, hash'in orijinal verileri ("anahtar" olarak da bilinir) tersine çevirmesi ve kurtarması neredeyse imkansızdır. Bu, "şifrelemeden" biraz farklıdır, daha sonra karışıklığı çözmek amacıyla verileri karıştırmak olan , şifreleri ve gizli anahtarları kullanarak. Hash'ler, her şeyin aynı olduğundan emin olmak için basitçe veri bütünlüğünü sağlamak içindir. Açık kaynak kod için sürüm kontrol ve dağıtım yazılımı Git, tam da bu nedenle SHA-1 hash değerlerini kullanır .
Bu çok fazla teknik bilgi, ancak basitçe söylemek gerekirse: bir karma şifreleme ile aynı şey değildir, çünkü bir dosyanın değişip değişmediğini belirlemek için kullanılır .
Bu Teknoloji Beni Nasıl Etkiliyor?
Diyelim ki bir web sitesini özel olarak ziyaret etmeniz gerekiyor. Bankanız, e-postanız, hatta Facebook hesabınız - onlara gönderdiğiniz verileri gizli tutmak için şifreleme kullanır. Profesyonel bir web sitesi, güvenilir bir yetkiliden - şifrelemenin düzeyde, web sitesi ile kullanıcı arasında gizli olduğundan ve başka herhangi bir tarafça casusluk yapılmadığından emin olmak için güvenilen üçüncü bir şahıstan bir sertifika alarak şifreleme sağlayacaktır. Üçüncü şahısla olan bu ilişki, Sertifika Yetkilileri veya O , çok önemlidir, çünkü herhangi bir kullanıcı "kendinden imzalı" bir sertifika oluşturabilir. Opensl ile Linux çalıştıran bir makinede kendiniz yapın . Örneğin Symantec ve Digicert, yaygın olarak bilinen iki CA şirketidir.
Teorik bir senaryoyu inceleyelim: Nasıl Yapılır Geek, kullanıcıların oturumlarını şifrelemeyle gizli tutmak istiyor, bu nedenle Symantec gibi bir CA'ya bir Sertifika İmzalama İsteği veya CSR . Yaratırlar Genel anahtar ve Özel anahtar İnternet üzerinden gönderilen verileri şifrelemek ve şifresini çözmek için. CSR talebi, web sitesi hakkındaki bilgilerle birlikte genel anahtarı Symantec'e gönderir. Verilerdeki herhangi bir küçük değişiklik karmayı kökten farklı kıldığından, Symantec verilerin tüm taraflarca değiştirilmediğini doğrulamak için anahtarı kaydıyla karşılaştırır.
Bu genel anahtarlar ve dijital sertifikalar, karma işlevler tarafından imzalanır, çünkü bu işlevlerin çıktılarını görmek kolaydır. Bir yetkili olan Symantec'ten (örneğimizde) doğrulanmış bir hash içeren bir genel anahtar ve sertifika, How-To Geek kullanıcısına anahtarın değiştirilmediğini ve kötü niyetli birinden gönderilmediğini garanti eder.
Karmanın izlenmesi kolay ve tersine çevrilmesi imkansız olduğundan (bazıları "zor" der), doğru, doğrulanmış karma imzası, sertifika ve bağlantıya güvenilebileceği ve verilerin uçtan uca şifrelenmiş olarak gönderilmesine karar verilebileceği anlamına gelir . Ama ya karma aslında benzersiz değildi ?
Çarpışma Saldırısı Nedir ve Gerçek Dünyada Mümkün mü?
Duymuş olabilirsiniz Matematikte "Doğum Günü Problemi" ama ne dendiğini bilmiyor olabilirsiniz. Temel fikir, yeterince büyük bir grup insan toplarsanız, iki veya daha fazla kişinin aynı doğum gününe sahip olma ihtimalinin oldukça yüksek olmasıdır. Aslında beklediğinizden daha yüksek - yeterince garip bir tesadüf gibi görünüyor. 23 kişi kadar küçük bir grupta, ikisinin bir doğum gününü paylaşma şansı% 50'dir.
Bu, SHA-1 de dahil olmak üzere tüm karmalara özgü zayıflıktır. Teorik olarak, SHA işlevi, içine yerleştirilen herhangi bir veri için benzersiz bir karma oluşturmalıdır, ancak karma sayısı arttıkça, farklı veri çiftlerinin aynı karmayı oluşturması daha olası hale gelir. Böylece, güvenilir bir sertifika ile aynı hash değerine sahip güvenilmeyen bir sertifika oluşturulabilir. Güvenilmeyen sertifikayı yüklemenizi isterlerse, güvenilirmiş gibi görünebilir ve kötü amaçlı verileri dağıtabilir.
İki dosya içinde eşleşen hashleri bulmaya a çarpışma saldırısı . MD5 karmaları için en az bir büyük ölçekli çarpışma saldırısının zaten gerçekleştiği bilinmektedir. Ancak 27 Şubat 2017'de Google, SHAttered SHA-1 için ilk hazırlanmış çarpışma. Google, farklı içeriğe sahip olmasına rağmen başka bir PDF dosyasıyla aynı SHA-1 karma değerine sahip bir PDF dosyası oluşturabildi.
SHAttered bir PDF dosyası üzerinde gerçekleştirildi. PDF'ler nispeten gevşek bir dosya formatıdır; okuyucuların açmasını engellemeden veya gözle görülür farklılıklara neden olmadan çok sayıda küçük, bit düzeyinde değişiklik yapılabilir. PDF'ler ayrıca genellikle kötü amaçlı yazılım dağıtmak için kullanılır. SHAttered, ISO'lar gibi diğer dosya türleri üzerinde çalışabilirken, sertifikalar katı bir şekilde belirtilir ve bu tür bir saldırı olasılığını ortadan kaldırır.
Peki bu saldırıyı gerçekleştirmek ne kadar kolay? SHAttered, bir yöntem 2012 yılında Marc Stevens tarafından keşfedilen ve 2 ^ 60,3 (9,223 kentilyon) SHA-1 işlemi gerektiren şaşırtıcı bir sayı. Bununla birlikte, bu yöntem yine de kaba kuvvetle aynı sonucu elde etmek için gerekenden 100.000 kat daha az işlemdir. Google, paralel olarak çalışan 110 üst düzey grafik kartıyla bir çarpışma oluşturmanın yaklaşık bir yıl alacağını buldu. Bu işlem süresini Amazon AWS'den kiralamak yaklaşık 110.000 dolara mal olur. Bilgisayar parçalarının fiyatları düştükçe ve daha az fiyata daha fazla güç elde edebildiğiniz için SHAttered gibi saldırıların daha kolay gerçekleştirilebileceğini unutmayın.
110.000 $ çok gibi görünebilir, ancak bazı kuruluşlar için uygun fiyatta olabilir - bu, gerçek hayattaki sibervillilerin dijital belge imzalarını taklit edebileceği, Git ve SVN gibi yedekleme ve sürüm kontrol sistemlerine müdahale edebileceği veya kötü niyetli bir Linux ISO'sunun meşru görünmesini sağlayabileceği anlamına gelir.
Neyse ki, bu tür saldırıları engelleyen hafifletici faktörler var. SHA-1 artık dijital imzalar için nadiren kullanılmaktadır. Sertifika Yetkilileri artık SHA-1 ile imzalanmış sertifikalar sağlamamaktadır ve hem Chrome hem de Firefox bu sertifikalara yönelik desteği bırakmıştır. Linux dağıtımları genellikle yılda bir defadan daha sık yayınlanır, bu da bir saldırganın kötü amaçlı bir sürüm oluşturmasını ve ardından aynı SHA-1 karma değerine sahip bir yastıklı oluşturmasını pratik değildir.
Öte yandan, SHAttered'a dayalı bazı saldırılar zaten gerçek dünyada oluyor. SVN sürüm kontrol sistemi, dosyaları ayırt etmek için SHA-1 kullanır. Aynı SHA-1 hash değerlerine sahip iki PDF'yi bir SVN havuzuna yüklemek, yozlaştırmak .
Kendimi SHA-1 Saldırılarından Nasıl Koruyabilirim?
Tipik bir kullanıcının yapabileceği pek bir şey yok. Dosyaları karşılaştırmak için sağlama toplamları kullanıyorsanız, SHA-1 veya MD5 yerine SHA-2 (SHA-256) veya SHA-3 kullanmalısınız. Benzer şekilde, bir geliştiriciyseniz, SHA-2, SHA-3 veya bcrypt gibi daha modern karma algoritmaları kullandığınızdan emin olun. SHAttered'ın iki farklı dosyaya aynı hash değerini vermek için kullanıldığından endişeleniyorsanız, Google, SHAttered site sizin için kontrol edebilir.
Resim Kredisi: Lego Firefox , Çok Sayıda Karma , Lütfen Web yazarı bilinmiyor, Google .