Hash 란?
Hash → 다지다. (어떤 데이터를 다지면 원래 상태로 되돌릴 수 없다.)
대표적인 단방향 암호와 기법으로 Hash Function(알고리즘)을 이용하여 임의의 길이의 데이터를 고정된 길이의 암호화된 문자열(비트열)로 바꾸는 것을 의미한다.
1) 복잡하지 않은 알고리즘으로 구현되어 있기 속도가 빠르다.(빠른 만큼 무차별 대입 공격을 받을 수 있다.)
2) 암호화는 수행하지만 복호화는 불가능한 알고리즘
- 무결성(Integrity)
어떠한 정보가 원본으로 부터 회손되었거나 조작되지 않았는지 파악할때 hash를 유용하게 사용한다.
(※ Ex : MySQL을 다운로드 받을 때 다운로드 받는 파일이 진짜 올바른 파일인지 hash 알고리즘을 통해 만들어진 값을 올려놓아서 사용자는 파일을 hash 알고리즘을 통해 직접 값을 얻어 비교해 볼 수 있다. 이를 통해 무결성을 확인이 가능하다.)
Hash Function(알고리즘) 이란?
임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수
매핑하는 과정(hashing)
해시값+데이터 색인 주소(hash table)
해시함수를 통과 하기전의 원본 데이터를 메세지(message)라고 부르고
통과된 이후의 데이터를 다이제스트(digest)라고 부른다.
- 위 내용들을 통해 hash값을 만들어 주는 사이트
여러 알고리즘이 있으나 보안이 뚤리지 않은 SHA-256, SHA-512을 사용하기를 권고하고 있다.
3. 인증 방법, 해킹 차단 방법
해시 알고리즘은 어떤 입력값인지 몰라도 해시된 값이 일치하면 입력이 같기 때문에 이를 이용해 인증을 처리한다.
고정된 길이의 같은 값을 리턴하기 때문에 해커의 공격에 100% 안전하지 않는데 아래와 같은 방법이 있다.
- 솔팅(salting)
패스워드에 임의의 문자열 salt를 추가하여 다이제스트 생성한다. 다이제스트를 알아 내어도 결국 salt를 알아야 하기 때문에 레인보우테이블 공격을 무의미하게 한다.
- 레인보우테이블 공격
해시함수를 사용하여 만들어낼 수 있는 값(다이제스트)들을 대량으로 저장한 표
(이 표를 활용하여 다이제스트 값을 통해 메세지 값을 알아낼 수 있다.)
- 키 스트레칭
해시를 여러 번 반복하여 시간을 늘림으로써 무차별 대입 공격(Brute force attack)에 대비한다. 쉽게 말해 다이제스트를 해시 함수로 다이제스트로 만드는 것이다.
해시 함수를 여러번 돌리는 만큼 다이제스트를 얻는데 그만큼 시간이 소요되게 되고 더 많은 해싱을 해야하는 해커 입장에서는 훨씬 더 많은 시간이 소요되게 된다.
- 무차별 대입 공격 (Brute force attack)
빠르게 입력해서 다이제스트를 얻을 수 있음을 이용해서 무차별 대입을 하여 같은 값을 찾아낸다. (현실적으로 모든 값을 대입해서 찾아내는 것은 불가능 하지만 사람은 누구나 자신이 기억하기 쉽도록 상징성 있는 문자를 통해서 비밀번호를 사용함을 이용한다.)
💡 참고링크
https://ru-magazine.tistory.com/47 https://st-lab.tistory.com/100
'정보보안' 카테고리의 다른 글
PKI 인증 체계 (0) | 2023.08.10 |
---|---|
CA, x509 (0) | 2023.08.10 |
전자서명, 전자서명 생성 / 검증 (0) | 2023.08.10 |
양방향 암호화 기법 (0) | 2023.08.10 |
보안 개념 (0) | 2023.08.10 |