정보 보안에 관심이있었습니다. 최근에 해싱에 대한 아이디어를 접했습니다. 현재 해싱에 대해 이해하는 것은 사용자가 입력 한 암호를 사용한다는 것입니다. 그런 다음 여러 변수를 사용하고 모든 것을 스크램블링하여 무작위로 “해시”를 생성합니다. 그런 다음이 암호를 입력하여 로그인하면 해당 암호가 해시와 일치합니다. 내가 이해하지 못하는 몇 가지 사항이 있습니다.
-
이러한 해시를 해독하는 것이 왜 그렇게 어렵습니까? 사용하는 방법을 찾으면 가정하겠습니다. 암호화하십시오 (Caesar의 암호와 같은 매우 간단한 암호를 사용하십시오. 일단 얼마나 많이 옮겨야하는지 알아 내면 전체 책에 대해 수행 할 수 있습니다). 시간과 같은 것을 사용하고 혼란스러워도 옵션을 제한 할 수있는 몇 가지 큰 방법이 있습니다. (Caesar 암호를 사용하게합시다. 그들은 연도 x를 사용하고 있습니다. 현실적으로 2 년이 가능하다는 것을 이미 알고 있습니다. 퍼즐의 두 번째 조각을 알아 내십시오).
-
무작위로 생성 된 경우 (두 개의 암호가 동일하더라도 서로 다르게 나옴) 어떻게 알 수 있습니까? 맞나요?
-
어떻게 깨 졌나요? hash cat은 암호를 성공적으로 해독했는지 어떻게 알 수 있습니까?
관련 동영상 ( “내 질문에 정확히 대답하지 않음)”: https://www.youtube.com/watch?v=b4b8ktEV4Bg
댓글
- Q (3 )보다 구체적으로 oclHashcat과 같은 프로그램은 대부분의 경우 미리 결정된 목록에서 수백만 개의 해시를 시도합니다. 실제로는 비밀번호를 ‘ 복호화 ‘하지 않습니다 (기억 암호화를 해독 할 수만 있습니다 (해싱! = 암호화).하지만 암호를 시도하고 결과 해시가 자신이 가지고있는 것과 일치하는지 여부는 원래 암호 여야합니다. 즉, ‘ t 해독하면 일치 항목을 얻을 수 있는지 확인하기 위해 1 초에 수백만 번 시행 착오를합니다. 이것이 ‘ 해시 속도가 느린 것도 좋은 이유입니다. .
- @Peleus 이것은 제가 얻은 것과 매우 비슷합니다. 유일한 것은 암호를 해싱 할 때 무작위로 스크램블합니다. 그들은 어떻게 암호를 가져와 똑같은 무작위 움직임으로 다시 스크램블합니까? 동일한 입력이 다른 출력을 제공하여 저를 혼란스럽게 할 수도 있습니다.
- 나 ‘ 당신이 ‘ ” 당신처럼 ” 무작위로 스크램블했다고 생각했습니다. ‘ ve 지금은 다르게 배웠지 만 ‘ 확실히 사실이 아닙니다. 해싱은 무작위가 아니며 ‘ 반복 가능하지만 ‘ 거꾸로 작업하는 것은 불가능합니다. ‘ 모두. 단어 ‘ cat ‘의 SHA256 해시는 항상 100 % 동일합니다. 이것이 ‘이 암호를 안정적으로 사용할 수있는 이유입니다. 해시가 매번 새 값을 생성하고 이전 해시 값과 만 비교할 수 있다면 ‘ 비밀번호가 올바른지 여부를 알 수 없습니다! : D
- 알았습니다. 이 비디오는 내가 알고 싶었던 것을 정확하게 설명합니다. youtube.com/watch?v=vgTtHV04xRI
- 해싱이 사용되는 이유를 설명하는 더 나은 동영상입니다. RSA 암호화를 설명하고 해시에서 뒤로 이동하기가 ‘ 더 어려운 이유를 설명하는 위의 것과는 다릅니다. youtube.com/watch?v=b4b8ktEV4Bg
답변
빨리, 요소 1081.
또는 원하는 경우 다음과 같이 대답하십시오. 23 곱하기 47은 무엇입니까?
어떤 것이 더 쉬울까요? 제품에만 주어진 피연산자를 복구하는 것보다 곱셈을 수행하십시오 (기계적으로 규칙을 따르십시오). 곱셈. (이것이 RSA 와 같은 일부 암호화 알고리즘의 기초입니다.)
암호화 해시 함수 는 수학적 기반이 다르지만 속성은 같습니다. 앞으로 계산하기는 쉽지만 (x가 주어지면 H (x) 계산), 뒤로가는 계산은 사실상 불가능합니다 (y가 주어지면 H (x) = y가되도록 x를 계산). 사실 좋은 암호화 해시의 신호 중 하나입니다. 함수는 x를 모두 시도하고 일치 항목을 찾을 때까지 H (x)를 계산하는 것보다 더 좋은 방법이 없다는 것입니다.
해시 함수의 또 다른 중요한 속성은 두 개의 다른 입력이 서로 다른 해시를 갖는다는 것입니다. H (x 1 ) = H (x 2 )이면 x 1 = x 2 라는 결론을 내릴 수 있습니다. 수학적으로 말하면 불가능합니다. 입력이 해시 길이보다 길면 충돌이 있어야합니다.그러나 좋은 암호화 해시 함수를 사용하면 전 세계의 모든 컴퓨팅 리소스와의 충돌을 찾는 알려진 방법이 없습니다.
div> 암호 해시 함수, Thomas Pornin의이 답변 을 읽어보세요. 계속해서 기다리겠습니다.
해시 기능은 암호화 기능이 아닙니다. 암호화는 암호를 해독 할 수 있음을 의미합니다 (키를 알고있는 경우). 해시를 사용하면 마법의 숫자가 없습니다. 다시 돌아갈 수 있습니다.
주요 권장되는 암호화 해시 함수는 SHA-1 및 SHA-2 제품군 (주로 SHA-256 및 SHA-512와 같은 여러 출력 크기로 제공됨). MD5 는 이전 버전으로 알려진 충돌로 인해 더 이상 사용되지 않습니다. 궁극적으로, 그들이 실제로 좋은 암호화 해시 함수라는 수학적 증거는 없습니다. 많은 전문 암호화 전문가들이 평생 동안이를 깨뜨 리려고 노력했지만 실패했기 때문에 널리 알려진 믿음 일뿐입니다.
좋아요. ” 이야기의 한 부분입니다. 이제 암호 해시 는 직접 암호화 해시 함수가 아닙니다. 암호 해시 함수 (PHF) 비밀번호와 솔트의 두 가지 입력을받습니다. salt 는 사용자가 비밀번호를 선택할 때 무작위로 생성됩니다. 해시 된 암호 PHF (password, salt)와 함께 저장됩니다. (중요한 것은 두 개의 서로 다른 계정이 항상 서로 다른 솔트를 갖고 있고, 충분히 큰 솔트를 무작위로 생성하는 것이 압도적 인 확률로이 속성을 가질 수있는 좋은 방법이라는 것입니다.) 다시 확인 시스템은 암호 데이터베이스에서 솔트를 읽고 PHF (암호, 솔트)를 계산하고 결과는 데이터베이스에 저장되는 것입니다.
솔트의 요점은 누군가 암호를 해독하려면 시작하기 전에 해시하고 각 계정을 개별적으로 공격해야합니다. 소금은 사전에 많은 크래킹 작업을 수행하는 것을 불가능하게 만듭니다. 레인보우 테이블 을 생성합니다.
이 답변은 (2) 및 (3) — 합법적 인 검증 자와 공격자는 동일한 암호 (사용자가 입력했거나 공격자가 추측)가 올바른지 여부. 이야기의 마지막 요점 : 좋은 암호 해시 함수에는 추가 속성이 있으므로 느려 야합니다. 합법적 인 서버는 로그인 시도당 한 번만 계산하면되는 반면 공격자는 추측 당 한 번 계산해야하므로 속도가 느려지면 공격자가 더 많은 피해를 입습니다 (공격자가 일반적으로 더 많은 특수 하드웨어를 보유하기 때문에 필요함).
비밀번호를 해시해야하는 경우 자신 만의 방법을 만들지 마십시오 . 표준 방법 : scrypt , bcrypt 또는 PBKDF2 .
댓글
- 젠장 다른 모든 보안 사이트에서 보안 사이트로 오셨는데 한 가지 분명한 점은 여러분이 대답하는 데 엄청난 노력을 기울 였다는 것입니다. 정확할뿐만 아니라 매우 철저합니다. 두 가지 대답을 선택할 수 있으면 좋겠지 만 여러분의 대답은 다음과 같았습니다. 제가 찾고있었습니다.
- @Griffin-둘 다 찬성 투표 할 수 있습니다. 또는 실제로-t 이상이있는 경우 ‘ wo 답변-도움이되었다고 생각하는 모든 것에 찬성 투표하십시오. 단 하나만 받아 들일 수 있더라도. 여기에있는 많은 질문에 한 가지 이상의 좋은 답변이 있으며, 때로는 ‘에서 주제를 더 잘 이해하기 위해 대부분의 답변을 읽는 것이 좋습니다. 예, 때로는 반대 투표를 한 사람들도 있습니다. 투표 (어느 쪽이든)를 통해 미래의 독자, 특히 특정 주제에 대해 아직 배우고있는 독자가 답변의 유효성을 결정할 수 있도록 도와줍니다. 😉
- 둘 다 찬성했습니다! 매우 유용했습니다.
- +1 : 모든 답변이 훌륭하지만이 답변은 I ‘ 완벽한 답변에 가깝습니다. / div> Stack Exchange에서 본 적이 있습니다. 내가 할 수 있다면 +10이 될 것입니다.
- @IlmariKaronen 이것이 ‘ 내가 여기 오는 것을 좋아하는 이유입니다.
Answer
암호화 해시 함수 는 “큰 믹싱 및 스크램블링”으로 설명 할 수있는 수학적 개체입니다. 약간의 “. 이들은 비트 시퀀스 (아마도 매우 긴 비트)를 입력으로 받아 고정 된 크기의 출력을 제공합니다. 대략적으로 말하면, 그것들은 너무 얽혀있어서 그들에 대한 비밀은 없지만 (단지 결정 론적 코드), 호출 된 기본 메소드를 제외하고는 아무도 그것들을 “반전”(주어진 출력에 대해 일치하는 입력을 찾는) 방법을 알아낼 수 없습니다. “luck”: 일치하는 항목을 찾을 때까지 임의 입력을 시도합니다.
해시 함수가 전혀 존재할 수 있다는 것이 과학적으로 어떻게 일어날 수 있는지는 좋은 질문입니다 .
해싱은 암호화가 아닙니다 . 해싱에는 비밀도없고 키도 없습니다.
해시 함수는 많은 용도로 사용됩니다. 그중 하나는 “비밀번호 저장”입니다. 해시 함수는 암호 저장에 좋은 것 같습니다. 비밀번호를 직접 저장하고 싶지 않습니다 (그렇지 않으면 공격자가 가끔 데이터베이스를 들여다 보면 너무 많은 정보를 얻을 수 있습니다. 토론은이 블로그 게시물 참조) ; 우리는 비밀번호 확인 토큰 을 저장하려고합니다 : 비밀번호 (사용자가 제시 한) 확인을 허용하지만 비밀번호 자체를 공개하지는 않는 것입니다. 그래서 아이디어는 : 암호의 해시를 저장합시다. 암호가 확인 될 때 우리는 해시를 계산하고 저장된 값과 일치하는지 확인합니다. 그러나 해시 값에서만 암호를 추측하는 것은 어렵습니다. 해시 함수는 “반전”에 대해 탄력적입니다 (위 참조).
암호는 특별한 종류의 데이터 (사람이 기억할 수있는 데이터)이므로 적절한 보안을 위해 “강화”가 필요합니다. 해시 함수 :
- 매우 느린 해시 함수를 원합니다.
- 우리는 하나 해시 함수를 원하지 않습니다. 그러나 많은 고유 한 해시 함수를 사용하므로 각 암호가 고유 한 해시 함수로 해시됩니다. 이것은 병렬 공격을 억제하는 것입니다. 단일 해시 함수를 여러 변형으로 바꾸는이 프로세스를 솔팅 이라고합니다.
을 참조하세요. a> 해싱 암호 주제에 대한 철저한 처리를 위해.
댓글
- 죄송합니다.하지만 귀하의 답변은 매우 철저하고 잘 정리되어 있지만 다른 답변은 제가 찾던 것과 비슷합니다.
답변
해싱은 일부 비트 문자열 (일반적으로 가변 길이)을 다른 비트 문자열 (일반적으로 더 작고 고정 길이)로 변환합니다.
해싱은 데이터 검색을위한 데이터베이스와 해시 테이블이라는 메모리 내 데이터 구조에서 사용됩니다. 이를 통해 문자열 또는 필드가 많은 복잡한 객체와 같은 임의의 데이터를 이진 숫자로 줄일 수 있으며,이 숫자는 관련 데이터를 가져 오기위한 희소 배열의 인덱스로 직접 사용할 수 있습니다 (해시 처리를위한 세부 정보 포함) 충돌).
위 방식으로 사용 된 해싱 함수는 암호화 해싱 함수의 “사촌”입니다. 그들은 다양한 요구 사항에 맞게 설계되었습니다. 계산 속도가 빨라야하며 좋은 배포를 달성해야합니다.
보안 컴퓨팅에서 암호화 해시는 데이터를 대표적인 작은 비트 문자열로 요약하는 데 사용됩니다. 암호화 기능에는 요구 사항이 다릅니다. 그들은 반전하기 어렵도록 설계되었습니다 ( “트랩 도어”또는 “단방향”기능). 뿐만 아니라 중요한 요구 사항은 주어진 평문과 해시 값에 대해 동일한 해시를 생성하는 또 다른 평문을 찾기가 어려워 야한다는 것입니다.
해싱은 암호뿐만 아니라, 그러나 데이터 무결성을 확인하기위한 체크섬 및 디지털 서명 구현의 일부로 사용됩니다. 큰 문서에 디지털 서명을하려면 단순히 문서를 해시하여 “다이제스트”(매우 긴 것이 해싱 될 때 해싱 함수의 출력에 사용되는 이름)를 생성해야합니다. 그런 다음이 다이제스트 만 공개 키 암호화 시스템을 통해 서명을 생성합니다. 약점을 확인할 수 있습니다. 공격자가 동일한 다이제스트를 가진 문서를 생성하는 데 성공하면 어떻게됩니까? 그러면 정품 문서 위에 생성 된 원본 서명이 실제로 위조 문서의 서명 인 것처럼 보입니다. 서명 이식 위조가 효과적으로 수행되었습니다.
암호 해싱을 사용하면 시스템에서 일반 텍스트 버전을 저장할 수 없습니다. 암호를 사용하지만 항목을 얻으려는 사용자가 해당 암호를 알고 있는지 여부를 확인할 수 있습니다. 해싱은 시스템이 일반 텍스트 암호 (매우 신중하게 보호되어야 함)를 저장하지 못하도록 할뿐만 아니라 해시가 공개적으로 노출 되더라도 암호가 여전히 안전 할 수있는 가능성을 허용합니다 (공개 키 암호화 방법과 유사) 시스템은 공개 키를 공개 할 수 있습니다). 그럼에도 불구하고 실제로 해시는 공용 액세스로부터 보호됩니다. 예를 들어 Unix 계열 시스템의 /etc/shadow
파일은 세계에서 읽을 수있는 /etc/passwd
파일을 보완합니다. .
해싱 함수는 무작위가 아닙니다. 그러나 무작위 화는 해시 코드를 조회하고 해당 암호를 검색 할 수있는 대규모 암호 및 해시 사전을 구축하는 공격자를 막기 위해 사용됩니다.
암호를보다 안전하게 해시하려면 간단히 추가 할 수 있습니다. “소금”이라고 불리는 임의의 비트. 물론 동일한 암호에 다른 솔트를 추가하면 다른 해시가 발생합니다 (충돌이 거의 또는 전혀 발생하지 않는 것이 좋습니다).
무작위 솔트가 32 비트 폭인 경우 이론적으로 하나의 암호는 40 억 가지 이상의 다른 방식으로 해시 할 수 있으므로 가능한 모든 해시의 사전 계산 된 사전을 갖는 것은 매우 비현실적입니다. 많은 암호.
물론, 사용자가 인증 될 때 그녀는이 솔트에 대해 아무것도 알지 못합니다. 솔트가 사용자 프로필의 해시와 함께 저장되기 때문에 괜찮습니다 (종종 해시와 함께 하나의 압축 된 비트 문자열로 결합 됨). 사용자의 비밀번호 입력이 검증 될 때 솔트는 모든 비밀번호에 추가됩니다. 그녀가 입력했기 때문에 해싱이 올바른 솔트로 수행됩니다. 암호가 정확하면 해시가 일치합니다. 사용중인 솔트도 사용자 프로필에서 가져 와서 올바른 것입니다.
이것이 임의성이 암호 해싱에 통합되는 방식입니다. 그래도 작동하도록 허용합니다.
해시를 크래킹하기 어렵게 만드는 것은 해시가 “트랩 도어”또는 “단방향”함수로 만들어 졌기 때문입니다. 수학에는 그러한 것의 많은 예가 있습니다. 예를 들어 , 단순 추가는 함정 문입니다. 합계를 생성하기 위해 정수를 추가하면 합계 만 알고 원래 숫자를 복구 할 수 없습니다.
암호 해시는 암호화 된 암호가 아닙니다. 공격자가 가진 경우 암호의 해시와 솔트를 확인하고 암호를 추측하면 로그인 인증 소프트웨어가 수행하는 것과 똑같은 방식으로 쉽게 확인할 수 있습니다. 그녀는 해싱 기능을 통해 암호와 솔트를 실행하고 올바른지 확인합니다. 해시가 나타납니다.
댓글
- 뛰어난 작문 능력과 y 전체적으로 정확한 답변을 이해하면서도 모든 요점을 다루고 훨씬 더 포괄적으로 만드는 자연스러운 흐름을 유지합니다. ‘ 쉬운 일이 아닙니다. 답변 해 주셔서 감사합니다.
- 매우 유익합니다. 모든 측면을 다루었습니다.
답변
해싱의 핵심 중 하나는 정보를 버리는 것입니다. 필요한 지식이 없어서 해시를 되돌릴 수 없습니다. 다음은 실행 가능한 (하지만 꽤 쓸모없는) 해싱 함수의 몇 가지 예입니다. 비밀번호를 알려 주시면 다음 중 하나를 수행 할 수 있습니다.
- 모음 수 세기
- 각 문자의 ASCII 코드를 가져 와서 모두 XOR하십시오.
- 암호의 바이너리 표현의 CRC32 체크섬을 취합니다. (이것은 실제로 암호화가 아닌 실제 해시입니다)
이러한 각각의 경우에는 프로세스를 되돌릴 수 없습니다. 대신 나중에 암호를 다시 입력하여 실행 한 계산이 일치하는지 확인하기 위해 프로세스를 다시 실행해야합니다.
For 예 : 처음에 암호 “monkey”를 제공하면 숫자 3 (모음 3 개)을 저장할 수 있습니다. 그런 다음 나중에 암호 “dragon”을 인증하려고 할 때 동일한 검사를 다시 실행하고 2를 얻습니다. 3과 일치하지 않습니다. 따라서 잘못된 암호를 입력 한 것으로 알고 있습니다. 그러나 “melissa”암호를 제공하면 올바른 암호를 입력했다고 잘못 추측 할 것입니다. 이것은 해시 충돌 입니다.
적용하는 규칙 세트는 주어진 암호가 해시 함수 임을 나타냅니다. 이 함수는 되돌릴 수 없기 때문에 “단방향”함수로 간주됩니다. 고품질 해시 함수는 잠재적 충돌 수를 제한하도록 설계되었으므로 해당 문제에 대해 걱정할 필요가 없습니다. 한 단계 더 나아가 암호화 해시 함수 는 주어진 출력과 일치 할 수있는 문자열을 찾기 어렵도록 설계되었습니다 ( 의도적으로 충돌을 생성 할 수도 있습니다). 또한 해시 출력에서 주어진 입력에 대해 수집 할 수있는 정보의 양을 제한하도록 설계되었습니다.
결과적으로 어떤 암호가 주어진 암호화 해시와 일치하는지 알 수있는 유일한 방법은 작동하는 것을 발견 할 때까지 모든 가능성을 시도하는 것입니다. 추가 대책 (salt, BPKDF2 등)은 암호를 추측하는 사람이 시도 할 때마다 더 많은 후프를 거치도록하여 추측 프로세스를 더욱 어렵게 만듭니다.
암호화 해시 함수가 어떻게 만드는지 완전히 설명했습니다. 작동하는 비밀번호를 찾기가 어렵습니다 (원래 비밀번호가 아니더라도).이를 “ 사전 이미지 공격 “. 위의 간단한 예에서 3 개의 모음을 포함하는 후보 암호로”melissa “를 사용하는 것이 그러한 공격의 예입니다.
암호화 해시 함수는 일반적으로 여러”를 통해 입력을 실행하여이를 수행합니다. 각 라운드의 출력이 다음 라운드에 대한 입력의 일부가됩니다.첫 번째 라운드의 입력을 파악하려면 두 번째 라운드의 입력을 파악해야합니다. 그러면 세 번째 라운드의 입력을 파악해야합니다. 즉, 각 구성 요소의 각 추측을 의미합니다. 길고 복잡한 계산 세트를 통해 확인해야합니다. Thomas Pornin은이 저항이 어떻게 작동하는지에 대한 아주 완벽한 설명 을 제공합니다. 이해하세요.
Answer
-
이 방정식을 충족하는 z의 상수 값을 결정합니다. xy ^ 7 + yz ^ 5 + x ^ 3z = 0. 도움이 필요하세요? 좋아요, x = 32. 그래도 해결할 수 없나요? 그러면 처음에는 답을 알 수 없습니다.
이 값을 단일 변수 방정식으로 줄여서 해당 단일 변수에 대해 6 학년 (아마도 계산기 필요)는 내가 신뢰하는 사람들과 만 공유 한 비밀입니다. z가 없으면 z는 무엇이든 될 수 있습니다. 그 값은 y에 따라 달라 지므로 상수, 알려진 y 없이는 만족스럽게 풀 수 없습니다. 그렇지 않으면 ” 당신의 가치를 아는 것은 내가 당신을 개인적으로 당신에게 줄만큼 충분히 믿지 않았기 때문입니다.
이것이 암호학의 기본 원리입니다; 수학 공식이나 다른 결정 론적 과정은 좋습니다. -문서화되고 공식의 가능한 변수 중 하나 이상을 공개적으로 알 수 있으므로 두 당사자가 서로가 암호화 한 내용을 해독 할 수 있도록 암호를 설정하는 방법에 동의 할 수 있습니다. 그러나 두 변수 비밀을 유지하십시오. 하나를 안다면 다른 하나를 발견 할 수 있습니다. 알아야 할 것은 열쇠이고 키로 발견 할 수있는 것은 메시지입니다.
해시의 경우 약간 다릅니다. 해시는 다른 비밀을 유지하기 위해 하나의 비밀을 유지할 필요가 없습니다. 대신 해시는 비가 역적 수학적 변환을 기반으로 작동합니다. H (x) = y에 대해 알려진 H -1 sup이 없습니다. > (y) = x는 y를 얻을 때까지 가능한 모든 x에 대해 H (x)를 시도하는 것을 제외하고는 일반적으로 방정식의 여러 중간 결과가 모호하기 때문입니다. 예를 들어 양수의 제곱근을 계산하면 기술적으로 둘 다 생성됩니다. 양수와 음수 결과는 결과를 생성하기 위해 자체적으로 곱해질 수 있습니다. 계수의 역은 유사하게 모호합니다. x mod 3에 의해 생성 된 숫자 1은 x = 3k + 1로 생성 될 수 있습니다. 이러한 유형의 “단방향”변환은 역 해시 함수를 계산하려는 시도가 무한한 가능성을 생성하는 방식으로 결합됩니다. 따라서이를 해결하는 가장 쉬운 (가장 쉬운) 방법은 하나의 출력이 일치 할 때까지 가능한 모든 입력을 시도하는 것입니다. 여전히 시간이 오래 걸립니다.
-
해시는 무작위가 아닙니다. 앞서 언급했듯이 해시는 되돌릴 수없는 수학적 연산의 결과입니다. 이 작업은 여전히 결정적이어야합니다. 일정한 입력이 주어지면 출력은 작업을 수행하는 횟수에 관계없이 일정합니다. 임의의 구성 요소가 없습니다.
혼란 스러울 수있는 부분은 해시가 시뮬레이션하는 것, 즉 랜덤 오라클 이라는 용어에 있습니다. 사진 기억력과 완벽한 난수를 생성하는 신비한 방법을 가진 작은 사람이있는 블랙 박스를 상상해보십시오. 당신은 종이에 무언가를 적고 남자가 그것을 얻는 슬롯을 통해 밀어 넣습니다. 그는 그것을 읽고 두 가지 중 하나가 발생합니다. 그가 이전에 읽지 않았거나,이 경우 그는 새로운 임의의 숫자를 생성하여 귀하에게 제공하여 귀하의 메시지와 숫자를 자신의 기억에 맡깁니다. 또는 그는이 정확한 내용을 읽었습니다 메시지 이전에 그는 처음 읽었을 때 생성 한 숫자를 기억하고 숫자를 제공합니다. 난수 생성기는 이미 생성 한 숫자를 생성하지 않으며 가능한 무한한 크기를 가지며 작은 사람은 메모리는 무제한이며 오류가 없습니다. 그러므로 작은 사람은 그가 메시지를 읽지 않았다면 결코 전에 메시지를 읽었다 고 생각하지 않을 것이고, 그가 전에 메시지를 읽었다는 것을 결코 잊지 않을 것입니다. 따라서 똑같은 메시지 나 같은 메시지에 대해 두 개의 다른 숫자를 결코 생성하지 않을 것입니다. 두 개의 서로 다른 메시지에 대한 숫자입니다.
이것이 해시 함수가 시뮬레이션하려고하는 것입니다. 그들은 사진 메모리로이 작은 사람을 모델링 할 수 없습니다. 왜냐하면 그것은 무한한 저장 공간과 무제한의 보편적 가용성을 필요로하기 때문입니다. 다른 방법으로 다른 장치에 연결되지 않은 장치. 대신 메시지를 해시 값으로 “다이제스트”하는 결정 론적이지만 보기 계산에 의존합니다. 동일한 해시 함수, 동일한 메시지가 주어지면 동일한 다이제스트를 생성합니다. 그러나 이러한 함수는 반환 할 수있는 해시 값의 수에 제한이 있습니다. 이로 인해 해시 충돌이라고하는 가능성이 생성됩니다. 해시 값보다 가능한 메시지가 더 많으므로 조만간 (희망적으로 나중에), 두 명의 다른 나 ssage는 동일한 해시를 생성합니다.
-
해시는 세 가지 기본 이유로 크랙 될 수 있습니다.첫째, 메시지의 결정적이고 수학적 파생물이기 때문에 수학자 (따라서 공격자)는 결국 메시지와 해시 사이 또는 두 메시지와 결과 해시 사이의 수학적 관계를 찾습니다. 한때 무작위로 보였던 것은 더 이상 그렇지 않습니다. 이는 발견 된 약점의 특성에 따라 여러 공격을 허용합니다. 메시지와 해시가 주어지면 충돌 메시지를 생성하는 알고리즘 방식이 있다면 문제입니다. 메시지를 조작하고 결과 해시를 예측하는 방법이 있다면 그것은 다른 문제입니다. 실제로 해시를 뒤집는 방법이있는 경우, 다시 해시 할 때 동일한 해시를 생성하는 메시지를 해시에서 생성하는 것은 “ 심각한 문제입니다.
둘째, 해시는 다이제스트 크기가 제한되어 있기 때문에 조만간 두 개의 메시지가 동일한 해시를 생성 할 것입니다. 즉, 공격자는 특정 해시를 생성하는 데 사용하는 메시지를 찾을 필요가 없습니다. ; 그가해야 할 일은 동일한 해시를 생성하는 메시지를 찾는 것입니다. 이것의 확률은 희박합니다. 이론적으로 가능한 많은 해시 중 하나의 기회이지만 무한한 경우보다 여전히 낫습니다.
마지막으로 가능한 많은 메시지가 있지만 훨씬 더 적습니다. 가능한 메시지 수 우리가 일반적으로 해시 함수에 제공하는 메시지는 일반적으로 언어, 주제, 전자 형식 및 목적을 기반으로 한 구조를 가지고 있습니다. 즉, 메시지의 일부가 주어지면 메시지의 다른 부분을 더 정확하게 추측 할 수 있습니다. 이는 정보 과학 용어로 해시로 변환 된 메시지가 해시 함수 자체보다 엔트로피 가 낮은 경우가 많다는 것을 의미합니다. 간단히 말해서 256 비트 다이제스트를 생성하는 해시 함수는 이론적으로 해당 비트의 모든 순열 (2 ^ 256)을 생성 할 수 있습니다. 그러나 공격을 위해 연구중인 시스템에서이 해시 함수에 입력 할 수있는 메시지가 10,000 개뿐이라면 가능한 2 ^ 256 해시 값 중 10,000 개만 볼 수 있으며 더 중요한 것은 최악의 경우 공격자는 원하는 해시 값을 생성하는 입력을 찾기 위해 가능한 입력 10,000 개를 모두 시도하면됩니다.
코멘트
- 그리고 이것이 …. 제가 IT 보안 ‘의 스택 교환 사이트를 좋아하는 이유입니다.
- 또한 설명 # 1의 정확히 내가 필요한 것입니다. 그러나 질문이 있습니다. ” 해시 “는 주어진 사물에 대한 숫자 버전과 같은 것 같습니다 (이 경우 비밀번호). 그래서 내가 웹 사이트를 가지고 있고 100,000 명이 가입한다면. 그런 다음 50 %는 암호를 사용합니다. ” password ”
비밀번호 ” 비밀번호 대신 여러 번?
- 그렇다면 ‘ 보안 해시 (> = 256 비트 다이제스트 크기)를 사용하고 ” 암호 “가 저장 용량을 늘릴 것입니다. 또한 공격자가 사용자 계정의 50 %가 동일한 암호 해시를 갖고 있음을 확인한 경우 ‘ 자신이 ‘ d는 하나의 암호를 해독하고 사용자 계정의 50 %에 액세스 할 수 있습니다. 비밀번호 해시를 ” 절약 “해야합니다. 다양한 방법이 있지만 최종 결과는 각 계정에 대한 추가 고유 솔트 값으로 인해 동일한 알고리즘에 의해 해시 된 동일한 암호가 다른 다이제스트를 생성한다는 것입니다.