카테고리 없음

진짜 해시 발표

행복하게사는게꿈 2020. 10. 14. 09:03

해시 발표

안녕하세요 해시함수에 대해 설명하게 된 이재호라고 합니다.

1. 해시함수란?

2. 해시함수를 쓰는 이유
  
  3. 해시함수를 어디서 쓰는가

에 대해서 설명을 하도록 하겠습니다.




해시함수는 input으로 어떤 길이의 메시지가 들어오든 output으로 일정한 길이의 문자열을 만들어 매핑해주는 기능을 합니다.

* 해시 함수 그림
메시지 -> 해시함수 -> 해시 값(다이제스트)


우선 해시함수는 배열의 삽입/삭제 시 발생하는 비효율성과 링크드 리스트의 조회 시 발생하는 비효율성을 극복하고자 나왔습니다.

hash는 내부적으로 배열을 사용하여 데이터를 저장하기 때문에 빠른 검색 속도
 
데이터의 삽입과 삭제 시 기존 데이터를 밀어내거나 채우는 작업이 필요 없도록 특별한 알고리즘을 이용하여 데이터와
 
연관된 고유한 숫자를 만들어 낸 뒤 이를 인덱스로 사용
 
특정 데이터가 저장되는 인덱스를 그 데이터만의 고유한 위치이기 때문에 삽입시 다른 데이터의 사이에 끼어들거나
 
삭제시 다른 데이터로 채울 필요가 없으므로 삽입, 삭제 시 데이터의 이동이 없도록 만들어진 구조


특성

1. 산사태
 
  2. 입력값이 동일하면 동일한 해시값이 나와야함

  3. 계산 시간이 합리적으로 추정 가능해야 한다.


이러한 해시함수의 단점으로는 충분한 메모리, 그리고 충돌이 발생할 가능성이 있다는 것인데 

충돌이란 서로 다른 입력데이터가  동일한 해시값을 갖는 경우를 말하는데

충돌을 극복하기 위한 방법으로

1. .체이닝

2. 선형탐사(Linear probing)



이러한 해시함수의 특성에 몇가지를 더하면 유명한 비트코인에서 사용하는 암호화 해시함수로서의 조건을 만족하게 되는데

암호화 해시함수는 

1. 역상저항성, 2. 제2역상저항성, 3. 충돌저항성의 특징을 추가로 갖는다.

역상저항성은 입력값 a에 대해 b가 출력되었다면 b값만 주어졌을 때 입력값인 a값을 찾는 것이 계산적으로 불가능

제2 역상저상성은 입력값 a와 출력값 b가 모두 주어졌을 때 똑같은 b를 반환하는 a2를 찾아내거나 만들어내는 것이 계산적으로 불가능

충돌저항성은 똑같은 b라는 출력값이 나오는 x가 단일하지 않고 중복이 되는 또 다른 xn을 발견하는 것이 계산적으로 어려운 성질


이러한 암호화 해시함수의 예제로는 md5, sha등을 들 수 있는데

MD5 (Message-Digest algorithm 5)
 
 - 128비트 암호화 해시 함수
 
 임의의 길이의 메시지를 입력받아, 128비트(32자리수) 짜리 고정 길이의 출력값을 낸다
 
SHA(Secure Hash Algorithm)
 
 - 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다.
 
SHA-256은 현재 블록체인에서 가장 많이 채택하여 사용되고 있는 암호 방식이다. 출력 속도가 빠르다는 장점을 갖고 있다. 
또한 단방향성의 성질을 띄고 있는 암호화 방법으로 복호화가 불가능하다. SHA-384, 512, SHA-3보다는 유효 보호 수준이 낮을 지는 모르지만, 
현재까지 안정성 문제에서도 큰 단점이 발견되지 않았고, 속도가 빠르기 때문에 인증서, 블록체인 등 많이 사용되고있으며, SHA-2라고 하면 SHA-256이라고 말할 정도로 상용화가 잘 되어있다