해싱
- 가장 많이 쓰이는 암호화 방식
- 암호화만 가능 (복호화는 불가능)
- 해시 함수(Hash Function)를 사용하여 암호화 진행.
해시 함수의 특징
- 항상 같은 길이의 문자열을 리턴
- 서로 다른 문자열에 동일한 해시 함수를 사용하면 반드시 다른 결과값이 나옴
- 동일한 문자열에 동일한 해시 함수를 사용하면 반드시 같은 결과값이 나옴.
Ex) SHA1에 특정 입력값을 넣었을 때 리턴 값
레인보우 테이블과 솔트(Salt)
레인보우 테이블
- 해시 함수 거치기 이전의 값을 알아낼 수 있도록 기록해놓은 표
- 동일한 문자열은 항상 같은 결과값이 나온다는 특성을 이용.
- 레인보우 테이블에 기록된 값의 경우, 유출 되었을 때 해싱 이전의 값을 알아낼 수 있으므로 보안상 위협이 될 수 있다.
솔트(Salt)
- (소금을 치듯이) 해싱 이전 값에 임의의 값을 더해 데이터가 유출 되더라도 해싱 이전의 값을 알아내기 어렵게 만드는 방법.
- 솔트를 사용하면 해싱된 값이 유출되더라도 솔트가 함께 유출된 것이 아니라면 해싱 이전의 값을 알아내는 것은 불가능에 가까움.
해싱의 목적
- 데이터 자체를 사용하는 것이 아니라, 데이터가 동일한 값인지 여부만 확인하는 것이 목적.
- 따라서 복호화가 불가능해도 상관 X
- 민감한 데이터를 다뤄야 하는 상황에서 데이터 유출의 위험성은 줄이면서 데이터의 유효성을 검증하기 위해 사용되는 단방향 암호화 방식.
Ex) 사이트 비밀번호
- 비밀번호를 데이터베이스에 저장할 때, 복호화가 불가능하도록 해싱해서 저장.
- 사이트 관리자도 정확한 비밀번호를 알 수 없음.
- 로그인 시 입력한 값을 해싱해서 데이터베이스에 저장된 해싱된 비밀번호와 일치하는지 비교