0. 해시 ( Hash ) 의 정의
해시란 단방향 암호화 기법으로 해시함수를 이용하여 고정된 길이의 비트열로 변경한다.
( 단방향 암호화 기법은 암호화는 수행하지만 복호화는 불가능한 알고리즘을 말한다.)
해시를 만들기 위해선 해시함수가 필요한데 해시함수는 임의의 길이의 데이터를 고정된 길이의
데이터를 출력하는 함수다.
말 그대로 해시함수는 해시를 만드는 함수이다.
이때 매핑 전 원래 데이터의 값을 키, 매핑 후 데이터의 값을 해시값, 매핑하는 과정을 해싱,
해시값+데이터색인 주소를 해시테이블이라고 한다.
1. 해시 함수의 특징
- 입력값이 일부만 변경되어도 전혀 다른 해시값을 출력한다. [눈사태 효과]
- 입력값 상관없이 고정된 길이의 해시값을 출력한다.
- 복호화 불가능하다. [단방향 암호화 기법의 특징]
- 복잡하지 않은 알고리즘으로 구현되기 때문에 상대적으로 CPU, 메모리 같은 시스템 자원을 덜 소모한다.
- 같은 입력값에 대해서는 같은 출력값을 보장
2. 해시 함수의 문제점
- 해시함수의 특징 중 자원소모가 적어 처리속도가 빠르다고 했지만, 이건 장점이자 단점이다. 무차별 대입 공격을 받을 수 있기 때문이다.
- 레인보우 테이블 공격 (8번 확인)
3. 해시 함수의 문제점 해결
- 솔팅 : 패스워드에 임의의 문자열 salt를 추가하여 다이제스트 생성, 레인보우테이블 공격을 무의미하게 한다. 솔트는 최소 128bit 정도 되어야 안전하다.
- 키 스트레칭 : 해시를 여러 번 반복하여 시간을 늘림으로써 Brute force attack에 대비한다.
4. 사용 목적
해시함수의 가장 큰 특징은 입력값이 일부만 변경되어도 전혀 다른 값을 출력한다는 것이다.
이러한 특징으로 인하여 해시함수를 사용하는 목적은 메시지의 오류나 변조를 탐지할 수 있는 무결성이다.
이 기술을 사용하는 대표적인 예는 블록체인 이다. 그 외에 비밀번호, 전자서명, 전자투표, 전자상거래 등에 사용된다.
5. 해시 함수 알고리즘 종류
- 대표적인 해시 알고리즘의 종류로는 SHA(SHA-0, SHA-1, SHA-3, SHA-256, SHA-512, SHA-3), MD5 등이 있고 그 외에도 많은 알고리즘이 존재한다.
6. MD5 ( Message - Digest algorithm 5 )
- 임의의 길이를 입력받아 128bit 길이의 해시값을 출력한다.
- 단방향 알고리즘
- 현재는 심각한 보안 문제로 인하여 MD5를 보안 관련 용도로 사용하지 않는다.
- 2008년에는 MD5의 결함을 이용해 SSL 인증서를 변조하는 것이 발견되었다.
7. SHA
- 처음 SHA-0으로 정의되어 발표되었지만 바로 위험성이 발견되어 이를 개선한 SHA-1이 발표되었고, 널리 사용되었다.
- SHA-1 역시 충돌을 이용한 위험성이 발견되어 SHA-2가 발표되었다.
- SHA-2는 해시 길이에 따라 SHA-224, SHA-256, SHA-384, SHA-512 비트를 선택해서 사용한다. 해시 길이가 길수록 더 안전하다.
- ( "ABC" 문자열을 SHA-512로 변환 397118FDAC8D83AD98813C50759C85B8C47565D8268BF10DA483153B747A74743A58A90E85AA9F705CE6984FFC128DB567489817E4092D050D8A1CC596DDC119 )
( "ABC" 문자열을 SHA-256으로 변환 B5D4045C3F466FA91FE2CC6ABE79232A1A57CDF104F7A26E716E0A1E2789DF78 ) - 2012년에는 안정성이 높은 SHA-3이 발표되었다.
8. 레인보우 테이블
- 해시함수(MD-5, SHA-1, SHA-2)를 사용하여 만들어낼 수 있는 값들을 대량으로 저장한 표이다.
- MD5가 쉽게 복호화될 수 있다는 것을 보여준 해킹비법 중 하나이다.
9. 해시값으로 converting 해주는 사이트
https://www.convertstring.com/
MD5, SHA 말고도 BASE64, HEX, URL 인코딩 디코딩 등으로 변환해주는 온라인사이트이다.
참고
'IT 지식 > IT 정보' 카테고리의 다른 글
웹 서버와 WAS의 차이 (0) | 2022.12.19 |
---|---|
NAT ( Network Address Translation ) 설명 (0) | 2022.12.16 |
방화벽 ( Firewall ) 의 구성 형태 (0) | 2022.12.14 |
방화벽 ( Firewall ) 개념 , 기능, 동작 방식 (0) | 2022.12.13 |
SEED 암호화 개념 (0) | 2022.12.12 |