CBC(Cipher Block Chaining) 모드를 통해 피드백이 형성됩니다. 일반 텍스트 블록이 암호화되기 전에 비트 배타적 OR 연산에 의해 이전 블록의 암호화 텍스트와 결합됩니다. 따라서 일반 텍스트에 여러 개의 동일한 블록이 들어 있어도 각각 다른 암호화 텍스트 블록으로 암호화됩니다. 블록이 암호화되기 전에 비트 배타적 OR 연산에 의해 초기화 벡터에 첫 번째 일반 텍스트 블록이 결합됩니다. 암호화 텍스트 블록의 한 비트라도 손상되면 대응하는 일반 텍스트 블록도 손상됩니다. 또한 손상된 원본 비트와 같은 위치에 있는 다음 블록의 비트도 손상됩니다.
CFB
4
CFB(Cipher Feedback) 모드는 한 번에 전체 블록을 처리하지 않고 일반 텍스트를 조금씩 암호화 텍스트로 처리합니다. 이 모드는 한 블록 길이를 가지며 섹션으로 구분되는 이동 레지스터를 사용합니다. 예를 들어 블록 크기가 한 번에 1바이트씩 처리되는 8바이트이면 이동 레지스터는 여덟 개의 섹션으로 구분됩니다. 암호화 텍스트에서 하나의 비트가 손상되면, 하나의 일반 텍스트 비트가 손상되고 이동 레지스터도 손상됩니다. 이로 인해 잘못된 비트가 이동 레지스터 밖으로 이동될 때까지 이어지는 일반 텍스트 비트는 손상됩니다. 기본 피드백 크기는 알고리즘에 따라 달라질 수 있지만 일반적으로 8비트이거나 블록 크기의 비트 수입니다.
FeedbackSize 속성을 사용하여 피드백 비트 수를 변경할 수 있습니다. CFB를 지원하는 알고리즘은 이 속성을 사용하여 피드백을 설정합니다.
CTS
5
CTS(Cipher Text Stealing) 모드는 길이 제한 없이 일반 텍스트를 처리하고 일반 텍스트와 동일한 길이를 갖는 암호화 텍스트를 생성합니다. 이 모드는 일반 텍스트의 마지막 두 블록을 제외한 모든 블록에 대해 CBC 모드와 동일하게 작동됩니다.
ECB
2
ECB(Electronic Codebook) 모드는 각 블록을 개별적으로 암호화합니다. 동일하면서 같은 메시지에 포함되어 있는 일반 텍스트의 블록이나 같은 키로 암호화된 다른 메시지에 있는 일반 텍스트의 블록이 모두 동일한 암호화 텍스트 블록으로 변환됩니다.
중요: 이 모드는 여러 보안 악용의 문을 열기 때문에 권장되지 않습니다. 암호화할 일반 텍스트에 반복 부분이 포함되어 있으면 암호화 텍스트를 한 번에 하나의 블록으로 쉽게 구분할 수 있습니다. 블록 분석을 사용하여 암호화 키를 확인할 수도 있습니다. 또한 다른 사용자가 몰래 개별 블록을 대체하거나 교환할 수 있으므로 다른 시점에 몰래 블록을 스트림에 저장 및 삽입할 수 있습니다.
OFB
3
OFB(Output Feedback) 모드는 한 번에 전체 블록을 처리하지 않고 일반 텍스트를 조금씩 암호화 텍스트로 처리합니다. 이 모드는 CFB와 비슷하며 이동 레지스터를 채우는 방식에서만 차이가 있습니다. 암호화 텍스트의 한 비트가 손상되면 일반 텍스트의 해당 비트도 손상됩니다. 그러나 암호화 텍스트에 추가 비트나 누락된 비트가 있으면 그 지점부터 일반 텍스트가 손상됩니다.
설명
블록 암호화 알고리즘은 한 번에 하나의 바이트가 아닌 블록 단위로 데이터를 암호화합니다. 가장 일반적인 블록 크기는 8바이트입니다. 각 블록은 많이 처리되므로 블록 암호화는 스트림 암호화보다 높은 수준의 보안을 제공합니다. 그러나 블록 암호화 알고리즘은 스트림 암호화보다 더 느리게 실행되는 경향이 있습니다.
블록 암호화는 각 블록에 대해 동일한 암호화 알고리즘을 사용합니다. 이 때문에 일반 텍스트 블록은 동일한 키와 알고리즘으로 암호화될 때 항상 동일한 암호화 텍스트를 반환합니다. 이 동작을 사용하여 암호화를 해독할 수 있으므로 이전 블록 암호화의 피드백에 따라 암호화 프로세스를 수정하는 암호화 모드가 도입됩니다. 결과 암호화는 간단한 블록 암호화보다 더 높은 수준의 보안을 제공합니다.