IT story

MD5 해시를 해독 할 수 있습니까?

hot-time 2020. 4. 6. 08:13
반응형

MD5 해시를 해독 할 수 있습니까?


누군가 나에게 다음과 같은 소프트웨어 시스템을 보았다고 말했습니다.

  1. 다른 시스템에서 MD5 암호화 된 비밀번호를 검색합니다.
  2. 암호화 된 비밀번호를 해독하고
  3. 시스템 자체 알고리즘을 사용하여 시스템의 데이터베이스에 비밀번호를 저장하십시오.

가능합니까? MD5 해시를 해독하는 것이 가능하지 않다고 생각했습니다.

MD5 사전이 있지만 실제 암호 해독 알고리즘이 있습니까?


MD5는 암호화가 아닙니다 (일부 암호화 알고리즘의 일부로 사용될 수 있음) . 단방향 해시 함수 입니다. 원본 데이터의 대부분은 실제로 변환의 일부로 "손실"되었습니다.

MD5의 길이는 항상 128 비트입니다. 이는 가능한 128 개의 MD5 해시 가 2 있음을 의미 합니다. 그것은 합리적으로 많은 수이지만 가장 확실합니다. 그러나 주어진 해시 함수에는 무한한 수의 입력이 있습니다 (대부분 128 비트 이상 또는 16 바이트 정도 포함). 따라서 실제로 동일한 값으로 해시되는 데이터에는 무한한 가능성이 있습니다. 해시를 흥미롭게 만드는 것은 동일한 값으로 해시되는 두 개의 데이터 조각을 찾기가 매우 어렵고 우연히 발생할 가능성이 거의 0이라는 것입니다.

(매우 안전하지 않은) 해시 함수에 대한 간단한 예는 (일방적 인 일이라는 일반적인 개념을 보여줍니다) 데이터 조각의 모든 비트를 가져 와서 큰 숫자로 취급하는 것입니다. 다음으로, 큰 숫자 (아마도 소수) n을 사용하여 정수 나누기를 수행 하고 나머지를 가져옵니다 ( 모듈러스 참조 ). 0과 n 사이의 숫자가 남습니다 . 정확히 동일한 문자열을 사용하여 동일한 계산을 다시 수행하면 (언제든지 컴퓨터에서 언제 어디서나) 동일한 값을 얻을 수 있습니다. 그러나 n 으로 나눌 때 정확한 나머지가있는 무한한 수의 숫자가 있기 때문에 원래 값이 무엇인지 알 수있는 방법이 없습니다 .

즉 MD5는 일부 복잡한 수학으로,이 시도하지 않고 충돌을 찾을 수있을 수 있도록 몇 가지 약점이 발견되었습니다했다 128 가능한 입력 문자열을. 그리고 대부분의 암호는 짧고 사람들이 흔히 "암호"또는 "비밀"과 같은 공통 값을 사용한다는 사실은 해시를 위해 인터넷 검색을하거나 Rainbow를 사용하여 누군가의 암호를 합리적으로 추측 할 수 있음을 의미합니다. . 그렇기 때문에 해시 된 암호 가 항상 " salt " 여야 하므로 두 개의 동일한 값이 해시 될 때 동일한 값으로 해시되지 않습니다.

일단 데이터 조각이 해시 함수를 통해 실행되면 되돌아 갈 필요가 없습니다.


이론 상으로는 할 수 없습니다. 해시의 요점은 한 가지 방법 일뿐입니다. 이는 누군가 해시 목록을 관리 할 경우 여전히 비밀번호를 얻을 수 없다는 것을 의미합니다. 또한 누군가가 여러 사이트에서 동일한 비밀번호를 사용하더라도 (예, 우리는 우리가해서는 안된다는 것을 알고 있지만 ...) 사이트 A의 데이터베이스에 액세스하는 사람은 사용자의 비밀번호를 사용할 수 없습니다. 사이트 B.

MD5가 해시라는 사실은 정보가 손실된다는 것을 의미합니다. 주어진 MD5 해시에 대해 임의 길이의 암호를 허용하면 동일한 해시를 생성하는 여러 개의 암호가있을 수 있습니다. 좋은 해시의 경우 계산이 불가능하여 최대 길이 이상으로 찾을 수는 없지만 대상 해시가있는 암호를 찾으면 반드시 원래 암호임을 보장 할 수는 없습니다. 그것은이다 천문학적 가능성 같은 MD5 해시를 가진 두 개의 ASCII 만, 적당한 길이의 암호를 볼 수있을 것을, 그러나 그것은 불가능합니다.

MD5는 암호에 사용하기에 나쁜 해시입니다.

  • 속도가 빠르므로 "대상"해시가있는 경우 많은 암호를 사용하여 해당 대상에 해시하는 암호를 찾을 수 있는지 확인하는 것이 저렴합니다. 솔트 링은 해당 시나리오에 도움이되지 않지만 다른 솔트를 사용하여 여러 해시 중 하나와 일치하는 비밀번호를 찾는 데 더 많은 비용을들이는 데 도움이됩니다 .
  • 나는 임의의 이진 데이터가 아닌 인쇄 가능한 텍스트 내에서 충돌을 찾는 것이 적어도 어려울지라도 충돌을 찾기가 더 쉬운 결함을 알고 있다고 생각합니다.

저는 보안 전문가가 아니므로 "자신의 인증 시스템을 굴리지 마십시오"이외의 구체적인 권장 사항은 제공하지 않습니다. 평판 좋은 공급 업체를 찾아서 사용하십시오. 보안 시스템의 설계 및 구현은 까다로운 사업입니다.


기술적으로 그것은 '가능한' 이지만 매우 엄격한 조건 ( 무지개 테이블 , 사용자 암호가 해시 데이터베이스에있을 가능성이 매우 적은 무차별 강제)입니다.

그렇다고해서

  • 실행 가능
    또는
  • 안전한

MD5 해시 를 '반전'하고 싶지 않습니다 . 아래에 설명 된 방법을 사용하면 필요하지 않습니다. '역전'MD5는 실제로 악의적 인 것으로 간주됩니다 . 일부 웹 사이트는 MD5 해시를 '크랙'하고 무차별 대입 할 수있는 기능을 제공하지만 사전 단어, 이전에 제출 한 암호 및 기타 단어를 포함하는 대규모 데이터베이스입니다. MD5 해시를 뒤집을 가능성매우 적습니다 . 그리고 MD5 해시를 소금에 절인 경우 에도 작동하지 않습니다! :)


MD5 해시로 로그인이 방법 해야 작동은 다음과 같습니다

등록시 :
사용자 암호를 생성 -> 비밀번호 MD5를 사용하여 해시됩니다 -> 해시 데이터베이스에 저장

로그인 중 :
사용자가 사용자 이름과 비밀번호를 입력합니다.-> (사용자 이름 확인 됨) MD5를 사용하여 비밀번호를 해시합니다.-> 해시가 데이터베이스에 저장된 해시와 비교됩니다.

'비밀번호 분실'이 필요한 경우 :

2 가지 옵션 :

  • 사용자가 임의의 비밀번호를 입력하여 로그인 한 다음 처음 로그인 할 때 비밀번호를 변경하도록 버그가 있습니다.

또는

  • 사용자에게 비밀번호를 변경할 수있는 링크가 전송되고 (보안 질문 등이 있는지 추가로 확인) 새 비밀번호가 해시되고 데이터베이스에서 이전 비밀번호로 바뀝니다.

직접 아닙니다. 때문에의 비둘기 집 원리 , (가능성이) 하나 개 이상의 값이이 주어진 MD5 출력에 해시. 따라서 확실하게 되돌릴 수 없습니다. 또한, MD5 어려운 찾을 수 있도록 구성되어 있는 등 반전 해시 (생산이 그러나이 있었다 공격 충돌 - 동일한 결과를 해시,하지만 당신은 제어 할 수없는 두 개의 값을 생성 어떤 결과 MD5 값 것 있다).

그러나 검색 공간을 예를 들어 길이가 N 미만인 일반 암호로 제한하면 MD5 출력 수가 관심있는 도메인의 문자열 수보다 훨씬 크기 때문에 더 이상 비가역성 속성이 없을 수 있습니다. 그런 다음 레인보우 테이블 또는 이와 유사한 것을 사용하여 역 해시를 사용할 수 있습니다 .


적어도 합리적인 시간 안에는 불가능합니다.

이것이 자주 처리되는 방식은 암호 "재설정"입니다. 즉, 당신은 그들에게 새로운 (임의의) 암호를주고 그것을 이메일로 보냅니다.


md5 비밀번호는 되돌릴 수 없습니다 (모든 언어로).

하지만 넌 할수있어:

사용자에게 새로운 것을 제공하십시오.

무지개 테이블을 확인하여 오래된 것을 검색하십시오.


그는 MD5 사전에 대해 혼란 스러웠을 것입니다.

암호화 해시 (MD5 등)는 한 가지 방법 이며 원본 메시지 등에 대해 다른 정보가 없는 한 다이제스트만으로 원래 메시지로 돌아갈 수 없습니다.


암호 해독 (알고리즘 방식으로 해시 값에서 일반 텍스트를 직접 가져옴)

그러나 레인보우 테이블 이라고하는 것을 사용하는 방법이 있습니다 . 당신의 암호가 소금없이 해시된다면 그것은 가능합니다.


MD5는 해싱 알고리즘이므로 해시 값을 되돌릴 수 없습니다.

사용자가 다른 비밀번호를 제공하고 해시를 계산하여 새 비밀번호로 저장하는 "비밀번호 변경 기능"을 추가해야합니다.


쉬운 방법은 없습니다. 이것은 처음에 암호를 해시하는 지점입니다. :)

당신은 한 가지 해야 할 수있을 수동으로 그들을 위해 임시 비밀번호를 설정하고 그것을 보낼 수있다.

나는 나쁜 아이디어이기 때문에 이것을 언급하는 것을 망설이고 (어쨌든 작동하지 않을 수도 있음) milw0rm 과 같은 레인보우 테이블에서 해시를 찾아서 이전 비밀번호를 복구 할 수 있는지 확인할 수 있습니다.


되돌릴 수없는 방법과 이유 및 왜 원하지 않는지에 대한 다른 모든 답변을 여기에서 확인하십시오.

완벽 함을 위해 가능한 일치하는 항목을 찾을 수있는 레인보우 테이블 이 있습니다. 레인보우 테이블의 답변이 사용자가 선택한 원래 비밀번호이므로 혼동 될 수 있습니다.

또한 소금에 절인 해시에는 작동하지 않습니다. 많은 보안 전문가들은 소금 을 추천합니다.


역함수를 찾는면에서 해시 함수를 "되 돌리는"방법은 없습니다. 앞에서 언급했듯이 이것은 해시 함수를 갖는 요점입니다. 가역적이지 않아야하며 빠른 해시 값 계산이 가능해야합니다. 따라서 주어진 해시 값을 생성하는 입력 문자열을 찾는 유일한 방법은 가능한 모든 조합을 시도하는 것입니다. 이를 이런 이유로 무차별 대입 공격이라고합니다.

가능한 모든 조합을 시도하는 데 많은 시간이 걸리며 이는 해시 값이 비교적 안전한 방식으로 비밀번호를 저장하는 데 사용되는 이유이기도합니다. 침입자가 내부의 모든 사용자 암호를 사용하여 데이터베이스에 액세스 할 수 있으면 어떤 경우에도 연결이 끊어집니다. 해시 값과 강력한 암호가 있다면 공격자의 해시 값에서 암호를 얻는 것이 훨씬 더 어려워집니다.

해시 값을 저장하는 것은 해시 값을 계산하는 것이 비교적 빠르기 때문에 성능 문제가 아닙니다. 따라서 대부분의 시스템은 사용자가 입력 한 비밀번호의 빠른 해시 값을 계산 한 다음 사용자 데이터베이스에 저장된 해시 값과 비교합니다.


MD5는 해시에서 원본 콘텐츠를 다시 가져올 수 있기 때문이 아니라 작업을 통해 동일한 해시로 해시하는 두 개의 메시지를 만들 수 있기 때문에 고장난 것으로 간주됩니다.

MD5 해시를 해시 해제 할 수 없습니다.


작동 할 수있는 유일한 방법은 (우리가 암호를 해시하고 소금을 추가하지 않고 소금을 추가하지 않고 소금을 알아야하는 경우) 사전 공격 도구를 얻는 것입니다 , 많은 단어, 숫자 등의 파일을 두 행으로 만듭니다. 하나는 행, 단어 (사전), 다른 하나는 단어의 해시이며 일치하는 경우 해시를 비교합니다 ...

그것은 cryptanalysis에 가지 않고 유일한 방법입니다.


예, 정확히 원하는 것이 가능합니다. 도움없이 MD5 암호를 '암호 해독'할 수는 없지만 MD5 암호를 다른 알고리즘으로 다시 암호화 할 수는 있습니다.

사용자가 이전 MD5 암호를 사용하여 새 시스템에 로그온 할 수 있도록 준비해야합니다. 그들이 로그인하는 시점에 그들은 당신의 로그인 프로그램에 당신이 가지고있는 MD5 해시와 일치하는 것으로 증명 된 암호의 해시 되지 않은 버전을 부여했습니다. 그런 다음이 해싱되지 않은 암호를 새 해시 알고리즘으로 변환 할 수 있습니다.

분명히 이것은 사용자가 암호를 알려줄 때까지 기다려야하는 확장 된 프로세스이지만 작동합니다.

(NB : 7 년 후, 잘만되면 누군가 유용 할 것입니다)


사전을 사용하여 원본 메시지를 검색하는 온라인 도구를 찾을 수 있습니다.

어떤 경우에는 사전 방법이 쓸모가 없을 수 있습니다.

  • SALT 메시지를 사용하여 메시지가 해시 된 경우
  • 메시지가 두 번 이상 해시 인 경우

예를 들어 다음은 하나의 MD5 암호 해독기 온라인 도구입니다.


아니요, 할 수 없습니다. 사전을 사용하거나 원하는 해시를 얻을 때까지 다른 값을 해시 할 수 있습니다. 그러나 "암호 해독"할 수 없습니다.


MD5에는 약점이 있지만 ( Wikipedia 참조 ) 해시를 미리 계산하려는 일부 프로젝트가 있습니다. Wikipedia는 이러한 프로젝트 중 일부를 암시합니다. 내가 아는 (그리고 존중하는) 것은 ophrack입니다. 사용자에게 자신의 암호를 말할 수는 없지만 작동하는 암호는 말할 수 있습니다. 그러나 나는 생각합니다 : 잊어 버린 경우를 대비하여 새 비밀번호를 우편으로 보내십시오.


MD5 해시 알고리즘은 되돌릴 수 없으므로 MD5 디코딩은 불가능하지만 일부 웹 사이트에는 대량의 암호가 일치하므로 온라인으로 MD5 해시를 디코딩 할 수 있습니다.

온라인 시도 :

MD5 해독

md5online

md5decrypter


이론적 으로 해시 값을 해독 할 수는 없지만 원래 일반 텍스트를 다시 가져 오는 더러운 기술이 있습니다.

  1. bruteforcing의 모든 컴퓨터 보안 알고리즘 고통 bruteforcing의를 . 이 아이디어를 기반으로 오늘날의 GPU는 그래픽 프로세서를 사용하여 일반 텍스트를 대량으로 무차별 처리하여 일반 텍스트를 되돌릴 수있는 병렬 프로그래밍 아이디어를 사용합니다. 이 도구 hashcat 이이 작업을 수행합니다. 마지막으로 cuda 버전을 확인했을 때 6 분 안에 7 자 길이의 문자를 무차별 처리 할 수있었습니다.
  2. 인터넷 검색 : 해시를 복사하여 Google에 붙여넣고 해당 평문을 찾을 수 있는지 확인하십시오. 이것은 당신이 뭔가를 테스트 할 때 해결책이 아니지만 시도해 볼만한 가치가 있습니다. 일부 웹 사이트는 사전의 거의 모든 단어에 대한 해시를 유지합니다.

아니요, MD5와 같은 해시 함수를 되돌릴 수 없습니다. 출력 해시 값이 주어지면 입력 메시지에 대한 충분한 정보가 알려지지 않으면 입력 메시지를 찾을 수 없습니다.

암호 해독은 해시 함수에 대해 정의 된 함수가 아닙니다. 암호화 및 암호 해독은 CBC 모드의 AES와 같은 암호 기능입니다 . 해시 함수는 암호화 하거나 해독 하지 않습니다 . 해시 함수는 입력 메시지 요약 하는 데 사용됩니다 . 이름에서 알 수 있듯이 의도적으로 리버스 알고리즘은 없습니다 .


MD5는 암호로 안전한 단방향 해시 기능 으로 설계되었습니다 . 입력 메시지의 대부분이 미리 결정되어 있어도 MD5에 대한 충돌을 쉽게 생성 할 수 있습니다. 따라서 MD5는 공식적으로 손상되었으며 MD5는 더 이상 암호로 안전한 해시로 간주되지 않아야합니다. 그러나 여전히 해시 값으로 이어지는 입력 메시지를 찾는 것은 불가능합니다. H (X) 만 알려진 경우 X를 찾으십시오 (그리고 X에는 적어도 하나의 128 바이트의 사전 계산 된 데이터 블록을 가진 사전 계산 된 구조가 없음) . MD5에 대한 알려진 사전 이미지 공격없습니다 .

일반적으로 무차별 강제 또는 (증강 된) 사전 공격을 사용하여 비밀번호를 추측하거나 데이터베이스를 비교하거나 레인보우 테이블에서 비밀번호 해시를 찾아 보는 것도 가능합니다. 일치하는 것이 있으면 입력을 찾은 것으로 계산됩니다. 해시 함수는 충돌 공격에 대해 안전하게 보호됩니다 찾는 X'있도록 H(X') = H(X)주어진 H(X). 따라서 X가 발견 되면 실제로 입력 메시지임을 계산적으로 확신합니다. 그렇지 않으면 결국 충돌 공격을 수행했을 것입니다. 레인보우 테이블은 공격 속도를 높이는 데 사용할 수 있으며 특정 해시가 지정된 암호를 찾는 데 도움이되는 특수한 인터넷 리소스가 있습니다.

물론 다른 시스템에서 생성 된 비밀번호를 확인하기 위해 해시 값H(X)재사용 할 수 있습니다. 수신 시스템이 수행하는 것이 유일 결정적 함수의 결과를 저장하는 F소요 H(X)의 입력으로한다. 하면 X다음 시스템에 주어진다 H(X)따라서 F계산 될 수 있으며, 그 결과는 비교 될 수있다. 다시 말해, 암호가 올바른지 확인 하기 위해 해시 값을 해독 할 필요없으며 해시를 다른 값으로 저장할 수 있습니다.


MD5 대신 암호 해시 또는 PBKDF (암호 기반 키 파생 함수) 를 사용하는 것이 중요합니다 . 이러한 함수 는 해시와 함께 솔트 를 사용하는 방법을 지정합니다 . 이렇게하면 동일한 암호에 대해 다른 사용자 나 다른 데이터베이스에서 동일한 해시가 생성되지 않습니다. 이러한 이유로 암호 해시는 소금이 충분히 크고 적절하게 무작위 화되는 한 무지개 테이블을 사용할 수 없습니다.

암호 해시에는 또한 작업 요소 (때로는 반복 횟수를 사용하여 구성됨)가 포함되어있어 솔트 및 해시 값이 지정된 암호를 찾는 공격을 상당히 느리게 할 수 있습니다. 솔트 및 해시 값이있는 데이터베이스를 도용 할 수 있으므로 중요합니다. 마지막으로, 암호 해시도있을 수 있습니다 메모리 하드 상당한 양의 메모리가 해시를 계산하는 데 필요한되도록. 이로 인해 공격자가 검색 속도를 높일 수 있도록 특수 하드웨어 (GPU, ASIC, FPGA 등)를 사용할 수 없습니다. 후추 또는 병렬 처리량과 같은 다른 입력 또는 구성 옵션도 암호 해시에 사용할 수 있습니다.

그러나 암호 해시 인 H(X)경우에도 누구나 암호를 확인할 수 H(X)있습니다. 암호 해시는 여전히 결정론 적이므로, 모든 입력과 해시 알고리즘 자체를 알고 있다면 결과 X를 계산 H(X)하고 다시 비교할 수 있습니다.

일반적으로 사용되는 비밀번호 해시는 bcrypt , scryptPBKDF2 입니다. 합리적으로 최근의 암호 해싱 경쟁에서 우승 한 다양한 형태의 Argon2 도 있습니다 . 여기 CrackStation 은 암호 보안에 관한 좋은 블로그 글입니다.


공격자가 해시 계산을 수행하지 못하도록하여 암호가 올바른지 확인할 수 있습니다. 이를 위해 후추를 비밀번호 해시의 입력으로 사용할 수 있습니다. 대안 적으로, 해시 값은 물론 AES와 같은 암호 및 CBC 또는 GCM과 같은 동작 모드를 사용하여 암호화 될 수있다. 그러나 암호 / 해시보다 높은 액세스 요구 사항을 가지고 비밀 / 키를 독립적으로 저장 해야합니다 .


MD5는 암호화 (단방향) 해시 함수이므로 직접 해독 할 수있는 방법이 없습니다. 암호화 해시 함수의 전체 목적은 실행 취소 할 수 없다는 것입니다.

당신이 할 수있는 한 가지는 해시 된 것을 추측 한 다음 동일한 기능으로 해시하고 일치하는지 확인하는 무차별 대입 전략입니다. 해시 된 데이터를 추측하기가 쉽지 않으면 시간이 오래 걸릴 수 있습니다.


해싱은 한 가지 방법이기 때문에 암호 해시를 알고리즘에 넣고 암호를 일반 텍스트로 다시 가져올 수는 없습니다. 그러나 사람들이 한 일은 해시를 생성하고 큰 테이블에 저장하여 특정 해시를 입력 할 때 해시와 일치하는 비밀번호를 테이블에서 확인하고 해당 비밀번호를 사용자에게 반환하는 것입니다. 이를 수행하는 사이트의 예는 http://www.md5online.org/ 입니다. 최신 비밀번호 저장 시스템은 등록시 비밀번호 상자에 동일한 비밀번호를 입력 할 때 다른 해시가 생성되도록 솔팅 알고리즘을 사용하여이를 방지합니다.


아니요. MD5에서 광범위한 취약점을 찾을 수 없을 때까지 단방향 해시 기능이므로 md5를 해독 / 역전 할 수 없습니다. 또 다른 방법은 일부 웹 사이트에 많은 양의 암호 데이터베이스 세트가 있으므로 온라인에서 MD5 또는 SHA1 해시 문자열을 해독 할 수 있습니다. http://www.mycodemyway.com/encrypt-and-decrypt/md5같은 웹 사이트를 시도했지만 제대로 작동하지만 해시가 해당 데이터베이스에 저장되어 있으면 실제 문자열을 얻을 수 있습니다. .

참고 URL : https://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes

반응형