HeYStRanGeR
article thumbnail
(2021.11.01)
이번에 정리할 부분 목차


8.1 현대 블록 암호의 사용
 8.1.1 ECB 모드
 8.1.2 CBC 모드
 8.1.3 CFB 모드
 8.1.4 OFB 모드
 8.1.5 CTR 모드

8.2 스트림 암호의 사용
 8.2.1 RC4
 8.2.2 A5/1

8.3 그 밖의 이슈
 8.3.1 키 관리
 8.3.2 키 생성

 

 

8.1 현대 블록 암호의 사용

: 대칭키 암호화 기법은 현대 블록 암호를 기반으로 수행된다.

DES와 AES라는 현대 블록 암호는 고정된 길이의 텍스트 블록을 암호화하고, 복호화한다. 

DES는 64비트, AES는 128비트 블록을 암호화하고 복호화하는데 실제 응용 환경에서 암호화되는 텍스트 길이는 가변적이고, 일반적으로 64비트나 128비트보다 훨씬 길다.

--> 이러한 문제를 해결하기 위해서 임의의 길이의 텍스트를 암호화하는 방법인 운영모드가 설계되었다.

 

 

 

 

 

 

8.1.1 ECB 

Electronic CodeBook 모드는 가장 간단한 운영모드이다. --> 평문과 암호문 목록 수집한 것

 

출처: 교수님 강의노트

 

  • 모든 블록이 독립적이다. --> 오류파급(error propagation)이 발생하지 않는다.
  • 각 블록을 암호화, 복호화할 때 같은 키를 사용한다.
  • 키를 몰라도 특정 블록 대체를 통해서 변조가 가능하다.
  • 평문 크기가 블록 크기의 배수가 아니면, 평문의 마지막 블록에 덧붙이기(padding)를 사용한다.
  • 블록 단위의 패턴 유지가 가능 --> 병렬 처리 가능

 

 

 

암호문 훔치기 (CipherText Stealing)

: 덧붙이기(padding)없이 ECB모드를 사용할 수 있다.

 

 

 

 

 

 

8.1.2 CBC 

Ciper Block Chaining 모드

 

출처: 교수님 강의노트

 

  • 각 평문 블록을 암호화하기 전에 이전 암호문 블록과 XOR 연산을 한다. (MIXINIG)
  • 암호화된 블록을 전송하기는 하지만, 다음 블록 암호화할 때 필요하기 때문에 메모리에 저장해야한다.
  • 첫 번째 블록을 암호화할 때 초기벡터(IV:initialization vector)를 사용한다.
  • 블록 단위의 패턴 유지 불가능 --> 병렬처리 불가능
  • 암호문 맨 뒤에 특정 암호문 블록 덧붙이기(padding) 가능
  • 오류 파급(error propagation) 발생함

 

초기 벡터(IV: initialization vector)

  • 수신자와 송신자간에 키과 IV 공유
  • IV의 무결성 보장
  • 송신자가 의사난수 선택한 후에 수신자에게 안전한 채널로 전송(ECB모드 가능)
  • time stamp를 IV로 사용할 수도 있음

 

오류 파급(error propagation)

  • 암호문 블록 Cj가 전송 도중 하나의 비트 오류 발생시에 복호화 과정에서 평문 블록 Pj에서 대부분의 비트 오류 발생함
  • 평문 블록 Pj+1에서는 Cj의 오류 비트와 같은 위치에서 오류 발생함
  • 평문 블록 Pj+2 부터 PN까지는 아무런 영향을 받지 않음
  • 자기 복구 (self-recovered)가 이루어짐

 

 

 

암호문 훔치기(CipherText Stealing)

: CBC모드 사용가능

 

 

 

 

 

 

 

8.1.3 CFB

Cipher FeedBack 모드

 

 

암호문이 다음 블록의 키생성과정에 사용된다. 다음 블록의 키 생성과정의 S에 shift하여 키가 생성되고, 이 키의 앞부분 일부만이 키로 사용되어 다음 블록의 평문과 XOR연산을 진행하여 암호문을 생성한다.

 

  • 평문이나 암호문 블록 크기가 DES나 AES의 블록 크기보다 작거나 같을 경우에 적합함.
  • 키스트림이 암호문에 의존하는 비동기식 스트림 암호이기도 함.
  • 각 메시지마다 서로 다른 IV가 필요함
  • 블록단위의 패턴 유지 불가능 --> 병렬 처리 불가능
  • CFB는 블록보다 적은 데이터에 적용하기 때문에 덧붙이기 (padding)가 필요하지 않다.
  • 오류 파급 발생함

 

 

오류 파급(error propagation)

  • 암호문 블록 Cj가 전송 도중 하나의 비트 오류 발생시에 평문 블록 Pj에 Cj 오류 비트와 같은 위치에 오류가 발생한다.
  • shift register에 의해서 나머지 블록에서도 오류가 발생할 수 있다.

 

 

 

 

8.1.4 OFB

Output FeedBack 모드

 

 

 

  • 모든 암호문의 각 비트는 이전 암호문 블록의 비트들과 독립적
  • 블록 단위의 패턴이 유지되지 않음 --> 병렬 처리 불가능
  • 키스트림이 평문이나 암호문에 독립적이므로 동기식 스트림 암호이기도 함.

 

오류 파급(error propagation)

  • 암호문의 한 비트의 오류는 대응되는 평문의 한 비트에만 영향을 준다.

 

 

 

8.1.5 CTR

CounTeR 모드 

 

출처: 교수님 강의노트

 

  • CTR모드는 암호화할 때 피드백이 없다.
  • 키스트림의 의사난수성은 카운터를 사용함으로서 성취될 수 있다.

 

오류 파급(error propagation)

  • 암호문의 한 비트의 오류는 대응되는 평문의 한 비트에만 영향을 준다.

 

 

 

 


 

 

최종 정리

출처: 교수님 강의노트

 

CTR모드를 OFB와 비교하면

- CTR과 OFB 둘다 이전 암호문 블록과 독립인 키 스트림을 생성하며, 피드백을 사용하지 않음

 

CTR과 ECB를 비교하면

- CTR과 ECB 둘다 서로 독립인 암호문 블록을 생성한다. 

- CTR과 ECB 둘다 실시간 프로세싱을 위해 사용될 수 없고, 암호 알고리즘은 암호화를 수행하기에 앞서 완전한 n비트 블록이 입력되기를 기다려야한다. (단점)

 

 

 

 

 

 

 

8.2 스트림 암호의 사용

 

문자나 비트같은 작은 단위의 데이터를 암호화하기 위해서 스트림 암호가 필요하다.

스트림 암호는 실시간 처리에 효율적이고, 다양한 프로토콜에 사용되어왔다.

 

블록암호에서의 스트림 암호모드와 스트림 암호를 구분해야한다.

블록암호에서의 스트림 암호모드는 작은 데이터 단위가 일정하게 있는 것으로 연속적일 필요는 없다.

스트림암호는 지속적인 시간 내에 데이터 단위가 연속적이다.

 

키를 공유하는 것과 키 스트림을 공유하는 것은 다르다.

키 스트림은 저장하기도 어렵고 계속 안전하게 전송하는 것도 어렵다.

--> 키스트림을 생성하는 과정을 공유함

 

 

8.2.1 RC4

 

  • 1984년 Ronald Rivest가 설계한 스트림암호이다.
  • SSL/TLS, IEEE 802.11 무선 LAN 표준 등에 사용되었다.
  • 바이트 단위의 스트림 암호 --> 평문 1byte와 키 1byte가 XOR되어 1byte의 암호문을 생성한다.
  • 상태(state) 개념을 사용한다.

 

상태

: 256byte로 구성하고, 키는 랜덤하게 선택한다.

S[0]  S[1]  S[2]  ...  S[255]

 

 

출처: 교수님 강의노트

 

 

 

 

 

 

8.2.2 A5/1

 

  • LSFR(Linear Feedback Shift Register) 사용
  • 휴대전화 통신 네트워크(GSM)의 228비트 프레임에 사용
  • 64비트 키 중에서 1비트 키 스트림을 출력

 

출처: 교수님 강의노트

 

 

A5/1 의 3개의 LFSR

 

 

 

 

 

 

 

 

8.3 그 밖의 이슈

 

8.3.1 키 관리

alice와 bob은 대칭키 암호를 이용해서 안전하게 통신하기 위해 비밀 키를 공유해야한다.

n명의 구성원이 있을 경우에 각 구성원은 n(n-1)/2 개의 비밀키가 필요하다.

--> 대칭키 블록 암호나 스트림 암호를 사용하기 위해서 송신자와 수신자 간에 공유하기 위한 비밀 키 관리가 필요하다.

 

 

8.3.2 키 생성

비밀 키를 생성하는 방법은 또 다른 논점이다.

다양한 대칭 키 암호는 다양한 크기의 키를 필요로 한다.

키는 랜덤하게 선택되어야하고, 이는 난수 생성기에 대한 필요성을 야기한다.

 

 

 

 

 

 

 

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!