네트워크 안전성을 위한 기술 : 대칭키와 비대칭키
개요
네트워크 통신에서 주고 받는 데이터가 탈취돼 악용되는 상황을 방지하기 위해, 통신상의 안정성을 높이기 위한 기술로 암호화와 복호화를 활용!!
- 암호화 encrypt : 원문 데이터를 알아보기 어려운 형태로 변경
- 복호화 decrypt : 암호화된 데이터를 원문 데이터로 되돌림
- 키 key : 무작위 데이터 덩어리, 이 키와 원문 데이터가 암호화 알고리즘을 거쳐 암호문이 됨
대칭키 암호화
“암호화와 복호화에 사용되는 키가 동일한 경우”
- 하나의 키로 두 절차를 해결할 수 있기 때문에 통신 간 절차가 간소화되므로, 비교적 빠르고 간편하게 암호문을 주고 받을 수 있지만, 누구든 대칭키를 가진다면 데이터를 열어볼 수 있게된다는 큰 취약점이 존재한다!!
- 게다가 대칭키 역시 일종의 데이터인지라 통신이 필요한데, 정작 키는 어떻게 보호할 것인지에 대한 딜레마가 존재한다!! 키를 안전하게 주고 받을 수 있다면, 그 방식을 데이터 자체에 적용하면 되는 게 아닌가?!
비대칭키 암호화
“암호화와 복호화에 사용되는 키가 다른 경우”
- 한 쌍의 키를 각각 공개키, 개인키라 칭하고, 전자를 주고 받아 공유하며, 후자는 한쪽에서만 안전하게 보관한다!!
- 공개키를 취득하더라도, 개인키를 탈취하지 못 하면 원문 데이터를 확인할 수 없기 때문에, 개인키 보호만 잘 된다면 훨씬 안전하다!!
- 다만 암호와와 복호화에 별개의 키가 필요하기 때문에 통신 절차가 비교적 복잡해지고, 부하가 추가된다는 단점이 있다!!
세션 키
“대칭키 + 비대칭키”
1. 대칭키를 공개키로 암호화해서 공유 → 이때의 대칭키를 세션키라 칭함
2. 세션키로 데이터를 암호화해서 송신
3. 받은 암호문을 해독하기 위해 세션키를 개인키로 복호화
4. 복호화된 세션키로 암호문을 복호화해 원문 데이터 수신
인증서 Certificate
- 일반적으로 공개키의 유효성을 입증하기 위한 전자 문서를 의미!!
- 인증기관 CA에서 인증서를 발급하고, 검증하고, 저장해줌
- 호스트 간 통신에 제 3자인 인증기관이 관여하게 되는 느낌
- IdenTrust, DigiCert, GlobalSign 등이 대표적인 인증기관
서명 값 signature
- 인증 기관이 공개키의 유효성을 보장하는 인증 정보
1. 인증서 내용을 해시 값으로 변환 → 이 값이 서명 값
2. CA의 개인키로 서명 값을 암호화
3. 인증서와 서명 값을 받은 호스트가 CA에서 공유하는 공개키를 확인
4. 공개키로 서명 값을 복호화해 얻은 해시 값과, 호스트에서 인증서를 해시화해본 값을 비교
5. 두 내용이 일치하면 인증 정보가 유효하다 판단!
HTTPS
SSL과 TLS를 통해 보안성이 강화된 HTTP
- SSL Secure Sockets Layer
- TLS Transport Layer Security
둘 모두 인증과 암호화를 수행해주는 프로토콜
HTTPS 메세지의 송수신 단계
1. TCP 3-way handshake (연결 수립)
2. TLS handshake
3. 암호화된 메세지 송수신
TLS 핸드셰이크
키 교환 및 인증서 및 서명 정보 통한 키 검증이 이뤄지는 단계
키 교환 단계에서 사용할 암호화 알고리즘과 해시 함수 목록을 함께 주고 받는데,
이 둘을 암호 스위트 `cipher suite`라 칭한다!!
'네트워크 공부' 카테고리의 다른 글
로드밸런싱 - 안정성을 위한 기술 (0) | 2025.01.14 |
---|---|
전송 계층 - TCP 중심으로 (1) | 2024.12.20 |
DNS - Domain Name, Name Server, Query, DNS Cache (0) | 2024.12.16 |
네트워크 계층 - IP주소와 Routing (0) | 2024.12.14 |
OSI 모델과 7계층 (1) | 2024.12.07 |