Stream Ciphers vs Block Ciphers - Stream Cipher : 한번에 '1bit' 또는 '1byte' 단위로 암호/복호화하는 암호학 기법. → 작고 빠르기 때문에 주로 임베디드 시스템 혹은 무선통신 기기에 사용된다. - Block Cipher : 한번에 '블록'단위로(ex.64bit) 암호/복호화하는 암호학 기법. → 주로 인터넷 어플리케이션에서 사용된다.
Stream Cipher 기법: 한번에 '1bit' 또는 '1byte' 단위로 암호/복호화하는 암호학 기법. - Encryption/Decryption → Encryption : y(i) = x(i) XOR s(i) = x(i) + s(i)mod2 → Decryption : x(i) = y(i) XOR s(i) = y(i) + s(i)mod2 - Synchronous/Asynchronous : Stream Cipher는 key stream s(i)에 의존적이며, 이때 s(i)는 0.5의 확률로 0또는 1인 난수이어야 한다. → Synchronous Stream Cipher : Key Stream이 Key에만 의존적으로 영향을 받는 Stream Cipher이다. → Asynchronous Stream Cipher : Key Stream이 Key뿐만 아니라 암호문에도 영향을 받는 Cipher이다. +) ❗ Why is 'mod 2 addition' a good encryption/decryption function? ❗ : mod 2 addtion 연산, 즉 XOR 연산의 경우 AND 또는 OR 연산과 달리 key stream si의 난수적 특성을 ciphertext가 그대로 반영하여 가져가기 때문이다. (0,1의 확률이 각각 0.5인 것 :) )
3-1. LSFR
: 선형 반복으로부터 정의되며, 특히 하드웨어에서 아주 쉽고 빠른 Stream Cipher 방식이다. : 비교적 작은 비트로 길고 안전한 무작위 암호키를 만들어내는 경제적으로 효율적인 암호화 방식이다. → Key의 경우의 수 : n개 (=초기 세팅된 레지스터 갯수) → Sequence length : '2^n-1개' 이하 (=생성되는 연속적 숫자의 주기 길이) → frequency Attack의 경우의 수 : 26가지 → Problem 😡 : Sequence 구조가 선형이기 때문에, 만약 연속된 평문의 bit들과 이에 상응하는 암호문을 안다면 쉽게 전체 sequence를 알 수 있다는 보안 취약점이 존재한다. : 따라서 2^n-1개의 Sequence들을 모두 알지 않아도 2n개의 연속 요소들만 알아도 해독이 가능하다. : 이를 보완하기 위해서는 '비선형 요소'의 추가가 필요하다. 3-2. GSM A5/1
: register별 다른 설정값과 Majority 개념의 도입으로 만들어진 비선형적 Stream Cipher 방식이다. → 고안된 비선형적 요소 1. 각 register의 설정 bit가 다 다르다. 2. Majority 개념의 도입으로 인해, Clocking/Shifting이 다 다르다. 3. 각 register 별 tabout되는 부분이 다 다르다. 4. 각 register 별 XOR 개수가 다르다. → Problem 😡 : 비선형적으로 Sequence를 생성하기는 하나 이러한 구조와 상관없이 Stream만으로 공격이 되더라.(?) : 따라서 이를 보완하기 위해 등장한 새 Stream Cipher가 바로 'Trivium'이다.
3-3. Trivium
[좌] Trivium 구조도 [우] Trivium 작동 방식
:register별 다른 설정값과 AND게이트를 이용하여 만들어진 비선형적 Stream Cipher 방식이다. : Initialization, Warm-up, Encryption의 세 단계로 구성되며 자세한 내용은 위 첨부 사진과 같다. → 고안된 비선형적 요소 1. 각 register의 설정 bit가 다 다르다. 3. 각 register 별 tabout되는 부분이 다 다르다. 4. 각 register 별 XOR 개수가 다르다.
Block Cipher 기법 : 한번에 '블록'단위로(ex.64bit) 암호/복호화하는 암호학 기법으로, 아래와 같은 특징을 지닌다. → 대부분의 Symmetric Block Cipher(대칭 블록 암호학)는 Feistel Cipher Structure을 기반으로 한다. → 블록 암호는 블록단위로 치환하기에, 굉장히 큰 치환 형태를 가진다. (따라서 속도가 상대적으로 느림)
4-1. Substitution-Permutation (S-P) network : 1949년 Claude Shannon에 의해 만들어진 개념으로 현대의 블록 암호학의 기반으로 사용되고 있으며, 이는 아래의 두 기초 암호 연산을 기반으로 만들어졌다. - 1. Substitution (S-box) - 치환 → Confusion(=암호문과 키의 관계를 가능한 복잡하게 만들어 키 발견을 어렵게 함) - Permutation (P-box) - 전치 → Diffusion(=암호데이터의 통계값으로 평문을 추론하는 것을 방지하고자 통계적 구조를 분산시킴)
4-2. Feistel Cipher Structure : Claude Shannon의 S-P Network를 포함하여 만든 기법으로, 데이터를 절반으로 두 부분으로 나누어 좌/우 두 부분에 비선형 변환의 적용을 라운드 단위로 반복하는 구조이다. : 이는 키 순서를 제외하고는 암/복호화 과정이 동일(Symmetric)하므로 역연산이 존재하지 않아도 된다. → Design Principles 1. Block size(블록 크기) : 크기가 커지면 보안성은 높아지지만 암호속도는 느려진다. 2. Key size (키 사이즈) : 크기가 커지면 보안성은 높아지지만 암호속도는 느려진다. 3. Number of rounds (라운드 수) : 커지면 복잡도가 높아져 보안성은 높아지나 속도는 느려진다. 4. Subkey Generation (서브 키 생성) : 해당 복잡도가 높아지면 분석은 어려워지나 속도는 느려진다. 5. Round Function (라운드 함수) : 해당 복잡도가 높아지면 분석은 어려워지나 속도는 느려진다. 6. Fast software en/decryption & ease of analysis : 실용적 사용과 테스팅이 현재 관점에서 중요하다!
5. Data Encryption Standard (DES)
:세계에서 널리 사용되고 있는 Block Cipher로 56bit의 키와 64bit의 데이터로 암호화하는 기법이다. : IBM의 Lucifer ciper에서 기원되었으며 이는 Fiestel 구조를 따르고 S-P Network의 원리를 지닌다. : 56bit의 key에 대해서 논란이 있었으나 design이 안전하다는 것을 증명하여 잘 사용되고 있다. (허나 현대에 들어서는 빠른 인터넷과 하드웨어의 발달로 충분지 않아졌다.) → Basic Operations 1. Substitution (치환) | 2. Transposition (전치) | 3. Linear Operation - XOR
4-1. Substitution-Permutation (S-P) network : 1949년 Claude Shannon