HTTPS
HTTP에 TLS(Transport Layer Security) 암호화 계층이 추가된 형태
- HTTPS의 목적은 인터넷 상에서 데이터를 안전하게 전송하기 위함
- 클라이언트와 서버 간 통신의 도청, 데이터 변조, 메시지 위조로부터 보호
암호화
- 암호화는 승인된 사용자만 정보를 이해할 수 있도록 데이터를
스크램블
한 방법
- 이를 복호화하려면 송/수신자가 서로 동의한
key
가 필요
- 또한 이를 만들기 위해
key
가 쓰이기도함
- ciphertext = plaintext + key
1. 스크램블
각 단어나 문자를 패턴에 따라 암호화하는 것이 아니라 무작위 방식으로 개별 데이터 비트를 섞는 것
- 공통 128bit AES(Advanced Encryption Standard)으로 암호화된 파일의 경우, 구성하는 비트는 약 10회 스크램블되며 다른 컴퓨터가 키없이 해독하려면 아주 오랜 시간이 걸림
- 비트가 높아질수록 스크램블을 많이 하게 되고 더 복잡해짐
- 128bit가 AES의 가장 약한 버전. 192bit, 256bit 키 크기도 제공
2. 대칭 암호화
키를 하나만 사용하는 암호화
hello
라는 텍스트를 키로 암호화
- 동일한 키로 암호를 해독해서
hello
를 반환
- 일반적으로 사용되는 대칭 암호화 알고리즘은 DES, AES
- Plaintext + key = ciphertext -> hello + 2jd8932kd8 = X5xJCSycg14
- Ciphertext + key = plaintext -> X5xJCSycg14 + 2jd8932kd8 = hello
3. 비대칭 암호화
비대칭 암호화는 공개키 암호화라고도 함
두 개의 다른키(공개키, 개인키)로 데이터를 암호화 하거나 서명하고 키 중 하나인 공개 키를 누구나 사용할 수 있도록 하는 방법
- 공캐키로 암호화된 데이터는 개인키로만 복호화할 수 있음
- 일반적으로 사용되는 비대칭 암호화 알고리즘은 RSA, DH(Diffie-Hellman)
- HTTPS를 가능하게 하는 프로토콜인 TLS는 부분적으로 비대칭 암호화 사용(TLS1.3)
- 비대칭 암호화로 인증 후, 대칭 암호화로 보안적 통신 시작
TLS HandShacke 과정에서 처음 인증할 때 비대칭 암호화
사용 후, 클라이언트와 서버는 세션키
라고 하는 키를 기반으로 대칭 암호화
를 기반으로 암호화된 통신을 합니다.
4. 암호화의 필요성
- 암호화는 의도한 송/수신자를 제외하고는 통신을 Hijacking(하이재킹)하여 읽을 수 없게 함
- 민감한 데이터의 유출을 방지하고 데이터의 무결성을 보장
- Hijacking : 데이터를 중간에 가로채는 공격
- 데이터 무결성 : 데이터의 정확성과 일관성
TLS (Transport Layer Security)
TLS는 데이터를 안전하게 전송하기 위한 전송 계층의 암호화 프로토콜
- SSL(Secure Socket Layer) 후속 버전으로, HTTPS에서 데이터 암호화를 위해 주로 사용
1. TLS HandShake
- Client Hello
- 클라이언트가 TLS 버젼, 사이퍼슈트, 클라이언트 랜덤값, 임시 DH 매개변수를 서버에게 송신
- Server Hello (EncryptedExtensions, Certificate, CertificateVerify)
- 서버가 클라이언트로부터 받은 옵션을 확인
- 서버/클라이언트가 둘 다 지원하는 가장 높은 TLS 버전을 식별하여 결정
- 사이퍼슈트 지원 여부 확인
- SSL 인증서, 서버 랜덤값, 임시 DH매개변수를 보냄
- 클라이언트, 서버가 서로 교환한 매개변수를 사용해 임시 암호키(세션키) 생성
- Finished
- 클라이언트와 서버가 세션키를 기반으로 대칭 암호화된 통신 시작
- DH(Diffie-Hellman) : 서로 공개값 공유, 비밀값과 혼합, 혼합값과 공유, 각자 비밀값과 혼합해서 공통의 암호키를 만드는 알고리즘
- 사이퍼 슈트 : 프로토콜, AEAD 사이퍼 모드, 해싱 알고리즘이 나열된 규약을 말하며, 암호제품군이라고도 불림. TLS 1.3 버전에는 5개가 있음
- AEAD 사이퍼 모드 : AEAD(Authenticated Encryption with Associated Data)는 데이터 암호화 알고리즘, AES_128_GCM이라는 것은 128비트의 키를 사용하는 표준 블록 암호화 기술과 병렬 계산에 용이한 암호화 알고리즘 GCM이 결합된 알고리즘을 뜻함
그 외
1. 인증서
- 주체(인증서를 발급한 CA, 도메인, 웹사이트 소유자, 인증서 소유자)와 공개키(공개키, 암호화방법)를 포함하는 데이터 파일
- 자신의 웹사이트 안에서 SSL 인증서를 만들 수도 있지만 보통은 인증기관인 CA에서 발급한 SSL 인증서를 기반으로 인증작업을 수행
- 주체는 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지 확인할 때 쓰이고 공개키는 처음 인증작업을 수행할 때 쓰임
2. CA (Certificate Authority)
출처 및 참고 : https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95#