770 likes | 1.56k Views
블록 암호 (Block cipher). 블록 암호. 평문가 암호문은 고정된 길이의 블록으로 구성된다 . 설계 목표 : 보안과 효율성 하지만 두 가지 목표를 만족하는 블록 암호 방식을 찾는 것은 쉽지 않다 . Chapter 3 Symmetric Key Crypto. 2. ( 반복 ) 블록 암호. 암호문은 평문에 반복되는 회전 함수 ( round function) 를 적용하여 생성 회전 함수의 입력은 키와 이전 단계의 회전 함수의 결과이다 . 항상 소프트웨어로 구현된다 .
E N D
블록 암호(Block cipher) Chapter 3 Symmetric Key Crypto
블록 암호 평문가 암호문은 고정된 길이의 블록으로 구성된다. 설계 목표: 보안과 효율성 하지만 두 가지 목표를 만족하는 블록 암호 방식을 찾는 것은 쉽지 않다. Chapter 3 Symmetric Key Crypto 2
(반복) 블록 암호 암호문은 평문에 반복되는 회전 함수(round function)를 적용하여 생성 회전 함수의 입력은 키와 이전 단계의 회전 함수의 결과이다. 항상 소프트웨어로 구현된다. 전형적인 형태가 Feistel Cipher이다. Chapter 3 Symmetric Key Crypto 3
페이스텔 암호(Feistel Cipher) • Feistel cipher는 블록 암호를 설계하는 한 형태이다. (블록 암호 자체가 아니다.) • 평문의 블록을 좌우 반쪽으로 나눈다: • Plaintext = (L0,R0) • 각 단계(i=1,2,...,n)다음과 같이 계산한다. Li= Ri1 Ri= Li1 F(Ri1,Ki) 여기서 F는 회전 함수, K는 서브키(subkey) 최종 암호문 = (Ln,Rn) Chapter 3 Symmetric Key Crypto
페이스텔 암호 • 복호화: 암호문 = (Ln,Rn) • 각 단계(i=n,n1,…,1)에서 다음과 같이 계산한다., Ri1 = Li Li1 = Ri F(Ri1,Ki) 여기서 F는 회전 함수, Ki는 서브키 • 평문 = (L0,R0) • 이 방식은 어떤 함수 F에서도 적용된다. • 하지만 함수 F는 안전한(secure) 함수이어야 한다. • 예: 모든 Ri-1와 Ki 에 대새서F(Ri-1, Ki) = 0 인 함수는 안전하지 않다. Chapter 3 Symmetric Key Crypto
Data Encryption Standard(DES) Chapter 3 Symmetric Key Crypto
DES • 1970년대에 개발 • IBM Lucifer cipher에 기반을 둠 • U.S. 정부 표준 • DES 개발에는 논란이 있었다. • NSA가 비밀리에 개입됨 • 개발 단계가 공개되지 않음 • 키 길이가 축소됨 • Lucifer 알고리즘을 약간 변경 Chapter 3 Symmetric Key Crypto
National Security Agency/Central Security Service Chapter 3 Symmetric Key Crypto
DES • DES는 페이스텔 암호 체계를 따른다. • 블록 길이 : 64 bits • 키 길이 : 56 bits • 16 단계(round) • 매 단계에서 48 bit의 키를 사용(subkey) • 매 단계의 절차는 간단하다. (for a block cipher) • 안전성은 주로 “S-boxes”에 달려 있다. • 각 S-boxe는 6 bit를 4 bit로 매핑한다. • 총 8개의 S-boxes Chapter 3 Symmetric Key Crypto
One Round of DES L R key 28 28 32 32 L R expand 28 28 48 48 Compress 48 S-boxes(8) 28 32 28 P Box 32 32 32 key R L Chapter 3 Symmetric Key Crypto
DES 확장 순열(Expand permutation) • Input 32 bits • Output 48 bits Chapter 3 Symmetric Key Crypto
DES S-box (치환 박스) • 8개의 치환 박스(substitution boxes) • 각각의 S-box는 6 bit를 4 bit로 매핑한다. • 첫번째 S-box의 매핑 input bits (0,5) input bits (1,2,3,4) Chapter 3 Symmetric Key Crypto
DES P-box (순열 박스) • Input 32 bits • Output 32 bits Chapter 3 Symmetric Key Crypto
DES 서브키(Subkey) • 56 bit DES key : (0,1,2,…,55) • Left half key bits, LK • Right half key bits, RK Chapter 3 Symmetric Key Crypto
DES 서브키(Subkey) • For rounds i=1,2,...,16 • Let LK = (LKcircular shift left byri) • Let RK = (RKcircular shift left byri) • Left half of subkey Ki(24bits)는 다음과 같은 LK비트들로 구성된다. 13 16 10 23 0 4 2 27 14 5 20 9 22 18 11 3 25 7 15 6 26 19 12 1 • Right half of subkey Ki(24bits)는 다음과 같은 RK비트들로 구성된다. 12 23 2 8 18 26 1 11 22 16 4 19 15 20 10 27 5 24 17 13 21 7 0 3 Chapter 3 Symmetric Key Crypto
DES 서브키(Subkey) • 단계 1, 2, 9, 16에서shift ri = 1, 그리고 나머지 단계에서는 ri = 2 • LK의 비트 8,17,21,24는 매 단계에서 생략된다. • RK의 비트 6,9,14,25는 매 단계에서 생략된다. • Compression permutation은 LK와 RK의 56비트 중에서 48비트의 서브키를 생성해 낸다. • Key schedule은 서브키를 생성한다. Chapter 3 Symmetric Key Crypto
마지막으로 DES에 대해서 • 첫 단계 전에 초기 순열 P를 수행한다. • 마지막 단계에서 좌우측 반쪽을 교환한다. • 암호문을 생성하기 위해서 (R16,L16)에 마지막 순열 (inverse of P)을 적용한다. • 이러한 것은 보안과는 상관이 없다. Chapter 3 Symmetric Key Crypto
DES의 안전성(security) • DES의 안전성은 대부분 S-boxes에 달려 있다. • S-box를 제외한 다른 것들은 선형(linear) • 30년 동안의 치밀한 분석 결과 DES에 “뒷 문(back door)”은 없는 것으로 밝혀졌다. • 공격은 exhaustive key search를 사용한다. • 결론 • DES의 설계자들은 그들이 무엇을 하는지를 알았고 • 그들의 시대에 훨씬 앞서 있었다. Chapter 3 Symmetric Key Crypto
블록 기호 표기법 • P = 평문 블록 • C = 암호문 블록 • 암호문 C를 얻기 위해서 평문 P를 키 K를 사용하여 암호화한다. • C = E(P, K) • 평문 P를 얻기 위해서 암호문 C를 키 K를 사용하여 복호화한다. • P = D(C, K) • 주목! • P = D(E(P, K), K) and C = E(D(C, K), K) Chapter 3 Symmetric Key Crypto
Double DES • DES의 키는 오늘날 적절하지 않다. • 확실한 방법은 DES의 키를 확장하는 것이다: “double DES” • C = E(E(P,K),K) ? • 문제: 여전히 56 bit 키를 사용하는 것과 같다. • C = E(E(P,K1),K2) ? • DES를 사용하는 것과 같이 만드는 공격이 있을 수 있다. • 비록 이 공격이 비현실적이기는 하지만 실제로 일어날 수 있는 가능성이 전혀 없는 것은 아니다. Chapter 3 Symmetric Key Crypto
Double DES 공격(1) • C = E(E(P,K1),K2) 공격: 선택 평문 공격 • 특정 P에 대해서, 모든 가능한 키 K에 대해서 테이블 E(P,K)를 사전에 계산한다.(이 테이블은 256항목을 갖는다.) • 테이블 항목 < C= E(P,K), K > • C는 선택된 P에 대응하는 암호문 • 그리고 위에서 사용한 P에 대응되는 C를 사용하여, 가능한 모든 K2에 대해서, 테이블에 맞는 값이 나올 때까지 D(C,K2)을 계산한다. • 여기서, P = D(C,K2) → E(P,K2) = E(D(C,K2), K2) = C, 즉, D(C,K2)는 테이블에 있어야 한다. Chapter 3 Symmetric Key Crypto
Double DES 공격(2) • 매치되는 값이 발견되면, E(P,K1) = D(C,K2) • 따라서 C = E(E(P,K1),K2) • 결론적으로 K1과 K2를 찾아내었고 C는 복호화되었다. • 사전에 테이블을 만드는 일을 무시하면, 이 작업은 테이블에 매치되는 값을 찾을 때까지 D(C,K)을 계산하는 것이다. • 이것은 255 탐색이 요구된다. • single DES의 exhausted key search 시간과 같다. • 따라서, double DES는 안전하지 않다. Chapter 3 Symmetric Key Crypto
Triple DES • 논리적 접근 방법은 triple DES • 키를 3배로 한다. • 하지만 실제로, Triple DES는 • C = E(D(E(P,K1),K2),K1) • P = D(E(D(C,K1),K2),K1) • 실제 키의 크기는 112 bit이다. Chapter 3 Symmetric Key Crypto
Triple DES • 왜 2개의 키를 사용하여 Encrypt-Decrypt-Encrypt (EDE)으로 암호화하는가? (왜 3개의 키를 사용하여 EEE로 하지 않는가?) • Single DES와의 Backward compatible를 위해서 • If K1=K2=K then E(D(E(P,K),K),K) = E(P,K) • And 키의 길이는 112 bits이면 충분히 안전하다. • 오늘날 3DES는 널리 사용되고 있으나, AES의 등장으로 3DES는 시간이 지날수록 사라져 갈 것이다. Chapter 3 Symmetric Key Crypto
Advanced Encryption STD(AES) Chapter 3 Symmetric Key Crypto
AES 역사(1) • DES를 대체할 암호 방식이 필요 • DES는 이미 과거의 유물이 됨 • exhaustive key search에 안전하지 않음: 특수 목적의 DES 크랙커와 인터넷에서 분산 계산 공격 • 3DES는 공격에는 안전하나 하지만, • 효율적인 소프트웨어 코드가 없다. • 너무 속도가 느리다: DES를 3번 해야 된다. • 64-bit 블록 크기: 효율과 안전을 위해서 더 큰 블록 크기가 필요 • 그래서, 3DES는 장기적으로 해결책이 되지 못함 • 1997년, NIST는 공식적으로 발전된 암호 알고리즘표준을 정하기 위해서 공모를 하였다. Chapter 3 Symmetric Key Crypto
AES 역사(2) • 목표: 정부와 민간 부문에서 사용할 DES를 대체할 수 있는 알고리즘을 찾음 • AES 요구사항 • 저작권 없이 전세계에서 사용할 수 있도록 비밀없는(unclassified), 공개된 암호화 알고리즘 • 알고리즘은 반드시 대칭키(symmetric key) 방식이어야 함 • 블록 암호 방식과 블록 크기는 최소한 128 비트, 키 크기는 128- , 192-, 그리고 256 비트 • 1998년 NIST 15개의 AES 후보 알고리즘을 발표 Chapter 3 Symmetric Key Crypto
AES 역사(3) • AES를 선택하는 기준: • 안전성, 견고성(Robustness), 속도 • 1999년 15개 중에서 5개로 후보를 좁혔다. • MARS, RC6, Rijndael, Serpent, and Twofish. • 5개의 알고리즘 모두 안전한 것으로 인정받았다. • 2000년 10월 2일 NIST는 Rijndael을 선정 발표 • Joan Daemen과 Vincent Rijmen이 만듦 Chapter 3 Symmetric Key Crypto
AES 특징(1) • 다양한 플랫폼에서 사용할 수 있으며 소프트웨어와 하드웨어에서 효율적으로 동작할 수 있도록 설계 • 페이스텔 암호 형태가 아님 • 반복적인 블록 암호 (DES와 같음) • 페이스텔 암호 형태가 아님(DES와 다름) • “Secure forever” – Shamir Chapter 3 Symmetric Key Crypto
AES 특징(2) • 제안된 Rijndael • 가변의 블록 크기 : 128,192, 256-bits, • 가변의 키 크기 : 128-, 192-, or 256-bits. • 가변의 반복 단계(round) : (10, 12, 14): • 10 if B = K = 128 bits • 12 if either B or K= 192 and the other≤ 192 • 14 if either B or K = 256 bits • 그러나 주목할 점은AES의 블록 크기는 128-bit. Chapter 3 Symmetric Key Crypto
AES 개요(1) • 정의: State→ 4X4 array of bytes • 128 bits = 16 bytes • 가변의 rounds (10, 12, 14): • 10 if K = 128 bits • 12 if K = 192 bites • 14 if K = 256 bits • 각 round에서 128-bit round key 사용 • 128 bits = 16 bytes = 4 words • Nr rounds에 대해서 Nr+1 round key가 필요 • 10 rounds, 128-bit 키에 대해서 44 words 필요 Chapter 3 Symmetric Key Crypto
AES 개요(2) • 각 round는 4개의 함수 사용 (3 “계층”) • 4 함수: 1 순열과 3 치환 • 3 계층: 선형, 비선형, 키 덧셈 • 순열(Permutation) • 선형 혼합 계층: ShiftRow (State) • 치환(Substitution) • 비선형 계층: ByteSub (State, S-box) • 비선형 계층: MixColumn (State) • 키 덧셈 계층: AddRoundKey (State, KeyNr) Chapter 3 Symmetric Key Crypto
AES: High-Level Description • State: 4 X 4 바이트 행렬: 128 bits = 16 bytes State = X AddRoundKey(State, Key0) (op1) for r = 1 to Nr - 1 SubBytes(State, S-box) (op2) ShiftRows(State) (op3) MixColumns(State) (op4) AddRoundKey(State, KeyNr) endfor SubBytes(State, S-box) ShiftRows(State) AddRoundKey(State, KeyNr) Y = State Chapter 3 Symmetric Key Crypto
AES AddRoundKey • RoundKey (subkey) 는 key schedule알고리즘에 의해서 결정 • AES key schedule 알고리즘의 설명은 생략 • 서브키와 블록을XOR: 128-bits 블록으로 가정 Chapter 3 Symmetric Key Crypto
AES BytesSub • Assume 128 bit block, 즉 4ⅹ4 bytes • ByteSub은 AES의 “S-box” • 두 수학적 연산의 비선형(nonlinear) (하지만 invertible) 결합 Chapter 3 Symmetric Key Crypto
AES BytesSub • 비선형 S-Box (각각의 바이트에 독립적으로)를 사용한 바이트 치환 • S-box는 16x16 array로 표현, 열과 행은 16진수 비트로 인덱스된다. • 8 bits는 다음과 같이 대체된다.: • 8 bits : hexadecimal number (r,c), • 그러면 (sr,sc) = binary(Sbox(r, c)) Chapter 3 Symmetric Key Crypto
AES “S-box” • 예: 16진수 53 은 ED로 대체된다. Last 4 bits of input First 4 bits of input Chapter 3 Symmetric Key Crypto
AES ShiftRow • Cyclic shift rows Chapter 3 Symmetric Key Crypto
AES MixColumn • 각 행에 적용되는 비선형, 역가능 연산 • (커다란)lookup table로 구현된다. Chapter 3 Symmetric Key Crypto
AES 복호화 • 복호화를 위해서 절차는 반드시 역가능(invertible)해야 한다. • AddRoundKey의 역은 용이: 는 자신이역(inverse)이다. • MixColumn는 역가능하다 : 역(inverse)도 lookup table로 구현 가능 • ShiftRow의 역은 용이: 다른 방향으로 cyclic shift하면 된다. • ByteSub도 역가능: 역(inverse)도 역시lookup table로 구현 가능 Chapter 3 Symmetric Key Crypto
다른 블록 암호들 • IDEA • Blowfish • RC6 • TEA Chapter 3 Symmetric Key Crypto
IDEA • International Data Encryption Alg • Xuejia Lai (學嘉來)와 James Massey이 만듦 • Pretty Good Privacy(PGP) V2.0에서 사용 • 특징 • IDEA은 mixed-mode arithmetic을 사용 • IDEA가 가장 처음으로 이 방법을 사용 • 이 방법은 오늘날 자주 사용되고 있다. • 64-bit 블록, 128-bit 키 • 8 rounds, 16-bit 수에 대해서 연산 Chapter 3 Symmetric Key Crypto
IDEA mixed-mode arithmetic • Bitwise eXclusive OR • (파란⊕로 표시) • Addition modulo 216 • (초록으로 표시) • Multiplication modulo 216+1, 여기서 모든 zero word (0x0000) 는 216으로 표현 • (빨간색으로 표시) Chapter 3 Symmetric Key Crypto
Blowfish • Bruce Schneier에 의해 만들어짐 • 특징 • 블록 길이: 64-bit • 키의 길이는 가변, 448 bits까지 가능 • 속도가 빠르다. • 소형: 메모리 5K 미만에서 구현 가능 • 간단: 단순한 구조 • 안전성은 키의 길이에 달려 있음 • 키에 따른 S-boxes • S-boxes는 키에 의해 결정된다. Chapter 3 Symmetric Key Crypto
Blowfish • 거의 페이스텔 암호 형태에 가깝다. Ri = Li1 Ki Li = Ri1 F(Li1 Ki) • round function F는 4 S-boxes • 각 S-box는 8 bits를 32 bits로 매핑한다. • 키에 따른 S-boxes • S-boxes는 키에 의해 결정된다. Where Pi: round key Chapter 3 Symmetric Key Crypto
RC6 • Ron Rivest가 만든 암호들 • 공개키 암호: RSA, 블록 암호: RC6 • 스트림 암호: RC4, 해쉬 함수: MD5, • 특징 • 가변 • 블록 크기, 키 크기, round의 수 • 대단히 빠르고, 간단 명료한 설계 • AES의 최종 후보 • 데이터에 따른 순환(rotation) 사용 • 알고리즘의 일부로서 데이터를 사용하는 것은 흔치 않다. Chapter 3 Symmetric Key Crypto
Tiny Encryption Algorithm • David Wheeler가 만듦 • 특징 • 64 bit 블록, 128 bit 키 • 32-bit 연산을 가정 • 32-bit 컴퓨터를 목표로 함 • modulo 232에 기초한 연산 • Round의 수는 가변 • 32 round이면 안전하다고 간주 • 약한 round 함수를 사용하기 때문에, 많은 round의 수가 필요하다. Chapter 3 Symmetric Key Crypto
Tiny Encryption Algorithm • 각 round 함수의 복잡성과round 수 간의 타협(Trade off) • DES: 이 둘 사이에 균형을 추구 (16) • AES: round 수를 줄이고 더 복잡한 round 함수를 사용 (10,12,14) • TEA: 간단한 round 함수, 하지만 많은 round의 수 • 32는 안전한다고 간주함 Chapter 3 Symmetric Key Crypto
TEA Encryption 32 rounds: (<<: L shift, >> R shift) (K[0],K[1],K[2],K[3]) = 128 bit key (L,R) = plaintext (64-bit block) delta = 0x9e3779b9 sum = 0 for i = 1 to 32 sum = sum+delta L = L + ((R<<4)+K[0])^(R+sum) ^((R>>5)+K[1]) R = R + ((L<<4)+K[2])^(L+sum) ^((L>>5)+K[3]) next i ciphertext = (L,R) Chapter 3 Symmetric Key Crypto