[CS] HTTPS / Hashing / Cookie Day-58

cptkuk91·2022년 2월 4일
0

HTTPS

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

인증서

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

클라이언트가 서버에 요청을 보내고, 서버가 응답할 때 인증서와 함께 데이터를 전달합니다.
인증서(도메인)이 응답객체(도메인)과 같은지 비교하여 옳바른 데이터임을 확인할 수 있습니다.

CA(Certificate Authority)

인증서를 발급하는 공인 기관입니다.

비대칭 키 암호화

하나는 클라이언트한테 공개하고, 다른 하나의 키는 숨겨둔다.

키 생성 과정

  1. 클라이언트가 서버에 요청을 보낸다. (Hand Shake)
  2. 서버가 응답으로 공개키, 인증서 정보를 전달한다. (Hand Shake)
  3. 클라이언트가 서버에 키 제작용 스트링을 전송한다. (비밀 키 생성)
  4. 서버가 클라이언트에 키 제작 스트링을 전송한다. (비밀 키 생성)
  5. 클라이언트가 서버에 세션 키로 암호화 된 메시지 전달 (상호 키 검증)
  6. 서버가 클라이언트에 세션 키로 암호화 된 메시지 전달 (상호 키 검증)
  7. HTTPS 연결 성립!

Hashing(암호화)

클라이언트에서 서버에 요청을 보내고, 서버는 클라이언트에 응답합니다. (단순한 원리지만 보안상의 이슈가 발생할 수 있습니다.)

서버에서 디비에 정보를 요청하고 받을 때 보안상의 이슈가 발생할 수 있습니다.

암호화

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

암호화 주의 사항

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

Salt

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

  • 암호화만 할 경우 해시된 결과가 항상 동일하다.

  • 원본값에 임의로 약속된 별도의 문자열을 추가하여 해시를 진행하면 기존 해시값과 전혀 다른 해시값이 반환되어 알고리즘이 노출되더라도 원본값을 보호할 수 있다.

  • 기존: (입력한 암호) => (Hash 된 암호)

  • Salt 사용: (입력한 암호 + Salt) => (Hash 된 암호)

Salt 사용 시 주의 사항

  • Salt는 유저와 패스워드 별로 유일한 값을 가져야 한다.
  • 사용자 계정을 생성할 때와 비밀번호를 변경할 때 마다 새로운 임의의 Salt를 사용해서 Hashing해야 한다.
  • Salt는 재사용하지 말자.
  • Salt는 DB의 유저 테이블에 같이 저장되어야 한다.

어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 데이터

  • 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단

해당 도메인에 대해 쿠키가 존재하면 웹 브라우저는 도메인에게 http 요청 시 쿠키를 함께 전달한다.

사용자의 선호, 테마 등 장시간 보존해야하는 정보 저장에 적합하다.
(장바구니 정보, 로그인 상태 유지 등)

  • Domain: 서버와 요청의 도메인이 일치하는 경우에만 쿠키 전송 가능
  • Path: 서버와 요청의 세부 경로가 일치하는 경우 쿠키 전송 가능
  • MaxAge or Expires: 쿠키의 유효기간 설정
  • HttpOnly: 스크립트의 쿠키 접근 가능 여부 결정
  • Secure: HTTPS 프로토콜에서만 쿠키 전송 여부 결정
  • SameSite: CORS 요청의 경우 옵션 및 메서드에 따라 쿠키 전송 여부 결정

주의 사항

MaxAge, Expires
공공에서 로그아웃을 안 한 경우
서버에서 쿠키의 MaxAge 혹은 Expires 옵션을 통해 유효 기간 지정, 일정 시간 후 자동 소멸된다. 하지만 남아있는 쿠키가 있을 경우 정보를 탈취당할 수 있다.

HttpOnly
Xss 공격에 취약하기 때문에 HttpOnly 옵션을 통해 보안을 강화할 수 있다.
(민감한 정보나 개인정보는 담지 않는 것이 좋다.)

SameSite
옵션에 따른 서버 쿠키 전송 여부

  • Lax: GET 메소드 요청만 쿠키 전송 가능
  • Strict: 쿠키 전송 불가
  • None: 모든 메소드 요청에 대해 쿠키 전송 가능

None 옵션은 위험할 수 있기 때문에 Secure 쿠키 옵션을 사용하는 것이 좋다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글