ECB (Electronic Code Book)
- 평문을 일정한 블록 단위로 나누어 순차적으로 암호화하는 구조로 가장 단순한 기법
- 동일한 평문 블록에 대해 동일한 암호문 블록이 생성
- 각각의 블록은 서로 독립적이며 한 개의 블록만 해독되어도 나머지 블록도 해독되기 때문에 보안상 매우 취약함
CBC (Cipher Block Chaining)
- 평문을 일정한 블록 단위를 나누어 이전 암호문 블록을 암호화하여 평문 블록과 XOR 연산을 수행하여 새로운 암호문 블록을 생성함 → 가장 강력한 암호화 모드로 여겨짐
- 최초 키의 생성 버퍼로 IV(초기화 벡터)를 사용하며 첫 번째 블록과 XOR 연산을 통해 암호화를 진행함
- 각각의 블록이 서로 독립적이지만 ECB와 다르게 동일한 평문 블록에 대해 동일한 암호문 블록이 생성되지 않음
- 암호화는 순차적으로 처리하며 복호화는 병렬 처리가 가능함
- 경우에 따라서 패딩이 필요할 수 있음
PCBC (Propagating Cipher Block Chaining)
- 평문 블록이 암호화 될 때 이전의 평문 블록과 이전의 암호 블록을 XOR 해서 암호문의 입력으로 사용
- CBC와 유사하지만 이전 평문이 암호화의 입력으로 포함되면서 하나의 암호 블록에 에러가 발생하면 뒤이은 모든 블록에도 영향을 끼쳐 사용할 수 없도록 함
CFB (Cipher Feedback)
- 이전 암호문 블록을 암호화하여 평문 블록과 XOR 연산을 수행하여 새로운 암호문 블록을 생성함
- 블록 암호화를 스트림 암호화로 변환하는데 주로 사용
- CBC와 마찬가지로 최초 키의 생성 버퍼로 IV를 사용하며 암호화는 순차적으로 처리하고 복호화는 병렬처리가 가능함
- 평문과 암호문의 길이가 같음
OFB (Output Feedback)
- 이전 암호문 블록을 암호화하여 평문 블록과 XOR 연산을 수행하여 새로운 암호 키 스트림을 생성함
- 최초 키의 생성 버퍼로 IV를 사용하며 CFB와 다르게 암호화 함수는 키의 생성 시에만 사용되며 암호화와 복호화의 방법이 동일함
- 평문과 암호문의 길이가 같음
CTR (Counter)
- 최초 키의 생성 버퍼로 IV를 사용하며 IV와 카운터를 1씩 증가한 값을 연결한 것을 암호화하여 생성된 값과 평문 블록을 XOR 연산하여 암호문 블록을 생성함
- 처리 속도가 빠르고 병렬 처리가 뛰어나지만 동일한 비밀 키와 IV를 반복하여 사용할 경우 보안성이 취약해짐
CTS (Cipher Text Stealing)
- 패딩을 회피하고 메시지를 안전하게 암호화하기 위해 사용
- 마지막 블록에 대한 패딩을 생성하지 않고, 마지막 블록의 일부를 활용하여 추가적인 패딩을 생성함
- 일반적으로 마지막 블록을 완전히 암호화하지 않고, 일부만 암호화 진행하며 마지막 블록의 나머지 부분은 이전 블록의 일부를 사용하여 암호문을 생성함
- 평문과 암호문의 길이가 같음
'Java > 암호화' 카테고리의 다른 글
암호화 패딩 종류 (0) | 2024.03.18 |
---|---|
암호화 알고리즘 종류 (0) | 2024.03.18 |
javax.crypto.Cipher (0) | 2024.03.18 |
Jasypt (application.properties 암호화) (0) | 2024.02.28 |
댓글