▶︎ 대칭키, 비대칭키, 공개키, 개인키
대칭키와 비대칭키, 공개키와 개인키, 서로서로 연관되는 단어들인데 도무지 어떤식으로 활용되는지 감이 안잡히지 않나요? 일단 자세하게 들어가기 앞서 간단하게 어떤 뜻인지 알아봅시다.
공개키란(Public Key), 누구던 키를 확인할 수 있고 사용할 수 있는 키입니다. 흔히 인터넷(네트워크)를 통해서 공유된 키들을 공개키라고 합니다. 개인키는(Private Key), 자기 자신만이 소유하고있고 관리하는 키입니다. → 아무리 개인키라고해도 네트워크를 통해 전달이 된다면 공유키라 볼수도 있다…
☑️ 대칭키 암호화?

대칭키는 이름 그대로 데이터를 암호화하거나 복호화 할 때 사용하는 키가 대칭인 경우이다. 어떤 데이터가 대칭키를 통해 암호화가 되었다면, 똑같은 대칭키를 갖고 있는 사용자가 아니면 해당 정보를 확인 할 수 없습니다. 따라서, 암호화 된 데이터를 전달하고 확인하기 위해서는 보내는사람, 받는사람 모두 똑같은 키를 가지고 있어야한다. 여기서 포인트는 이러한 키를 안전하게 전달하거나 교환하는게 대칭키 암호화에서 가장 중요합니다. 예를 들어 볼게요 A가 B에게 열쇠🔶로 잠긴 보물상자를 전달하고 싶으면, 보물상자와 열쇠🔶를 같이 보내야합니다. 서로 거리가 멀어서 배달원을 고용해서 보물상자와 열쇠🔶를 같이 보냈습니다. 열쇠를 같이 안보내면 B가 상자를 열어 볼 수 없어서 무조건 보내야하는데 배달원이 나쁜마음을 먹고 보물상자의 내용물을 훔치거나 가품으로 바꿔치기 할 수 있겠죠? 그래서 열쇠를 안전하게 전달할 방법을 찾아야해요. 여기서 열쇠🔶 = 대칭키를 의미하고, 배달원 = 네트워크(즉, 인터넷상 공유)를 의미하고 보물상자 = 암호화된 문서를 의미합니다. 어쨋거나 대칭키의 핵심은 이 대칭키를 얼마나 상대에게 안전하게 전달하는지에 달려있습니다.
☑️ 비대칭키 암호화?

비대칭키 암호화는 대칭키와 다르게 암호화를 할때와 복호화를 할 때 사용하는 키가 서로 다른 경우를 의미합니다.
공개키와 개인키는 비대칭키 암호화에서 사용되는 단어입니다.
비대칭치를 활용하는 암호화 방법엔 개인키로 암호화하는 방식과 공개키로 암호화하는 방식 두가지로 나뉩니다.
1. 공개키로 데이터를 암호화하는 경우
공개키는 네트워크상에 공유된 키이므로 누구나 사용이 가능합니다 . 이를 통해서 암호화를 해서 데이터를 전송하면 어떤 일이 일어날까요?
공개키로 암호화된 데이터는 공개키로는 복호화할 수 없습니다. 그에 상응하는 개인키가 있는 본인만 데이터를 복호화해서 접근을 할 수 있습니다.
이러한 방법은 그 사람말고는 접근하지 않았으면 하는 데이터를 전달할 때 사용됩니다.
2. 개인키로 데이터를 암호화 하는경우
개인키는 네트워크상에 공유되지 않고 자신만이 가지고 있는 키입니다. 특정 사용자에게 데이터를 보낼때 자기 자신의 개인키를 이용해서 데이터를 암호화하여 전송할 수 있습니다. 하지만 이에 상응하는 공개키는 모두 공개된 상태인데 왜 개인키로 암호화해서 전송을 할까요?
이렇게되면 누구나 데이터에 접근을 할 수 있을텐데 굳이 암호화를 해야하는 이유가 있을까? 라고 생각할 수 있을텐데요. 저도 그랬습니다.
하지만 사람들이 이런 방법을 쓰는데엔 다 생각이 있습니다. 이 방법을 사용할때에는 어떤 정보를 보내는 목적이 아닌 이 데이터를 보낸사람이 누군지에 초점을 맞춘 암호화 방식이라는 것 입니다. A의 공개키로 복호화가 된다면 A의 개인키로 암호화가 됐다는것인데, A의 개인키는 A본인만 가지고 있으니까 A가 보낸 데이터가 확실하다 라고 볼 수 있습니다.
이러한 방법이 요즘 많이 쓰이고 있는 ‘전자서명’과 같은 공인인증체계의 기본이랍니다.
☑️ 대칭키를 안전하게 전달하는 법
대칭키를 안전하게 전달하기 위해서는 대칭키와 비대칭키를 적절히 사용해야한다. 이는 HTTPS에서 동작하는 방식과 비슷하다. 대칭키는 암호해독에 빠르고 편리하지만 전달하기 까다롭고 비대칭키는 보안에 좋지만 그만큼 시간이 많이 걸린다.
그래서 주로 대칭키를 비대칭키로 암호화해서 안전하게 전달한 뒤에 공유된 대칭키로 서로 통신을 한다. 더 자세한 설명과 HTTPS 동작 예시를 알고 싶다면 아래 링크를 확인해주세요.
