Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

정보 보안의 블록 암호(Block Cipher)란? 개념과 작동 원리 총정리

블록 암호의 기본 개념

블록 암호(block cipher)는 평문(plaintext)을 고정된 크기를 가진 여러 블록으로 나눈 뒤, 각 블록을 개별적으로 암호화하는 암호화 방식입니다. 각 블록은 기본적으로 동일한 수의 데이터 비트로 구성되며, 암호화 과정은 한 번에 하나의 평문 블록을 처리하고 암호화 키를 사용해 이를 암호문(ciphertext) 블록으로 변환합니다.

모든 블록은 같은 크기(예: 64비트)를 유지해야 합니다. 예를 들어 160비트 평문을 암호화한다면, 64비트씩 두 개의 블록으로 나뉘고 세 번째 블록에는 남은 32비트가 들어갑니다. 이 마지막 블록은 다른 블록과 크기를 맞추기 위해 추가로 32비트의 패딩(padding)이 채워집니다.

결정론적 알고리즘과 대칭 키

블록 암호는 스트림 암호(stream cipher)처럼 한 번에 한 비트씩 암호화하는 대신, 결정론적(deterministic) 알고리즘과 대칭 키(symmetric key)를 사용해 텍스트 블록 전체를 한꺼번에 인코딩하는 암호화 기법입니다.

블록 암호는 고정된 크기의 비트 블록에 대해 작동하는 의사난수 순열(PRP, Pseudorandom Permutation) 계열에 속합니다. PRP는 완전히 무작위적인 순열과 구별할 수 없는 함수를 의미하며, 따라서 안전성이 반증되기 전까지는 신뢰할 수 있는 것으로 간주됩니다.

가역성과 고유한 암호문 생성

블록 암호는 n비트 평문 블록을 입력받아 n비트 암호문 블록을 출력합니다. 가능한 평문 블록의 종류는 매우 많으며, 암호화가 가역적(reversible), 즉 복호화(decryption)가 가능하려면 각 평문 블록이 반드시 고유한 암호문 블록을 생성해야 합니다. 이러한 성질의 변환을 가역 변환 또는 비특이(non-singular) 변환이라고 부릅니다.

운영 모드와 초기화 벡터(IV)

동일한 텍스트 블록이 항상 같은 방식으로 암호화되는 문제를 방지하기 위해 다양한 블록 암호 운영 모드(modes of operation)가 개발되었습니다. 이러한 모드에서는 이전에 암호화된 블록에서 생성된 암호문이 다음 블록의 암호화 과정에 활용됩니다.

여기서 중요한 요소가 바로 초기화 벡터(IV, Initialization Vector)라고 불리는 비트 블록입니다. 운영 모드에서 IV를 사용하면 동일한 평문 메시지를 여러 번 암호화하더라도 매번 서로 다른 암호문이 생성되므로, 암호문의 예측 가능성을 크게 낮출 수 있습니다.

스트림 암호와의 차이점

블록 암호는 텍스트를 블록 단위로 잘라 알고리즘에 통과시켜 뒤섞는 방식으로 암호화하는 암호 클래스입니다. 이는 텍스트를 한 번에 한 비트(또는 한 문자)씩 암호화하는 스트림 암호와 대조됩니다.

구체적인 예를 들어 보겠습니다. 블록 암호는 어떤 글을 암호화할 때 첫 번째 문단 전체를 먼저 암호화한 후, 그다음 문단으로 넘어가는 방식으로 작동합니다. 이 과정을 글 전체가 암호화될 때까지 반복하는 것이죠.

반면 스트림 암호는 첫 번째 문단의 첫 문자부터 암호화한 뒤, 같은 문단 내의 다음 문자로 이동하며 이 절차를 텍스트 끝까지 반복합니다.

암호문과 복호화

암호화 알고리즘을 통해 변환된 텍스트를 암호문(ciphertext)이라고 합니다. 암호문을 원래의 평문 상태로 되돌리려면, 올바른 키와 함께 복호화 과정을 다시 한번 거쳐야 합니다. 이처럼 블록 암호는 현대 정보 보안에서 데이터의 기밀성을 유지하는 핵심 기술로 널리 사용되고 있습니다.