it-swarm-tr.com

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

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

  1. mD5 şifreli şifreleri diğer sistemlerden alın;
  2. şifreli şifrelerin şifresini çözmek ve
  3. şifreleri, sistemin kendi algoritmasını kullanarak sistemin veritabanında saklayın.

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, ancak gerçek bir şifre çözme algoritması var mı?

244
John Bubriski

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

Bunu düşünün: Bir MD5 daima 128 bit uzunluğundadır. 2 olduğu anlamına gelir128 olası MD5 karmaları. Bu oldukça büyük bir rakam ve yine de kesinlikle sonlu. Ve yine de, belirli bir hash fonksiyonuna sonsuz sayıda olası girdi vardır (ve çoğu 128 bit ya da yaklaşık 16 bayt içerir). Dolayısıyla aslında aynı değere sahip olacak veriler için sonsuz sayıda olasılık var. Haşhaşları ilginç yapan şey, aynı değere sahip iki veri parçasını bulmanın inanılmaz derecede zor olduğudur ve kazayla ortaya çıkma şansı neredeyse 0'dır.

(Çok güvensiz) bir karma işlevi için basit bir örnek (ve bunun tek yönlü olduğu konusundaki genel fikrini gösterir), bir veri parçasının tüm bitlerini almak ve büyük bir sayı olarak ele almak olacaktır. Daha sonra, bazı büyük (muhtemelen asal) sayı n kullanarak tamsayı bölme işlemini gerçekleştirin ve kalanı alın (bkz: Modulus ). 0 ve n arasında bir sayı ile kalacaksınız. Tam olarak aynı dizeyi kullanarak (aynı zamanda herhangi bir bilgisayarda, herhangi bir yerde, herhangi bir zamanda) aynı hesaplamayı yapacak olsanız, aynı değerle ortaya çıkar. Yine de, asıl değerin ne olduğunu öğrenmenin bir yolu yoktur, çünkü n .

Bununla birlikte, MD5'in bazı zayıf yönleri olduğu bulundu, öyle ki bazı karmaşık matematik ile denemeden bir çarpışma bulmak mümkün olabilir 2128 olası giriş dizeleri. Şifrelerin çoğunun kısa olması ve insanların genellikle ortak değerler kullanması ("şifre" veya "gizli" gibi) olması, bazı durumlarda, karma şifreleme için Googling’i kullanarak birinin şifresini makul bir şekilde iyi bir şekilde tahmin edebileceğiniz anlamına gelir. Gökkuşağı tablos . Bu, her zaman " salt " şifreli şifrelerin kullanılmasının bir nedenidir, böylece iki özdeş değer, karma olduğunda aynı değere sahip olmaz.

Bir veri parçası bir karma işlevinden geçirildikten sonra geri dönüş olmaz.

399
Adam Batkin

Yapamazsın - teoride. Bir karmanın tek amacı, bunun tek yol olmasıdır. Bu, eğer bir kişi karma listesi almayı başarırsa, hala şifrenizi alamıyor demektir. Ek olarak, birileri birden fazla sitede aynı şifreyi kullanıyor olsa bile (evet, hepimiz bilmemiz gerektiğini biliyoruz, ancak ...) A sitesinin veritabanına erişimi olan herhangi bir kullanıcının kullanıcı şifresini kullanamayacağı anlamına gelir. site B.

MD5'in bir karma olması da bilgisini yitirdiği anlamına gelir. Herhangi bir MD5 karma için, isteğe bağlı uzunluktaki şifrelere izin verirseniz, aynı karma değerini üreten çoklu şifreler olabilir. İyi bir karma için, onları oldukça önemsiz bir maksimum uzunluğun ötesinde bulmak hesaplamalı olarak mümkün olacaktır, ancak bunun anlamı hiçbir garanti 'nin hedef hash'a sahip bir şifre bulursanız, kesinlikle orijinal şifre olmasıdır. Bu astronomik olarak olası değildir aynı MD5 karma değerine sahip iki ASCII-sadece, makul uzunlukta şifreler göreceksiniz, ancak imkansız değil.

MD5 şifreler için kullanmak için kötü bir karmaşadır:

  • Hızlıdır, yani bir "hedef" karmaşanız varsa, çok sayıda şifre denemek ve bu hedef için hash olup olmadığını bulmak için ucuz demektir. Tuzlama that senaryosunda yardımcı olmaz, ancak farklı tuzlar kullanarak çokl karma değerlerinden herhangi biriyle eşleşen bir parola bulmayı denemek daha pahalı hale gelir.
  • Bası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ı olduğunu düşünüyorum.

Ben bir güvenlik uzmanı değilim, bu yüzden "Kendi kimlik doğrulama sisteminizi devirmeyin" ötesinde somut bir öneride bulunmayacağım. Saygın bir tedarikçiden bir tane bul ve onu kullan. Güvenlik sistemlerinin hem tasarımı hem de uygulaması zor bir iştir.

154
Jon Skeet

Teknik olarak, 'mümkün' , ancak çok katı koşullar altında (- Rainbow tabloları , bir kullanıcının şifresinin bu karma veritabanında bulunma ihtimaline dayanan kaba zorlama).

Ama bu demek değil

  • Yaşayabilir
    veya
  • Güvenli

Bir MD5 karıĢı ters çevirmek istemezsiniz. Aşağıda belirtilen yöntemleri kullanarak, hiçbir zaman yapmanız gerekmeyecektir . 'Tersine Dönme' MD5 aslında kabul edilir kötü niyetli - birkaç web sitesi 'çatlama' ve bruteforce MD5 hash'lerini sunma yeteneği sunar - ancak hepsi içeren büyük veritabanlarıdır Sözlük kelimeleri, daha önce gönderilen şifreleri ve diğer kelimeleri girin. Çok küçük bir şans var, tersine çevirmeniz gereken MD5 karma değerine sahip olacak. Ve eğer tuzl MD5 karması - bu da işe yaramaz! :)


MD5 hash ile oturum açma yöntemi çalışması çalışmalıdır:

Kayıt Sırasında:
Kullanıcı şifre yaratır -> Şifre MD5 kullanılarak şifrelenir -> Hash veritabanında depolanır

Giriş Sırasında:
Kullanıcı kullanıcı adı ve şifreyi giriyor -> (Kullanıcı adı kontrol edildi) Şifre MD5 kullanılarak şifreleniyor -> Hash, veritabanında depolanmış karma ile karşılaştırıldı

'Kayıp Parola' gerektiğinde:

2 seçenek:

  • Kullanıcı oturum açmak için rastgele bir şifre gönderdi, ardından ilk oturum açışında değiştirmek için tıkandı.

veya

  • Kullanıcıya şifresini değiştirmek için bir bağlantı gönderilir (güvenlik sorusu varsa vb. Ekstra kontrol ile) ve ardından yeni şifre şifrelenir ve veritabanında eski şifre ile değiştirilir
53
Daniel May

Direkt olarak değil. güvercin deliği prensibi nedeniyle, herhangi bir MD5 çıktısına bağlanan (muhtemelen) birden fazla değer vardır. Bu haliyle, kesin olarak tersine çeviremezsiniz. Dahası, MD5 any bu ters çevrilmiş karmayı (ancak ) çarpışmalara yol açan saldırılar - yani iki değer üreten saldırıları bulmayı zorlaştırmak için yapılmıştır. Bu aynı sonucu elde eder, ancak elde edilen MD5 değerinin ne olacağını kontrol edemezsiniz).

Bununla birlikte, arama alanını, örneğin N altında uzunluğu olan ortak şifrelerle sınırlarsanız, artık geri dönüşümsüzlük özelliğine sahip olamazsınız (çünkü MD5 çıkışlarının sayısı, ilgilenilen alandaki dizgilerin sayısından çok daha fazladır). Sonra bir Rainbow tablosu veya ters karmaları ile benzer kullanabilirsiniz.

32
bdonlan

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

Bunun sıklıkla kullanıldığı bir şifre "sıfırlama" dır. Yani, onlara yeni (rastgele) bir şifre verin ve onları bir e-posta ile gönderin.

13
Matthew Groves

Bir md5 şifresini geri döndüremezsiniz. (Herhangi bir dilde)

Ama sen yapabilirsin:

kullanıcıya yeni bir tane verin.

eskisini almak için bazı Rainbow masalarını kontrol et.

12
Nettogrof

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

Şifreleme karmaları (MD5 vb.) tek yön ve orijinal mesaja sadece özetle geri dönemezsiniz. olmadıkça Asıl mesaj hakkında başka bir bilginiz var.

10
Robert Greiner

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

Bununla birlikte, Rainbow tablosu olarak bilinen yöntemi kullanan yöntemler vardır. Şifrelerinizin tuzsuz bir şekilde karıştırılmış olması oldukça uygundur.

8
Sinan Taifour

MD5 bir karma algoritmadır, karma değerini geri döndüremezsiniz.

Kullanıcının başka bir şifre verdiği "şifreyi değiştir" özelliğini eklemelisiniz, hash değerini hesaplar ve yeni bir şifre olarak saklarsınız.

7

Bunu yapmanın kolay bir yolu yok. Bu, ilk başta şifreyi saklamanın bir nevi noktası. :)

Yapmanız gereken tek şey yapmanız gerekenler için manuel olarak geçici bir şifre belirlemeniz ve bunları göndermenizdir.

Bunu söylemekte tereddüt ediyorum, çünkü bu kötü bir fikir (ve yine de çalışması garanti edilmiyor), fakat eski şifreyi kurtarabilecekseniz görmek için milw0rm gibi bir Rainbow tablosunda hash aramayı deneyebilirsiniz bu taraftan.

7
Bill the Lizard

Bunun nasıl ve neden geri dönüşü olmadığı ve neden yine de istemeyeceğinizle ilgili diğer tüm yanıtları görün.

Yine de tamlık için, olası eşleşmeleri arayabileceğiniz Rainbow tabloları vardır. Rainbow tablosundaki cevabın, kullanıcı tarafından seçilen orijinal şifre olacağının ve onları çok fazla şaşırtmayacağının garantisi yoktur.

Ayrıca, bu tuzlu karmaları için işe yaramaz. Tuzlama birçok güvenlik uzmanı tarafından tavsiye edilir.

6
Dinah

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

Tüm olası kombinasyonları denemek çok zaman alır ve bu aynı zamanda şifrelerin nispeten güvenli bir şekilde saklanması için karma değerlerin kullanılmasının nedenidir. Bir saldırgan, içindeki tüm kullanıcı şifreleriyle veritabanınıza erişebiliyorsa, her durumda kaybedersiniz. Karma değerleriniz varsa ve (idealistçe konuşur) güçlü şifreleriniz varsa, şifreleri saldırganın karma değerlerinden çıkarmak çok daha zor olacaktır.

Hash değerlerini saklamak da performans sorunu değildir çünkü karma değerinin hesaplanması oldukça hızlıdır. Bu nedenle çoğu sistemin yaptığı, kullanıcının girdiği parolanın karma değerini hesaplamaktır (hızlı olan) ve daha sonra bunları kullanıcı veritabanındaki saklanan karma değerle karşılaştırmaktır.

4
Kage

MD5, orijinal içeriği karma değerinden geri alabileceğiniz için değil, çalışmayla aynı karma değere sahip iki ileti oluşturabileceğiniz için bozuk olarak kabul edilir.

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

3
Ned Batchelder

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 başka bir algoritmaya tekrar şifrelemek mümkündür, sadece bir seferde değil.

Yapmanız gereken, 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 bir asfaltsız kanıtladığınız şifrenin sahip olduğunuz MD5 karması ile eşleştiği bir versiyon vermişlerdir. Ardından bu unhashed şifresini 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 size şifrelerin ne olduğunu söylemesini beklemeniz gerekir, ancak işe yarar.

(Not: yedi yıl sonra, umarım birileri onu yararlı bulacaktır)

2
user3710044

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

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

  • mesajın bir SALT mesajı kullanılarak kullanılması durumunda
  • mesaj birden fazla karma ise

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

2
davitz38

İşe yarayabilecek tek şey (tekrarlama saldırılarını engellemek için herhangi bir tuz eklemeden şifrelerin biraz daha karıştığını söylersek, eğer öyleyse tuzu biliyor olmalısın) sözlüğü saldırı aracı elde etmektir. , birçok kelimenin, sayının vs. dosyaları, sonra iki satır oluşturur, bir satır Word, sayı (sözlükte), diğeri Word'ün karmasıdır ve elde ettiğiniz eşleşmelerde karmaları karşılaştırır ...

kriptanalize girmeden tek yol bu.

2
berkay

Hayır, yapılamaz. Ya bir sözlük kullanabilir ya da aradığınız karmaşayı alana kadar farklı değerlere sahip olmayı deneyebilirsiniz. Ancak “şifresi çözülemez”.

1
Vilx-

MD5'in zayıf yönleri var (bkz Wikipedia ), bu nedenle Hash'leri önceden hesaplamaya çalışan bazı projeler var. Vikipedi, bu projelerin bazılarını da ima ediyor. Tanıdığım (ve saygı duyduğum) bir ophrack. Kullanıcıya kendi şifresini söyleyemezsiniz, ancak çalışan bir şifreyi onlara söyleyebilirsiniz. Ama bence: Unutmanız durumunda, sadece yeni bir şifre gönderin.

1
dz.

Hayır, MD5 gibi bir karma fonksiyonunu tersine çevirmek mümkün değildir: çıkış hash değeri verildiğinde, giriş mesajı hakkında yeterli bilgi bilinmediği sürece, giriş mesajını bulmak mümkün değildir.

Şifre çözme, karma işlevi için tanımlanmış bir işlev değildir; şifreleme ve şifre çözme, CBC modunda AES gibi bir cipher fonksiyonudur; karma işlevleri encrypt nor decrypt değil. Hash işlevleri bir giriş iletisini sindirmek için kullanılır. Adından da anlaşılacağı gibi, ters algoritma yapılamaz tarafından tasarım .


MD5, kriptografik olarak güvenli, tek yönlü karma işlevi olarak tasarlanmıştır. MD5 için çarpışma oluşturmak artık kolaydır - giriş mesajının büyük bir kısmı önceden belirlenmiş olsa bile. Bu nedenle, MD5 resmi olarak bozulmuştur ve MD5 artık kriptografik olarak güvenli bir karma olarak değerlendirilmemelidir. Bununla birlikte, bir karma değere yol açan bir giriş mesajı bulmak yine de imkansız: sadece H(X) bilindiğinde X'i bulun (ve X en az bir 128 ile önceden hesaplanmış bir yapıya sahip değilse) önceden hesaplanmış veri bayt bloğu). MD5'e karşı bilinen bir görüntü önleme saldırısı yok.

Genellikle kaba kuvvet veya (artırılmış) sözlük saldırıları kullanarak şifreleri tahmin etmek, veritabanlarını karşılaştırmak veya Rainbow tablolarında şifre karmalarını denemek ve bulmak da mümkündür. Bir eşleşme bulunursa, girdinin bulunduğu hesaplanmış olarak kesindir. Karma işlevler çarpışma saldırılarına karşı da güvenlidir: X' bulma, böylece H(X') = H(X)H(X) verilir. Bu nedenle eğer bir X bulunursa, bunun aslında girdi mesajının olduğu hesaplanır. Aksi taktirde sonuçta çarpışma saldırısı yapardın. Rainbow masaları saldırıları hızlandırmak için kullanılabilir ve orada belirli bir hash verilen parola bulmanıza yardımcı olacak özel internet kaynakları vardır.

Tabii ki, diğer sistemlerde oluşturulan şifreleri doğrulamak için hash değerini H(X) yeniden kullanmak mümkündür. Alıcı sistemin yapması gereken tek şey, H(X) işlevini girdi olarak alan deterministik bir fonksiyonun F değerini saklamaktır. X sisteme verildiğinde, H(X) ve dolayısıyla F yeniden hesaplanabilir ve sonuçlar karşılaştırılabilir. Başka bir deyişle, gerekli değil sadece değerin şifresini çözmek için verify bir şifrenin doğru olduğunu ve yine de karma değerini farklı bir değer olarak saklayın.


MD5 yerine, bunun yerine şifre karma veya PBKDF (şifre bazlı anahtar türetme işlevi) kullanmak önemlidir. Böyle bir fonksiyon bir tuzun bir karma ile birlikte nasıl kullanılacağını belirtir. Bu şekilde özdeş kareler özdeş şifreler için üretilmez (diğer kullanıcılardan veya diğer veritabanlarından). Bu nedenle parola karma değerleri, tuz yeterince geniş ve uygun şekilde randomize olduğu sürece Rainbow tablolarının kullanılmasına izin vermez.

Parola karmaları ayrıca iş faktörü (bazen önemli ölçüde yavaşlatabilecek bir iteration count ) kullanılarak yapılandırılmış olabilir. Tuz ve karma değer verilen şifreyi bulmaya çalışan saldırılar. Bu, tuz ve karma değerlere sahip veritabanı çalınabileceği için önemlidir. Son olarak, şifre hash ayrıca hafızada zor olabilir, böylece hash değerini hesaplamak için önemli miktarda bellek gerekir. Bu, bir saldırganın aramayı hızlandırmasını sağlamak için özel donanımların (GPU'lar, ASIC'ler, FPGA'lar vb.) Kullanılmasını imkansız kılar. Bir biber veya paralelleştirme miktarı gibi diğer girdiler veya konfigürasyon seçenekleri bir şifre karma için de mevcut olabilir.

Bununla birlikte, H(X) bir şifre karma olsa bile H(X) verilen bir şifreyi kimsenin doğrulamasına izin verecektir. Parola sağlama değerleri yine de belirleyicidir, bu nedenle herhangi bir girdi ve girdi algoritmasının kendisini bilen birileri varsa, o zaman H(X) hesaplamak için X kullanılabilir ve - sonuçlar karşılaştırılabilir.

Sık kullanılan şifre karmaları bcrypt , komut dosyasıdır ve PBKDF2 . Ayrıca, oldukça yeni şifre karma rekabeti kazanan çeşitli biçimlerde Argon2 vardır. İşte CrackStation'da şifre güvenliği konusunda iyi bir blog yazısıdır.


Rakiplerin karma hesaplamasını gerçekleştirmelerini imkansız hale getirmek mümkündür, bir şifrenin doğru olduğunu onaylayın. Bunun için bir şifre şifre karma girişi olarak kullanılabilir. Alternatif olarak, hash değeri elbette AES gibi bir şifre ve CBC veya GCM gibi bir çalışma modu kullanılarak şifrelenebilir. Bununla birlikte, gizli/anahtarın saklanması bağımsız olarak ve parola karma değerinden daha yüksek erişim gereksinimlerine sahip olmalıdır.

1
Maarten Bodewes

MD5 Karma algoritması geri dönüşümlü değildir, bu nedenle MD5 kodunun çözülememesi mümkün değildir, ancak bazı web sitelerinin toplu şifre eşleme kümesi vardır, bu nedenle MD5 kodunun kodunu çözmek için çevrimiçi deneyebilirsiniz.

Çevrimiçi dene:

MD5 Şifre Çözme

md5online

md5decrypter

1
Girish Patidar

Teoride bir karma değerinin ş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ı zarar görür bruteforcing . Bu fikre dayanarak, bugünün GPU'su, herhangi bir grafik işlemcisini kullanarak toplu olarak kabadayı kullanarak düz metni geri alabilmesini sağlayan paralel programlama fikrini kullanır. Bu araç hashcat bu işi yapar. En son cuda versiyonunu kontrol ettiğimde altı dakika içerisinde 7 harflik bir karakter getirebildim.
  2. İnternet araması : Sadece karma’yı Google’a kopyalayıp yapıştırın ve karşılık gelen düz metni orada bulabilirseniz görün. Bu, bir şeyi önceden bastırırken bir çözüm değildir, ancak kesinlikle denemeye değer. Bazı web siteleri sözlükteki hemen hemen tüm kelimelerin karmasını korur.
1
vikkyhacks

MD5 bir şifreleme (tek yönlü) karma işlevidir, bu nedenle kod çözmenin doğrudan bir yolu yoktur. Şifreleme karma işlevinin tüm amacı, geri alamazsınız.

Yapabileceğiniz bir şey, ne karma olduğunu tahmin edeceğiniz bir kaba kuvvet stratejisidir, daha sonra aynı işleve sahip olur ve eşleşip eşleşmediğini görürsünüz. Özetlenmiş verilerin tahmin edilmesi çok kolay olmadıkça, uzun zaman alabilir.

0
Ajanyan Pradeep