스트림 암호
스트림 암호는 한 번에 1비트 또는 1바이트의 디지털 데이터 흐름을 암호화하는 암호입니다. Stream Cipher는 일반적으로 블록을 사용하지 않고 그 순간에 메시지의 1바이트를 암호화합니다.
예를 들어, 고전 스트림 암호는 자동 결정 Vigenère 암호와 Vernam 암호입니다. 개념적 경우에는 키 스트림이 일반 텍스트 비트 스트림을 고려하는 Vernam 암호의 일회용 패드 버전을 사용할 수 있습니다.
암호화 키 스트림이 임의적이면 이 암호는 키 스트림을 실현하는 것 이외의 다른 방법으로 깨질 수 없습니다. 그러나 키 스트림은 독립적이고 안전한 일부 채널을 통해 두 사용자 모두에게 미리 제공되어야 합니다.
이는 의도한 데이터 트래픽이 매우 높은 경우 극복할 수 없는 물류 문제를 권장합니다. 비트 스트림 생성기는 알고리즘 프로세스로 수행되어야 두 사용자가 암호화 비트 흐름을 생성할 수 있습니다.
이 방법에서 비트 스트림 생성기는 키 제어 알고리즘이며 암호학적으로 강력한 비트 스트림을 만들어야 합니다. 이제 두 사용자는 생성 키만 공유하면 되고 각각 키 스트림을 생성할 수 있습니다.
블록 암호
블록 암호는 일반 텍스트 블록을 전체로 간주하여 동일한 길이의 암호 텍스트 블록을 만드는 데 사용되는 암호입니다. 일반적으로 64비트 또는 128비트의 블록 크기가 사용됩니다. Block Cipher는 메시지를 받아 고정된 크기의 블록으로 나누어 한 번에 한 블록씩 메시지를 변경합니다.
블록 암호는 n비트의 일반 텍스트 블록에서 작동하여 n비트의 암호 텍스트 블록을 생성합니다. 가능한 여러 일반 텍스트 블록이 있으며 암호화가 변경 가능하려면(즉, 해독이 가능하려면) 각각 고유한 암호 텍스트 블록을 생성해야 합니다. 이러한 변환은 가역 또는 비특이라고도 합니다.
블록 암호는 PRP(Pseudo Random Permutations)로 알려진 수학적 개체를 기반으로 합니다. n비트 값 m과 비밀 키 k를 입력으로 생성하고 n비트 값 c를 출력하는 역함수입니다.
키 k로 고정된 결과 함수가 n비트 값에 대한 임의 전단사 함수와 동일한 경우 PRP는 안전한 것으로 처리됩니다. 블록 암호는 보안 PRP를 수행합니다.
그들은 비밀 키를 사용하여 평문 블록을 암호문 블록으로 암호화할 수 있는 암호화 기능으로 구성됩니다. 역연산을 구현하고 암호문에서 평문 블록을 가져오는 복호화 기능입니다.
각 암호화에서 처리되는 정보의 크기를 기반으로 하는 스트림 암호와 블록 암호의 주요 차이점입니다. 스트림 암호는 비트스트림에서 한 번에 한 비트씩 암호화하므로 암호화된 메시지가 일반 텍스트 메시지와 비트 단위로 일치하게 됩니다.