HTTPS : HTTP + TLS
📌 암호화
- 승인된 당사자만 정보를 이해할 수 있도록 데이터를
스크램블
한 방법
- 이를 복호화하려면 송신자와 수신자가 서로 동의한
키
가 필요
✅ 스크램블
- 각 단어나 문자를 패턴에 따라 암호화하는 것이 아니라
무작위 방식
으로 개별 데이터 비트를 섞는 것
- AES의 경우, 10회 스크램블된다. -> 키없이 해독하려면 아주 오랜시간이 소요
- 비트가 높아질수록 스크램블을 많이 하게됨
⭐ 대칭 암호화
- 키를 하나만 사용하는 암호화 방법
- DES, AES
⭐ 비대칭 암호화
- 공개키 암호화라고도 불림
- 서로 다른 두개의 키(공개키, 개인키)로 데이터를 암호화
- 공개키로 암호화된 데이터는 개인키로만 복호화가 가능
- RSA, DH(디피-헬만)
- TLS는 부분적인 비대칭 암호화를 사용(TLS 1.3)
TLS 핸드셰이크
과정에서 비대칭암호화로 인증을 한 후, 세션키
를 기반으로 대칭 암호화로 보안적 통신을 시작
- 대칭암호화보다 비용이 많이 듬
⭐ 암호화의 필요성
- 의도된 수신자 또는 송신자를 제외하고는 통신을 하이재킹하여 읽을 수 없게 하기 위함
- 민감한 데이터의 유출을 방지하고 데이터의 무결성을 보장
✅ 데이터 무결성
📌 TLS 핸드셰이크
- SSL이 TLS로 명칭이 변경됨(SSL = TLS)
- 사용할 TLS버전을 정하고, 서버의 공개키, SSL인증서를 기반으로 인증작업을 수행
- 이후 대칭암호화를 위해 세션키를 생성
- 제일 최신이 TLS 1.3버전
✅ TLS(TransportLayer Security Protocol)
- 전송계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 함
⭐ 순서
✅ 1~9과정이 1-RTT 소요
- Client Hello
- TLS버전
- 사이퍼슈트
- 클라이언트 랜덤값
- 임시 DH 매개변수를 서버에 보냄
- Server Hello
- 서버는 클라이언트로부터 받은 옵션을 확인
- 서버와 클라이언트 모두에서 지원하는 가장 높은 TLS버전을 식별하여 결정
- 사이퍼슈트 리스트 중 지원가능한 것들을 확인
- 공개키가 포함된 SSL인증서
- 서버 랜덤값
- 임시 DH매개변수를 보냄
- 클라이언트와 서버가 서로 교환한 DH매개변수를 사용하여 임시 암호키(
세션키
)를 생성
- Finished
- 클라이언트, 서버, 세션키를 기반으로 대칭 암호화 통신을 시작
⭐ DH 매개변수
- Diffie-Hellman
- 공개값 공유, 각자의 비밀값과 혼합, 혼합값 공유, 각자의 비밀값과 혼합하여 공통의 암호키를 만드는 알고리즘
✅ 타원곡선 암호화 방법(ECDHE)
- 개인키 보유자만 알 수 있는 타원곡선을 그림
- 교차점의 수를 기반으로 암호를 설정하는 방법
✅ RSA의 취약점
- RSA의 경우 클라이언트가 생성한 임시 암호값을 서버로 전송하지만, DH의 경우 클라이언트와 서버가 서로 교환한 DH 매개변수를 사용해 개인키를 만듬
- RSA는 클라이언트에서 생성한 임시암호값이 탈취당한 경우 해킹의 위험이 존재 => 반면 DH의 경우 탈취당해도 공통의 암호키를 생성하지 못함
⭐ 사이퍼슈트
- 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말하며 암호제품군이라고도 불림
TLS_AES_128_GCM_SHA256
TLS : 프로토콜
AES_128_GCM : AEAD 사이퍼모드
SHA256 : 해싱 알고리즘
✅ AEAD 사이퍼모드
- Authenticated Encryption with Associated Data
- 데이터 암호화 알고리즘
✅ 해싱 알고리즘
- 인증 생성 : 전자서명을 만드는데 필요한 메시지를 해싱
- 인증 확인 : 메시지를 복호화해서 해시를 서로 비교하여 올바른지 확인
✅ 전자서명
- 송신자가 자신의 신원을 증명하는 절차 또는 정보
⭐ 인증서
- 주체(클라이언트가 접속한 의도한 서버가 맞는지 확인) + 공개키(첫 인증작업 수행)를 포함하는 단순한 데이터 파일
- CA에서 발급한 SSL인증서를 기반으로 인증작업을 수행
- 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할
- 종류 : 단일 도메인(하나의 도메인에만 적용), 와일드카드(도메인의 하위 도메인도 포함), 멀티도메인(다수의 도메인에 적용)
✅ CA(Certificate Authority)
✅ 0 - RTT(TLS의 장점)
- 세션키가 생성된 이후 다시 그 사이트에 방문한다면 미리 만들어 놓은 세션키를 기반으로 연결을 생성하기 때문에 인증에 드는 비용이 없음(재인증 필요 없음)