정보보안 영역에서는 기밀성과 무결성을 위해 해시함수를 사용한다.
비밀번호를 해시함수에 통과시키면 고정길이의 해시값으로 출력된다.
해시함수의 필요조건
1. 해시함수를 통과히기 전의 입력값을 다시 알아낼 수가 없다(복호화의 어려움)
2. 아무리 긴 입력값이라하더도 정해진 길이의 값으로 출력(문서 축약)
3. 입력값의 아주 작은 변화가 출력값 전체를 변화(위변조 여부 검증)
해시함수의 특징은 비밀번호 암호화, 전자서명, 블록체인 등의 기반 기술로 이용
정보보안에서 사용되는 해시함수는 MD5, SHA1, SHA-256
MD5와 SHA1은 안전성이 낮아 사용 금기
안정성을 논하는 기준은 '무차별 대입을 통해 해시값과 일치하는 값을 찾을 수 있느냐'인데,
MD5와 SHA1은 다시 해시알고리즘에 비해 경우의 수가 적어 위험하다는 판단이다.
해시함수가 SHA-256은 256bit(32bytes)의 해시값을 가지는 알고리즘으로 2^256 = (2^4)^64, 1개의 문자는 2^4이기 때문에 출력은 64자리의 문자가 된다. 그래서 64자리의 문자가 출력된다. 출력되는 문자의 갯수가 많을수록 경우의 수는 늘어나고, 해시값을 알아내기는 더 어려워진다.
단, 해시함수의 비트 수가 늘어나고, 해시값의 문자열 길이가 늘어날수록 서비스의 성능은 저할될 수밖에 없다. 해시함수를 적절하게 사용하려면 성능과 보안의 Trade-off 관계를 고려하여 적용이 필요하다.
출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jvioonpe&logNo=220708952160