일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- DP
- Algorithm
- 동적 계획법
- 그레이들
- react
- frontend
- network
- git
- 안드로이드
- vscode
- 백준
- BFS
- db
- 알고리즘
- Javascript
- 다이나믹 프로그래밍
- 자바
- Database
- CS
- TypeScript
- Graph
- 리트코드
- 프로그래머스
- VIM
- Data Structure
- Python
- java
- Redux
- DFS
- LeetCode
Archives
- Today
- Total
늘 겸손하게
CS - Network - 대칭키 & 공개키 본문
대칭키 (Symmetric Key)
암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘
동일한 키를 주고받기 때문에, 매우 빠르다는 장점이 있다.
하지만 대칭키 전달과정에서 해킹 위험에 노출된다.
공개키(Public Key) / 비대칭키(Asymmetric Key)
암호화와 복호화에 사용하는 암호키를 분리한 알고리즘
대칭키의 키 분배 문제를 해결하기 위해 고안됨. 대칭키는 송수신자만이 알아야하여 분배가 복잡하고 어려운 문제가 존재.
공개키와 비밀키로 분리할 경우, 남들이 알아도 되는 공개키만 공개하면 되므로 키 분배 문제가 없음.
자신이 가지고 있는 고유한 암호키(비밀키)로만 복호화할 수 있는 암호키(공개키)를 대중에 공개함
공개키 암호화 방식 진행 과정
- A가 웹 상에 공개된 'B의 공개키'를 이용해 평문을 암호화하여 B에게 전송
- B는 전송된 암호화 평문을 자신의 비밀키로 복호화하여 읽고 A의 공개키로 응답을 암호화하여 A에게 전송
- A는 자신의 비밀키로 암호화된 응답문을 복호화
하지만 이 방식은 Confidentiallity만 보장해줄 뿐, Integrity나 Authenticity는 보장해주지 못함.
-> 이는 MAC(Message Authentication Code)나 전자 서명(Digital Signature)으로 해결 (MAC은 공개키 방식이 아니라 대칭키 방식임을 유의. T = MAC(K, M) 형식)
공개키는 암호화 키와 복호화 키가 달라 대칭키에 비해 암호화, 복호화가 매우 복잡함.
대칭키와 공개키 암호화 방식을 적절히 혼합해보면? (하이브리드 방식)
-> SSL 탄생의 시초
- A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
- B는 암호문을 받고, 자신의 비밀키로 복호화함
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
- A는 자신의 대칭키로 암호문 복호화
- 앞으로 이 대칭키로 암호화 통신
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 대칭키 암호화 방식으로 통신하는것
[ 출처 ]
'Computer Science > Network' 카테고리의 다른 글
CS - Network - Blocking/Non-blocking & Synchronous/Asynchronous (0) | 2022.11.30 |
---|---|
CS - Network - 로드 밸런싱 (Load Balancing) (1) | 2022.09.26 |
CS - Network - TLS/SSL HandShake (0) | 2022.09.26 |
CS - Network - HTTP & HTTPS (1) | 2022.09.26 |
CS - Network - UDP (0) | 2022.09.24 |