사용자의 패스워드는 사용자가 우리의 프로덕트를 사용하고 싶고, 그렇기 때문에 우리의 제품과 서비스를 믿고 자신의 개인정보를 패스워드 와 함께 우리에게 맡기는거라고 생각하기 때문에, 사용자의 패스워드를 최대한 안전하게 보관 해야한다고 생각합니다.
어떻게 안전하게 보관해야하는가?
암호화
어떠한 정보(사용자의 패스워드)를 암호화시켜 다른 이들이 직접 그 의미를 알 수 없게 하는 작업
복호화
암호화된 데이터를 해복하는 작업
그리고, 암호화만 되어 데이터가 저장 되는지, 그리고 암호화된 데이터를 복호화 하는지에 따라 방향성이다.
단방향성 (암호화)
복호화가 불가능하며, 이것을 해싱(Hashing)이라고 부른다.
양방향성 (암호화 + 복호화)
해싱과 다르게 암호화 된 정보,데이터를 역으로 복호화도 가능하다.
단방향 해시 함수

단방향 해시 함수의 단점
단방향 해시 함수의 단점 보완
해시 함수를 여러번 수행
SALT(솔트)

양방향성 암호화
대칭형 (비밀키 암호) 알고리즘
암호화, 복호화에 서로 동일한 키가 사용되는 암호화 방식으로 키를 비공개하는 것이 특징입니다. 속도가 빠르다는 장점이 존재하지만 키 배송 위험성이 존재하여 송신 측에서 수신측에 암호키를 전달하는 과정에서 키가 노출될 우려가 있다는 단점이 존재합니다. 대표적으로는 AES가 있습니다.
대칭키(비공개키)는 사용하는 키와 복호화 할때 사용하는 키가 동일한 암호화 기법으로, 대게 암호화 알고리즘이라 하면 위 알고리즘을 가리킵니다. 현재 가장 보편적으로 쓰이는 암호화 방식은 현 미국 표준 방식인 AES로 128~256비트 키를 적용할 수 있어 보안성이 뛰어나며 공개된 알고리즘이라 누구나 사용 가능합니다.

비 대칭형 (공개키 암호) 알고리즘
암호화, 복호화에 서로 다른 키가 사용되는 방식으로 하나의 키는 공개키로 사용하는 것이 특징입니다. 키 배송의 문제를 근본적으로 차단하여 안정성이 높지만 대칭키 방식에 비해 속도가 느리다는 단점이 존재한다.
비 대칭형 암호는 이름 그대로 암호화 키와 복호화 키가 다른 것 입니다. 암호화를 하면 하나의 키 쌍이 생기고 이 두개의 키는 수학적으로 밀접한 관계를 가지게 됩니다. 두개의 키를 각각 A키, B키 라고 했을 때 A키로 암호화 한 암호문은 B키로만 복호화 할 수 있고, B키로 암호화 한 암호문은 A키로만 복호화 할 수 있습니다. 따라서 이 중 하나의 키만 비밀로 하고(이를 비밀키, 개인키라고 합니다) 다른 하나의 키는 누구에게 공개해도(이를 공개키라고 합니다) 가능한 키가 됩니다.
예로 들어 인터넷 뱅킹을 생각해 봅시다.
이러한 공개키 방식은 공인인증서, 전자서명 등에서 사용하고 있는 것이 특징입니다.
