철학과 학생의 개발자 도전기
대칭키와 공개키 본문
0. 개요
- 기밀성(Confidentiality): 인가되지 않은 자는 정보를 확인하지 못하도록 하며, 정보가 유출되더라도 평문으로 해독할 수 없고 변조 또는 위조하지 못하도록 기밀을 유지한다.
- 무결성(Integrity): 인가 되지 않은 자로 부터 위조 또는 변조가 발생하지 않았는지 확인
- 인증(Authentication): 수신 받은 메시지가 송신자 본인이라는 것을 확인하고 증명한다.
- 부인 방지(Non-repudiation): 메시지를 보낸 사람이 보낸 사실을 부인하거나, 받은 사람이 받은 사실을 부인할 경우 증명하는 기술을 말한다.
대칭키 알고리즘은 기밀성을 제공하고, 무결성/인증/부인방지를 제공하지 않는다.
공개키 알고리즘은 기밀성/인증/부인방지 기능을 제공한다.
여기서 무결성은 대칭키, 공개키 알고리즘 모두 성립하지 않는다. 따라서 전자 서명(인증서)을 추가함으로써 무결성을 보장한다.
1. 대칭키 암호화
- 대칭키는 암호화와 복호화 키가 동일하다.
- 대표적인 알고리즘으로 DES, 3DES, AES, SEED, ARIA 등이 있다.
- 공개키 암호화 방식에 비해 연산 속도가 빠르다.
- 하지만 키를 교환해야 하기 때문에, 그 과정에서 키가 탈취될 위험이 있다.
- 사용자가 증가할수록 관리해야 할 키가 많아진다.
- 이러한 문제를 해결하기 위해 공개키 암호화 방식이 사용된다.
2. 공개키 암호화
- 공개키 암호화 방식은 효율은 떨어지지만, 대칭키 암호화 방식의 키를 교환해야 하는 문제를 해결하기 위해 등장했다.
- 대표적인 알고리즘으로는 Diffie-Hellman, RSA, DSA, ECC 등이 있다.
- A가 B에게 데이터를 보내는 경우, A는 B의 공개키로 데이터를 암호화해서 보내고 B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보게 된다.
- 암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼수 있게 된다.
- 공개키는 키가 공개되어 있기 때문에 따로 키 교환이나 분배를 할 필요가 없게 된다. 중간 공격자가 B의 공개키를 얻는다고 해도 B의 개인키로만 복호화가 가능하다.
- 키 전달 문제를 해결하여 더 안전하지만, 암호화와 복호화를 위해 복잡한 수학 연산을 수행하기 때문에 대칭키 알고리즘에 비해 속도가 느리다는 단점이 있다.
3. HTTPS
- 대칭키를 사용하면 키가 탈취될 수 있다는 위험이 존재한다.
- 공개키를 사용하면 HTTP 메시지의 길이가 큰 경우에 성능이 느리다. (공개키 알고리즘은 암호화, 복호화 알고리즘이 매우 복잡함)
- 그래서 HTTPS에서는 공개키로 암호화한 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.
암호화 과정
- A는 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화해서 B에게 보낸다.
- B는 암호문을 받고 자신의 비밀키로 복호화한다.
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
- A는 자신의 대칭키로 암호문을 복호화한다.
- 앞으로 해당 대칭키로 계속 통신한다.
즉, 사용자 측에서는 대칭키 알고리즘을 통해 안전하게 키 교환을 한 후 해당 키로 대칭키 알고리즘을 통해 통신하게 된다.
'컴퓨터네트워크' 카테고리의 다른 글
TLS/SSL Handshake (0) | 2023.12.14 |
---|---|
HTTP와 HTTPS (1) | 2023.12.07 |
TCP 흐름 제어/오류 제어/혼잡 제어 (1) | 2023.11.30 |
TCP와 Handshake (0) | 2023.11.23 |
네트워크 계층 (0) | 2023.11.23 |