** 해시함수
임의의 길이의 문자열(평문)을 입력받아 고정된 길이(128bit, 160bit, 256bit)의 해시값을 출력해주는 함수이다.
평문으로 해시값을 구할 수는 있지만 해시값으로 평문을 구할 수 없다.
- 해시 값(hash value): 매핑 후 데이터 값
- 키(key): 매핑 전 원래 데이터
- 해시 테이블(hash table): 해시값 + 데이터의 색인 주소
- 해싱(hashing): 매핑하는 과정

해시 함수는 보통의 입력 범위보다 출력 범위가 좁은 경우가 많기 때문에, 입력이 다른 평문이 서로 같은 해시값으로 출력되는 경우도 드물게 존재한다. 이런 경우를 충돌이라고 한다. 위 사진에서 John smith와 Sandra Dee라는 key 값이 충돌이 일어난 경우다.
** 해시 알고리즘
Message-Digest Algorithm(MD), Secure Hash Algorithm(SHA) 등이 있다.
① MD5
- 임의의 값을 입력 받아서 128bit의 해시 값을 출력하는 알고리즘
- 패스워드 암호화에 많이 사용된다
- 해시값에서 평문을 복원하는 것이 불가능하다
② SHA
- SHA-0, SHA-1은 160bit의 해시값을 출력하는 알고리즘
- SHA-0의 위험성을 개선한 버전이 SHA-1, SHA-1의 위험성을 개선한 버전이 SHA-2
③ SHA-2
- 해시 길이에 따라 SHA-225, SHA-256, SHA-384, SHA-512이 있다.
- 해시 길이가 길수록 더 안전하다
** 보안에서 해시를 사용하는 이유
① 키와 해시값 사이의 연관이 없기 때문에 해시값만 가지고 키를 복원하기 어렵다
② 해시 함수의 결과물은 고정된 숫자로, 원래 정보는 소실되므로 키를 알 수 없다.
'Web Hacking Study > 웹해킹' 카테고리의 다른 글
| XSS(Cross Site Scripting) (0) | 2022.04.21 |
|---|---|
| Ubuntu 20.04 한글 입력 설정하기 (0) | 2022.04.20 |
| 로그인 로직 케이스별 SQL Injection 인증 우회 (+해시, 개행) (0) | 2022.04.13 |
| 해시(md5) 적용하기 (0) | 2022.04.11 |
| 로그인 로직 케이스별 SQL Injection 인증 우회(식별/인증 동시&분리) (0) | 2022.04.05 |
댓글