RSA 암호화 3분 만에 이해하기

김형섭 (Matthew)·2023년 9월 21일
13

개발 팁/테크

목록 보기
5/15
post-thumbnail
post-custom-banner

프롤로그

RSA 암호화, 많이 들어보셨죠?

RSA는 1970년대에 만든 사람 3명의 수학자 이름 앞자를 따온 암호화 이론 입니다.
수학자가 개발한 만큼, 수학에 기반한 암복호화 기술인 것을 알 수 있죠.

정확하게는 소인수분해가 어려운 점을 이용 합니다.
아휴, 이번 글 읽고 싶지 않죠?

걱정마세요.
아래는 수학은 다 빼고, 쉬운 이야기로 풀어가겠습니다.

암복호화의 Why

암복호화의 why 는 무엇 일까요?

보낸 사람과 받는 사람만 이해 할 수 있는 커뮤니케이션 이겠죠.
즉, 비밀 대화 입니다.

대면으로는 조용한 곳에서 둘이서만 이야기 하면 됩니다.
비대면으로는 어떻게든 통신 수단이 쓰이게 됩니다.

여기서 문제가 발생 하죠.

통신 수단에서 비밀이 새어나갈 수 있다는 것입니다.

그럼 어떻게 해야 할까요?
통신 수단에서 누가 보거나 듣더라도, 그 뜻을 알 수 없게 하면 됩니다.

암호화는 그래서 사용 됩니다.
서로 규칙을 모르면 암호문을 평문으로 바꿀수 없는 거죠.

암호화의 종류

암호화 방식은 여러 방법이 있지만, 대표적인 3가지는 AES, DES, RSA 입니다.

그리고, 크게 2가지 종류가 있어요.

  • 대칭 키 암호화
  • 비대칭 키 암호화

말이 좀 어려운가요? 더 쉽게 써보겠습니다.

암호문을 만들려면, 다시 풀 수 있는 키가 필요합니다.
자물쇠를 열려면 키가 필요하듯이요. 그 키를 어떻게 구성하냐에 달려 있어요.

  • 대칭키 암호화는 키가 1개 뿐 입니다.
    자물쇠랑 같습니다. 이 키 하나로 열고 잠그고 합니다.
    여는 키와 잠그는 키가 같아서 대칭키 라고 합니다.

  • 비대칭키 암호화는 키가 2개 한세트 인데요.
    특수한 자물쇠 입니다. 키 하나는 열기만 가능하고, 하나는 잠그기만 가능해요.

이제 좀 쉽지요?

그래서 대칭키 방식으로 1등은 AES 이고, 미국 국가기관에서 개발했습니다.
비대칭키 방식 1등은 단연 RSA 입니다. 수학자들이 개발 했죠.

오늘 주제는 RSA 이니까, 요 RSA를 좀 더 파고 들어가봅시다.

RSA의 비대칭키

비대칭키 암호화는 키가 2개 한세트라고 했습니다.
하나는 열기만, 하나는 잠그기만요.

현실에서는 존재할 수 없겠지만, 수학으로는 가능 합니다.
그런데, 왜 키를 2개로 나누는지 그것을 알아야 할 거예요.

3분만에 예제로 이해하기

A,B 두 사람이 있어요. 그리고 편지가 있습니다.
AB한테 편지를 자물쇠로 잠궈서 보내려고 합니다.

그런데 둘이 너무 멀리 떨어져 살고. 절대로 만날 수 없습니다.
그래서 전달은 택배나 우편만 가능해요.

이 상황에서 편지를 A가 B에게 안전하게 보내려면 어떻게 해야 할까요?

  • 편지를 보내자니 중간에 다 볼 수 있죠.
  • 편지와 자물쇠 키를 보내는건 하나 마나죠.
  • 키를 따로 보내자니 키를 복사 해뒀다가 나중에 편지를 풀어 보겠죠.

어떻게든 키를 보내기만 하면 중간에 누군가 가로챌 수 있어요.
결국 안전한 방법이 없게 됩니다.

그런데, 비대칭 키 자물쇠가 있다면 상황이 달라져요.

비대칭키 자물쇠라면

위와 똑같은 상황으로 가정할께요.

AB에게 편지를 보내야 하는데요.

이때, 이번에는 반대로 B가 A에게 일단 자물쇠와 키를 하나 먼저 줍니다. A가 아니라 B(받는사람)가요.

이때, 키는 자물쇠를 잠그기만 할 수 있는 키 입니다.
또한, 자물쇠는 열려있어서, 내용물을 담고 한번 받은 키로 잠그면 됩니다.
그러니까 니 편지를 내가 준 자물쇠로 잠궈서 보내줘라고 B가 말하는 셈이 돼죠.

B한테 자물쇠와 키를 받은 A는 편지를 자물쇠에 넣고 받은 키로 잠근 다음에요.
그냥 택배든 우편이든 보내면 됩니다.

이 자물쇠로 잠긴 박스를 중간에 누가 가로채도요.
한번 잠긴 자물쇠는요.
B가 아니면 누구도 열수 없습니다.

열수 있는 키는 오직 B만 가지고 있고, B는 이 키를 어느곳에도 보낸 적이 없이 집에만 보관 했거든요.


어때요?

결국 먼저 받는 사람이 안전하게 받기 위해,
누구든 나한테 안전하게 뭘 보내고 싶을때는,

  1. 일단 내가 먼저 자물쇠를 보낼께
  2. 거기다 담아서 보내줘
  3. 그럼 나만 볼 수 있어.

이런 식 입니다.

잘 이해 하셨나요?

RSA 의 단점

위 내용만 보면 완벽한 보안 유지에, 신박 한 느낌이 들었을 것입니다.
맞아요 신박해요.

그러나, 역시나 단점이 있습니다.

앞서, RSA는 수학자에 의해 개발되었다고 했습니다.
그렇습니다.

숫자는 커질수록 계산이 느린 것은 인지상정이겠죠.
고로 RSA로 많은 데이터를 암호화 하려면, 처리할 수 있는 숫자 범위를 넘어버리는 문제가 생깁니다.

암호키의 길이는 일반적으로 1024 bit 또는 2048 bit를 사용하고, 키 길에 따라 암호화 가능한 평문 텍스트 양이 결정 됩니다.
좋다 말았쥬?

RSA의 단점 해결 하기

이런 단점도 또 다른 신박한 해결책이 있습니다.

상대적으로 RSA 같은 비대칭키 암호화 보다 대칭키 암호화는 엄청나게 빠릅니다.
텍스트 양도 제한이 거의 없구요.

그러나 대칭키 암호화는 키가 하나뿐이라 위험하다 했죠?

그러니까 하나는 위험하고, 하나는 느린데…
이 둘을 잘 조합해서 이렇게 하는 것입니다.

바로,

RSA로 서로만 알 수 있는 암호키 자체를 하나 만들어서 먼저 주고 받고,
그 후에는 속도가 빠른 대칭키 방식으로 암/복호화 하는 것이죠 ㅎㅎㅎ

Wow. 엄청나죠?
이런 신박한 방법은 물론, 제가 생각 한게 아닙니다.

이 방법은… 사실

SSL (https) 이 암호화를 하는 원리와 같습니다.
즉, 초기에 RSA로 암호키를 주고 받고요.
그 후에 모든 데이터는 AES 같은 대칭키 암호화로 주고 받습니다.

안전하고, 아무도 가로챌 수 없겠죠?

마무리

정확하게 RSA 에서는

풀기만 가능한 키를 개인키(Private Key)
잠그기만 가능한 키를 공개키(Public Key) 라고 합니다.

(또한 키 2개가 용도를 서로 바꿀 수도 있습니다. 공개키로 암호화 하여 개인키로 복호화 하거나, 개인키로 암호화하여 공개키로 복호화 하거나)

RSA는 암복호화 뿐만 아니라, 신분 증명으로도 쓰여요.

개인키는 그 개인밖에 안가지고 있으므로,
내가 그들의 공개키로 뭘 보내면, 그 개인만 볼 수 있다는 점을 이용하여,

내가 보낸 글자를 해석하는 것은 개인키를 가진 너만 가능한데, 너는 그 글자를 해석했으니, 니가 맞구나! 그럼 신분이 증명 됐네!

라는 원리 입니다. 이것은 공인인증서의 신분 증명 원리이기도 합니다.

최대한 쉽게 쓰려고 노력했습니다.
이 글은 RSA의 기초를 말한 것으로, 앞으로 암호화를 공부하시는데 작은 도움이 되셨으면 좋겠습니다.

오늘도 즐거운 하루 되세요.

아임웹 CTO 매튜 드림.

profile
CTO at Imweb, 20년차 개발 장인, 전) 플레이오토 CTO/창업자
post-custom-banner

0개의 댓글