본문 바로가기

핀테크 활용, 오픈 뱅킹, 인터넷 전문은행

암호화 알고리즘과 메시지 다이제스트

암호화 알고리즘과 메시지 다이제스트

암호화 알고리즘과 메시지 다이제스트
암호화 알고리즘과 메시지 다이제스트

암호화 알고리즘과 메시지 다이제스트에 대해 알아보겠습니다. 낯선 용어들이 등장해서 조금 어렵게 느끼는 분들도 계실 것 같은데, 차근차근 하나씩 살펴보면서 이해하는 시간을 갖겠습니다.

암호화 알고리즘의 분류

먼저 암호화 알고리즘에 대해서 알아볼까요? 지금까지 다양한 암호화 알고리즘들이 개발됐는데, 크게는 ‘대칭형 암호화 알고리즘’과 ‘비대칭형 암호화 알고리즘’으로 분류할 수 있습니다. ‘대칭형 암호화 알고리즘’, 즉, Symmetric Algorithm은 비밀키 암호화 알고리즘, Secret Key Algorithm으로 말할 수 있습니다. 동일한 한 개의 키를 암호화와 복호화에 공동으로 사용하는 알고리즘을 말합니다. ‘비대칭형 암호화 알고리즘’, 즉, Asymmetric Algorithm은 공개키 암호화 알고리즘, 즉, Public Key Algorithm이라고 말할 수 있는데요. 한 쌍으로 이루어진 두 개의 서로 다른 키를, 암호화와 복호화에 각각 다르게 사용하는 알고리즘을 말합니다. ‘대칭형 암호화 알고리즘’에서 사용하는 한 개의 키는 비밀키 또는 Secret Key라고 부르고, ‘비대칭형 암호화 알고리즘’에서 사용하는 두 개의 키는, 각각 공개키, public key와 개인키인 private key라고 부릅니다. 두 알고리즘은 서로 반대되는 특징을 갖고 있는데, ‘대칭형 암호화 알고리즘’은 암호화하거나 복호화하는데 속도가 빠르고, 암호화하는 평문의 길이에 제한이 없다는 장점이 있습니다. 그런데 키 교환이 어렵다는 단점도 있습니다. 반면에 ‘비대칭형 암호화 알고리즘’은 키 교환이 쉽다는 장점이 있지만, 암호화하거나 복호화하는 속도가 느리고, 암호화할 수 있는 평문의 길이에 제한이 있다는 단점이 있습니다. ‘대칭형 암호화 알고리즘’의 예로, DES, AES, SEED 등을 들 수 있고, ‘비대칭형 암호화 알고리즘’의 예로는 앞에서 잠깐 언급했던 RSA 같은 것들이 있습니다. 우리나라의 인터넷 뱅킹 같은 민간 부문에서는 ‘대칭형 암호화 알고리즘’으로 SEED를 사용하고요. ‘비대칭형 암호화 알고리즘’으로는 RSA를 사용하고 있습니다.

대칭형 암호화 알고리즘과 비대칭형 암호화 알고리즘

다음으로 ‘대칭형 암호화 알고리즘’과 ‘비대칭형 암호화 알고리즘’의 암호화와 복호화 과정을 함께 살펴보겠습니다. ‘대칭형 암호화 알고리즘’은 비밀키 Ks로 암호화와 복호화를 하는 것을 확인할 수 있습니다. ‘비대칭형 암호화 알고리즘’은 공개키 Kb로 암호화한 암호문을 개인키 Kv로 복호화하거나, 개인키 Kv로 암호화한 암호문을 공개키 Kb로 복호화하고 있습니다. 이번에는 키 교환에 대해 살펴보겠습니다. ‘대칭형 암호화 알고리즘’을 사용하는 경우에는, Alice나 Bob이 새로운 비밀키 Ks를 만들었을 때, 그것을 각각 상대방인 Bob 또는 Alice에게 안전하게 넘겨줄 방법이 없습니다. 이것을 암호학에서는 "키 교환이 어렵다"라고 표현합니다. 이에 반해서 ‘비대칭형 암호화 알고리즘’에서는, 화면 위쪽에 있는 그림에서처럼, Bob이 Kb와 Kv 한쌍의 키를 생성한 다음에 공개키 Kb를 Alice에게 넘겨줍니다. 이때, 네트워크의 중간에 있는 공격자가 공개키 Kb를 탈취한다 하더라도 나중에 암호문을 주고받는 데에는 아무런 문제가 없기 때문에 암호학에서는 이걸 "키 교환이 용이하다"라고 표현합니다. 마찬가지로 Alice가 Kb와 Kv 한쌍의 키를 생성한 다음에 공개키 Kb를 Bob에게 넘겨줍니다. 이때도 역시, 네트워크의 중간에 있는 공격자가 공개키 Kb를 탈취해도 나중에 암호문을 주고받는 데 아무런 문제가 없습니다.

비대칭형 암호화 알고리즘의 작동 과정

지금까지 배운 부분 잘 이해가 되셨나요? 앞에서 공개키 Kb는 네트워크의 중간에 있는 공격자가 탈취해도 아무런 문제가 없다는 점을 말씀드렸는데요, 이걸 '비대칭형 암호화 알고리즘의 작동 과정'을 통해서 자세히 설명해 보겠습니다. 여기서는 Bob이 키를 생성해서 Alice한테 넘기는 과정을 가지고 말씀드리겠습니다. 먼저, Bob이 공개키 Kb와 개인키 Kv를 생성합니다. 그런 다음에, Alice한테 공개키 Kb를 전송합니다. 이 과정을 통해서 '키 교환'은 완료됐다고 볼 수 있죠. 이제, Alice가 Bob에게 암호문을 보내려고 할 경우에, 자신의 평문을 앞에서 받은 Bob의 공개키 Kb로 암호화합니다. 그런 다음 Alice가 Bob에게 암호문을 전송합니다. Alice가 보낸 암호문을 받은 Bob은 자신이 갖고 있던 개인키 Kv로 Alice의 암호문을 복호화하고, Alice가 보낸 평문을 얻게 됩니다. 여기서 만약에 네트워크 중간에 있는 공격자인 Malory가 암호문을 취득해서 해독하려고 한다면 어떻게 될까요? 암호문을 해독하려면, Bob의 개인키 Kv가 필요하겠죠. 그런데 Malory는 예전에 네트워크를 통해서 Bob이 Alice한테 보낸 공개키 Kb 말고는 아는 것이 없기 때문에 암호문을 해독하는 것이 불가능합니다. 약간 복잡해 보이지만 이 과정을 보면서 우리는 중요한 점을 파악할 수 있습니다. 네트워크를 통해서 공개키 Kb를 전달하는 것은 아무런 문제가 발생하지 않고, 키 교환도 안전하게 이루어진다는 점입니다. 암호화 알고리즘은 다음 영상에서도 계속 등장할 예정이니까 잘 기억해 두시기 바랍니다.

메시지 다이제스트

다음은 ‘메시지 다이제스트’에 대해 알아보겠습니다. 여러분은 ‘메시지 다이제스트’라는 용어를 들어보셨습니까? 처음 들어보신 분들도 계실 텐데요. ‘메시지 다이제스트’란, 평문 같은 메시지를 정해진 크기의 축약값으로 변환하는 기법을 말합니다. 여기서 유의할 점은, ‘메시지 다이제스트’는 암호화 기법은 아니라는 점입니다. 하지만 전자서명 등에서 유용하게 사용되기 때문에 암호화하는 과정에서 반드시 필요한 기법이라고 할 수 있습니다. ‘메시지 다이제스트’는 파일 압축이랑 비슷하다고 이해하시면 될 것 같습니다. 다만 일반적으로 압축 파일의 경우 원래의 파일로 복원을 할 수 있지만, ‘메시지 다이제스트’된 축약값은 원래의 메시지로 복원할 수 없기 때문에 ‘단방향 해시’라고도 부릅니다. 지금까지 ‘암호화 알고리즘과 메시지 다이제스트’에 대해 살펴봤습니다. 처음에는 어렵게 느껴지던 용어들이지만 내용을 차근차근 알아보니 쉽게 이해하실 수 있겠죠? 배운 내용을 잘 기억하신다면 다음 영상에서 다룰 내용들을 이해하는 데에도 도움이 될 것입니다.