HTTPS 암호화에도 활용되는 공개키 방식(aka 비대칭키 방식) 암호화란 무엇일까?
그리고 애초에 왜 암호화는 왜 필요한걸까? 이 두가지 이유에 대해 알아보자.
암호화의 필요성
인터넷은 정보를 목적지로 보내기 위해서 그 사이에 있는 다른 컴퓨터를 반드시 거치게 된다. 그리고 전달하는 내용은 그 경로에 해당하는 모든 컴퓨터가 다 볼 수 있다.
애초에 인터넷은 군사 목적으로 개발 되었기 때문에 해당 네트워크에 악의적인 사용자가 한명도 없다는 가정을 하고 개발되었다.
따라서 여러 컴퓨터에 거쳐 패킷을 전달해서, 확장에 유리한 구조를 만드는 것을 반대할 이유가 없었다. 누군가 내가 보낸 내용을 읽더라도, 다 우리 군대 소속이니까 상관이 없었기 때문이다.
하지만 인터넷이 대중에게 공개되면서, 통신 내용을 타인이 읽을 수 있다는 것은 엄청난 취약점이 되었다.
이를 해결하기 위해 가장 쉽게 생각할 수 있는 방법은 비밀키(aka 대칭키) 방식 암호화이다.
어떤 특정한 키를 만들어서, 그걸 알고있으면 암호화된 정보를 복호화할 수 있도록 허용하는 방식이다.
하지만 이는 적어도 한번은 서버의 비밀키를 클라이언트에게 알려줘야하기 때문에 여전히 위험하다.
그렇다고 클라이언트 한명당 키를 하나씩 발급하고, 유출된 키를 삭제하는 식으로 관리하기엔 서버의 확장성이 치명적으로 위협받는다.
공개키 암호화의 원리
따라서 서버의 확장성을 지키면서, 내용을 안전하게 암호화하려면 키를 가능한 적게 가지고 있어야 한다.
이를 가능하게 해주는 기술이 바로 비대칭키 알고리즘이다.
암호화와 복호화에 쓰이던 키가 단 하나였던 대칭키 알고리즘과 다르게, 이번엔 키를 두개를 발급한다.
이 두 키는 특별한 관계를 가지고 있어야한다. 둘 중 하나로 암호화된 정보를, 다른 하나로만 복호화할 수 있어야하는 것이다.
RSA, ECC 등 알고리즘으로 이러한 키페어를 생성할 수 있다.
이제 두 키중 하나만 공개하고, 남은 하나는 철저하게 자기 자신만 알고있으면 된다.
키를 알아도 복호화를 할 수 없기 때문에 서버 외의 사용자는 암호화된 정보를 읽을 수 없다.
물론 키 발급이 어렵고 시간이 좀 걸리지만, 정보를 안전하게 지키면서 서버의 확장성을 확보할 수 있다.
한계
전송하는 정보를 악성 사용자로부터 지키는데에는 문제가 없지만, 악성 사용자가 악성 정보를 만들어 내는 것은 가능하다.
단순히 자료를 감추는 것에서 더 나아가, 이 정보가 믿을 수 있는 사용자로부터 온 것인지 확인하는 과정이 필요하다.
'CS 지식' 카테고리의 다른 글
SSL 작동 방식 및 필요성 이해하기 (1) | 2024.12.13 |
---|