눈송이의 개발생활
[Network]대칭키와 공개키 본문
HTTPS
- SSL(보안 소켓 계층) 사용
- HTTP 자체를 암호화 하는 것 ❌
- HTTP 메시지 body 암호화 ⭕. HTTP header 암호화 ❌
- 데이터 암호화해서 보안상 안전
- 검색 엔진 최적화(SEO)
- Google은 https 웹사이트에 가산점 줌 → 검색했을 때 빈번하게 노출
- AMP(가속화된 모바일 페이지) 만들 때 https 사용해야 함
SSL/TLS
- 웹 서버와 웹 브라우저 간의 보안을 위해 만들어진 프로토콜
- 공개키/개인키 + 대칭키 기반으로 사용
- 왜 필요?
- 전달되는 데이터를 외부의 공격자로부터 보호하기 위해서
- 암호화, 해시화, 디지털 인증서 3가지 기술 조합해서 사용 → 보안 위협에 대항
대칭키
- 암호화/복호화에 사용되는 키가 동일 → 암호화/복호화 easy
- 하나의 비밀키를 클라이언트와 서버 모두 같이 사용
- 비밀키 하나만 알아내면 암호화된 내용 해독 가능
- ex) SEED, AES, DES, 3DES, ARIA, ChaCha20 등
🔵장점
- 암호화/복호화 계산 시간 빠름 → 대용량 data 암호화에 적합
- 기밀성 제공
🔴단점
- 무결성, 인증, 부인방지 보장 ❌
- 키 교환하는 중 탈취 될 가능성 ⭕
- 사람이 증가할수록 관리해야할 키 개수 ⬆️(전부 따로따로 키 교환하기 때문)
공개키(= 비대칭키)
- 서로 다른 키로 암호화/복호화 수행
- 오직 개인키로만 공개키 복호화할 수 있기 때문에 아무나 공개키 가져도 ⭕
- 대칭키보다 암호화 연산 시간이 오래 걸려 비용이 큼
- 개인키 + 공개키 사용 (key pair)
- 한 쪽 키에서 다른 쪽 키를 도출할 수 없음
- ex) RSA, DH/DHE, ECDH/ECHDE 등
🔵장점
- 키 분배할 필요 ❌ (공개키가 이미 공개되어있기 때문에)
- 기밀성, 인증, 부인방지 기능 제공
🔴단점
- 대칭키 암호화 방식에 비해 속도가 느림
공개키(Public Key)로 정보 암호화하는 경우
1️⃣- 공개키 : 누구나 알 수 있도록 공개된 키
- 어떤 정보를 특정 사용자에게 보낼 때 해당 사용자의 공개키를 사용해 정보 암호화
- 공개키로 암호화 되어있는 건 개인키를 갖고있는 수신자만 해제 가능
⌛순서
- B(수신자) 공개키&개인키 쌍 생성
- 공개키 등록, 개인키는 본인이 소유
- A(송신자)가 B의 공개키 받아옴
- A가 B의 공개키 이용해서 데이터 암호화
- 암호화된 데이터 B에 전송
- B는 암호화된 데이터 B의 개인키로 복호화 (개인키는 B만 갖고 있어서 복호화 B만 가능)
개인키(Private Key)로 정보 암호화하는 경우
2️⃣- 개인키 : 자신만 갖고 있는 키
- 어떤 정보를 특정 사용자에게 보낼 때 자기 자신의 개인키를 사용해 정보 암호화
- 중간에 가로채면 해당 사용자의 공개키를 이용해 복호화 가능
- "누가 데이터를 보냈냐"에 초점을 두는 방식
- 데이터 제공자의 신원이 보장되는 전자서명 등의 공인인증체계의 기본
대칭키 방식 | 공개키 방식 | |
키 | 한 개의 비밀 키 | 공개키 + 개인키 (key pair) |
키 관리 | 비밀리에 보관 | 개인키는 비밀, 공개키는 배포 |
교환 | 어려움, 위험함 | 매우 쉬움 |
키 전송 문제 | ⭕ | ❌ |
속도 | 빠름 | 느림 |
암호화 할 수 있는 평문 길이 | 제한 없음 | 제한 있음 |
기밀성 | ⭕ | ⭕ |
무결성 | 부분 가능 (인증서 불가능) | ⭕ (인증서와 함께) |
인증 | 부분 가능 | ⭕ |
부인 방지 | ❌ | ⭕ |
참고
https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/
https://youtu.be/wPdH7lJ8jf0
https://gaeko-security-hack.tistory.com/123
'Computer Science > Network' 카테고리의 다른 글
[Network]쿠키(Cookie)와 세션(Session) (0) | 2023.02.10 |
---|---|
[Network]TLS/SSL Handshake (0) | 2023.02.09 |
[Network]HTTP/1.1 HTTP/2.0 HTTP/3.0 (0) | 2023.02.07 |
[Network]HTTP와 HTTPS (0) | 2023.02.07 |
[Network]TCP/IP 흐름제어(Flow Control)와 혼잡제어(Congestion Control) (0) | 2023.02.06 |
Comments