728x90
학습목표
HTTP프로토콜 내용을 암호화
HTTPS는 중요한 정보가 유출이 되더라도 정확한 키 값이 없다면 어떤 내용인지 알 수 없다.
인증서 (Certificate) 데이터 제공자 신원 보장 , 도메인 종속
CA(Certificate Authority) 공인 인증서 발급 기관
비대칭 키 암호화 : 키a로 암호화 > 키b로만 복호화 가능 / 하나는 비밀로 숨겨두고 하나는 클라이언트에 제공
- 암호화와 hashing, salting 등의 개념을 이해할 수 있다.
Hashing
어떠한 문자열에 "임의의 연산"을 적용하여 다른 문자열로 변환하는 것
1.모든 값에 대해 해시 값을 계산하는데 오래걸리지 않아야한다
2.최대한 해시값을 피해야하며, 모든 값은 고유한 해시값을 가진다
3.아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야한다
Salting
암호화 해야 하는 값에 어떤 "별도의 값"을 추가하여 결과를 변형하는것
1.암호화만 해놓는다면 해시된 결과가 늘 동일
해시된 값과 원래 값을 테이블(레인보우 테이블)로 만들어서 decoding 해버리는 경우도 생긴다
2.원본값에 임의로 약속된 "별도의 문자열을 추가하여 해시를 진행한다면 기존 해시값과 전혀다른 해시값이 반한되어 알고리즘이 노출되더라도 원본값을 보호할 수 있도록 하는 안전장치
3.기존 : 암호화하려는 값 -> hash값
Salt 사용 : 암호화 하려는 값 + Salt 용 값 -> hash값
Salt 사용시 주의점
1.Salt는 유저와 패스워드 별로 유일한 값을 가져야 한다
2.사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 Salt를 사용해서 해싱해야 한다
3.Salt는 절대 재사용 하지말아야 한다
4.Salt는 DB의 유저 테이블에 같이 저장되어야한다.
- 유저마다 Salt를 다르게 하려면, DB에서도 Salt를 각자 다르게 가지고 있어야한다 Salt를 문자열 "test"라고 가정했을때 회원가입시 입력받은 비밀번호에 문자열 "test"를 더한후 해싱 알고리즘을 통한 반환값이 DB에 저장된다. 이후 로그인이나 인증이 필요한 요청에서 입력받은 비밀번호에 해당 유저의 Salt값을 더해 해싱 알고리즘의 결과 값과 DB에 저장된 유저의 비밀번호를 비교한다. Hashing을 하는 과정에서 이렇게 Salt를 추가하면 알고리즘이 노출되더라도 보안적으로 더 안전할 수 있다.
728x90
'TIL' 카테고리의 다른 글
[Spring Security][기본구조] (0) | 2022.11.19 |
---|---|
[Spring Security][개요] (0) | 2022.11.18 |
맥북 m1 brew install 오류 -Rosetta 2 (0) | 2022.11.17 |
[Spring MVC] [애플리케이션 빌드/실행/배포] (0) | 2022.11.15 |
[Spring MVC] [Asciidoc] (0) | 2022.11.14 |