평문을 암호화하는 것을 영어로 Encryption이라고 하고 다시 평문으로 바꾸는 것을 복호화 영어로 Decryption이라고 합니다.
정말 특별한 경우를 제외하고 모두 아래 그림과 같이 평문과 키를 암호 알고리즘(자물쇠 그림)에 제공하여 암호문을 만들어 냅니다.
이는 대칭키 암호와 비대칭키(공개키) 암호도 마찬가지입니다. 그렇다면 무슨 차이점이 있을까요?
대칭키 암호
대칭키 암호는 암호화와 복호화 시 사용하는 키가 같다는 게 핵심입니다. 메시지를 주고받는 두 사람은 같은 암호 알고리즘과 키를 사용하여 정보의 노출을 막을 수 있습니다.
대칭키 암호 시스템은 자물쇠와 열쇠로 비유할 수 있습니다.
먼저 재현이와 민수가 서로 같은 열쇠를 가지고 있다고 가정합니다.
1. 자물쇠 정하기
비밀 물건을 공유하려는 사람들은 같은 자물쇠를 사용합니다. 이 자물쇠는 특정 열쇠로만 열 수 있습니다.
2. 비밀 물건 공유하기
자신의 태블릿을 재현이에게만 공유하려는 민수는 언제든 다른 사람은 만질 수없도록 태블릿을 서랍에 넣고 자물쇠로 잠겄습니다.
3. 열쇠 사용
서랍이 자물쇠로 잠겨있는 것을 본 재현이는 태블릿을 얻기 위해 열쇠를 사용해 자물쇠를 해제합니다.
이제 이것을 대칭키 암호화에 적용해 보겠습니다.
1. 암호화 키 생성
암호화를 사용할 양측은 같은 암호 알고리즘을 사용하고 암호화 키를 공유합니다. 이것이 마치 같은 자물쇠와 열쇠를 정하는 것과 같습니다.
2. 메시지 암호화
암호화를 하려는 측은 암호화 키를 사용하여 메시지를 암호화합니다. 이것은 마치 자물쇠로 메시지를 잠그는 것과 같습니다.
3. 메시지 전송
암호화된 메시지를 수신하는 측은 동일한 암호화 키를 사용하여 메시지를 해독합니다. 이것은 마치 열쇠를 사용하여 자물쇠를 열어 메시지를 읽는 것과 같습니다.
이렇게 하면 두 측은 같은 암호화 키를 공유하여 메시지를 안전하게 주고받을 수 있습니다. 이는 대칭키 암호화 시스템의 기본 아이디어입니다.
단, 서로 동일한 키를 사용해야 하기 때문에 키를 서로 나눠가져야 합니다. 하지만 재현이는 미국에 살고 민수는 한국에 살고 있다면 물리적 거리를 뛰어넘어 키를 교환하는 방법이 필요합니다. 이를 가능하게 해주는 것이 키교환 알고리즘이라는 것입니다.
비대칭키(공개키) 암호
비대칭키 암호 시스템은 암호화와 복호화에 사용되는 서로 다른 두 종류의 키를 사용하는 암호화 방식입니다. 이 두 종류의 키는 공개키(public key)와 비밀키(private key)로 알려져 있습니다.
1. 공개키 (Public Key):
- 공개키는 누구에게나 공개되어 있습니다.
- 이 키를 사용하여 메시지를 암호화할 수 있습니다.
- 암호화된 메시지는 오직 해당 공개키에 대응하는 비밀키로만 해독 가능합니다.
2. 비밀키 (Private Key):
- 비밀키는 개인적으로 보호되어야 합니다. 오직 키의 소유자만이 이를 알고 있어야 합니다.
- 이 키를 사용하여 암호화된 메시지를 복호화할 수 있습니다.
- 복호화를 위해서는 공개키로 암호화한 메시지를 사용합니다.
비대칭키 암호 시스템은 대칭키 암호와는 달리, 서로 다른 키를 사용하기 때문에 키 교환의 문제를 해결합니다. 그러나 대칭키 암호에 비해 연산이 느릴 수 있기 때문에, 일반적으로 대칭키 암호화와 결합하여 사용될 때 효과적입니다.
공개키 암호 시스템은 암호화와 복호화에 사용되는 두 개의 서로 다른 키, 즉 공개키(public key)와 비밀키(private key)를 사용합니다. 이것을 현실 예제로 설명해 보겠습니다.
은행에서 ATM으로 입출금을 해보신 경험이 있으실까요??
비대칭키(공개키) 암호를 은행 거래로 비유해 보겠습니다.
1. 입금 과정:
- 누구나 입금을 할 수 있습니다.
- 상대방의 계좌번호만 알고 있으면 가능합니다.
- 극단적으로, 상대방이 통장을 은행에 들고 가서 ATM을 통해 입금할 수도 있습니다.
- 이때 상대방 계좌의 비밀번호는 필요하지 않습니다.
2. 출금 과정:
- 그러나 돈을 입금받은 계좌 주인은 이를 출금하려면 본인 확인을 위해 계좌 비밀번호를 입력해야 합니다.
비대칭키(공개키) 암호에서도 비슷한 원리가 적용됩니다. 공개키로 누구나 데이터를 암호화할 수 있습니다.(입금 과정) 하지만 그 데이터는 비공개키로만 해독할 수 있습니다. (출금 과정)
즉, 공개키로 암호화된 데이터는 해당 비공개키를 가진 사람만이 해독할 수 있습니다. 이렇게 함으로써, 정보를 안전하게 보호할 수 있습니다.
총 정리
지금은 아직 암호 알고리즘에 대한 경험과 지식이 없어서 이해가 안 되는 부분도 있을 텐데 가볍게 읽어보시고 다시 돌아오면 왜 이런 장단점이 존재하는지 확실하게 이해가 되실 겁니다.
대칭키 암호화의 장점과 단점
장점:
1. 대칭키 암호화는 계산이 간단하기 때문에 빠른 데이터 처리 속도를 가집니다.
2. 대칭키의 키 길이가 비대칭키에 비해 짧아서 계산이 빨리 처리됩니다.
3. 대칭키 암호화는 다양한 수학적 이론에 기반하고 있어서 많은 이론이 수용되어 사용됩니다.
단점:
1. 키를 안전하게 보관하고 관리해야 합니다. 두 사용자가 키를 공유해야 하므로 이 키가 노출되지 않도록 해야 합니다.
2. 대칭키 암호의 사용자가 늘어날수록 키를 관리해야 할 수가 기하급수적으로 늘어납니다. 일반적으로 n명의 사용자가 있다면 n개의 키를 생성하고 관리해야 합니다.
비대칭키(공개키) 암호화의 장점과 단점
장점:
1. 개인키만을 비밀로 관리하면 되기 때문에, 대칭키에 비해 상대적으로 키 관리가 간단합니다.
2. 여러 사용자를 위한 키의 개수가 상대적으로 적습니다. 한 쌍의 키(공개키와 비밀키)로 여러 사용자 간의 통신을 보호할 수 있습니다.
단점:
1. 대칭키 암호화에 비해 데이터 처리 속도가 느립니다. 대칭키 알고리즘에 비해 계산이 복잡하고 많은 계산이 필요합니다.
2. 비대칭키 알고리즘은 역사가 짧습니다. 따라서 미래에 새로운 기술에 의해 공개키가 해독될 가능성이 낮아질 수 있습니다. 실제 양자내성암호가 등장하게 된 배경이 여기 있습니다.
3. 공개키가 신뢰할 수 있는지 확인하는 작업이 필요합니다. 이를 통해 중간자 공격과 같은 위조를 방지할 수 있습니다.
'암호학 강의' 카테고리의 다른 글
[암호학] 블록암호 DES 특징과 구현 (0) | 2023.10.30 |
---|---|
[암호학] 스트림 암호(Stream cipher)와 블록 암호(Block cipher) (1) | 2023.10.27 |
[암호학] Kerckhoffs Principle(케르크호프스의 원칙)과 공격자 능력치 (1) | 2023.10.23 |
[암호학] 카이사르 암호와 빈도 분석 (1) | 2023.10.23 |
[암호학] 암호란 무엇인가요? (1) | 2023.10.19 |