MD5 karmalarının şifresini çözmek mümkün müdür?


260

Birisi bana yazılım sistemlerini gördüğünü söyledi:

  1. diğer sistemlerden MD5 şifreli parolaları alma;
  2. şifrelenmiş şifrelerin şifresini çözmek ve
  3. şifreleri, sistemin kendi algoritmasını kullanarak sistemin veritabanında saklar.

Mümkün mü? MD5 karmalarının şifresini çözmenin mümkün / mümkün olmadığını düşündüm.

MD5 sözlükleri olduğunu biliyorum, ama gerçek bir şifre çözme algoritması var mı?


7
MD5'i geri döndürmek birden fazla parola verir.
Carles Company

231
MD5 bir özet algoritmasıdır. Bir ineği bifteğe dönüştürmek olarak düşünün. Şimdi bunu tersine çevirmeye çalışın.
Mekanik salyangoz

5
@ Anladığım kadarıyla, evet, ama sadece onlardan bir sürü varsa. Ve bunu yapsanız bile, tersine dönemezsiniz, çünkü algoritma kasıtlı olarak bilgileri kaybeder.
Ürdün

8
mechanicalsnail bu analoji göz önüne alındığında, biftek üzerindeki DNA'dan mükemmel bir klon yapılabilir. :))
Trimikha Valentius

8
@TrimikhaValentius MD5 bir sindirim algoritmasıdır. Bunu yemek biftek> sindirim> çıktı olarak düşünün. Şimdi bunu tersine çevirmeye çalışın.
user4157124

Yanıtlar:


424

Hayır. MD5 şifreleme değildir (bazı şifreleme algoritmalarının bir parçası olarak kullanılabilmesine rağmen), tek yönlü karma işlevidir . Orijinal verilerin çoğu, dönüşümün bir parçası olarak "kaybolur".

Bir düşünün: Bir MD5 her zaman 128 bit uzunluğundadır. Bu, 2 128 olası MD5 karması olduğu anlamına gelir . Bu oldukça büyük bir sayıdır ve yine de kesinlikle sonludur. Yine de, belirli bir sağlama işlevine sonsuz sayıda olası girdi vardır (ve bunların çoğu 128 bitten fazla veya 16 bayttan fazla) içerir. Dolayısıyla, veri için aynı değere sahip olacak sonsuz sayıda olasılık vardır. Karmaları ilginç kılan şey, aynı değere sahip iki veri parçasını bulmanın inanılmaz derecede zor olması ve kazayla gerçekleşme şansının neredeyse 0 olmasıdır.

(Çok güvensiz) bir karma işlevi için basit bir örnek (ve bu, bunun tek yönlü olduğu genel fikrini gösterir), bir veri parçasının tüm bitlerini almak ve çok sayıda ele almak olacaktır. Ardından, büyük (muhtemelen asal) bir sayı n kullanarak tamsayı bölünmesi gerçekleştirin ve kalanını alın (bkz: Modül ). 0 ile n arasında bir sayı kalacaksınız . Aynı hesaplamayı kullanarak aynı hesaplamayı tekrar (herhangi bir zamanda, herhangi bir bilgisayarda, herhangi bir yerde) gerçekleştirirseniz, aynı değerle gelir. Ve yine de, orijinal değerin ne olduğunu bulmanın bir yolu yoktur, çünkü n'ye bölündüğünde tam olarak geri kalan sonsuz sayıda sayı vardır .

Bununla birlikte, MD5'in bazı zayıf matematiklere sahip olduğu, bazı karmaşık matematiklerde, 2 128 olası giriş dizesini denemeden bir çarpışma bulmak mümkün olabileceği söylenmiştir . Çoğu parolanın kısa olması ve insanların sıklıkla ortak değerler ("şifre" veya "gizli" gibi) kullanması, bazı durumlarda, karma için Google'ı kullanarak veya bir Gökkuşağı kullanarak birinin şifresini makul bir şekilde tahmin edebileceğiniz anlamına gelir. tablo . Karma parolaları her zaman " tuzlu " tutmanızın bir nedeni budur , böylece karma olduğunda iki özdeş değer aynı değere karma yapmaz.

Bir parça veri karma işlevinden geçirildikten sonra geri dönüş yoktur.


22
ancak MD5 karma alanında ilk başta düşünülenden daha fazla çarpışma vardır. Artık şifreler için en iyi karma olarak optimal olarak kabul edilmiyor.
Cheeso

12
Çoğu parola MD5 karma değerinden daha kısa olduğundan, her karma için genellikle yalnızca bir parola vardır. (Ve orijinali olmasa bile birini bulmak hesaba erişmek için yeterlidir.) Tek yönlü işlev olmanın amacı , birden fazla farklı ön görüntü olmadığıdır, bu yüzden hangisinin orijinal olduğunu bilmiyoruz. , ancak bir orijinal değer bile bulmak gerçekten zor .
Paŭlo Ebermann

2
@Nick: Aslında, RFC1321 açıkça şöyle diyor: "Algoritma girdi olarak keyfi uzunluk mesajı alır"
Adam Batkin

6
@Olathe - Kabul ettiğimden emin değilim. Bir karma verildiğinde , orijinal girdiyi (% 100 kesin olarak) belirlemek genellikle imkansızdır. Mümkün olan her (karma) çıktıyı üreten (genellikle) sonsuz sayıda girdi vardır. Dediğim genellikle size ASCII karakter dizesi arıyoruz ki (örneğin) biliyorum ve bu 12 byte, diyelim ki, daha az olursa, çünkü, belirli bir çıktı üretir tek giriş olduğu muhtemeldir. Ama her zaman çarpışmalar olacak (sonsuz) ve dışsal bir kısıtlamanız yoksa (
örneğimde

2
@Adam Batkin, haklısın, ama% 100 kesinlik demek istemiyorum. Şifre kırma% 100 kesinlik ile yapılamaz. Gönderen, diğer İngilizce düz metinlerin şifresini çözen aynı anahtarı kullanarak İngilizce düz metin yerine rastgele anlamsız olabilir, ancak İngilizce olasılığı% 100'e çok yakındır. Benzer şekilde, uzun bir UTF-8 Japon şiir şifresi ve anlamsız dizeler arasında seçim yaparken, şiirin olasılığı% 100'e yakındır. Bu, önceden belirlenmiş kısıtlamalardan ziyade gerçek sonrası olasılıklar kullanılarak yapılabilir. Açıkçası genel olarak yapılamaz, ancak yine de oldukça faydalıdır.
Olathe

154

Teorik olarak yapamazsınız. Bir karmağın asıl amacı, bunun sadece bir yoludur. Bu, birisi karma listesini almayı başarırsa, yine de şifrenizi alamadığı anlamına gelir. Buna ek olarak, bir kullanıcı aynı şifreyi birden fazla sitede kullansa bile (evet, hepimiz bilmememiz gerektiğini biliyoruz, ancak ...) A sitesi veritabanına erişimi olan herkesin kullanıcı şifresini kullanamayacağı anlamına gelir site B.

MD5'in bir karma olması, aynı zamanda bilgi kaybettiği anlamına gelir. Herhangi bir MD5 karması için, rasgele uzunluktaki parolalara izin verirseniz, aynı karmayı üreten birden fazla parola olabilir. İyi bir karma için oldukça önemsiz maksimum uzunluğu ötesinde onları bulmak için hesaplanması mümkün olacaktır, ancak hiçbir var demektir garanti hedef karma sahip bir şifre bulursanız, kesinlikle orijinal şifre olduğunu. Bu var astronomik olası aynı MD5 hash sahip iki ASCII sadece makul uzunlukta şifreler göreceğini ama imkânsız değil.

MD5, şifreler için kötü bir karmadır:

  • Hızlıdır, yani bir "hedef" karmanız varsa, birçok şifreyi denemek ve bu hedefe hash bulabileceğiniz bir şifre bulup bulamayacağınızı görmek ucuzdur. Tuzlama bu senaryoda yardımcı olmaz , ancak farklı tuzlar kullanarak birden çok karmadan herhangi biriyle eşleşen bir şifre bulmaya çalışmak daha pahalı hale getirmeye yardımcı olur .
  • Yazdırılabilir metin içinde (rastgele ikili veriler yerine) çarpışma bulmak en azından daha zor olsa da, çarpışmaları bulmayı kolaylaştıran kusurları bildiğine inanıyorum.

Ben bir güvenlik uzmanı değilim, bu yüzden "Kendi kimlik doğrulama sisteminizi devirmeyin" in ötesinde somut bir öneri sunmayacağım. Saygın bir tedarikçiden bir tane bulun ve bunu kullanın. Hem güvenlik sistemlerinin tasarımı hem de uygulanması zor bir iştir.


2
Evet, başka yöntemler de var, ancak Jon'un yukarıda söylediklerini anlamanız gerekiyor - 'şifrelerini e-postayla göndermemelisiniz - bu hassas kalabilen hassas bilgiler.' - en düşük seviyede, e-postalar ele geçirilebilir ve hassas bilgiler alınabilir. Parola, genellikle yalnızca veritabanında bir karma olarak tutarak mümkün olduğunca güvenli kalmalıdır.
Daniel Mayıs

3
Ayrıca, parola tersine çevrilebiliyorsa, bu, veritabanınıza erişen herkesin kullanıcıların parolalarına erişebileceği anlamına gelir. İyi bir fikir değil . Tek yönlü şifreler norm olmalıdır; Kesinlikle eğer tek gerçek şifreyi (hatta şifreli) tutmak zorunda (tabanlı belirteç şey yok başka bir sisteme ile kimlik doğrulaması gibi) üretim.
Jon Skeet

1
Alıcının web sunucusunun yalnızca gönderenin posta sunucusunun yeniden denemesini beklemek için gelen bir postayı reddettiği antispam önlemleri gördüm (spambotlar genellikle sadece bir kez deneyin). Bu, 10 dakikalık zaman aşımı sürenizi kolayca aşabilir.
Sisve

1
@ravisoni: Bu , muhtemelen kaba kuvvet veya arama tabloları yoluyla aynı karmaya sahip bir değer bulmaktır . Orijinal düz metin değeri olduğuna dair bir garanti yoktur.
Jon Skeet

5
@ravisoni: Burada "doğru" ile ne demek istiyorsun? Parola bilinmiyorsa, ortaya çıkan parolanın orijinal olup olmadığını bilemezsiniz. Ancak mesele şu ki, MD5 gibi hashlerin tek yönlü tanımı gereği bilgi kaybetmesidir. Bu gibi siteler ile gelebilir gerçeği bir eşleştirme parolası MD5 güvenlik nedeniyle kullanmak kötü bir algoritma olmanın sadece iyi kanıtıdır.
Jon Skeet

52

Teknik olarak, bu 'mümkün' olmakla birlikte, çok katı koşullar altında ( gökkuşağı tabloları , bir kullanıcının şifresinin bu karma veritabanında yer alması olasılığı çok azdır).

Ama bu demek değil

  • Yaşayabilir
    veya
  • Güvenli

Bir MD5 karmasını 'tersine çevirmek' istemezsiniz . Aşağıda özetlenen yöntemleri kullanarak, asla ihtiyacınız olmayacak. 'Reversing' MD5 aslında kötü niyetli olarak kabul edilir - birkaç web sitesi MD5 karmalarını 'kırma' ve kırma yeteneği sunar - ancak bunların hepsi sözlük sözcükleri, daha önce gönderilen şifreler ve diğer kelimeleri içeren büyük veritabanlarıdır. Bir Orada çok küçük bir şans bu size ters ihtiyaç MD5 hash sahip olacağı. Eğer ettik eğer tuzlu MD5 hash - Bu da işe yaramayacağını! :)


MD5 karma işlemiyle oturum açmanın çalışması gerekir :

Kayıt sırasında:
Kullanıcı parola oluşturur -> Parola MD5 kullanılarak karma yapılır -> Veritabanında depolanan karma

Giriş Sırasında:
Kullanıcı kullanıcı adı ve şifre girer -> (Kullanıcı adı kontrol edilir) Şifre MD5 kullanılarak karma yapılır -> Karma veritabanında kayıtlı karma ile karşılaştırılır

'Kayıp Parola' gerektiğinde:

2 seçenek:

  • Kullanıcı giriş yapmak için rastgele bir şifre gönderdi, ardından ilk girişte değiştirdiği iddia edildi.

veya

  • Kullanıcıya parolasını değiştirmesi için bir bağlantı gönderilir (bir güvenlik sorunuz / vb. Varsa ekstra denetimle) ve ardından yeni parola karmalanır ve veritabanında eski parola ile değiştirilir

1
Birkaç nitpick'im var. Gökkuşağı masaları kaba zorlama değildir. Aslında birkaç karakterin kaba kuvvet (çok basit) şifreleri yapan programlar ve siteler vardır (genellikle birkaç saat veya gün içinde döngü yaparlar ve bir karma doldurabilir ve döngüde geleceğini umabilirsiniz). Ve ne yazık ki, birçok şifrenin kalitesizliği göz önüne alındığında, birisinin ortaya çıkma şansı "çok küçük bir şans" değildir.
Maarten Bodewes

32

Dolaylı. Güvercin deliği prensibi nedeniyle, herhangi bir MD5 çıkışına hash olan (muhtemelen) birden fazla değer vardır. Bu nedenle, onu kesinlikle tersine çeviremezsiniz. Dahası, MD5, tersine çevrilmiş herhangi bir hash bulmayı zorlaştırmak için yapılır (ancak çarpışma üreten saldırılar olmuştur - yani, aynı sonuca hash veren iki değer üretir, ancak sonuçta ortaya çıkan MD5 değerinin ne olacağını kontrol edemezsiniz. ) olabilir.

Bununla birlikte, arama alanını, örneğin N altında uzunluğa sahip ortak parolalarla kısıtlarsanız, artık geri döndürülemezlik özelliğine sahip olmayabilirsiniz (çünkü MD5 çıkışlarının sayısı, ilgi alanındaki etki alanı dizelerinden çok daha fazladır). Ardından , ters karelere gökkuşağı tablosu veya benzeri bir şey kullanabilirsiniz .


1
Ben aynı çıktı hashes başka bir değer bulma "çarpışma" denir eklemek istiyorum. Bu, MD5 karma sistemlerini kırmanın en yaygın yöntemidir.
Nicole

5
@Renesis, daha önce bilinen bir değere hash veren verileri bulmak "preimage" olarak adlandırılır ve aslında bir çarpışmadan çok, çok daha zordur. MD5'e yönelik hiçbir ön saldırı henüz gösterilmemiştir, ancak çarpışma saldırıları kullanılmıştır.
bdonlan

Karma işlevlerinin noktası (parola depolamak için kullanıldığında), aynı karma veren çok sayıda olası parola olmadığı anlamına gelir (vardır, ancak çoğu karmaın kendisinden daha uzundur), ancak bulmak zor bunlardan biri (sisteme erişmek için yeterli olacaktır). Ve evet, gökkuşağı tabloları nedeniyle tuzsuz karma kullanmıyorsunuz. Ve küçük şifre alanı nedeniyle, hızlı yerine (bcrypt veya scrypt gibi) yavaş bir karma kullanacaksınız (MD5 / SHA - * / .... gibi)
Paŭlo Ebermann

1
Teknik olması için MD5'i kesin olarak gerçekleştiremezsiniz, çünkü donanım arızalı olabilir. Aynı şekilde, parolanın passwordaynı karmayı üreten ancak hepsi oldukça rasgele görünen diğer tüm sonsuz girişlerden ziyade emin olamayabilirsiniz , ancak yeterince yakın olabilirsiniz.
Olathe

Güvercin deliği prensibi elbette geçerlidir, ancak belirli bir değere hash olan ikinci bir giriş, örneğin normal bir şifre üzerinden bir hash bulmak hala hesapsal olarak mümkün değildir . Belirli bir H (X) değerine sahip bir X bulursanız, X'in doğru giriş olduğundan emin olabilirsiniz. Bu, yanıtın ilk bölümünün tamamını ve geri kalanının çoğunu yanlış yapar.
Maarten Bodewes

13

Mümkün değil, en azından makul bir sürede.

Bunun genellikle ele alınma şekli bir şifre "sıfırlama" dır. Yani, onlara yeni (rastgele) bir şifre verir ve bunları bir e-posta ile gönderirsiniz.


5
Karma tuzlanmış olmasaydı, ne kadar sıklıkla karma değer için bir google araması olduğunu şaşıracaksınız ...
Michael Borgwardt

1
Bir şifre geri alma sistemi için gerçekten pratik değil, hatta tuzsuz bir :)
Matthew Groves

12

Bir md5 şifresini geri alamazsınız (herhangi bir dilde)

Ama sen yapabilirsin:

kullanıcıya yeni bir tane verin.

belki eski olanı almak için bazı gökkuşağı tablosunu kontrol edin.


1
Nix gökkuşağı tablo fikri. Tuzluyorsanız - ve olmalısınız - o zaman işe yaramaz.
Steven Sudit

1
Onlar hala karma şifrelerine MD5 kullanılarak yerine güçlü bir parola karmasını kullanıyorsanız @StevenSudit, o zaman olamaz varsayalım bir tuz kullanıyoruz. Belki yaparlar, muhtemelen yapmazlar.
Maarten Bodewes

10

Hayır, MD5 sözlükleri hakkında kafası karışmış olmalı.

Şifreleme karmaları (MD5, vb.) Bir yoldur ve orijinal mesajla ilgili bilmediğiniz başka bilgiler vb . Olmadığı sürece orijinal mesajı sadece özetle geri alamazsınız.


8

Şifre çözme (düz metni doğrudan karma değerinden algoritmik bir şekilde alma), hayır.

Bununla birlikte, gökkuşağı tablosu olarak bilinenleri kullanan yöntemler vardır . Şifrelerinizin tuzsuz olarak karıştırılması oldukça mümkündür.


7

MD5 bir karma algoritmasıdır, karma değerini geri alamazsınız.

Kullanıcının başka bir şifre verdiği, karma değerini hesapladığı ve yeni bir şifre olarak sakladığı "şifre değiştir özelliğini" eklemelisiniz.


7

Bunu yapmanın kolay bir yolu yok. Bu, ilk etapta parolayı karmaşanın bir noktasıdır. :)

Yapmanız gereken bir şey , onlar için manuel olarak geçici bir parola ayarlamak ve bunu göndermek.

Bunu belirtmekte tereddüt ediyorum çünkü kötü bir fikir (ve yine de çalışacağı garanti edilmez), ancak eski şifreyi bu şekilde kurtarabileceğinizi görmek için milw0rm gibi bir gökkuşağı tablosunda karma aramayı deneyebilirsiniz .


6

Nasıl ve neden geri çevrilemez ve neden istememekle ilgili diğer tüm cevapları burada görebilirsiniz.

Tamlık da uygun bulunmaktadır gökkuşağı tabloları üzerinde olası eşleşmeleri bakabilirsiniz. Gökkuşağı tablosundaki cevabın, kullanıcı tarafından seçilen orijinal şifre olacağının garantisi yoktur, böylece onları büyük ölçüde karıştırır.

Ayrıca, bu tuzlanmış karma için işe yaramaz. Tuzlama birçok güvenlik uzmanı tarafından önerilir.


Yanlış . Bir eşleşme bulunursa, orijinal şifre olacağı kesindir. Eğer durum böyle değilse, X'in düşman tarafından önceden belirlenmiş bir yapıya sahip olmayan bir mesaj olduğu herhangi bir H (X) verilen çarpışmalar oluşturmak mümkün olacaktır. MD5 gibi kırık bir karma işlevi olsa bile, kriptografik olarak güvenli bir karma işlevi için böyle bir çarpışma bulmak hesaplamaya uygun değildir.
Maarten Bodewes

@MaartenBodewes: "Bir eşleşme bulunursa, orijinal şifre olacağından emin olabilirsiniz." Sınırsız sayıda parola varsayarsak, durumun nasıl olduğunu göremiyorum. Ben derim son derece muhtemeldir orijinal şifre olması, ancak vermez var olmak. MD5 karma değerlerinden daha fazla olası parola olması , aynı karma değere sahip iki parolanın mümkün olabileceği anlamına gelir . O için hesaplanması mümkün sırf bulmak gibi çarpışmaları onlar yoktur anlamına gelmez. Yoksa seni yanlış mı anladım?
Jon Skeet

@JonSkeet Eğer bilerek bir çarpışma bulmak hesapsal olarak mümkün değilse, o zaman tesadüfen bir tane bulmak aynı derecede kötü veya kötüdür. MD5'in sınırlı çıktı alanı ve doğum günü problemi nedeniyle bir çarpışma bulma şansı 2 ^ 64'te yaklaşık 1'dir (yani çıktı alanının yaklaşık yarısı) - ve bu da yaklaşık 2 ^ 64 hash ile eşleştikten sonra. Ve bu, mesajın muhtemelen küçük olması ve şifre olarak kabul edilmesi için belirli bir biçime sahip olması gerektiğini düşünmez. Çoğu parola 2 ^ 64 bitin oldukça altında bir entropiye sahiptir.
Maarten Bodewes

1
@MaartenBodewes: Ama "astronomik olarak mümkün değil" ve "imkansız" arasında büyük bir fark var. Doğru parola olduğundan emin olduğunuza dair açıklamanız aşırı güçlüdür, IMO. Bu, mevcut olmayan bir matematiksel kesinlik anlamına gelir.
Jon Skeet

Ayrıca tek seferde 2 ^ 128 bit AES anahtarını tahmin edebilirsiniz. "Sadece" son derece düşüktür. Kriptografi bu tür olasılıklara dayanır. Tüm pratik amaçlar için, bir giriş mesajı / şifre bulursanız, aradığınız kişi bu olacaktır. Kadar teorik olarak mümkün Başka bir giriş mesajı bulmak için güzel, ama bu soru için StackOverflow'daki bunu dikkate almak gerek yoktur. Ve gökkuşağı tabloları sadece olası parolalarla doldurulur. Bir çarpışma şansı bile olacak kadar yeterli veri içermeyeceklerdir (bilmeden haritanın üzerine yazacak veya ünlü olacaklar).
Maarten Bodewes

4

Bir karma işlevini, bunun ters işlevini bulma açısından "geri döndürmenin" bir yolu yoktur. Daha önce de belirtildiği gibi, bu bir hash fonksiyonuna sahip olmanın bütün noktasıdır. Tersinir olmamalı ve hızlı karma değer hesaplamasına izin vermelidir. Bu nedenle, belirli bir karma değeri veren bir giriş dizesi bulmanın tek yolu tüm olası kombinasyonları denemektir. Buna kaba kuvvet saldırısı denir.

Tüm olası kombinasyonları denemek çok zaman alır ve bu, parolaların nispeten güvenli bir şekilde saklanması için karma değerlerinin kullanılmasının nedenidir. Bir saldırgan veritabanınıza tüm kullanıcı parolalarını kullanarak erişebiliyorsa, her durumda kaybedersiniz. Karma değerleriniz ve (ideal olarak konuşursanız) güçlü parolalarınız varsa, parolaları saldırganın karma değerlerinden çıkarmak çok daha zor olacaktır.

Karma değerlerini saklamak da performans sorunu değildir çünkü karma değerini hesaplamak nispeten hızlıdır. Çoğu sistemin yaptığı, kullanıcının girdiği (hızlı olan) parolanın hash değerini hesaplamak ve daha sonra kullanıcı veritabanındaki saklanan hash değeriyle karşılaştırmaktır.


Çoğu parola yeterince güvenli olmadığı ve bir rakibin bir sözlük saldırısı gerçekleştirmesine izin verdiği için , hash işlevinin hızının çok fazla bir sorun olması dışında, bu cevapta çok yanlış bir şey yoktur . Bu nedenle, hızlı kriptografik olarak güvenli sağlama işlevleri yerine yavaş parola sağlama işlevleri kullanılır.
Maarten Bodewes

3

MD5, orijinal içeriği karmadan geri alabileceğiniz için değil, aynı zamanda karma ile iki karma ileti oluşturabileceğiniz için kırık kabul edilir.

MD5 karma değerini kaldıramazsınız.


3
Tasarım gereği, tüm aynı uzunlukta karmalar çarpışmalardan muzdariptir. Değişken uzunluktaki verileri kısıtlarken kaçınılmazdır. MD5, çarpışma gerçeği için değil, çarpışma oranı nedeniyle kullanılmaz olarak kabul edilir.
Jonathan Lonowski

MD5, çarpışan girdilerin inşa edilmesinin kanıtlanmış olasılığı nedeniyle kırılmış olarak kabul edilir.
Ned Batchelder

3

Orijinal iletiyi almak için sözlük kullanan çevrimiçi araçlar bulabilirsiniz.

Bazı durumlarda, sözlük yöntemi işe yaramaz olabilir:

  • mesaj bir SALT mesajı kullanılarak özetlenirse
  • mesaj birden fazla karma ise

Örneğin, burada bir MD5 decrypter çevrimiçi aracı var.


Bir tuz kullanılırsa gökkuşağı tabloları - sözlük saldırıları değil - işe yaramaz. Bir kereden fazla - tuzsuz - karma yapmak hala gökkuşağı tablolarına izin verir, ancak önceden çevrimiçi olanı bulmak kesinlikle daha az olasıdır.
Maarten Bodewes

2

İşe yarayabilecek tek şey (eğer şifreleri tekrar tekrar saldırıları önlemek için herhangi bir tuz eklemeden, sadece tuz olduğunu bilmeliyiz, eğer tuzu bilmeniz gerekiyorsa) bu arada, bir sözlük saldırı aracı alın , birçok kelime, sayı vb dosyaları sonra iki satır oluşturun, bir satır kelime, sayı (sözlükte), diğeri kelimenin hash ve eğer karşılaşırsanız maçlar karmaları karşılaştırın ...

kriptanalize girmeden tek yol budur.


2

Evet, tam olarak istediğin şey mümkün. Bir MD5 şifresinin yardım olmadan 'şifresini çözmek' mümkün değildir, ancak bir MD5 şifresini tek bir seferde değil, başka bir algoritmaya yeniden şifrelemek mümkündür.

Yaptığınız şey, kullanıcılarınızın eski MD5 şifresini kullanarak yeni sisteminizde oturum açabilmelerini sağlamaktır. Giriş yaptıkları noktada, giriş programınıza sahip olduğunuz MD5 karmasıyla eşleştiğini kanıtladığınız şifrenin unhashed bir sürümünü verdiler . Bu şifrelenmemiş şifreyi daha sonra yeni karma algoritmanıza dönüştürebilirsiniz.

Açıkçası, bu genişletilmiş bir süreçtir, çünkü kullanıcılarınızın parolaların ne olduğunu söylemesini beklemeniz gerekir, ancak işe yarar.

(Not: yedi yıl sonra, umarım birisi faydalı bulur)


Cevap için teşekkürler. Ancak ben seni "1 yukarı" yapacağım :) Bunu gerçekten yaptım hatırlamıyorum, ama teorik olarak çalışması gerekir. Parolalarını yeniden şifreleyebilmemiz için her kullanıcının oturum açmasını beklemek yerine, parolalarının karma sürümünü şifreleyebilirsiniz. Böylece her şifre MD5 karma ve şifreli olacaktır. Sadece aynısını yapmak için şifre kontrolünü güncelledik ve kullanıcı verisi, kullanıcı müdahalesi gerektirmeden güvenli olmalıdır.
John Bubriski

Yukarıdaki yorumuma bir uyarı daha. Şifreleme konusunda uzman değilim, bu yüzden bunun başka güvenlik etkileri olup olmadığından emin değilim. Örneğin, şifrelemeden önce zayıf bir şekilde karma olan zayıf parolaların şifrelenmesi, şifrelemenin güvenliğini tehlikeye atabilir (belki başka bir tuz da kullanabilir mi?). Ayrıca, bu MD5 karma parolalarıyla yedeklemeleriniz olabilir. Bu tür bir yükseltme yaparken mevcut tüm şifrelerin tamamen geçersiz kılınması daha iyidir.
John Bubriski

Kriptograflar çifte şifreleme konusunda endişeleniyorlar, ancak bence sadece bir sorun olduğu önemsiz vakalar buldular. Ancak bu durumda yararlı olduğunu düşünmüyorum, çünkü MD5 hala (çok uzun değil, metin) şifreler için güvenlidir. Yine de, önceki geliştirici tuz eklemeyi unutursa, çift karma işlemi yararlı olabilir, aksi takdirde, şifrelerin herkese açıklanması gerektiğini söylemek zorunda kalmayacağınız bir durum düşünemiyorum. Umarım yedekleriniz kaybolmaz ve yine de şifrelenir.
user3710044

1

Hayır, yapılamaz. Bir sözlük kullanabilir veya aradığınız karmayı elde edene kadar farklı değerler ayırmayı deneyebilirsiniz. Ancak "şifresi çözülemez".


md5 orijinal metne ters çeviren bu web sitesini gördüm: md5.gromweb.com . O zaman nasıl mümkün olabilir?
samach

2
@ samach321 - Kolay: karma dizeleri DB var. Ne olursa olsun onların "bir dizeyi MD5 karma dönüştürmek" kutusuna DB eklenir. Başka bir kaynaktan MD5 karmasını almayı deneyin ve bunu girin. DB'lerinde olan bir şey olmadığı sürece sonuç alamazsınız.
Vilx-

1

MD5'in zayıf yönleri vardır ( Wikipedia'ya bakın ), bu nedenle Hashes'i önceden hesaplamaya çalışan bazı projeler var. Wikipedia da bu projelerin bazılarını ima ediyor. Bildiğim (ve saygı duyduğum) biri ophrack. Kullanıcıya kendi şifresini söyleyemezsiniz, ancak onlara çalışan bir şifre söyleyebilirsiniz. Ama düşünüyorum: Sadece onlar unuttum durumunda thrm yeni bir şifre posta.


MD5'in kırılmış olması (işlevin spesifik ancak önemli kullanımları için) gökkuşağı tablolarıyla kesinlikle bir ilgisi yoktur (bu, karmaların ön hesaplamasından bahsederken ima ettiğiniz şeydir).
Maarten Bodewes

1

MD5 Karma algoritması tersine çevrilemez, bu nedenle MD5 kod çözme mümkün değildir, ancak bazı web sitelerinde toplu şifre eşleme seti vardır, bu nedenle MD5 karma kodunu çözmek için çevrimiçi deneyebilirsiniz.

Çevrimiçi deneyin:

MD5 Şifresini Çözme

md5online

md5decrypter


Evet, ama bu zaten "sözlükler olduğunu biliyorum" cümlesindeki soru tarafından kapsanıyor. Bu nedenle sadece sözlükleri işaret etmek bir cevap olarak sayılmaz.
Maarten Bodewes

1

Teoride , bir karma değerin şifresini çözmek mümkün değildir, ancak orijinal düz metni geri almak için bazı kirli teknikleriniz vardır.

  1. Bruteforcing : Tüm bilgisayar güvenlik algoritmaları bruteforcing'e maruz kalır . Bu fikre dayanarak, günümüzün GPU'su, düz metni herhangi bir grafik işlemcisi kullanarak kitlesel olarak güçlendirerek geri alabileceği paralel programlama fikrini kullanır. Bu araç hashcat bu işi yapar. Cuda'yı en son kontrol ettiğimde versiyonunu ettiğimde, altı dakika içinde 7 harf uzunluğunda bir karakteri canlandırabildim.
  2. İnternet araması : Karmayı Google'a kopyalayıp yapıştırın ve ilgili düz metni burada bulabilirseniz konusuna bakın. Bir şeyi pentest ederken bu bir çözüm değildir, ancak kesinlikle denemeye değer. Bazı web siteleri sözlükteki neredeyse tüm kelimelerin karmasını korur.

2
Sözlük saldırıları başka bir yol veya giriş şifrelerini bildiğiniz diğer veritabanlarıyla karşılaştırmaktır.
Maarten Bodewes

1

Hayır, MD5 gibi bir karma işlevini tersine çevirmek mümkün değildir: çıkış karma değeri göz önüne alındığında, giriş mesajı hakkında yeterli bilgi bilinmedikçe giriş mesajını bulmak mümkün değildir.

Şifre çözme, karma işlevi için tanımlanan bir işlev değildir; şifreleme ve şifre çözme, CBC modunda AES gibi bir şifrenin işlevleridir ; karma işlevleri şifrelemez veya şifresini çözmez . Karma işlevleri bir giriş mesajını sindirmek için kullanılır . Adından da anlaşılacağı gibi, tasarım gereği tersine bir algoritma mümkün değildir .


MD5, kriptografik olarak güvenli, tek yönlü bir karma işlevi olarak tasarlanmıştır . Giriş mesajının büyük bir kısmı önceden belirlenmiş olsa bile MD5 için çarpışmalar oluşturmak artık çok kolay. Bu nedenle MD5 resmi olarak kırılmıştır ve MD5 artık kriptografik olarak güvenli bir karma olarak düşünülmemelidir. Bununla birlikte, bir karma değerine yol açan bir giriş mesajı bulmak hala imkansızdır: yalnızca H (X) biliniyorsa X'i bulun (ve X, en az bir 128 bayt önceden hesaplanmış veri bloğuna sahip önceden hesaplanmış bir yapıya sahip değildir) . MD5'e yönelik bilinen hiçbir görüntü öncesi saldırı yoktur .

Genellikle kaba kuvvet veya (artırılmış) sözlük saldırıları kullanarak parolaları tahmin etmek, veritabanlarını karşılaştırmak veya gökkuşağı tabloları olarak adlandırılan parola karmaları bulmak ve bulmak genellikle mümkündür. Bir eşleşme bulunursa, girişin bulunduğu hesaplanır. Hash fonksiyonları da çarpışma saldırılarına karşı güvenli gibidir: bulmakta X'böylece H(X') = H(X)verilen H(X). Eğer bir Xbulunursa, aslında giriş mesajı olduğu hesaplanır. Aksi halde sonuçta bir çarpışma saldırısı yapmış olursunuz. Gökkuşağı tabloları saldırıları hızlandırmak için kullanılabilir ve orada belirli bir karma verilen bir şifre bulmanıza yardımcı olacak özel internet kaynakları vardır.

Diğer sistemlerde oluşturulan parolaları doğrulamak için elbette karma değerini yeniden kullanmakH(X) mümkündür . Alıcı sistem yapması gereken tek şey bir belirleyici fonksiyonun sonucu saklamaktır Falır H(X)girdi olarak. Tüm Xsonra sisteme verilir H(X)ve bu nedenle Fyeniden hesaplanır ve sonuç karşılaştırılabilir. Başka bir deyişle, sadece bir parolanın doğru olduğunu doğrulamak için karma değerinin şifresini çözmek gerekmez ve hash'ı farklı bir değer olarak saklayabilirsiniz.


MD5 yerine bunun yerine bir parola karması veya PBKDF (parola tabanlı anahtar türetme işlevi) kullanmak önemlidir . Böyle bir işlev, bir tuzun bir karma ile birlikte nasıl kullanılacağını belirler . Bu şekilde, özdeş parolalar için özdeş karmalar oluşturulmaz (diğer kullanıcılardan veya diğer veritabanlarından). Bu nedenle parola karmaları, tuz yeterince büyük ve düzgün bir şekilde rastgele olduğu sürece gökkuşağı tablolarının kullanılmasına izin vermez.

Parola karmaları ayrıca , tuz ve karma değeri verildiğinde parolayı bulmaya çalışan saldırıları önemli ölçüde yavaşlatabilecek bir çalışma faktörü (bazen yineleme sayısı kullanılarak yapılandırılır ) içerir. Tuzlar ve karma değerleri olan veritabanı çalınabileceğinden bu önemlidir. Son olarak, parola karması da bellek açısından zor olabilir, böylece karmayı hesaplamak için önemli miktarda bellek gerekir. Bu, saldırganın aramayı hızlandırmasını sağlamak için özel donanım (GPU'lar, ASIC'ler, FPGA'lar vb.) Kullanmayı imkansız hale getirir. Biber veya paralelleştirme miktarı gibi diğer girişler veya yapılandırma seçenekleri de bir parola karması için kullanılabilir.

Bununla birlikte , bir şifre karması H(X)olsa bile herkesin verilen bir şifreyi doğrulamasına izin verecektir H(X). Parola karmaları hala belirleyicidir, bu nedenle eğer herkes tüm girdiyi ve karma algoritmanın kendisini biliyorsa, o Xzaman hesaplamak için kullanılabilir H(X)ve tekrar sonuçlar karşılaştırılabilir.

Sık kullanılan parola karmaları bcrypt , scrypt ve PBKDF2'dir . Ayrıca, son zamanlarda parola hashleme yarışmasının kazananı olan çeşitli şekillerde Argon2 bulunmaktadır. CrackStation'da şifre güvenliği konusunda doğru bir blog yazısı var.


Rakiplerin karma hesaplamasını yapmasının bir parolanın doğru olduğunu doğrulamasını imkansız hale getirmek mümkündür. Bunun için şifre karmasına giriş olarak bir biber kullanılabilir. Alternatif olarak, karma değeri elbette AES gibi bir şifre ve CBC veya GCM gibi bir çalışma modu kullanılarak şifrelenebilir. Ancak bu, gizli / anahtarın bağımsız olarak ve şifre karmasından daha yüksek erişim gereksinimleriyle birlikte depolanmasını gerektirir .


0

MD5 bir şifreleme (tek yönlü) karma işlevidir, bu yüzden kod çözmenin doğrudan bir yolu yoktur. Şifreleme karma işlevinin tüm amacı, onu geri alamamanızdır.

Yapabileceğiniz bir şey, ne hashed olduğunu tahmin edip, aynı işlevle hash edip eşleşip eşleşmediğini görmek için bir kaba kuvvet stratejisidir. Karma verilerin tahmin edilmesi çok kolay olmadıkça, uzun sürebilir.


-1

Bir algoritmanın içine bir parola karması koymak ve parolayı düz metin olarak geri almak henüz mümkün değildir, çünkü hash tek yönlü bir şeydir. Ancak insanların yaptığı, hash'ler oluşturmak ve onu büyük bir tabloda saklamaktır, böylece belirli bir hash girdiğinizde, hash ile eşleşen şifreyi kontrol eder ve bu şifreyi size geri verir. Bunu yapan siteye örnek olarak http://www.md5online.org/ verilebilir . Modern şifre depolama sistemi, kayıt sırasında aynı şifreyi bir şifre kutusuna girdiğinizde farklı karmalar oluşturulacak şekilde bir tuzlama algoritması kullanarak bunu karşılar.


-1

Hayır, MD5'te kapsamlı bir güvenlik açığı bulana kadar md5'in şifresini çözemez / tersine çeviremezsiniz. Başka bir yol, bazı web sitesi büyük miktarda şifre veritabanı vardır, bu yüzden MD5 veya SHA1 karma dizesini çözmek için çevrimiçi deneyebilirsiniz. Ben http://www.mycodemyway.com/encrypt-and-decrypt/md5 ve onun için iyi çalışıyor gibi bir web sitesi denedim ama bu karma o veritabanında saklanırsa bu tamamen karma bağlıdır o zaman gerçek dize alabilirsiniz .


1
Hayır, MD5 şifreleme değildir, tek yönlü şifreleme bile değildir (ilk etapta anlamsızdır).
Maarten Bodewes

@MaartenBodewes Bu benim hatam bir şifreleme işlevi değil, bir karma işlevi Teşekkür ederim.
Rafi Ahmad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.