Şifreleme ile karma? Hash değeri nedir, karma şifreleme nedir, karma şifre çözme nedir

Karma ve Şifreleme

Karma ve şifreleme aynı şey olduğuna dair yaygın bir yanlış anlama vardır. Öyle değiller. Hash geri döndürülemez. Örnek olarak aşağıdaki örneği ele alalım:

$ echo-n Password123 | md5sum
42f749ade7f9e195bf475f37a44cafcb-

"Password123" dizesini MD5 algoritmasına (algo) geçiriyoruz, matematiksel işlemleri gerçekleştirir ve üretilen onaltılık kodlu hash döndürür. Aynı karma çıktı değerini elde etmenin tek yolu, algo'yu orijinal olarak girmektir. Çatışmalar var ama bunu daha sonra konuşabiliriz.

Çoğu karma algoritmasının çıktısı, onaltılıkta kodlanmış, sabit uzunlukta bir ikili dizedir. Diğerleri, bu örnek gibi, çıktı olarak base64 kodlu dizeler kullanır. Uzunluğun her zaman aynı olduğunu unutmayın:

{SHA} uNF8eZRJ8jmr8WTjyocRJPVpe7w =
{SHA} lqdu/Zr6o2dgIER8Up1/7lcUtgw =
{SHA} qYUOwLMlDEuukA5HCT4LR1kQzco =
{SHA} MXZBCpyWJ7TTs1w2kgGJslwNwTg =
{SHA} 2sAPLaUh9Mz0bI + XxKEg7qyABe8=

TL; Dr.

Şifreleme tersinir, karma değil


Şifreleme hakkında fazla konuşmak istemiyorum (çünkü o şeyler kitaplar içindir), ancak karma dizeleri ve şifreli dizeleri ayırt edebilmek önemlidir. Şifreleme genellikle şifreleme gerçekleşmeden önce belirli bir uzunluğu karşılayan bir dizeyi doldurur. Ayrıca şifreyi çözmek için bir anahtar (veya şifre) gerektirir. Şifreli bir şifre kullanıyorsanız, string girilen uzunluğa bağlı olarak değişir. Uzunlukları değişen bir dizi şifreli metin şifresi görürseniz, karma yerine şifreleme ile uğraşıyor olabilirsiniz. AES-256-CBC Örnek Şifreli dize ve ilişkili düz metin (anahtar "ASDF"):

 foobar                           |   U2FsdGVkX19G + KtytNHdj6yH2AVvX26pEmtunS/PRnU = 
foobarfoobar               |   U2FsdGVkX18sPpIvN6nVh68lOUCcb3gR2fKbCCnBxog = 
foobarfoobarfoobar   |   U2FsdGVkX1/EOnUt57TCW4Rh0EdNnWX + ldatuqv2xexeaeoww0xg/EXJUe9aSUz 

$   kedi   şifrelendi_şifreler 
U2FsdGVkX19G + KtytNHdj6yH2AVvX26pEmtunS/PRnU = 
U2FsdGVkX18sPpIvN6nVh68lOUCcb3gR2fKbCCnBxog = 
U2FsdGVkX1/EOnUt57TCW4Rh0EdNnWX + lDatuQv2xEXXeAeowW0XG/EXJUe9aSUz 

$     i   için   `cat   encrypted_passwords`;   do   echo   $i   |   openssl   enc   -base64   -d   -aes-256-cbc   -pass   pass:asdf;   yankı;   bitti 
foobar 
foobarfoobar 
foobarfoobarfoobar 

Şimdi şunu düşünebilirsiniz: Haklı olabilirsiniz. Bununla birlikte, kritik materyallerin sistem tarafından erişilebilir olması, aslında bir yerde bulunan düz metinli bir ana şifre anlamına gelir-ister bir RSA anahtarı, ister bir şifre veya dosyada, bir veritabanına gömülü, bir uygulamada sabit kodlu veya bir yerde bir şifre olsun. bellek. pfft, kimse ' kullanıcılarının ' şifrelerini

<80x şifrelemek için anahtar olarak asdf kullanmayacak 80> MD5 ile aynı dizeyi kullanın:

 foobar                           |   3858f62230ac3c915f300c664312c63f 
foobarfoobar               |   59faa421729e846dd800dce59943bfc0 
foobarfoobarfoobar   |   1352aadab322d1a033c27964be0965db 

Hash şifre mükemmel olmaktan çok uzak, aslında biraz kötü ama şifrelemeden daha kötü çünkü başarmaya çalışıyor. Kullanıcılar mutlak minimum gereksinimi not’dan daha sık seçer ve birden fazla sitede de kullanabilirler. Birçok "hack" aslında kimlik bilgilerini yeniden kullanma saldırılarından başka bir şey değildir. İlk uzlaşma şifreleme kullanmaksa, saldırganın yapması gereken tek çaba tüm şifreleri çözmek için anahtarı bulmaktır. Hashler için, en azından onları kırmak için çaba sarf etmeleri gerekir. sha512crypt, bcrypt, scrypt veya argon2 gibi modern algoritmalarla kullanıldığında, hash değerlerinin kırılması büyük bir çaba gerektirebilir.



Turşu

Tuz eklemek, hash öncesi şifreye bir dize eklemektir. Her karma için tuz benzersiz olmalı ve genellikle rastgele seçilmelidir, çünkü odak noktası aynı düz metin "şifre" karma değerinin her seferinde farklı bir değere sahip olmasıdır. Bu, şifre kırıcılarının hayatını zorlaştırır, çünkü 1000 kullanıcının her kullanıcısının "şifre" kelimesini kontrol etmek için her kullanıcının benzersiz bir SALT'ı vardır ve bunu 1000 kez yapmak zorundadırlar-kullanıcı/tuz başına bir kez. Bu aynı zamanda önceden derlenmiş sözlükleri veya gökkuşağı tablolarını (genellikle...) verimli bir şekilde kullanamayacakları anlamına gelir, çünkü özel bir tuz başına ihtiyaç duyarlar.

Web siteleri bazen bunu berbat ediyor ve tüm kullanıcılar için evrensel tuz kullanıyor; Bu amaca aykırı.

İşte tuzlu SHA1 karma değeri:


 b353977827f67a4ae0318f3a9447fae1c13d9d90:b8d18ca 
|___________________________________________| 
                                    hash                                     |     tuz 
                                        | 
                                                                        ayırıcı 

Bu karmanın düz metni "şifre" dir. Tuz değeri "b8d18ca" dir ve API'de SHA1 ($salt.$pass) kullanılır. Bu, algoritmanın şifrenin düz metnini aldığı, tuz oluşturduğu ve düz metnin önüne eklediği anlamına gelir. Bir web sitesi veya uygulama gelecekte şifrenizi doğrulamaya çalıştığında, açık metin şifrenizi girdi olarak alır, saklanan Hash içindeki tuz değerini okur, seçtiğiniz şifrenin önüne ekler ve oluşturulan Hash değerini saklanan Hash değeriyle karşılaştırır. Kırık Bir kısmının tuz olduğunu bilmiyorsanız, karma aşağıdaki düz metni üretecektir:

b8d18capassword

Algoritma düz metin girişini yaptığından, tuz ve üretilen karma değeri kullanıcıya şeffaf kalabilir. Çatlama sırasında, eğer algoritma tuzluysa, tuzları bilmemiz gerekir, böylece aday düz metin oluştururken onu sağlayabiliriz. Doğru uygulandığında, tuzlama çatlamayı daha zaman alıcı hale getirir. Rastgele tuzlar kullanarak, Cracker’i tuzla eşleşmeyen karma değerlerini kırmaya çalışarak zaman kaybetmeye zorlarsınız. Bu, kabaca device_speed/number_of_salts için gereken çabayı tamamlar, çünkü her tuz için bir aday oluşturmamız gerekir. Tuz statik ise matematiksel işlemler aynıdır... speed_of_device/1. Bu görüntülemenin başka bir yolu:

 bizim   GTX   980   cracks   SHA1 ($salt.$pass)   at   3576.8   MH/s   veya   3.5   milyar   adaylar   per   saniye 
  hashlistemiz     1000   benzersiz   tuzları içerir 

3.500.000.000   /   1000   =   3.500.000   adaylar     saniye başına 

Bu üç büyüklük düzeni daha yavaş ve %99,9 kayıp. Statik tuz kullanıldığında şu şekilde görünür:

 bizim   GTX   980   cracks   SHA1 ($salt.$pass)   at   3576.8   MH/s   veya   3.5   milyar   aday   per   saniye 
  hashlistemiz   içerir   1   benzersiz   tuz 
               
3.500.000.000   /   1   =   3.500.000.000   adaylar     saniye başına 

Bu mantıklı değilse okumaya devam edin, daha sonra güzel bir grafiğe sahip olacağız...


iterasyon

Basitçe "bu düz metni karıştırın" ile karşılaştırıldığında bir diğer yaygın iyileştirme, "bu düz metni karıştırın, sonra o sonucu karıştırın, sonra o sonucu karıştırın" binlerce kez tekrarlanır. Bu, şifre kırma programının binlerce kez yapması gereken tek bir aday şifreyi denemesini sağlar. Buna yineleme, döngü veya değişken maliyet denir. Bazı şifre karıştırma algoritmaları sert kodlu yineleme turları kullanır; Diğer Git. Hash'in kendisinin bir parçasında yapılandırılabilir hale getirin. Örneğin, md5crypt (), tuz dahil MD5'i kullanır ve tam olarak 1000 kez döngü yapar. sha512crypt (), sha512'yi kullanır, bir tuz içerir ve yapılandırılabilir sayıda döngü yapar (varsayılan olarak 5.000).

Yinelemeler öncelikle karma algoritmasının bellek kullanımı veya diğer faktörlerden ziyade hesaplama döngüsü maliyetini etkiler. Bunlar da belirli karma türlerine karşı direnç göstermek için optimize edilmiş tasarımlarda önemli saldırılardır, ancak bu burada tartışılamayacak kadar yabancıdır.


Hash türünün kırılma hızı üzerindeki etkisi

Hash algoritması seçiminin etkisini göstermek için bazı örneklere bakalım, ister tuzlu olsun, ister birden fazla yinelemeyi kullanın vb. Diyelim ki bir saldırgan, enfekte bir web sitesinden gelen 1.000 kullanıcının karma değerlerini topladı ve sadece basit bir saldırı yapmak istiyorlar ve her bir şifre karma değerini test ediyorlar-143 milyon aday şifre.

Enfekte web sitesi tarafından kullanılan karma türü, saldırının saldırısından geçmesi gereken süre üzerinde büyük bir etkiye sahip olacaktır. İşte (göreceli, kabaca) bir grafik, kullanılan karma türüne bağlı olarak saldırıyı tamamlamanın kaç saniye sürdüğü, burada standart grafik kartları:

Peki, bu işe yaramaz! En güçlü karma türleri çok daha yavaştır, ancak daha hızlı türler hiçbir şeye kadar ezilir. Aynı veri ölçeğini logaritmik X ekseni zamanı kullanarak tekrar deneyelim. Çubuklar soldan sağa doğru hareket ettiğinde, 10'un gücünü arttırırlar:

Bu nedenle bazı önemli noktalar şunlardır: Bazı şifre karışımlarını kırmak istediğinizde, tek tur birden fazla turdan ve tuzsuz tuzdan daha kolaydır. Aksine, bazı şirketler veya web siteleri kullanıcı verilerini içeren bir veri ihlali ilan ettiğinde, a) şifrenin sadece düz metin değil, karma yapılmış olması en iyisidir; b) Sadece hash değil, tuzlu olmaları en iyisidir; c) Sadece tek bir turdan ziyade her zaman güçlü çok turlu tuzlu hash kullanmaları daha iyidir.



Hash türlerini tanımlayın

Belirli bir şifre karmasını kırmaya çalışmadan önce, bunu uygulamak için hangi karma algoritmasının kullanıldığını bulmak kırıcıya kalmıştır. Karma türlerini tanımlamak genellikle basittir, ancak her zaman böyle değildir. Krakerler genellikle karma uzunluğu ve biçimi gibi ipuçlarına dayanarak bilinçli tahminler yapar. Sonuçta, karma türü tahminlerinin doğru olup olmadığından emin olmanın tek yolu, karmanın kırılıp kırılmadığıdır.

Bu görev için bazı mükemmel kaynaklar burada ve burada mevcuttur ve her ikisi de yaygın karma değerlerinin neye benzediğini gösterir.

Bilinmeyen karma türlerini tanımlamaya yardımcı olan "hash-identifier" paketi Kali Linux'ta mevcuttur (burada mevcuttur).



Çarpışma

Çarpışma, iki farklı giriş aynı hash çıkışına neden olduğunda meydana gelir. Bu çok kötü (belli ki). Şifreler için, bu, gerçek şifrenizi kırmamış olabileceğim anlamına gelebilir, ancak aynı karma değerini üreten bir giriş bulduğum için, sistemi şifrenin meşru olduğunu düşünmek için düz metin değerlerini kullanabilirim.

Microsoft Office, belge korumasında yıllardır çakışmaya eğilimli bir algoritma kullanıyor. Tek bir karma için birden fazla çakışma bulmak nadir değildir ve bunların hepsi belgenin kilidini açar.

Bir çakışma tespit edildiğinde, algoritma aslında bozulur. Bir kez olursa, istatistiksel olarak tekrar olma ihtimali yüksektir. Bizi durduran tek şey zaman ve işleme gücü. Algoritmalar daha sağlam hale geldikçe, aday algoritmalar oluşturmak ve bunları aramak için karma çıktılarını karşılaştırmak daha fazla yetenek ve zaman gerektirir. Sonuç olarak, tasarımcılar çatışmaya daha az eğilimli algoritmalar oluşturmada giderek daha iyi hale geliyorlar.


Bir önceki:Hashcat şifre kırma donanım
Sonraki:Haşcat nedir? Parola kırmada ilk adım [Temellere Giriş]
  • Word/Excel/Pdf/PPT/RAR/zip/7z在线密码破解
  • offfice、PDF、压缩文件、WPS、在线密码恢复
  • hashcatonline.com在线密码破解版权所有2010-2025