-
해시 함수
- 임의의 길이인 데이터를 고정된 크기의 해시값으로 변환해주는 함수
* 데이터 그 자체를 비교하는 것이 아니고 해시함수로 계산된 해시값을 비교하여 데이터 비교
해시함수의 특성
1. 어떤 길이의 데이터도 입력으로 사용될 수 있다.
2. 결과는 정해진 길이로 나온다.
3. 계산 시간이 합리적으로 추정 가능해야 한다.
4. 입력길이에 제한이 없기 때문에 최소한 입력 길이에 선형적으로 비례하는 특성이 있어야 한다.
특징
1. 결과값이 중복될 가능성이 거의 없다.
2. 입력값을 알 수 없다.
3. 결과값을 알려주고 입력값을 찾을 수 있는 특별한 공식이 없다.(단방향 암호화 기법)
참고
1. 해시 알고리즘 및 암호화 알고리즘은 종류가 다양하며 모두에게 공개가 되어있다 심지어 해커에게도
2. 해시 알고리즘마다 hash길이가 다르고 이미 보안이 뚫린 해시 함수가 존재
암호화 해시함수는 이 해시함수의 부분집합으로 역상저항성과 제2역상저항성 그리고 충돌저항성을 가지고 있어
암호화에 활용될 수 있는 경우를 의미
1. 역상저항성 : 입력값 a에 의해 b가 출력되었다면 출력된 b값만 주어졌을 때 입력값인 a값을 찾는 것이 계산적으로 불가능
2. 제2역상저항성은 입력값 a와 출력값 b가 모두 주어졌을때 똑같은 b를 반환하는 a2를 찾아내거나 만들어내는 것이 계산적으로 불가능
3. 충돌저항성은 똑같은 b라는 출력값이 나오는 x가 단일하지않고 중복이 되는 또다른 xn을 발견하는 것이 계산적으로 어려운 성질
약한충돌내성 : 어느 메시지의 해시 값이 주어졌을 때 그 해시값과 동일한 메시지를 발견해내는 것이 매우 곤란한 성질
강한충돌내성 : 해시 값이 일치할 것 같은 서로 다른 2개의 메시지를 발견해내는 것이 매우 곤란한 성질
눈사태 효과
- 아주 작은 변화로도 결과값이 전혀 다르게 도출되는 효과
입력값에 점 하나만 추가되어도 전혀 다른 출력값이 출력된다.
해시와 암호화 알고리즘의 차이
- 둘다 암호화 기법이지만 hash는 단방향 암호화 기법, encryption은 양방향 암호화 기법
-> hash는 암호화만 , encryption은 암호화, 복호화 둘다
MD5 (Message-Digest algorithm 5)
- 128비트 암호화 해시 함수
임의의 길이의 메시지를 입력받아, 128비트 짜리 고정 길이의 출력값을 낸다
SHA(Secure Hash Algorithm)
- 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다.
SHA-256은 현재 블록체인에서 가장 많이 채택하여 사용되고 있는 암호 방식이다. 출력 속도가 빠르다는 장점을 갖고 있다. 또한 단방향성의 성질을 띄고 있는 암호화 방법으로 복호화가 불가능하다. SHA-384, 512, SHA-3보다는 유효 보호 수준이 낮을 지는 모르지만, 현재까지 안정성 문제에서도 큰 단점이 발견되지 않았고, 속도가 빠르기 때문에 인증서, 블록체인 등 많이 사용되고있으며, SHA-2라고 하면 SHA-256이라고 말할 정도로 상용화가 잘 되어있다