학문
미스터리살롱
공개키 암호화는 어떻게 공개된 키로 암호화해도 안전한가요?
공개키 암호화 방식에서 누구나 볼 수 있는 공개키로 암호화하는데도 안전하다고 배우는데, 개인키 없이는 왜 복호화가 불가능한 건지 그 수학적 원리가 궁금합니다.
4개의 답변이 있어요!
안녕하세요. 설재훈 전문가입니다. 쉽게 비유하면 공개키는 자물쇠, 개인키는 열쇠라고 생각하면 됩니다. 예를 들어 내가 특별한 자물쇠를 하나 만들어서 문 앞에 걸어놨어요. 이 자물쇠는 누구나 사용할 수 있어서, 다른 사람이 상자를 넣고 자물쇠를 잠글 수 있습니다. 하지만 열 수 있는 열쇠는 나만 가지고 있는 거죠.
공개키 암호도 똑같습니다. 누구나 공개키를 이용해서 나에게 메시지를 암호화할 수 있지만, 암호를 푸는 개인키는 나만 가지고 있습니다.
그럼 여기서 의문점이 공개키를 보고 열쇠를 만들면 되지 않나?라는 의문이 생기는데요. 실제로 거의 불가능합니다.
공개키는 수학적인 공식이 들어가서 나온 식의 결과값만 보여줍니다. 예를 들면 아주 복잡하게해서 나온 100만단위의 어떤 수라고 하고 개인키는 이공개키 숫자를 만들기 위한 조합을 말하는 거죠. 그건 개인만 알수 있어서 찾기가 어렵다는 것입니다. 결과인 공개키만 보고 개인키를 유추하기에는 너무 많은 경우에 수가 있다는거죠. 어떤 조합인지도 확인이 어렵고요.
그래서 공개키는 모두에게 공개해도 괜찮고, 개인키를 가진 사람만 복호화할 수 있는 이유가 바로 이 수학적인 계산 난이도 때문입니다.
채택된 답변안녕하세요. 최정훈 전문가입니다.
공개 키의 암호화는 암호화와 복호화의 다른 키를 쓰는 비대칭 구조 덕분에 안전한 거죠. 데이터를 잠그는 일방 통행 계산은 쉽습니다. 하지만 개인 키 없이 역산하는 것은 소인수 분해 같은 수학적인 난제 때문에 불가능하다고 볼 수 있습니다. 쉽게 말해 보면은 두 소수를 곱해서 거대한 수를 만드는 것은 간단하지만 그 결과만 보고 원래 소수를 찾아내는 건 슈퍼 컴퓨터로도 거의 불가능한 원리입니다. 결국에는 암호문을 풀 수 있는 건 단 하나의 수학적인 힌트가 바로 개인 키에 들어 있기 때문에 공개 키가 사방에 뿌려져 있어도 안전하게 보호된다고 보시면 되겠네요.
안녕하세요. 이수민 전문가입니다.
공개키 암호의 안전성은 한쪽으로는 쉽고 반대쪽으로는 어려운 계산 위에 서 있어요. 자물쇠를 채우는 건 누구나 할 수 있지만 여는 건 열쇠 주인만 할 수 있는 구조인데, 이 자물쇠를 수학으로 만든 거예요.
RSA를 예로 들면, 먼저 아주 큰 소수 두 개를 비밀로 고르고 둘을 곱한 값을 공개키로 내놓아요. 소수 두 개를 곱하는 건 순식간이지만, 곱한 결과만 보고 원래 두 소수를 찾아내는 건 수백 자리 숫자에서는 슈퍼컴퓨터로도 우주의 나이만큼 걸려요. 암호화는 이 공개된 곱을 이용한 거듭제곱 연산이고, 복호화에 필요한 개인키는 원래 두 소수를 알아야만 계산할 수 있어요. 그러니까 공개키를 아무리 들여다봐도 개인키를 유도하려면 결국 소인수분해를 해야 하는데, 그게 사실상 불가능하니 안전한 거예요.
여기에 한 가지 더 있어요. 암호화 연산 자체는 나머지 연산이라 결과를 보고 원래 값을 되짚는 것도 어렵게 설계돼 있어요. 거듭제곱해서 나머지를 취하면 값이 뒤섞여서, 개인키라는 특별한 지수를 곱해야만 원래 값으로 돌아오도록 수학적으로 짜여 있거든요. 개인키는 두 소수로부터 계산된 이 정확한 되돌림 지수예요.
정리하면 개인키 없이 복호화가 불가능한 건 못 하게 막아둔 게 아니라, 하려면 인류가 아직 풀지 못한 계산 문제를 풀어야 하기 때문이에요. 그래서 이 안전성은 증명된 게 아니라 아무도 지름길을 못 찾았다는 경험 위에 있고, 양자컴퓨터가 소인수분해를 빠르게 풀 수 있어서 지금 암호학계는 양자 내성 암호로 옮겨가는 준비를 하고 있어요 :)
안녕하세요. 김재훈 전문가입니다.
공개키 암호화는 암호화에 사용된 수학적 연산이 한쪽 방향으로는 계산하기 쉽지만 반대 방향으로 되돌리는 것은 극도로 어려운 일방향 함수에 기반하여 작동합니다 예를 들어 RSA 암호화는 두 개의 거대한 소수를 곱하는 것은 쉬우나 그 곱한 결과 값 만을 보고 원래의 두 소수를 찾아내는 소인수분해가 사실상 불가능하다는 점을 이용합니다. 이때 암호화 연산을 역으로 풀 수 있는 유일한 단서 가 바로 개인키에 숨겨진 수학적 비밀이며 이 값이 없으면 슈퍼컴퓨터로 수천 년을 계산해도 암호문을 원래 문장으로 돌려놓을 수 없습니다. 결론적으로 공개키는 일종의 열려 있는 문 역할만 수행할 뿐 그 문을 열고 들어가 잠긴 구조를 해제할 수 있는 열쇠 는 개인키만 가지도록 설계되어 있어 완벽한 안전성을 보장합니다