[TIL] Day56- 인증/보안

공부중인 개발자·2021년 6월 28일
0

TIL

목록 보기
56/64
post-thumbnail

HTTPS

HTTPS : HTTP + Secure HTTP 프로토콜 내용을 암호화

특징

  • 인증서
  • CA
  • 비대칭 키 암호화

인증서(Certificate)

데이터 제공자 신원 보장
도메인 종속

CA

Certificate Authority
공인 인증서 발급 기관

비대칭 키 암호화
전혀다른 두개의 키로 암호화와 복호화가 가능(a로 암호화를 했다면 b로 복호화해야함 a로 암호화 a로 복호화 불가능)
키 하나는 공개하고 하나는 비공해하여 데이터를 안전하게 전송할 수 있게 함

HTTP 순서

  1. Hand Shake
    • 클라이언트가 서버로 아이디와 비밀번호를 입력
    • 서버가 클라이언트를 확인하고 공개키와 인증서 정보를 전달
  2. 비밀 키 생성
    • 키 제작용 랜덤 스트링을 상호 교환
    • 클라이언트와 서버 각각 세션키를 생성
  3. 상호 키 검증
    • 클라이언트가 세션 키로 암호화 된 메시지를 전달
    • 서버는 다른 키를 이용하여 메시지를 복호화 한 후 그에 대한 정보를 세션 키로 암호화 시키고 메시지 전달

HTTPS 연결 성립

Hashing

암호화는 일련의 정보를 임의의 방식을 사용하여 형태를 변환
정보를 소유한 사람 외에는 이해할 수 없도록 알고리즘을 이용해 정보를 관리하는 과정

  • Hashing 이란?

어떠한 문자열에 '임의의 연산'을 적용하여 다른 문자열로 변환하는 것

  1. 모든 값에 대해 해시 값을 계산하는데 시간이 오래걸리지 않아야함
  2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 해시 값을 가짐
  3. 아주 작은 단위를 변경해도 완전히 다른 해시 값을 가져야함
  • salt

암호화해야 하는 값에 별도의 값을 추가하여 결과를 변형한 것

  1. 암호화만 해놓으면 해시된 결과가 동일 -> 해시된 값과 원래 값을 테이블로 만ㄷ르어서 decoding 해버리는 경우도 있음
  2. 원본값에 임의로 약속된 '별도의 문자열'을 추가해서 해시를 진행하면 기존 해시값과 전형 다른 해시값이 반환되어 알고리즘이 노출되어도 원본값 보호 가능
  3. 기존: 암호화하려는 값 => hash 값
    salt 사용 암화화하려는 값 + salt용 값 => hash값

솔트 사용 시 주의점

  1. salt는 유저와 패스워드 별로 유일한 값을 가져야함
  2. 사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 salt 사용하여 해싱
  3. salt 재사용 금지
  4. salt 는 db의 유저 테이블에 같이 저장되어야 함

그동안 해싱을 사용은 해왔지만 어떻게 사용하지는 전혀 몰랐다. 재밌는 것 같다.

HTTPS 와 쿠키는 내일 작성할 예정

profile
열심히 공부하자

0개의 댓글