일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- helm
- Network
- aws s3
- AWS
- jvm
- airflow
- log
- PostgreSQL
- kubeadm
- Packet
- kubernetes
- ip
- Kafka
- EC2
- MAC address
- CVAT
- grafana
- docker
- OS
- Vision
- kubectl
- tcp
- Python
- JavaScript
- zookeeper
- CSV
- Trino
- Operating System
- java
- Spring
Archives
- Today
- Total
JUST WRITE
SSL 본문
SSL
Secure Socket Layer
- CA(Certificate Authority) 서드 파티로부터 Server와 Client 인증하는 데 사용
- TLS(Transport Layer Security)가 표준화되면서 SSL로 바뀜
- TCP/IP 사용하는 통신에 적용, 전송계층(Transport Layer)에서 보안, 데이터 무결성 확보
- Netscape사에서 발명 => IETF의 관리로 TLS로 명명(TLS 1.0은 SSL 3.0 계승)
SSL 암호화
대칭키 Symmetric-key Cryptography
- 동일한 키로 암호화와 복호화를 같이 하는 방식
- DES
- Data Encryption Standard
- 56bit의 key를 이용하여 64bit 암호화
- Feistel Cipher 방식 이용
- 현재는 취약한 방식으로 사용 X
공개키 Public-key Cryptography
- 한쌍의 키를 통해 암호화, 복호화를 하는 방식
- RSA
- Ron Rivest, Adi Shamir, Leonard Adleman의 이름에서 차용
- 공개키(Public key), 개인키(Private key)를 이용
- 공개키로 암호화하면 개인키로 복호화 -> 특정받는 사람이 있는 경우(암호화)
- 개인키로 암호화하면 공개키로 암호화 -> 보낸 사람을 확실하게 알아야 할 경우(전자서명)
SSL 인증서
- Client와 Server 간 통신을 제3자가 보증해주는 전자화된 문서
- 서비스 정보(CA, 서비스 도메인, 유효기간 등), 공개키 정보(공개키 내용과 암호화 방식) 포함
- 동작 방식
- Client가 Server 접속, Server가 Client에게 인증서 정보 전달
- Client(Web Browser)는 인증서 발급한 CA가 자신이 가지고 있는 CA 리스트에 있는지 확인
- 해당 CA의 공개키로 인증서를 복호화
- 복호화가 가능하다면 인증서는 공인된 CA에서 제공한 것으로 판단, 검증 완료
CA
- Certificate Authority
- 인증서를 보장하는 공인된 민간기업
- Root Certufucate라고도 하며 신뢰성이 엄격하게 공인된 기업만 가능
- CA는 서비스가 제출한 인증서를 자신의 비공개키로 암호화
- Browser는 내부적으로 CA 리스트와 각 CA 공개키를 소유
- 점유율
- Symantec(VeriSign, Thawte, Geotrust) -> 42.9%
- Comodo -> 26%
- GoDaddy -> 14%
- GlobalSign -> 7.7%
SSL 동작 방식
- 대칭키와 공개키를 혼합해서 사용
- 실제 데이터는 대칭키로 암호화
- 대칭키는 공개키로 암호화
- 순서 : HandShake -> Transfer -> Session Close
- Client Hello
- Client -> Server 데이터 전송
- Client에서 생성한 랜덤 데이터, Client에서 지원하는 암호화 방식, Session ID(이전에 HandShake 있었던 경우)
- Server Hello
- Server -> Client에 데이터 전송
- Server에서 생성한 랜덤 데이터, Client에서 지원하는 암호화 방식 중 Server가 선택한 방식, 인증서
- Server Certificate - Server Hello Done
- Client 인증서 확인을 위해 Browser에서 CA 리스트 체크
- 없으면 경고, 있을 경우 해당 CA의 공개키로 인증서 복호화 -> 복호화 정상적으로 되면 인증 확인
- Exchange Pre-master Secret
- Client에서 생성한 랜덤 데이터와 Server에서 생성한 랜덤 데이터 조합 -> Pre-master Secret 대칭키 생성
- Pre-master Secret 키를 인증서 복호화한 공개키로 암호화
- 암호화한 Pre-master Secret 키를 Server에 전송
- Master Secret - Session Key
- Server에서 개인키로 Pre-master Secret 키 복호화
- Server, Client 모두 일련의 과정을 토해 Master-Secret 이란 값 생성
- Master-Secret은 Session Key값 생성, Session Key는 데이터 송수신 시에 대칭키로 사용
- 해당 Session 만료되면 폐기
- Client Hello
[참고사이트]
728x90
반응형
'Network' 카테고리의 다른 글
Synchronous vs Asynchronous (0) | 2021.11.12 |
---|---|
GET vs POST (0) | 2021.09.22 |
HTTP vs HTTPS (0) | 2021.09.17 |
Session Clustering (0) | 2021.09.02 |
Load Balancing (0) | 2021.08.31 |
Comments