본문 바로가기

해킹&보안/암호학

운영모드

운영모드

암복호화 방안은 하나의 치환 알고리즘과 하나의 운영모드를 결합해서 임의의 길이의 메시지를 처리한다. 

 

전자 코드북 (ECB)모드

블록 암호의 암호화에서 가장 간단한 모드는 전자 코드북이다. 

ECB MODE

이 사진에서 보이듯이, ECB는 입력된 평문 블록 P1, P2 ... Pn을 각각 독립적으로 처리해서

C1 = E(K, P1), C2 = E(K, P2)등을 계산한다.

원본(왼쪽) / ECB암호화(오른쪽)

왼쪽이 원래 이미지이고 오른쪽은 ECB모드를 사용한 AES로 암호화한 이미지이다.
(어떤 암호화 알고리즘이 쓰였느지는 중요하지 않다.) 암호화된 이미지에서도 펭귄의 모습을 
그대로 인식할 수 있는데, 이는 원본이미지를 회색조 수준이 같은 모든 블록이 
그냥 새 이미지에서 그와는 다른 어떤 회색 수준의 블록들로 동일하게 변환되었기 때문이다.

결국 ECB암호화는 원래 이미지와 패턴은 같고 색만 다른 이미지를 산출할 뿐이다.

 

장점

  • 각 블록이 독립적으로 암호화되기 때문에 구현이 간단하고 이해하기 쉽습니다.
  • 블록이 독립적으로 암호화되기 때문에 여러 블록을 동시에 병렬로 처리할 수 있습니다.(성능 향상)
  • 각 블록이 독립적으로 암호화, 암호화된 데이터 블록의 순서를 변경해도 복호화에 영향을 미치지 않습니다. 

단점

  • ECB 모드는 동일한 평문 블록을 동일한 암호문 블록으로 암호화하기 때문에 원본의 구조를 쉽게 파악
  • 데이터의 일부가 알려지거나 추측될 경우, 이를 통해 다른 부분의 데이터도 유추할 수 있음
    예를 들어, 데이터 블록이 반복될 경우, 이를 통해 반복되는 내용이 무엇인지 파악할 수 있다.
  • ECB 모드는 평문과 암호문 간의 직접적인 매핑을 제공하므로, 통계적 분석을 통해 암호화된 데이터의 내용을 추측할 수 있는 가능성이 높아짐

암호 블록연쇄(CBC) 모드

데이터의 보안성을 높이기 위해 설계되었다.

CBC MODE

 

ECB를 조금 비튼 것인데. 그 덕분에 ECB와는 아주 다른 모드가 된다 

첫 블록 P1을 암호화할 때 는 이전 암호문 블록이 없으므로 무작위 초기치(IV)를 사용한다.

 

특징&동작방식

  • 초기 벡터(IV) : 첫 번째 블록을 암호화하기 전에, 고유한 초기 벡터(IV)를 사용하여 평문 블록과 XOR 연산한다, IV는 무작위로 선택되며, 각 암호화 세션마다 변경되어야 한다.
  • XOR 연산: 각 평문 블록은 암호화되기 전에 이전 블록의 암호문과 XOR 연산을 수행한다.
    첫 번째 블록은 IV와 XOR 연산을 한다.
  • 연쇄 효과 : 각 블록 의 암호화는 이전 블록의 암호화 결과에 의존하므로, 동일한 평문 블록이 반복되어도 암호문은 달라진다.이것은 패턴 보존 문제를 해결하여 데이터의 보안성을 높인다.

 

장점

  • 동일한 평문 블록이 반복되더라도 암호문 블록은 서로 다르게 나타나며이는.데이터의 패턴을 숨겨서 보안성을 높인다
  • 각 암호화 세션마다 다른 IV를 사용하고 동일한 데이터라도 매번 다른 암호문이 생성되도록 한다. 이것은 재사용 공격을 방지하는 데 유용합니다.
  • 각 암호화된 블록은 이전 블록의 암호문에 의존해서, 하나의 블록이 변경되면 그 이후의 모든 블록도 영향을 받게 되며 이는 데이터 무결성을 높이는 데 도움된다

단점

  • 블록의 암호화가 이전 블록의 암호화에 의존하기 때문에, 병렬 처리가 어렵고. 이는 암호화 속도를 저하시킬 수 있다.
  • IV가 안전하게 전송되고 저장되어야 하고 IV가 노출되면 첫 번째 블록의 보안성이 약화될 수 있다.
  • 암호문에서 단 하나의 비트 오류가 발생하면 해당 블록과 그 다음 블록의 평문이 잘못 해독될 수 있으며 이는 데이터 전송 중 오류 발생 시 문제를 일으킬 수 있다.

이러한 이유로, CBC 모드는 보안이 중요한 응용에서 많이 사용되지만, 성능과 관련된 요구사항이 있는 경우 다른 암호화 모드(CFB, OFB, CTR 등)와 함께 사용될 수 있습니다.


카운터(CTR) 모드

CTR모드는 사실 블록 암호 모드라고 부르기가 적당하지 않다. 이 모드는 블록 암호를 스트림 암호, 즉 블록이라는 개념에 의존하지 않고 그냥 비트들을 받아서 비트를 산출하는 형태의 암호로 바꾸는 역할을 한다

 

CTR모드에서 블록 암호 알고리즘은 평문 자료의 블록들을 변환하는 대신 카운트 하나와 논스 하나로 
구성된 블록들을 암호화한다. 여기서 카운터는 블록마다 증가하는 하나의 정수이다. 하나의 메시지에서
두 블록이 같은 값의 카운터를 사용하는 경우는 없어야하지만 서로 다른 메시지들이 같은 카운터 값들을
사용할 수는 있다. 논스는 한 번만 쓰이는 수로 일종의 일회용 토큰 값이다. 한 메시지의 모든 블록은
같은 논스 값을 사용하지만 두 메시지가 같은 논스를 사용하는 일은 없어야 한다.

 

장점

  • 각 블록의 암호화 및 복호화가 독립적이므로, 병렬 처리가 가능한데 이것은 성능 향상에 유리하다.
  • 특정 블록의 암호화나 복호화를 위해 앞선 블록들을 처리할 필요가 없어서  임의 접근이 가능하다.
  • 암호화와 복호화 과정이 대칭적이고 동일하므로 구현이 비교적 간단하다.

단점

  • 각 블록마다 고유한 카운터 값을 사용해야 해서, 카운터 값의 관리가 중요하고 중복되는 카운터 값 사용 시 보안이 약화될 수 있다.
  • 초기 카운터 값(Nonce)이 반복되면 보안에 취약할 수 있다. 초기 값을 안전하게 생성하고 관리해야 한다.

'해킹&보안 > 암호학' 카테고리의 다른 글

키 관리  (0) 2024.08.02
AES (고급 암호화 표준)  (0) 2024.05.24
블록 암호  (0) 2024.05.24
[아핀 암호 알고리즘]  (0) 2024.05.01
[곱셈 암호 알고리즘]  (0) 2024.04.30