암호 해시 함수는 개별 파일이나 암호와 같은 데이터에서 실행되어 체크섬이라는 값을 생성 할 수있는 알고리즘입니다.
암호화 해시 기능의 주요 용도는 데이터 조각의 진위 여부를 확인하는 것입니다. 두 파일은 동일한 암호화 해시 함수를 사용하여 각 파일에서 생성 된 체크섬이 동일한 경우에만 동일하다고 가정 할 수 있습니다.
일반적으로 사용되는 일부 암호화 해시 함수에는 MD5 및 SHA-1이 있지만 다른 많은 암호 해시 함수도 있습니다.
암호화 해시 함수는 종종 "해시 함수"라고하지만 기술적으로 올바르지 않습니다. 해시 함수는 CRC (Cyclic Redundancy Check)와 같은 다른 종류의 알고리즘과 함께 암호화 해시 함수를 포괄하는 일반적인 용어입니다.
암호화 해시 함수 : 사용 사례
Firefox 브라우저의 최신 버전을 다운로드한다고합시다. 어떤 이유로 Mozilla의 사이트가 아닌 다른 사이트에서 다운로드해야했습니다. 신뢰할 수있는 사이트에서 호스팅되지 않기 때문에 다운로드 한 설치 파일이 Mozilla에서 제공하는 것과 정확히 동일해야합니다.
체크섬 계산기를 사용하여 SHA-2와 같은 특정 암호화 해시 함수를 사용하여 체크섬을 계산 한 다음이를 모질라 사이트에 게시 된 것과 비교합니다. 동등한 것이라면 모질라가 갖고있는 다운로드가 있다는 것을 합리적으로 확신 할 수 있습니다.
암호화 해쉬 함수를 반대로 바꿀 수 있습니까?
암호화 해시 기능은 작성한 체크섬을 원래 텍스트로 되돌릴 수 없도록 설계되었습니다. 그러나 데이터를 되돌릴 수는 없지만 데이터를 보호하기 위해 100 % 보장되지는 않습니다.
해커는 무지개 표를 사용하여 체크섬의 일반 텍스트를 파악할 수 있습니다.
레인보우 테이블은 해당 일반 텍스트 값과 함께 수천 개, 수백만 개 또는 수십억 개의 체크섬을 나열하는 사전입니다.
암호화 해시 알고리즘을 기술적으로 뒤집는 것은 아니지만 그렇게하는 것이 간단 할 수도 있습니다. 현실에서는 무지개 테이블이 존재할 수있는 모든 체크섬을 나열 할 수 없기 때문에 보통 약한 암호와 같은 단순한 구문에만 유용합니다.
다음은 SHA-1 암호화 해시 함수를 사용할 때 작동하는 방법을 보여주는 무지개 테이블의 단순화 된 버전입니다.
일반 텍스트 | SHA-1 체크섬 |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
비밀 번호 1 | e38ad214943daad1d64c102faec29de4afe9da3d |
난 내 개를 사랑한다 | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
dallas1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
해커는 값을 알아 내기 위해 체크섬을 생성하는 데 사용 된 암호화 해시 알고리즘을 알아야합니다.
추가 보호를 위해 사용자 암호를 저장하는 일부 웹 사이트는 값이 생성 된 후 저장되기 전에 암호화 해시 알고리즘에 대한 추가 기능을 수행합니다. 이 프로세스는 웹 서버 만 이해하고 원래 체크섬과 일치하지 않는 새 값을 생성합니다.
예를 들어 암호가 입력되고 체크섬이 생성 된 후에 암호 데이터베이스에 저장되기 전에 여러 부분으로 분리되어 재 배열되거나 특정 문자가 다른 문자로 교체 될 수 있습니다. 다음 번에 사용자가 사인온 할 때 인증을 시도하면 웹 서버는이 추가 기능을 되돌리고 원래의 체크섬이 다시 생성되어 사용자의 비밀번호가 유효한지 확인합니다.
이 단계를 수행하면 모든 체크섬이 도용 된 해킹의 유용성이 제한됩니다. 아이디어는 알 수없는 기능을 수행하는 것이므로 해커가 암호화 해시 알고리즘을 알고 있지만 사용자 정의 암호 알고리즘을 아는 경우 비밀번호 체크섬을 알면 도움이되지 않습니다.
암호 및 암호화 해시 함수
데이터베이스는 무지개 테이블과 유사한 방식으로 사용자 암호를 저장합니다. 암호를 입력하면 체크섬이 생성되고 사용자 이름이 기록 된 것과 비교됩니다. 두 개가 동일한 경우 액세스 권한이 부여됩니다.
암호화 해시 함수가 비가역 체크섬을 생성 할 경우 암호를 다음과 같이 간단하게 만들면 안전할까요? 12345, 대신에 12@34$5체크섬 자체를 이해할 수 없기 때문에 간단하게? 아니, 여기에 이유가있다.
이 두 암호는 체크섬 만보고 해독 할 수 없습니다.
12345 용 MD5 : 827ccb0eea8a706c4c34a16891f84e7b
12 @ 34 $ 5에 대한 MD5 : a4d3cc004f487b18b2ccd4853053818b
언뜻보기에이 암호 중 하나를 사용하는 것이 좋다고 생각할 수도 있습니다. 이것은 침입자가 아무도하지 않는 MD5 체크섬을 추측하여 암호를 알아 내려고 시도한 경우에 해당하지만 일반적인 공격 인 무차별 대항 공격 또는 사전 공격이 수행되는 경우에는 사실이 아닙니다.
무작위 공격은 암호를 추측 할 때 여러 번의 임의의 찌르기가 수행 될 때 발생합니다. 이 경우 추측하기 쉽습니다. 12345, 다른 하나를 무작위로 찾아내는 것은 꽤 어렵습니다. 사전 공격은 공격자가 공통적 인 (일반적이지 않은) 암호 목록에서 모든 단어, 숫자 또는 구를 시도 할 수 있다는 점에서 유사합니다.12345 이러한 공통 암호 중 하나입니다.
암호 해시 함수가 추측하기 어렵지 않은 체크섬을 생성하더라도 모든 온라인 및 로컬 사용자 계정에 대해 복잡한 암호를 사용해야합니다.
암호화 해시 함수에 대한 추가 정보
암호화 해시 함수가 암호화와 관련되어있는 것처럼 보일 수도 있지만 두 가지가 다른 방식으로 작동합니다.
암호화는 무언가를 암호화하여 읽을 수 없도록 만든 다음 나중에 다시 정상적으로 사용하기 위해 암호를 해독하는 양방향 프로세스입니다. 저장 한 파일을 암호화하여 액세스하는 모든 사람이 파일을 사용할 수 없도록하거나 파일 전송 암호화를 사용하여 업로드하거나 온라인에서 다운로드하는 것과 같이 네트워크를 통해 이동하는 파일을 암호화 할 수 있습니다.
암호화 해시 기능은 체크섬이 특별한 dehashing 암호로 바뀌는 것을 의미하지 않는다는 점에서 다르게 작동합니다. 암호 해시 함수의 유일한 용도는 파일 다운로드, 암호 저장 및 데이터베이스에서 데이터 가져 오기와 같은 두 가지 데이터를 비교하는 것입니다.
암호화 해시 기능이 서로 다른 데이터 조각에 대해 동일한 체크섬을 생성 할 수 있습니다. 이런 일이 발생하면 충돌이라고 불리는데, 이는 암호화 해시 기능의 모든 부분이 모든 데이터 입력에 대해 고유 한 체크섬을 만드는 것임을 고려하면 큰 문제입니다.
각 암호화 해시 함수는 입력 데이터에 관계없이 고정 길이 값을 생성하기 때문에 충돌이 발생할 수 있습니다. 예를 들어, MD5 암호화 해시 함수는 전혀 다른 세 개의 데이터 블록에 대해 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 및 e10adc3949ba59abbe56e057f20f883e를 생성합니다.
첫 번째 체크섬은 12345. 두 번째는 700 자 이상의 문자와 숫자로 생성되었으며 세 번째 문자는 123456.
세 입력은 모두 길이가 다르지만 결과는 MD5 체크섬이 사용 된 이후 항상 32 자입니다.
입력의 작은 변화가 완전히 다른 체크섬을 생성하기 때문에 생성 될 수있는 체크섬의 수에는 제한이 없습니다. 하나의 암호화 해시 함수가 생성 할 수있는 체크섬의 수에는 제한이 있기 때문에 항상 충돌이 발생할 수 있습니다.
이것이 다른 암호화 해시 함수가 생성 된 이유입니다. MD5는 32 문자 값을 생성하지만 SHA-1은 40 문자를 생성하고 SHA-2 (512)는 128을 생성합니다. 체크섬에 포함 된 문자 수가 많을수록 충돌이 발생할 가능성이 줄어 듭니다.