웹 서비스는 데이터를 손실 없이 정확한 순서로 전달하기 위해 연결 지향적인 TCP 프로토콜을 사용합니다. 이로써 통신의 신뢰성을 확보할 수 있으며, **CIA 보안 원칙(기밀성, 무결성, 가용성)**을 달성하기 위한 다양한 암호화 기법들이 사용됩니다. 그중 대표적인 것이 RSA 알고리즘으로, 이는 데이터를 안전하게 주고받기 위해 비대칭 암호화 방식을 채택하고 있습니다.
비대칭 암호화에서는 공개키와 개인키라는 두 가지 키를 사용합니다:
- 공개키는 누구에게나 공개할 수 있는 키로, 데이터를 암호화하는 용도로 사용됩니다.
- 개인키는 소유자만 알고 있는 비밀 키로, 암호화된 데이터를 복호화하는 데 사용됩니다.
이 방식으로 양방향 보안을 확립하여 기밀성과 무결성을 동시에 보장할 수 있습니다.
암호화와 인증 절차
1. 기밀성 유지: 데이터 암호화
- A가 B에게 데이터를 전달할 때, B의 공개키를 사용해 데이터를 암호화한 후 전송합니다.
- 제3자가 이 데이터를 가로채더라도, B의 개인키 없이는 해독할 수 없으므로 데이터의 기밀성이 유지됩니다.
2. 데이터 복호화
- B는 자신의 개인키로 암호화된 데이터를 복호화해 내용을 확인합니다.
- 이로써 안전하게 데이터를 수신할 수 있지만, 이 방식만으로는 A가 보낸 메시지임을 확신할 수 없습니다.
3. 발신자 인증과 무결성 보장: 디지털 서명
- A가 보낸 메시지임을 확신하려면 디지털 서명을 활용합니다.
- 이 과정에서 무결성도 함께 보장됩니다.
디지털 서명 과정:
- A는 B의 공개키로 데이터를 암호화한 후, A의 개인키로 한 번 더 암호화하여 이중으로 보호된 데이터를 생성합니다.
- B는 A의 공개키를 사용해 암호화된 서명 부분을 복호화함으로써, 이 메시지가 A로부터 온 것임을 확인합니다.
일반적으로 데이터 본문은 B의 공개키로 암호화하고, 디지털 서명 부분은 A의 개인키로 암호화하여 메시지의 무결성과 발신자를 인증합니다.
이렇게 함으로써 웹 서비스 통신에서 기밀성과 무결성을 강화할 수 있으며, 수신자는 발신자가 누구인지 확신할 수 있는 안전한 구조를 갖춥니다.
'CS' 카테고리의 다른 글
IP / TCP / UDP / 패킷 / URL (2) | 2024.09.04 |
---|---|
DFS (0) | 2023.12.13 |
[CS] 런타임 vs 컴파일타임 (0) | 2023.06.28 |
[Swift] 메모리구조 - 코드, 데이터, 힙, 스택 (Code,Data,Heap,Stack) (1) | 2022.09.20 |