암호화와 hashing, salting 등의 개념을 이해할 수 있다.
HTTP와 HTTPS의 차이점을 이해할 수 있다.
권한 부여(Authorization)와 인증(Authentication)에 대해 이해할 수 있다.
쿠키의 작동 원리를 이해할 수 있다
세션 및 쿠키 / 토큰 / OAuth를 통해 인증 구현을 할 수 있다.
클라이언트, 서버, 데이터베이스의 전체 동작을 이해할 수 있다.
회원가입 및 로그인 등의 유저 인증에 대해 구현하고 이해한다.
서비스의 보안과 관련된 방법을 알아보고 원리 및 장점 및 단점을 이해한다.
임의의 길이를 갖는 임의의 데이터를 고정된 길이의 데이터로 매핑하는 단방향 함수를 말한다. 쉽게 말해, 아무리 큰 숫자를 넣더라도 정해진 크기의 숫자가 나오는 함수이다.
예를 들면 어떤 숫자를 10으로 나누었을 때 그 나머지를 구하는 함수도 해시 함수이다.
이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값이라고 한다.
1.인식 가능성
메시지가 같으면 해시값도 같으므로 다른 사용자랑 패스워드가 같으면 해시값도 같아서 한꺼번에 털릴 수 있다.
미리 해시해둔 패스워드를 잔뜩 가지고 있다가 훔쳐낸 패스워드와 비교하는 것이다.
2.속도
해시 함수의 처리 속도가 빠르기 때문에 무차별 대입 공격을 당할 수 있다.
해시함수의 문제점 해결
솔팅의 가장 큰 목적은 salt를 이용해서 레인보우 테이블을 무의미하게 만드는 것이다.
솔팅은 패스워드에다가 임의의 문자열인 salt를 추가하여 해시값을 생성한다.
사용자마다 각자 다른 salt를 사용한다면 패스워드가 같더라도 해시값이 다르게 생성된다.