일련의 정보를 임의의 방식을 사용하여 다른 형태로 변환하여 해당 방식에 대한 정보를 소유한 사람을 제외하고 이해할 수 없도록 '알고리즘'을 이용해 정보를 관리하는 과정
암호화에는 여러가지 방법이 있으며, 기본적으로 암호화는 쉬우나 복호화는 어려워야 한다.
Hashing : 어떠한 문자열에 임의의 연산을 적용하여 다른 문자열로 변환
Hashing 3가지 철칙
decoding(복호화)은 오래 걸리고, encoding(암호화)은 짧게 걸려야 함
최대한 다른 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가져야 한다.
아주 작은 단위의 변경이 있더라도 반환되는 해시값은 완전히 다른 값을 가져야 한다.
Hashing 알고리즘 : 대표적으로 SHA1, 요즘에는 SHA256을 사용
Salt
Salt 목적
Salt 주의 사항
초기에는 일반 텍스트로 암호를 저장
SHA-256과 같은 단방향 해시를 실행한 후 암호를 저장
솔티드 패스워드(salted password)를 사용
적응형 단방향 함수(adaptive one-way function)로 비밀번호를 저장하는 것을 추천
사용하는 부분에서 장기 자격 증명(사용자 이름 및 암호), 단기 자격 증명(세션, OAuth 토큰 등)으로 바꾸는게 좋습니다.