대칭 암호(symmetric cipher)는 암호화와 복호화 과정에서 동일한 키를 사용하는 암호 방식입니다. 대칭 암호를 실제로 활용할 때 가장 큰 난제는 통신 당사자 간에 비밀 키를 어떻게 빠르고 안전하게 공유하느냐는 점입니다. 만약 통신에 참여하지 않은 제3자(공격자)가 키를 가로채면, 이후 같은 키로 이루어지는 모든 통신 내용을 도청당할 위험이 있습니다.
대칭 암호의 5가지 핵심 구성 요소
대칭 암호 시스템은 다음과 같은 다섯 가지 요소로 구성됩니다.
1. 평문(Plaintext)
알고리즘에 입력으로 들어가는 원본 메시지 또는 정보입니다. 사람이 읽을 수 있는 형태의 데이터로, 암호화되기 전의 상태를 의미합니다.
2. 암호화 알고리즘(Encryption Algorithm)
평문에 대해 다양한 치환(substitution)과 변환(transposition) 연산을 수행하여 암호문을 만드는 규칙입니다.
3. 비밀 키(Secret Key)
암호화 알고리즘에 입력되는 또 다른 값으로, 평문과 알고리즘에 독립적입니다. 어떤 키가 사용되느냐에 따라 알고리즘은 서로 다른 출력을 생성하며, 실제 적용되는 치환과 변환 방식 역시 키에 의해 결정됩니다.
4. 암호문(Ciphertext)
암호화 알고리즘의 출력으로 생성된 스크램블(scrambled)된 메시지입니다. 평문과 비밀 키에 따라 결과가 달라지며, 같은 메시지라도 서로 다른 키를 사용하면 전혀 다른 암호문이 만들어집니다. 암호문은 겉보기에 무작위 데이터 흐름처럼 보여 그 자체로는 이해할 수 없습니다.
5. 복호화 알고리즘(Decryption Algorithm)
암호화 알고리즘을 반대 방향으로 실행하는 것입니다. 암호문과 비밀 키를 입력받아 원래의 평문을 복원합니다.
안전한 대칭 암호화를 위한 두 가지 필수 조건
기존(관용) 암호화를 안전하게 사용하기 위해서는 다음 두 가지 조건이 충족되어야 합니다.
1. 강력한 암호화 알고리즘
적어도 알고리즘을 알고 있고 하나 이상의 암호문에 접근할 수 있는 공격자조차도 암호문을 해독하거나 키를 알아낼 수 없어야 합니다. 일반적으로 이 조건은 더 엄격한 형태로 정의됩니다. 즉, 공격자가 여러 개의 암호문과 각 암호문에 대응하는 평문까지 함께 보유하고 있더라도 암호문을 해독하거나 키를 찾아낼 수 없어야 한다는 것입니다.
2. 비밀 키의 안전한 관리
송신자와 수신자는 안전한 방식으로 비밀 키의 사본을 확보하고, 이후에도 키를 철저히 보호해야 합니다. 누군가 키를 알아내고 알고리즘을 이해한다면, 그 키를 사용하는 모든 통신을 읽을 수 있게 됩니다.
바로 이러한 특성 덕분에 대칭 암호화는 폭넓은 상용화가 가능했습니다. 알고리즘 자체를 비밀로 유지할 필요가 없기 때문에 제조업체들은 저렴한 칩(chip) 형태의 데이터 암호화 알고리즘 구현체를 개발할 수 있었고, 이러한 칩들은 널리 보급되어 다양한 제품에 탑재되었습니다.
결국 대칭 암호화에서 가장 중요한 보안 쟁점은 키의 기밀성 유지입니다. 이를 위해 키는 별도의 안전한 채널을 통해 수신자에게 전달되며, 신뢰할 수 있는 제3자(trusted third party)가 키를 생성해 송신자와 수신자 양측에 배정하는 방식도 활용됩니다.