320 likes | 486 Views
Algorithm Types and Modes. Electronic Codebook Mode Block Replay Cipher Block Chaining Mode Stream Ciphers Self-Synchronizing Stream Ciphers Cipher-Feedback Mode Synchronous Stream Ciphers. Algorithm Types and Modes. Output-Feedback Mode Counter Mode Other Block-Cipher Modes
E N D
Algorithm Types and Modes • Electronic Codebook Mode • Block Replay • Cipher Block Chaining Mode • Stream Ciphers • Self-Synchronizing Stream Ciphers • Cipher-Feedback Mode • Synchronous Stream Ciphers
Algorithm Types and Modes • Output-Feedback Mode • Counter Mode • Other Block-Cipher Modes • Choosing A Cipher Mode • Interleaving • Block Ciphers VS Stream Cipher
Electronic Codebook Mode(1/2) • Block cipher를 사용하는데 가장 명확한 방법 • Plaintexts와 CipherTexts의 관계에서 CodeBook을 생성(키마다 다른 codebook을 가진다.) • 파일을 linear하게 암호화 할 필요는 없다. • 여러 암호 processor를 가지고 있다면 병렬처리 • 단점: • key를 모르는 상태에서 codebook을 구성 가능하다.(해독자가 여러 평문과 암호문을 가지고 있다면) • Stereotyped beginnings and Stereotyped endings
Electronic Codebook Mode(2/2) • Padding 대부분의 msg가 64bit로 나누어 떨어지지 않는다. 마지막 block에 일정한 패턴을 집어 넣는다. Ciphertext stealing
Block Replay • Key나 알고리즘을 모르는 상대가 암호화된 msg를 변경할 수 있다. • Communication line에서 암호화된 msg를 record. A pair of identical msg을 찾는다. • 자신의 communication에서 msg를 insert한다. • Timestamp로 막을 수 있다.(not complete) • fundamental problem이다. • Solution은 chaining기법을 이용
Cipher Block Chaining Mode(1/6) • Chaining : 블록 암호에 feedback을 도입 • 평문 블록을 이전 암호 블록과 XOR시킨다. • 각 블록의 암호는 모든 이전 블록에 의존한다. • Ci=Ek(Pi xor Ci-1) • Pi= Ci-1 xor Dk(Ci)
Cipher Block Chaining Mode(3/6) • Initialization Vector 동일한 header는 어떤 유용한 정보를 가진다.이것은 해독자에게 유용한 정보를 줄 수가 있다. 첫 번째 블록을 임의의 data로 암호화해서 방지한다. 이 임의의 data블록을 IV라 한다. 동일한 평문 msg는 다른 암호문 msg로 암호화(code book만들기가 어려워진다.)
Cipher Block Chaining Mode(4/6) • Padding ECB mode와 같이 동작하지만, 어떤 application에서는 암호문과 평문의 사이즈가 같아야 한다.
Cipher Block Chaining Mode(5/6) • Error Propagation 평문에서 1-bit error는 암호화 해서 해독된 평문에서도 1-bit error를 가진다.(암호화된 연속 block에 영향) 암호문에서의 error가 더 일반적. 통신상의 noisy와 중간 저장장치에서 malfunction. In CBCmode, 암호문의 1-biterror는 한 블록과 재생된 평문의 1-bit에 영향을 미친다.(연속되는 한 블록도 같은 위치에 1-bit error를 가진다.) • Error extension
Cipher Block Chaining Mode(6/6) • Security Problems CBC의 구조에 의해서 발생 암호블록은 다음 블록에 영향을 미친다. 암호화된 msg의 끝에 블록을 더할 수 있다. 쓰레기 data로 해독될 것이지만 바람직 하지 않다. 1. 평문을 구성할 때 msg를 끝나는 곳을 알 수 있게 해서 추가가 블록을 찾을 낼 수 있게 한다. 2. 전체 평문 msg는 controlled redundancy or authentication을 가진다. 3. 매우 긴 msg의 경우 pattern을 가진다.
Stream Ciphers • 평문을 1bit씩 암호문으로 바꾼다. ci=pi xor ki pi = ci xor ki pi xor ki xor ki = pi
Self-Synchronizing Stream Ciphers (1/2) 각 keystream bit는 이전 ciphertext bit의 고정된 수의 함수이다. Internal state는 이전 암호 n-bit의 함수이다. 각 msg는 임의의 n-bit 길이의 header를 가진다.
Self-Synchronizing Stream Ciphers(2/2) • Security Problems playback attack에 약하다. Mallory가 암호bit를 기록하고, 나중에 current traffic으로 recording으로 대체한다. 초기 garbage후에 받는 쪽이 resynch하는 동안 예전의 암호문은 보통값으로 해독된다. 받는 쪽은 이것이 current data라는 것을 알 수 없고 예전 data는 replay된다. 따라서 resynch가 자주 발생하는 문제
Cipher-Feedback Mode(1/3) CBC mode와 같이 data의 완전한 block을 받을 때까지 encryption을 하지 않는다. Data는 block size보다 작은 units로 암호화된다. n-bit CFB를 사용한다.(블록size보다는 같거나 작은 크기)
Cipher-Feedback Mode(2/3) • Initialization Vector block알고리즘에 input은 IV로 초기화 CBC mode의 IV와 유사(need not be secret) Unique해야 한다.(CBC mode의 IV와의 차이점) Unique하지 않으면 해독자가 plaintext를 recover가능 Msg마다 바뀌어야 한다.
Cipher-Feedback Mode (3/3) • Error Propagation 평문에서 error는 모든 다음 암호문에 영향을 미친다. 암호문에서 1bit error는 plaintext에서 1bit 에러를 발생시킨다. error가 Shift register에 들어 있다면, register의 다른 끝까지 갈 때까지 garbled된다. m/(n-1)블록에 영향(m은 블록 size,n은 n-bit CFB mode)
Synchronous Stream Ciphers(1/3) • Keystream은 Msg의 stream에 독립적으로 발생 • synchronous ciphers는 transmission error를 propagate하지 않는다. • Keystream generator는 long period를 가져야 한다. • Insertion과 deletion을 막을 수 있다.
Synchronous Stream Ciphers(2/3) • Insertion Attack Mallory ciphertext stream을 기록했지만, plaintext와 암호화 하는데 사용한keystream은 모르고 있다. Original plaintext : p1 p2 p3 p4 … Original keystream: k1 k2 k3 k4 … Original ciphertext: c1 c2 c3 c4 .. P`를 p1뒤에 넣는다.새로운 암호문을 기록 New plaintext : p1 p` p3 p4 … Original keystream: k1 k2 k3 k4 … Updated ciphertext: c1 c`2 c`3 c`4 ...
Synchronous Stream Ciphers(3/3) P`의 값을 알고 있다면, 원래의 암호문과 새로운 암호문 후에 전체적인 plaintext를 결정 k2=c`2 xor p`, and then p2 = c2 xor k2 k3=c`3 xor p2, and then p3 = c3 xor k3 k4=c`4 xor p3, and then p4 = c4 xor k4 Bit가 삽입된 위치를 정확히 알지 못해도 2개의 암호문을 비교해서 달라지기 시작한 부분을 알아낸다. 해결방안: 2개의 다른 msg를 암호화 할 때 같은 keystream을 사용하지 않는다.
Output-Feedback Mode(1/2) • CFB mode와 유사(이전의 output block의 n-bit가 큐의 가장 오른쪽 위치로 이동한다는 것만 제외) n-bit OFB(n은 블록 size, Si는 state) Ci=Pi xor Si; Si=Ek(Si-1) Pi=Ci xor Si; Si=Ek(Si-1) 대부분의 작업이 offline으로 이루어질 수 있다.
Output-Feedback Mode(2/2) • Error Propagation no error extension ciphertext에서 1bit error는 재생된 plaintext에서 1bit error를 일으킨다. (digitized analog transmission) a loss of synchronization 는 치명적 • Security Problems with OFB feedback size가 block size와 같아야 한다. • Stream Ciphers in OFB key가 next-state function에 영향 Complexity는 next-state function에 있다.
Counter Mode Counter mode에서 block cipher는 input으로서 sequence number를 사용한다. Register에 대한 input으로 counter를 사용 synchronization와 error propagation은 OFB와 동일 • Stream Ciphers in Counter Mode simple next-state function을 가지고, key에 의존하는 복잡한 output function을 가진다. 먼저 모든 이전 key bit을 생성하기 전에 i번째 key bit을 생성 가능하다. 특정 블록의 decryption이 가능하다.
Other Block-cipher Modes(1/5) • Block Chaining Mode Ci=Ek(Pi xor Fi); Fi+1=Fi xor Ci Pi=Fi xor Dk(Ci); Fi+1=Fi xor Ci 문제점 : decryptionof ciphertext block은 모든 이전 ciphertext block에 의존 • Propagating Cipher Block Chaining Mode CBC와 유사 (encryption하기 전에 이전 plaintext block과 이전 ciphertext block이 현재의 plaintext블록과 XOR한다.)
Other Block-cipher Modes(2/5) Propagating cipher block chaining mode
Other Block-cipher Modes (3/5) Ci=Ek(Pi xor Ci-1 xor Pi-1) Pi= Ci-1 xor Pi-1 xor Dk(Ci) ciphertext에 error는 뒤따르는 모든 block이 잘못된 decryption을 하게 한다. msg의 끝에 block을 checking은 전체 msg의 integrity를 확신 시켜준다. • Cipher Block Chaining with Checksum CBC의 변종 모든 plaintext block의 XOR을 유지, 마지막 plaintext block과 그것을 XOR시킨다.
Other Block-cipher Modes (4/5) 마지막 block이 integrity check나 constant를 포함한다면 해독된 plaintext의 integrity는 적은 추가 overhead로 check가 가능. • Output Feedback with a Nonlinear Fucntion OFB와 ECB의 변종 Ci=Eki(Pi); Ki=Ek(Ki-1) Pi=Dkj(Ci); Ki=Ek(Ki-1) ciphertext에서 한 bit error 는 단지 하나의 plaintext block에 propagate된다. 그러나 추가되거나 없어지면 infinite error extension이 된다.
Other Block-cipher Modes (5/5) • More Mode Plaintext block chaining(PBC) Plaintext feedback (PFB) cipher block chaining of plaintext difference(CBCPD)
Choosing A Cipher Mode • ECB speed, simplicity, easy, fast, weakness • CBC encrypting files, security, bit errors in stored data, almost never synch error. Best choice in software-based app. • CFB encrypting a streams of character(host-terminal), high speed synch system, • OFB in error prone environment(no error extension)
Interleaving Parallel encryption을 가능하게 한다. 각 stream은 자신의 IV를 필요로 한다.
Block Ciphers VS Stream Ciphers • Block Ciphers Operate on data with a fixed transformation on large blocks of plain-text data. More general easier to implement in software • Stream Ciphers Operate with a time-varying transformation on individual plaintext digits easier to analyze mathematically suitable for hardware implementation