데이터는 매우 귀중하며, 잘못 사용될 경우 개인, 제3자 또는 단체에 피해를 줄 수 있습니다.
이러한 이유로 인터넷을 통해 데이터를 전송하거나 보관할 때 데이터를 보호하기 위한 방법으로 암호화 기술을 사용하는 것입니다.
이번 글에서는 비대칭 암호화에 대해 자세히 알아보겠습니다.
본론으로 들어가 보겠습니다.
암호화란 무엇인가?
암호화는 데이터를 이해하기 어려운 형태로 바꾸는 계산 과정으로, 암호문이라고도 합니다. 이는 강력한 수학적 암호화 알고리즘에 기반합니다.
즉, 데이터를 안전하게 저장하거나 전송하기 위해 컴퓨터가 데이터를 뒤섞도록 요청하는 것입니다. 또한, 허가된 사람만이 해당 데이터에 접근할 수 있다는 것을 의미합니다.
암호화의 핵심에는 암호화 키가 있습니다. 이 키들은 수학적으로 생성되며, 다양한 암호화 매개변수를 기반으로 계산되고, 발신자와 수신자 간의 합의를 토대로 합니다.
간단한 암호화 예를 들어 설명하겠습니다.
당신(밥이라고 가정)은 암호문에 관심 있는 인터넷 친구 존에게 메시지를 보내고 싶어합니다.
밥은 메시지를 작성한 후 ‘암호화’를 통해 데이터를 처리합니다. 이들이 사용하는 암호화 알고리즘은 간단합니다. 밥은 먼저 ASCII 값을 4칸씩 이동시켜 암호문을 생성합니다.
예를 들어, ‘A’의 ASCII 값인 65는 69로 바뀌어 ‘E’를 반환합니다. ASCII에서 E의 값은 69입니다. 이 간단한 방법으로 밥은 메시지를 작성하여 존에게 보냅니다.
존과 밥은 이미 인코딩 및 디코딩 방법에 합의했으므로 서로에게 메시지를 보낼 수 있습니다.
따라서 밥이 “Hello, John”이라고 적으면 암호 텍스트는 “LIPPS0$NRLR”을 반환합니다.
밥이 보낸 메시지를 원래대로 푸는 과정을 복호화라고 합니다.
이해를 돕기 위해 ASCII 표를 참조하십시오.
참고로, 최고의 ASCII 변환기에 대한 정보도 읽어보세요.
비대칭 암호화란 무엇인가?
비대칭 암호화(또는 공개 키 암호화라고도 함)는 암호화 및 복호화에 두 쌍의 키를 사용하는 알고리즘입니다.
- 공개 키: 공개 키는 메시지를 암호화하는 데 사용됩니다.
- 개인 키: 개인 키는 메시지를 복호화하는 데 사용됩니다. 개인 키는 소유자만 비밀로 유지해야 하므로 비밀 키라고도 합니다.
그렇다면 비대칭 암호화는 어떻게 작동할까요?
이전 예에서 밥과 존을 다시 불러오겠습니다.
밥은 자신이 메시지를 존에게 보내는 방식이 안전하지 않다는 것을 인지했습니다. 결국 누구나 쉽게 암호화를 무작위 대입할 수 있습니다.
그래서 밥은 존에게 메시지를 보내기 위해 비대칭 암호화를 선택했습니다.
이 경우 밥은 먼저 존의 공개 키를 요청합니다. 이미 존을 알고 있으므로 직접 물어볼 수도 있습니다.
만약 그렇지 않다면, 공개 키를 등록하고 공유할 수 있는 공개 키 디렉토리(PKD)가 있습니다. 이를 통해 보안 메시지를 보내려는 사람은 누구든지 해당 사람의 공개 키를 확보할 수 있습니다.
이제 밥은 비대칭 암호화를 사용하여 메시지를 보내는 사람의 공개 키(이 경우 존의 공개 키)로 메시지를 암호화할 수 있습니다.
존은 메시지를 받고 자신의 개인 키를 사용하여 해독할 수 있습니다.
한편, 반대의 경우도 가능합니다. 즉, 개인 키를 사용하여 데이터를 암호화하고 복호화할 수 있습니다.
따라서 밥이 개인 키로 메시지를 암호화하면 존은 밥의 공개 키를 사용하여 메시지를 복호화할 수 있습니다!
비대칭 암호화는 작동하기 위해 두 개의 키에 액세스해야 하기 때문에 작동합니다. 이는 하나의 키로 암호화와 복호화를 모두 수행하는 대칭 암호화와는 다릅니다.
비대칭 암호화는 어떻게 작동하는가?
비대칭 암호화 방식을 명확하게 이해하려면 작동 원리를 살펴봐야 합니다.
기본 과정은 키 쌍 생성을 처리하는 알고리즘으로, 잘 정의된 수학적 함수를 사용합니다.
하지만 키 생성은 발신자와 수신자 간의 합의에 따라 다릅니다.
또한 대부분의 도구와 프로그래밍 언어에는 암호화 처리를 위한 사전 정의된 라이브러리가 있습니다. 따라서 비대칭 암호화를 직접 코딩해야 할 경우, 해당 라이브러리를 활용하여 시간을 절약해야 합니다.
암호화된 메시지를 다른 사람에게 보내기로 결정했을 때 일어나는 일반적인 프로세스는 다음과 같습니다.
➡️ 발신자와 수신자는 특정 매개변수에 따라 공개 키와 개인 키를 생성합니다.
➡️ 다음으로 발신자는 공개 키 디렉토리에서 수신자의 공개 키를 찾습니다.
➡️ 공개 키를 사용하여 발신자는 메시지를 암호화합니다.
➡️ 그런 다음 메시지를 수신자에게 전송하고 수신자는 개인 키로 복호화합니다.
➡️ 수신자는 메시지에 회신할 수 있으며, 이와 동일한 과정이 반대로 실행됩니다.
비대칭 암호화의 장점
비대칭 암호화는 다양한 이점을 제공하며, 그 내용은 다음과 같습니다.
- 메시지 인증: 비대칭 암호화는 탁월한 메시지 인증을 제공하여 메시지와 보낸 사람을 확인할 수 있습니다. 이것이 디지털 서명이 비대칭 암호화의 가장 유용한 활용 사례 중 하나인 이유입니다.
- 편의성: 키를 배포하고 접근하기 쉬워서 비대칭 암호화를 쉽게 구현할 수 있습니다. 공개 키는 쉽게 접근할 수 있으므로 발신자는 수신자의 공개 키를 사용하여 메시지를 쉽게 암호화할 수 있습니다. 반면 수신자는 자신의 개인 키를 사용하여 메시지를 복호화할 수 있습니다.
- 변조 감지: 비대칭 암호화는 전송 중에 발생하는 모든 형태의 변조를 감지합니다.
- 부인 방지: 물리적으로 서명된 문서와 유사하게 작동하므로 발신자는 자신이 메시지를 보냈다는 사실을 부인할 수 없습니다.
다음으로 비대칭 암호화의 단점에 대해 알아보겠습니다.
비대칭 암호화의 단점
비대칭 암호화 사용 시 단점은 다음과 같습니다.
- 느린 속도: 비대칭 암호화는 속도가 느리기 때문에 대용량 데이터를 전송하는 데 적합하지 않습니다.
- 인증되지 않은 공개 키: 공개 키에 자유롭게 접근할 수 있는 개방형 모델을 제공합니다. 그러나 일반적인 키 진위 여부와 특정 개인과의 연관성을 확인할 방법이 없습니다. 이는 사용자에게 진위 여부를 확인해야 하는 부담을 줍니다.
- 개인 키 복구 불가능: 개인 키를 복구하는 메커니즘이 없습니다. 분실할 경우 메시지를 복호화할 수 없습니다.
- 개인 키 유출 시 보안 위험: 개인 키가 유출되면 데이터 또는 메시지 유출로 이어질 수 있습니다.
이제 비대칭 암호화의 일부 활용 사례를 살펴보겠습니다.
비대칭 암호화의 활용 사례
#1. 디지털 서명
오늘날 디지털 서명은 일반적인 기술입니다. 디지털 서명은 RSA(Rivest-Shamir-Adleman) 알고리즘을 사용합니다. 이 알고리즘은 공개 키와 비공개 키 두 가지의 수학적으로 연결된 키를 생성합니다. 이를 통해 개인 키를 사용하여 디지털 서명을 생성하고, 서명자의 공개 키를 사용하여 쉽게 확인하거나 해독할 수 있습니다.
#2. 암호화된 이메일
이메일은 인터넷을 통해 안전하게 전송될 수 있습니다. 이메일 내용은 공개 키로 암호화되고 개인 키로 복호화됩니다.
#3. SSL/TLS
SSL/TLS는 네트워크를 통한 통신을 위한 보안 프로토콜입니다. 대칭 및 비대칭 암호화를 사용하여 발신자와 수신자 간의 보안 연결을 생성합니다.
대부분의 경우 대칭 암호화가 사용됩니다. 하지만 양측이 세션 키를 생성할 때는 비대칭 암호화를 사용해야 할 수도 있습니다. 이 때문에 원본 서버의 신원을 확인하기 위해 비대칭 암호화가 필요합니다.
#4. 암호화폐
비대칭 암호화의 가장 일반적인 활용 사례 중 하나는 암호화폐입니다. 여기서 공개 키와 개인 키는 암호화를 수행하는 데 사용됩니다.
공개 키 암호화는 공개 키를 전송에 사용할 수 있으므로 암호화에 적합하며, 개인 키는 트랜잭션을 잠금 해제하고 암호화폐를 수신하는 데 사용됩니다. 비대칭 암호화를 사용하는 대표적인 암호화폐로는 비트코인이 있습니다.
#5. 암호화된 브라우징
브라우저는 비대칭 암호화를 사용하여 전송 중 데이터를 보호할 수도 있습니다. 예를 들어 브라우저를 열고 사이트로 이동하면 URL 앞에 HTTPS 프로토콜이 표시됩니다. 여기서 ‘s’는 보안을 의미합니다. 보안 연결을 설정하기 위해 브라우저는 서버와의 핸드셰이크를 통해 양측이 데이터 암호화 방법을 결정합니다.
브라우저는 대칭 및 비대칭 암호화를 모두 사용하여 핸드셰이크를 수행할 수 있습니다. 그러나 비대칭 암호화를 사용하면 보안 연결을 더 쉽게 만들 수 있습니다.
실제 시나리오에서 브라우저는 보안 연결을 설정하기 위해 두 가지 유형의 암호화를 모두 사용할 만큼 효율적입니다.
#6. 대칭 키 암호화를 위한 키 공유
비대칭 키 암호화는 연결을 통해 대칭 키를 공유하는 방법으로도 사용됩니다.
대칭 암호화 vs. 비대칭 암호화
대칭 암호화와 비대칭 암호화의 차이점은 다음과 같습니다.
비대칭 암호화 | 대칭 암호화 | |
키 | 작동하려면 두 개의 키가 필요합니다. 공개 키는 메시지를 암호화하고, 개인 키는 메시지를 복호화합니다. 반대 방향도 가능합니다. | 대칭 암호화에는 단일 키만 필요합니다. 키는 메시지를 암호화하고 복호화합니다. |
암호문 크기 | 비대칭 암호화로 생성된 암호문은 메시지와 길이가 비슷하거나 더 큽니다. | 대칭 암호화로 생성된 암호문은 메시지와 길이가 비슷하거나 작습니다. |
이상적인 사용 사례 | RSA, ECC, EL, Gamal, Diffie-Hellman 등이 있습니다. | 대칭 암호화에 사용되는 인기 알고리즘은 RC4, DES, 3DES 및 AES 등이 있습니다. |
속도 및 효율성 | 암호화 프로세스는 대칭 암호화에 비해 상대적으로 느립니다. 이로 인해 많은 양의 데이터를 전송하는 데 비효율적입니다. | 암호화 프로세스는 비대칭 암호화보다 빠릅니다. 이를 통해 대용량 데이터를 효율적으로 전송할 수 있습니다. |
알고리즘 | 비대칭 암호화 알고리즘에는 RSA, ECC, EL, Gamal, Diffie-Hellman 등이 있습니다. | 대칭 암호화 알고리즘에는 RC4, DES, 3DES 및 AES 등이 있습니다. |
키 크기 | 키 크기는 2048비트 이상일 수 있습니다. | 키 크기는 128비트 또는 256비트 길이입니다. |
목적 | 비대칭 암호화는 데이터 암호화, 인증 및 보안 연결 채널을 만드는 데 사용할 수 있습니다. | 대칭 암호화는 주로 대용량 데이터를 전송하는 데 사용됩니다. |
비대칭 암호화는 언제 사용해야 하는가?
다음과 같은 경우 비대칭 암호화를 사용해야 합니다.
- 메시지 암호화 및 전송을 위한 더 안전한 옵션을 찾고 있는 경우
- 비대칭 암호화는 속도가 느리고 대용량 데이터 전송에 적합하지 않기 때문에 소량의 데이터를 전송해야 하는 경우
- 디지털 서명을 확인하려는 경우
- 암호화폐를 사용하고 있으며 신원을 확인하여 거래를 승인하려는 경우
마지막 말
비대칭 암호화는 다양한 기술의 핵심입니다. TLS/SSL을 사용하여 디지털 서명을 확인하는 등 다양한 용도로 사용되고 있습니다.
또한 이미 사용 가능한 암호화 라이브러리 덕분에 비대칭 암호화를 선호하는 도구나 프로그래밍 언어로 신속하게 구현할 수 있습니다. 바퀴를 재발명하여 비대칭 암호화를 직접 작성할 필요는 없습니다.
다음으로 대칭 암호화에 대한 자세한 기사를 읽어보세요.