파일 다운로드할 때 MD5, SHA256 체크섬이라는 게 있다. 파일이 변조되지 않았는지 확인하는 용도라고 한다.
해시란
임의 길이의 데이터를 고정 길이의 값으로 바꾸는 함수다. 같은 입력은 항상 같은 출력이 나온다. 조금만 달라도 완전히 다른 값이 나온다.
MD5
128비트(32자) 해시다. 빠르지만 보안상 취약점이 발견돼서 암호용으로는 안 쓴다. 파일 무결성 체크 정도로만 쓴다. 해시 생성기로 만들어볼 수 있다.
SHA256
256비트(64자) 해시다. 비트코인에서도 쓰는 안전한 알고리즘이다. 비밀번호 저장 등 보안이 중요한 곳에 쓴다.
활용 사례
파일 다운로드 후 해시값 비교로 정상 파일인지 확인할 수 있다. 비밀번호는 해시로 저장해서 원본을 모르게 한다. 온라인 도구로 쉽게 생성 가능하다.
암호화와 해시의 차이
암호화는 복호화가 가능하고 해시는 불가능하다. 비밀번호는 해시로 저장하고, 개인정보는 암호화로 저장한다. 용도에 맞게 선택해야 한다. 잘못 쓰면 보안 사고로 이어질 수 있다. 해시 생성 도구로 테스트해볼 수 있다.
보안의 기본 원리
해시는 비밀번호 저장의 기본입니다. 원본으로 되돌릴 수 없다는 특성이 보안을 가능하게 하죠. SHA256이 더 안전한 이유도 이해하면 좋습니다. 해시 생성 도구로 같은 입력에 같은 출력이 나오는지 확인해보세요.
솔트를 추가한 해시는 같은 비밀번호도 다른 값이 나와서 더 안전합니다.
bcrypt 같은 느린 해시 함수를 쓰면 무차별 대입 공격을 어렵게 만들 수 있습니다.