해시(Hash)

김효성·2022년 11월 26일
0

CS 공부일지

목록 보기
13/15

해시(Hash)는 무엇인가?

해시란 단방향 암호화 기법으로 해시함수를 이용하여 고정된 길이의 비트열로 변경한다.
(여기서 단방향 암호화 기법은 암호화는 수행하지만 복호화는 불가능한 알고리즘을 말한다.)

해시를 만들기 위해선 해시함수가 필요한데 해시함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 출력하는 함수이다.

말 그대로 해시함수는 해시를 만드는 함수!

  • 키 : 매핑 전 원래 데이터의 값
  • 해시값 : 매핑 후 데이터의 값
  • 해싱 : 매핑하는 과정
  • 해시테이블 : 해시값+데이터색인 주소

해시함수의 특징

  • 입력값이 일부만 변경되어도 전혀 다른 해시값을 출력한다.
  • 입력값 상관없이 고정된 길이의 해시값을 출력한다.
  • 복호화가 불가능하다 (단방향 암호화 기법의 특징)
  • 복잡하지 않은 알고리즘으로 구현되기 때문에 상대적으로 CPU,메모리 같은 시스템 자원을 덜 소모한다.
  • 같은 입력값에 대해서는 같은 출력값을 보장

해시함수의 사용 목적

해시함수의 가장 큰 특징은 입력값이 일부만 변경되어도 전혀 다른 값을 출력한다는 것이다.
이러한 특징으로 인해 해시함수를 사용하는 목적은 메시지의 오류나 변조를 탐지할 수 있는 무결성이다.
대표적으로 블록체인, 비밀번호, 전자서명, 전자상거래 등에서 사용한다.

해시함수의 종류

  1. MD5
  • 임의의 길이를 입력받아 128bit 길이의 해시값을 출력한다.
  • 단방향 알고리즘
  • 심각한 보안 문제로 보안용도로 사용하지 않는다.
  1. SHA
  • 처음 SHA-0으로 정의되어 발표되었지만 위험성이 발견되어 SH-1이 발표되고 이를 사용.
  • SH-1 역시 위험성이 발견되어 SHA-2를 사용
  • SH-2는 해시 길이에 따라 SHA-224,SHA-256 등의 비트를 선택해서 사용. 해시 길이가 길수록 안전.
  1. 레인보우 테이블
  • 해시함수를 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 표이다.
  • MD5가 쉽게 복호화 될 수 있다는 것을 보여준 해킹비법 중 하나이다.

해시함수 문제점

해시함수의 특징 중 자원소모가 적어 처리속도가 빠르다고 하지만, 이건 장점이자 단점이다. 무차별 대입 공격을 받을 수 있기 때문이다.

해시함수 문제점 해결 방법

  1. 솔팅 : 패스워드에 임의의 문자열 salt를 추가하여 다이제스트 생성, 레인보우테이블 공격을 무의미하게 한다. 솔트는 최소 128비트 정도 되어야 안전하다.
  2. 키 스트레칭 : 해시를 여러번 반복하여 시간을 늘림으로써 Brute Force Attack에 대비한다.
  • Brute Force Attack : 차별 대입 공격은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다. 대부분의 암호화 방식은 이론적으로 무차별 대입 공격에 대해 안전하지 못하며, 충분한 시간이 존재한다면 암호화된 정보를 해독할 수 있다. 하지만 대부분의 경우 모든 계산을 마치려면 실용적이지 못한 비용이나 시간을 소요하게 되어, 공격을 방지하게 한다. 암호의 '취약점'이라는 의미에는 무차별 대입 공격보다 더 빠른 공격 방법이 존재한다는 것을 의미한다.
profile
인생은 단방향 디자인 패턴 🏃

0개의 댓글