본문 바로가기
Java/암호화

블록 암호화 기법 종류

by Mecodata 2024. 3. 18.

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

댓글