정보처리기사

[정보처리기사] 대칭키 vs 비대칭키 vs 단방향 암호화 + PEM

dongkeonkim 2023. 4. 24. 14:42
반응형

 

양방향의 대칭키 암호, 비대칭키 암호 그리고 단방향 암호는 모두 암호화 기술의 종류를 나타냅니다.

 

양방향 알고리즘은 주로 데이터의 기밀성을 보호하는 데 사용됩니다.

암호화된 데이터를 해당 키를 가진 사람만이 복호화 할 수 있기 때문에, 데이터를 안전하게 전송하고 저장, 관리할 수 있기 때문입니다.

 

반면 단방향 암호화 기술은 데이터의 무결성을 검증하는 데 사용됩니다.

복호화가 불가능한 암호화기 때문입니다.

예를 들어 비밀번호를 단방향으로 암호화 저장하면 복호화 하지 않고도 입력한 비밀번호와 저장된 비밀번호를 암호화 한 상태로 비교하며 데이터의 변경 여부를 확인할 수 있습니다.

 

하나씩 알아봅시다.

 

 

1. 대칭키 암호(Symmetric Key Encryption)

대칭키 암호화는 암호화와 복호화 하기 위해 같은 키를 사용하는 방식입니다. 따라서 대칭 (=) 입니다.

즉, 암호화된 데이터를 복호화할 때도 동일한 키를 사용합니다.


대칭키 암호는 알고리즘의 구현이 간단하고 처리 속도가 빠릅니다.

따라서 대부분의 데이터 전송, 파일이나 데이터베이스 등의 암호화에서 사용됩니다.

하지만, 암호화된 데이터와 키가 함께 유출될 경우 보안이 취약해질 수 있습니다.

 

대칭키 암호는 Stream 방식과 Block 방식으로 나뉩니다.

 

1) Stream

평문과 키로 데이터를 암호화한 것입니다.

연산속도가 빠르고 데이터 크기에 제한이 없어 대용량 데이터를 암호화하기에 용이합니다.

대표적인 알고리즘은 RC4로, 가장 단순한 스트림 암호. 변수 크기의 키를 입력받아, 그 키를 사용하여 스트림 암호를 생성합니다.

이는 구현이 쉽고 속도가 빠르다는 장점이 있지만, 현재 여러 보안 취약점이 발견되어 사용을 권장하지 않습니다.

 

2) Block

평문을 블록 단위로 분할하여 암호화한 것입니다.

암호화, 복호화 연산시 블록의 크기에 따라 속도 차이가 발생할 수 있습니다. 

 

대표적인 알고리즘 첫 번째는 DES (Data Encryption Standard, 데이터 암호화 표준) 입니다.

DES는 64비트의 블록 단위로 데이터를 암호화하며, 56비트의 대칭키를 사용합니다.
이는 보안성이 높다는 장점이 있지만, 대칭키 암호화 알고리즘 중에서는 비교적 낮은 수준의 키 길이와 블록 크기로 인해 보안성이 약점이 될 수 있습니다.
이러한 약점을 보완하기 위해 3DES(Triple DES)라는 알고리즘이 등장하였습니다.
3DES는 DES를 세 번 반복하여 사용하는 방식으로, 키의 길이를 168비트로 확장하여 보안성을 높이는 방법입니다.

 

대표적인 알고리즘 두 번째는 AES(Advanced Encryption Standard)입니다.
AES는 128, 192 또는 256비트의 키를 사용하여 평문을 암호화하며, 블록 암호화 방식을 사용합니다.

즉, 평문을 일정한 크기의 블록으로 나누며, 각 블록은 상태행렬로 변환되어 암호화됩니다.

이 과정에서 행렬 연산을 사용합니다.

안전한 키 분배를 위해서는 키를 안전하게 전달하거나, 대칭키 암호화를 이용한 대칭키 교환 방식인 Diffie-Hellman 키 교환 등을 사용하며 현재까지도 많이 사용되는 암호화 알고리즘 중 하나로, 온라인 결제, VPN, Wi-Fi 암호화, 데이터베이스 보호 등 다양한 분야에서 사용됩니다.

 

세 번째는 한국에서 개발된 SEED 입니다.

블록 암호화 방식 중 하나인 Feistel 구조를 기반으로 하며 128비트의 길이를 갖는 비밀키입니다.

이 비밀키를 사용하여 데이터를 암호화하고 복호화합니다.

네 번째도 한국에서 개발된 ARIA입니다.

128, 192, 256 비트의 키 길이를 지원하며, 블록 크기는 128비트입니다.
AES와 마찬가지로 행렬 연산을 기반으로 합니다.

 

 

2. 비대칭키 암호(Asymmetric Key Encryption)

비대칭키 암호화는 암호화와 복호화에 서로 다른 키를 사용하기 때문에, 인증과 암호화를 동시에 수행할 수 있습니다.

즉, 암호화된 데이터를 복호화할 때는 암호화할 때 사용한 키와 다른 별도의 복호화용 키를 사용합니다.

 

이는 대칭키 암호화 방식과 달리 안전한 키 교환을 위해 사용됩니다.

즉, 두 사용자가 키를 공유하지 않고도 안전하게 암호화된 메시지를 전송할 수 있습니다.

이러한 방식은 보안성이 높은 대신, 대칭키 암호화에 비해 처리 속도가 느리고, 키의 관리와 분배가 복잡합니다.


대표적인 비대칭키 암호화 알고리즘으로는 다음과 같습니다.

 

 

1) RSA

RSA는 대규모 소수의 곱셈에 기반한 알고리즘으로, 소인수분해 문제의 난해성을 기반으로 합니다.

따라서 충분히 큰 소수를 사용하는 것이 RSA의 안전성을 보장합니다.

공개키와 개인키를 사용하여 암호화와 복호화를 수행합니다. 공개키는 누구나 사용할 수 있으며, 개인키는 해당 키를 소유한 사람만 사용할 수 있습니다. 공개키는 암호화에 사용되며, 개인키는 복호화에 사용됩니다.

RSA는 안전성과 널리 사용되는 알고리즘으로 인해 다양한 분야에서 사용되고 있습니다. 예를 들어, SSL/TLS 프로토콜에서 인증서를 만드는 데 사용되며, PGP와 같은 암호화 소프트웨어에서도 사용됩니다.

 

2) DSA

DSA는 RSA와 같은 공개키 암호화 알고리즘이 아니라, 전자서명에 사용되는 알고리즘입니다. DSA는 암호화와는 달리, 서명을 생성하는 데 사용됩니다.

암호화는 소인수분해 문제와는 달리 이산로그 문제의 난해성을 기반으로 수행하여, 충분히 큰 소수와 생성된 특정 수의 이산로그 값이 안전하게 보호되는 것이 DSA의 안전성을 보장합니다.

DSA는 주로 디지털 서명 프로토콜인 SSL/TLS, SSH, IPSec 등에서 사용됩니다. 또한, 대부분의 공인인증기관에서 인증서를 발급할 때 DSA를 사용하기도 합니다.

 

3) ECC

공개키 암호화 알고리즘 중 하나로, 타원 곡선을 이용한 암호화 방식입니다.

ECC는 RSA와 DSA와 같은 알고리즘보다 더 짧은 비트 수의 키를 사용하여 같은 수준의 보안을 제공할 수 있습니다.
따라서 같은 수준의 보안을 제공하면서도 더 효율적이며 경제적인 방식으로 암호화를 수행할 수 있습니다.
ECC는 타원 곡선의 이산로그 문제를 기반으로 하며, 무선 통신 시스템에서 안전한 통신을 위해 사용됩니다.

또한, 스마트 카드와 같은 작은 장치에서 사용되는 암호화 방식으로도 널리 사용됩니다.


하지만 ECC는 블록 암호화 방식을 사용하는 AES와는 달리 타원 곡선 연산의 복잡성 때문에 속도가 느리다는 단점이 있습니다.

또한, 키 생성 및 관리에 필요한 계산 비용도 높기 때문에, 고성능 서버에서 사용되는 경우가 많습니다.

 

 

3. 단방향 암호(One-Way Encryption)

단방향 암호화는 암호화된 데이터를 복호화할 수 없는 방식입니다.
즉, 암호화된 데이터를 해독할 수 없으며, 복호화할 수 없기 때문에 보안성이 높습니다.

이러한 방식은 주로 패스워드 등의 비밀 정보를 안전하게 저장하거나 무결성 검사를 위해 사용됩니다.


대표적인 단방향 암호화 알고리즘으로는 MD5(Message-Digest algorithm 5) 등이 있습니다.

 

1) MDC

MDC는 해시 함수를 사용하여 주어진 메시지나 데이터의 고유한 체크섬 값을 생성합니다.

이 체크섬 값은 원래 데이터가 변경되지 않았음을 증명하는 역할을 합니다.

파일 다운로드 과정에서 전송된 파일이 변조되었는지 여부를 검사하거나, 디지털 서명에서 서명된 데이터가 변경되었는지 여부를 검사하는 데 사용됩니다.

MDC 알고리즘은 해시 함수를 사용하며 대표적인 예로 SHA(Secure Hash Algorithm)와 MD(Message Digest)가 있습니다.

이들 해시 함수는 각각 SHA-1, SHA-2, SHA-3, MD5, SHA-256 등으로 구현되어 있습니다.

 

2) MAC

주어진 메시지와 키를 입력으로 받아서 고정된 크기의 출력값을 생성합니다.
MAC 값은 송신자와 수신자 간에 공유된 비밀 키를 사용하여 생성됩니다. 송신자는 MAC 값을 메시지와 함께 전송하며, 수신자는 전송된 메시지와 함께 수신된 MAC 값을 비교하여 무결성을 검증합니다.

 

 

 

PEM (Privacy-Enhanced Mail)

개인 키, 공개 키 및 인증서와 같은 암호화된 개인 정보를 포함하는 표준 인코딩 형식입니다.

개인 키와 공개 키가 동일한 인증서 파일에 포함되는 이 형식은 인터넷에서 데이터를 안전하게 전송하고 저장하는 데 널리 사용됩니다.

또한, 인증서를 인증 기관에 제출하거나 서버와의 SSL/TLS 연결을 설정할 때 PEM 형식의 파일을 사용할 수 있습니다.

 

PEM 형식은 Base64로 인코딩된 ASCII 문자열로 표현되며 다른 암호화 형식과 호환되어 쉽게 변환할 수 있기 때문에 대부분의 운영 체제 및 프로그래밍 언어에서 지원됩니다