1. HTTP, HTTPS
1) HTTP
- Hyper Text Transfer Protocol 의 약자로, 웹에서 데이터를 주고 받기 위한 프로토콜이다.
- 상태 정보를 저장하지 않는 Stateless의 특징과, 클라이언트의 요청에 응답을 보낸 후 연결을 끊는 특징을 가지고 있다.
- 이전 통신의 정보를 모르기 때문에 매번 인증을 해줘야 하고 이를 해결하기 위해 쿠키나 세션을 사용한다.
2) HTTPS
- Hyper-Text Transfer Protocol over Secure socket Layer의 약자로, HTTP에서 보안이 강화된 버전이다.
- SSL 프로토콜 위에서 돌아가는 HTTP 프로토콜이라고 할 수 있다.
3) HTTP와 HTTPS의 차이점
- HTTP는 평문으로 데이터를 전송하기 때문에, HTTP로 아이디나 패스워드 같은 정보를 주고 받으면 패킷 캡쳐로 내용이 유출될 수 있다.
- HTTP에 SSL 프로토콜을 추가한 HTTPS 사용해서 데이터를 암호화하여 안전한 통신을 할 수 있다.
- HTTPS는 사용자가 사이트에 보내는 정보들을 제 3자가 못 보게 하고, 접속한 사이트가 믿을 만한 곳인지 알려주는 역할을 하기 때문에 HTTP보다 안전하다.
2. SSL, TLS
1) SSL(Secure Scokets Layer)
- 암호화 기반 인터넷 보안 프로토콜이다.
- 전달되는 모든 데이터를 암호화하고 특정한 유형의 사이버 공격을 차단한다.
- SSL은 TLS(Transport Layer Security) 암호화의 전신이기도 한다.
2) TLS(Transport Layer Security)
- TLS는 SSL의 업데이트 버전이다.
- TLS 1.0은 SSL 3.0의 업그레이드 버전으로 큰 차이는 없으나 취약점들이 해결되었다.
- SSL에서 TLS로 이름이 변경된 것은 SSL을 개발한 Netscape가 업데이트에 참여하지 않게 되어 소유권 변경을 위해서이다.
3. SSL/TLS 인증서
1) SSL/TLS 인증서란?
- 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서다.
- 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장하고, SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.
- SSL/TLS 인증서를 발급하는 기관을 CA(Certificate authority) 혹은 Root Certificate 라고 한다.
- 브라우저가 Client에게 제공한 공개키가 정품인지 인증해주는 공인된 민간 기관이다.
- 엄격하게 공인된 기업들만이 공인된 CA가 가능하다.
- CA를 통해서 인증서를 구입해야 SSL을 통해서 암호화된 통신을 제공할 수 있다.
- 테스트 또는 개인적인 목적으로 사설 CA의 인증서를 이용하는 경우 브라우저에서 경고가 출력된다.
- SSL/TLS 인증서의 기능
- Client가 사이트에 보내는 정보들을 제 3자가 못 보게 한다.
- 접속한 사이트가 믿을 만한 곳인지 알려준다.
- SSL 인증서에 포함되어 있는 정보.
- 서비스의 정보 (서비스의 도메인, 인증서 발급 기관 등)
- 서버 측 공개키 (공개키 내용, 공개키 암호화 방법)
2) SSL 프로토콜 동작 방법
- SSL은 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화 하기 때문에, 제 3자가 데이터를 가로채려해도 복호화가 거의 불가능하다.
- 대칭키만을 사용하면 키가 탈취될 수 있다는 위험이 존재한다. 그렇다고 공개키만을 사용하면 HTTP 메시지의 길이가 큰 경우에 부하에 큰 무리를 줄 수 있다.
- 그래서 SSL은 대칭키와 공개키를 혼합해서 사용하여 암호화된 데이터를 전송한다.
- 클라이언트와 서버가 주고받는 실제 정보는 대칭키 방식으로 암호화한다.
- 해당 정보(데이터)를 복호화 할 때 사용할 대칭키는 공개키(비대칭키) 방식으로 암호화한다.
- 컴퓨터 간에 네트워크를 이용해서 통신할 때는 악수(handshake) -> 전송 -> 세션 종료 3가지 단계를 거친다.
더보기
대칭키 방식
- 암복호화에 사용하는 키가 동일하다.
- 대표적인 알고리즘: DES, 3DES, AES, SEED, ARIA 등
공개키(비대칭키) 방식
- 암복호화에 사용하는 키가 서로 다르다.
- 대표적인 알고리즘: Diffie-Hellman, RSA, DSA, ECC, 등
① 악수(handshake)
- 실제 데이터를 주고 받기 전 클라이언트와 서버가 하는 일종의 인사라고 볼 수 있다.
- SSL 방식으로 통신하는 브라우저와 서버간에 악수(handshake)를 하게 된다.
- 이때 공개키와 대칭키를 혼합한 방식을 사용하여 SSL 인증서를 주고 받는다.
- Client Hello
- 클라이언트가 서버에 접속한다.
- 클라이언트는 랜덤 데이터, 클라이언트가 지원하는 암호화 방식, 세션 아이디를 생성하여 서버에 전달한다.
- Server Hello
- 서버는 Client Hello에 대한 응답을 한다.
- 서버는 랜덤 데이터, 서버가 선택한 클라이언트의 암호화 방식, 인증서를 생성하여 클라이언트에 전달한다.
- 클라이언트는 서버 인증서가 CA에서 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA 리스트를 확인한다.
- 클라이언트는 클라이언트에 내장된 CA의 공개키를 이용하여 인증서를 복호화한다.
- 이때, 서버의 인증서가 CA에서 발급된 것이 아니라면 경고 메시지를 출력한다.
- 인증서가 복호화되면 해당 인증서는 CA의 개인키로 암호화된 문서임이 보증된 것이다.
- 클라이언트는 클라이언트 랜덤 데이터 + 서버 랜덤 데이터 = pre-master secret 생성한다.
- (※ 공개키 방식) 클라이언트가 서버의 공개키를 이용하여 pre-master secret 값을 암호화하여 서버에 전달한다.
- (※ 공개키 방식) 서버는 비공개키를 이용하여 pre-master secret 값을 복호화 한 후 master secret 값으로 바꾼다.
- master secret은 session key를 생성한다.
- 이 session key 값을 이용하여 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 한 후에 주고 받는다.
- master secret은 session key를 생성한다.
- 클라이언트와 서버는 악수(handshake)가 종료되었음을 서로에게 알린다.
② 전송
- 실제로 서버와 클라이언트가 데이터를 주고받는 단계다.
- 정보를 상대방에 전송하기 전 session key 값을 이용하여 대칭키 방식으로 암호화 한다.
③ 세션 종료
- 데이터 전송이 끝나면 SSL 통신이 끝났음을 서로에게 알려주고 통신에 사용한 대칭키인 세션키를 폐기한다.
3) 인증서의 종류 및 유형
a. 적용되는 도메인 개수에 따른 유형
- 단일 도메인(single domain)
- 단 하나의 도메인에만 적용이 가능한 인증서이다.
- 와인드카드(wildcard)
- 단일 도메인 인증서처럼 하나의 도메인에만 적용되지만, 해당 도메인의 하위 도메인도 포함된다.
- 예시: www.example.com, mail.example.com, shop.example.com
- 멀티 도메인(multi domain)
- 관련되지 않는 여러 도메인에 적용할 수 있는 인증서이다.
- 예시: www.example1.com, www.example2.net, www.example3.org
b. 유효성 검사 수준에 따른 유형
※ 참고: 가비아: 대한민국 No.1 SSL 보안서버 인증서
- DV (Domain Validated)
- 가장 기본적인 유형의 SSL 인증서로, 도메인의 소유권을 확인하는 정도로만 검증된다.
- DV 인증서는 DCV인증만 진행하므로 다른 인증 종류에 비해 간편하고, 빠르게 발급받을 수 있다.
- DCV(Domain Control Validated) 인증: 도메인과 관련된 메일/웹/DNS 레코드 값을 추가한다.
- 주로 개인 사이트, 소규모 웹사이트 등에서 많이 이용하는 인증서이다.
- OV (Organization Validated)
- DV에서 진행하는 DCV인증에 더불어, 서류 및 전화 인증을 통해 기업의 존재 여부 및 추가적인 정보를 확인하여 발급한다.
- 인증서에 주체자의 주소가 표기되어 있는 신뢰도 높은 인증서이다.
- 주로 공공기관 또는 대기업에서 선호하는 등급의 인증서이다.
- EV (Extended Validated)
- DV에서 진행하는 DCV인증과 OV에서 진행하는 서류 및 전화 인증에 더불어, 조직의 실체를 검증하는 엄격한 프로세스를 거친다.
- 인증서 중 가장 등급이 높고 강력한 암호화 방식으로 신뢰도가 가장 높은 인증서이다.
- 주로 민감한 개인정보를 다루는 은행 및 금융 기관에서 많이 사용하는 등급이다.
4) SSL 인증서 발급 방법
a. 유료 사용
- Root CA: Sectigo(comodo), Digicert, GlobalSign 등
- 인증서 구매 시 인증기관에서 직접 구매해도 되며 국내 리셀러(대행)업체인 가비아, 후이즈 등을 통해 구매해도 된다.
b. 무료 사용
- Let’s Encrypt, SSLFORFREE 등
4. 대칭키, 비대칭키
1) 대칭 키
- 하나의 키로 데이터를 암호화하고 복호화한다. 주로 사용되는 대칭 키 알고리즘에는 DES (Data Encryption Standard)나 AES (Advanced Encryption Standard) 등이 있다.
2) 비대칭 키
- 두 개의 키를 사용하는데, 공개 키와 개인 키로 구성된다. 공개 키는 누구나 알 수 있지만, 개인 키는 소유자만 알고 있다.
- 메시지를 보내는 사람은 수신자의 공개 키로 암호화하고, 수신자는 자신의 개인 키로 해독한다.
- RSA 알고리즘이 대표적인 비대칭 키 알고리즘이다.
참고
[Network] SSL 인증서 구입 및 Azure Application Gateway에 SSL 인증서 등록
1. SSL FOR FREE를 사용하여 무료 SSL 인증서 발급 1) SSL FOR FREE 사이트 접속 SSL For Free - Free SSL Certificates in Minutes 2) 도메인 주소를 입력한 후 [Create Free SSL Certificate] 클릭 3) 계정 생성 또는 기존 계정으
lilylabs.tistory.com
'Cloud > Azure' 카테고리의 다른 글
[Azure] Azure Virtual WAN 개념 및 테스트 (32) | 2024.05.16 |
---|---|
[Azure] AKS Managed Identity 및 Service Principal (0) | 2024.04.08 |
[Azure] Azure Private Endpoint 개념 및 쿼리 프로세스 (1) | 2024.02.13 |
[Network] AWS 및 Azure 간의 Active-Active VPN 구성 (0) | 2024.02.08 |
[Network] SSL 인증서 구입 및 Azure Application Gateway에 SSL 인증서 등록 (0) | 2024.01.03 |