SEB[Spring Security]

Jogi's 코딩 일기장·2021년 9월 10일
0


이번 유닛에서는 Spring Security에 대한 학습을 진행했다. 부트캠프를 진행하면서 제일 이해하기도 힘들었고, 어려웠던 유닛이었다. 유닛에 대해 학습하면서 배운 개념들을 정리해보겠다.

HTTPS

  • HTTP + Secure, HTTP 프로토콜 내용을 암호화시킨 것이라고 볼 수 있다.

  • HTTP Secure Socket layer의 약자로 HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다

  • HTTP 요청을 SSL or TLS라는 알고리즘을 이용해, HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법이다.

    • SSL(보안 소켓 계층)

      • 웹사이트와 브라우저(혹은 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결의 보안을 유지하는 표준 기술이다.
      • CA로부터 SSL 인증서를 구매, 발급 받아야 한다.
    • TSL(Transport Layer Security) : 더 강력한 버전의 SSL이다.

  • 인증에서 HTTPS 프로토콜을 사용하는 이유는 HTTP보다 상대적으로 안전한 방법이고, 데이터 제공자의 신원을 보장받을 수 있기 때문이다.

    • 데이터 제공자의 신원을 확인하고 보장 받는 것이 중요한 이유
      1. 클라이언트는 데이터 제공자가 제공해준 데이터를 사용할 수 밖에 없다.
      2. 요청 및 응담을 중간에 가로채는 중간자 공격에 취약하다.
  • 암호화

    • HTTPS 프로토콜의 특징 중 하나는 암호화된 데이터를 주고 받기 때문에, 중간에 인터넷 요청이 탈취 되더라도 그 내용을 알 수 없다.
  • 인증서

    • 또 다른 특징 중 하나는 브라우저가 응답과 함께 전달된 인증서 정보를 확인할 수 있다. 브라우저는 인증서에서 해당 인증서를 발급한 CA 정보를 확인하고, CA가 발급한 인증서가 아니라면 결과창에 오류를 띄운다.
    • 브라우저는 인증서의 도메인과 데이터를 제공한 제공자의 도메인을 비교할 수 있기 때문에 중간자 공격을 감지하여 보안 위협으로부터 사용자 및 사용자 데이터를 보호할 수 있다.

HTTPS의 특징

인증서(Certificate)

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

CA (Certificate Authority) : 공인인증서 발급기관

비대칭 키 암호화

  • 키 A로 암호화를 하면 키 B로만 복호화가 가능하다.

Hashing

암호화(Encryption)

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

해싱(Hashing)

  • 어떤 문자열에 임의의 연산을 적용하여 다른 문자열로 변환하는 것
    1. 모든 값에 대해 해시 값을 계산하는데 오래 걸리지 않아야 한다.
    2. 최대한 해시 값을 피해야 하며, 모든 값은 고유한 값을 갖는다.
    3. 아주 작은 단위의 변경이라도 완전히 다른 해시 값을 가져야 한다.

Salt

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

    1. 암호화만 해놓는다면 해시된 결과가 늘 동일하다.
    2. 원본값에 임의로 약속된 별도의 문자열을 추가하여 해시를 진행한다면 기존 해시값과 전혀 다른 해시 값이 반환되어 알고리즘이 노출되더라도 원본 값을 보호할 수 있도록 하는 안정장치
    3. 기존 : 암호화하려는 값 => 해시값, salt 사용 : 암호화하려는 값 + salt 값 => 해시값
  • 주의점

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

    쿠키, 세션, OAuth는 다음 블로그에서 작성하겠습니다.

    Reference

  • 코드스테이츠 강의자료

profile
프로그래머로서의 한걸음

0개의 댓글