-
[Internet] HTTPS란?Study/모몽이 공부중 2020. 6. 29. 22:52
HTTP(HyperText Transfer Protocol)
- WWW상에서 정보를 주고 받을 수 있는 프로토콜.
- 주로 HTML 문서를 주고 받음
HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure)
- WWW 통신 프로토콜인 HTTP의 보안이 강화된 버전
- 통신의 인증과 암호화를 위해 개발. 전자상 거래에서 널리 쓰임
- SSL이나 TLS프로토콜을 통해 세션 데이터 암호화
- 기본 TCP/IP 포트: 443
- 보호의 수준은 웹 브라우저에서의 구현 정확도와 서버 소프트웨어, 지원하는 알호화 알고리즘에 달려있음
- 웹페이지의 URL는 'https://'로 시작HTTPS 목적
1. 기밀성
2. 무결성
3. 인증
HTTPS 구성
1. 초기 키 교환 비대칭 알고리즘 사용
2. 신원 인증서
3. 실제 메세지 암호화 대칭 알고리즘
4. 메세지 다이제스트 암호 해싱 알고리즘
HTTPS 인증서 유형
1. DV(Domain Validated)
: 가장 일반 적인 유형의 인증서. 도메인이 특정 공개 키와 일치하는지 확인
2. EV(Extended Validated)
: 웹사이트의 법적 신분 검증. 가장 신뢰할 수 있는 유형의 인증서
3. OV(Organization Validated)
: 웹사이트의 법적 신분 검증. EV인증서와 다르게 UI에서 확인된 법적 이름 표시 안함
[법적 신원]
- 도메인 관리
- 현재 유지상태인 회사가 등록되어 있는 상태를 확인할 수 있는 공인된 사업 기록
- D&B(Dunn and Bradstreet), 전화번호부 등에 등재된 자영업 정보
- 확인전화
DV(Domain Validated) EV(Extended Validated) OV(Organization Validated) 특징 HTTPS HTTPS 법적 소유자 검증
소유자 정보 브라우저 표시HTTPS 법적 소유자 검증 HTTPS/SSL 암호화 통신 방법
- 서버측에서는 서버에 대한 정보와 인증 등이 담긴 인증서와 공개키(비대칭키)를 인증기관에 등록
- 클라이언트가 등록되어 있는 공개키로 공통키를 암호화하여 서버측에 전송
- 서버측에서 클라이언트에서 전송도니 암호를 개인키를 사용하여 복호화하여 공통키 획득
- 서버 및 클라이언트는 공통키를 사용하여 보안 통신을 함
=> 핸드쉐이크(HandShake): 통신 전 공동키를 암호화해서 주고받는 단계
SSL/TLS
SSL(Secure Socket Layer, 보안 소켓 계층)
웹사이트와 브라우저(혹은, 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결을 보안을 유지하는 표준 기술. 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지
TLS(Transport Layer Security, 전송 계층 보안, 과거 명칭: 보안 소켓 레이어/Secure Sockets Layer, SSL)
가장 최신 기술로 더 강력한 버전의 SSL. SSL이 더 일반적으로 사용되는 용어이기에 보안 인증서는 SSL이라 불림
TLS 3단계 기본 절차
- 지원 가능한 알고리즘 서로 교환
- 키 교환, 인증
- 대칭키 암호로 암호화하고 메시지 인증SSL/TLS 장점
- 통신 내용이 공격자에게 노출되는 것 막음
- 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 판단 가능
- 통신 내용의 악의적인 변경 방지
SSL 인증서 파일 종류
CSR(Certificate Signing Request): 인증 서명 요청
- 인증기관(CA)에서 인증서를 얻기 위한 서명 키 및 암호화 키에 대한 증서 서명 요청 파일
- 인증기관은 이 파일을 이용하여 서명 인증서, 암호화 인증서 및 키 저장소로 가져올 CA 인증서 생산
- CRT(Certificate):인증서. 인증서 파일의 확장자로 쓰임
PEM(Privacy Enhanced Mail)- Base64 인코딩된 ASCII 텍스트
- 파일 구분 확장자로 .pem 을 주로 사용PEM(Privacy Enhanced Mail)
- Base64 인코딩된 ASCII 텍스트
- 파일 구분 확장자로 .pem 을 주로 사용keyStore: 클라이언트 인증을 위해 클라이언트 측에 놓이는 것
- 비밀키 관련된 인증서 혹인 인증서 체인을 가지고 있는 데이터베이스
- 인증서 체인은 클라이언트 인증서와 하나 이상의 CA 인증서로 구성됨. 보통 서버 역할을 하는 측에서만 필요하지만 클라이언트 인증을 요구하는 경우 클라이언트 쪽도 있어야함trustStore: 서버를 인증하기 위한 것
- 클라이언트가 신뢰할 수 있는 인증서만을 가지고 잇음
- 인증서는 CA루트 인증서(자기 서명 인증서)임.
- 보통 웹서버가 설치되면 cacerts.jks 라는 파일명으로 저장됨
=> keyStore, trustStore의 파일 형식은 동일함. 둘 다 keytool을 이용하여 만들고 조작 가능DER (Distingulished Encoding Rules)
- 대부분의 브라우저 기본형식
- ASN.1 DER 형식에 따라 저장PKIPubic Key Infrastructure): 공개키 기반 구조
- 공개키 암호 방식을 바탕으로 한 디지털 인증서를 활용하는 소프트웨어, 하드웨어, 사용자, 정책 및 제도 등을 총칭
PKCS(Public Key Cryptography Standard): 공개 키 암호 표준
- RSA에서 정한 공개 키 암호 사용방식에 대한 표준 프로토콜
- 보통 .pfx , .p12 등의 확장자로 저장
- 바이너리 형식으로 저장
- pkcs#12 포멧의 파일은 인증서, 개인키 내용을 파일하나에 모두 담고 있음
- 백업 또는 이동용으로 주로 사용X.509: 공개키 기반 인증서 형식 표준
PFX(PersonalinFormation eXchange), P12: PKCS#12 암호화 파일 포맷. 사용자의 개인키, 인증서, 기타 기밀 정보를 저장 및 운송하기 위한 휴대용 포맷PFCS#12: 암호화 파일 포맷. 인증서와 개인키가 같이 들어있음
공인인증서/ 사설인증서
공인인증서(CA 인증서)
인증서의 역할은 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지를 보장하는 역할을 한다.
이 역할을 하는 민간기업들이 있는데 이런 기업들을 CA(Certificate authority) 혹은 Root Certificate 라고 부른다.
CA는 아무 기업이나 할 수 있는 것이 아니고 신뢰성이 엄격하게 공인된 기업들만이 참여
CA(Certificate Authority): 공인 인증 기관. 서비스 요금을 부과하는 상업 인증기관과 무료 인증기관도 있음. 기업, 단체별로 운영하는 사설 인증기관이 있음
인증서 소스: 서드파티 공급업체
통신 일반 패턴: 인터넷 <-> 회사 웹서버
장점
- 대부분의 경우 브라우저는 이러한 인증서를 자동으로 인식 가능. 웹 사이트와의 보안 통신 세션을 자동으로 확립 할 수 있음
- CA는 인터넷 상의 사용자에 대해 회가의 웹 사이트 신원 보장
단점
- 회사에서 이러한 유형의 인증서가 아직 없을 경우 이를 신청 및 구입하여 정기적으로 갱신 필요사설 인증서
인증서 소스: 대상 컴퓨터에 액세스 권한이 있는 사람
통신의 일반 패턴: 인터넷에 닿지 않는 내부망 통신
장점
- 비용 부담 없음
- 공급업체에서 제공하는 인증서에 필요한 어플리케이션 및 유지보구 절차 없이 즉시 사용 가능
단점
- 로컬로 작성 및 서명한 인증서를 사용 가능하게 하려면 클라이언트 컴퓨터에 인증서를 수동으로 설치해야 함
key Tool 프로그램
- hava SDK와 함께 배포. bin 디렉토리에 있는 보안 관련 프로그램
- keyStore라는 일종의 데이터베이스를 관리하는 프로그램keystore는 두개의 항목을 가지고 있음
- key entry: 비밀키와 공개키와 관련된 인증서 체인으로 구성
- trusted certificate entry(공인 인증서 엔트리): 신뢰할 수 있는 기관을 나타내는 공개키 인증서'Study > 모몽이 공부중' 카테고리의 다른 글
[TCP] 3-way hand shake (0) 2020.07.05 cookie session 차이 localStorage, sessionStorage (0) 2020.07.01 jQuery란? (0) 2020.06.25 Request, Response (0) 2020.06.22 RESTful이란 (0) 2020.06.22