순천향대학교 정보보호연구회 2008.08.14 민성의 mse918@naver.com AES 순천향대학교 정보보호연구회 2008.08.14 민성의 mse918@naver.com
목 차 1. AES의 기원 2. AES 평가 3. AES 암호 프로그래밍 세미나
1. AES의 기원 3중 DES의 장점 3중 DES의 단점 DES의 전사적 공격에 대한 취약점을 168비트 길이의 키를 사용함으로써 극복 DES와 같은 암호 알고리즘 방식을 사용 전사적 공격 이외의 어떤 유효한 암호해독 공격도 발견되지 않음 3중 DES의 단점 상대적으로 느린 소프트웨어 상의 속도 64비트 블록 길이를 사용함으로 인한 비효율성 프로그래밍 세미나 프로그래밍 세미나
1. AES의 기원(계속) AES (Advanced Encryption Standard) 미국 차세대 암호표준 2001년 NIST (National Institute of Standards and Technology) 에 의해 공포 블록 길이가 128비트인 대칭 블록 암호화 방식 으로 128, 192, 256 비트 길이의 키를 지원할 수 있어야 함 프로그래밍 세미나 프로그래밍 세미나
2. AES 평가 AES에 대한 NIST평가 기준(1997.09.12) 보안성 비용 알고리즘 및 개발특징 실제 보안성, 임의성, 견고성, 기타 보안요소 알고리즘 해독에 요구되는 노력에 적용 공격에 대한 실용성 ( 최소 키 길이가 128비트이기 때문에 예측되는 기술에 의한 전사적 공격 고려 불필요 ) 비용 특허 요구 사항, 계산상 효율성, 메모리 요구사항 넓은 응용 분야에 적용될 것을 의도로 반드시 계산상 효율성을 가져야 하며 광대역 링크와 같은 고속 응용에 적합해야 함 알고리즘 및 개발특징 유연성, 하드웨어 및 소프트웨어 적합성, 간결성, ILP를 위한 잠재성 프로그래밍 세미나
2. AES 평가(계속) 후에 NIST평가기준을 이용하여 21개의 후보 알고리즘이 15개로, 다시 5개로 압축 Rijndael 에 대한 NIST의 최종평가(2000.10.02) 전반적인 안전성 소프트웨어 구현 제한된 공간 환경 하드웨어 구조 구현상 공격 암호화 대 복호화 키의 민첩성 기타 유통성 및 유연성 ILP를 위한 잠재성 프로그래밍 세미나
3. AES 암호 Rijndael AES의 파라미터 미국 NIST가 차세대 암호화 표준(AES)으로 선정한 알고리즘 블록 길이와 키 길이가 독립적으로 128, 192, 256 bit 중 선택하는 암호 알고리즘 Rijndael 의 특성 모든 알려진 공격에 대한 저항력 다양한 플랫폼에 대한 속도와 코드의 간결성 단순한 설계 AES의 파라미터 키의 길이에 따라 각각 다를 수 있음 프로그래밍 세미나
3. AES 암호(계속) AES의 전체적인 구조 프로그래밍 세미나 Add round key Add round key Plaintext Key Plaintext w [ 0, 3 ] w [ 4, 7 ] w [ 36. 39 ] w [ 40, 43 ] Ciphertext Ciphertext Add round key Add round key Inverse sub bytes Inverse shift rows Round 10 Substitute bytes Shift rows Mix columns Add round key Expand key Round 1 Inverse mix cols Add round key Inverse sub bytes Inverse shift rows Round 9 Substitute bytes Shift rows Mix columns Add round key Round 9 Inverse mix cols Add round key Inverse sub bytes Inverse shift rows Round 1 Substitute bytes Shift rows Add round key Round 10 Add round key 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES 테이터 구조 (a)Input, state array, and output 프로그래밍 세미나
3. AES 암호(계속) (b) Key and expanded key AES 데이터 구조(계속) w0 w1 w2 w42 w43 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) S – box 16 x 16행렬을 정의 256가지의 모든 가능한 8비트 값의 순열을 포함 바이트의 가장 왼쪽 4비트는 행 값, 가장 오른쪽 4비트는 열 값으로 사용 S-box 구성 -- 바이트 값으로 S-box를 행 별 오름차순으로 초기화 -- 각 바이트를 그 바이트의 유한체 GF(28)상의 곱셈 역으로 맵핑 값{00} 은 그 자신으로 맵핑 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES의 4개 단계 치환 바이트 변환(Substitute Bytes Transformation) 순변환과 역변환 -- 순 치환 바이트 변환(forward substitute byte transformation) - SubBytes 라 부르며 단순 테이블 룩업 -- 역 치환 바이트 변환(inverse substitute byte transformation) - InvSubBytes 라고 부르며 역 S-box 이용 원리 -- S-box는 알려진 암호해독 공격에 대한 저항력을 갖도록 설계 --입력과 출력 비트 사이의 낮은 상관관계를 갖고, 출력이 입력의 단순한 수학적 함수로 설명될 수 없는 특성을 갖는 설계를 구상 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES의 4개 단계(계속) 행 이동 변환(Shift Row Transformation) 순변환과 역변환 -- 순 행 이동 변환(forward shift row transformation) -ShiftRow 라고 부름 - 상태 배열의 첫 번째 행은 바뀌지 않음 - 두 번째 행은 1바이트, 세 번째 행은 2바이트, 네 번째 행은 3바이트 씩 왼쪽순환이동 - 예) -- 역 행 이동 변환(inverse shift row transformation) - InvShiftRow 라고 부름 - 첫 번째 행은 바뀌지 않고 두 번째 행은 1바이트, 세 번째 행은 2바이트, 네 번째 행은 3바이트 씩 각각 오른쪽순환이동 87 F2 4D 97 EC 6E 4C 90 4A C3 46 E7 8C D8 95 A6 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES의 4개 단계(계속) 행 이동 변환(Shift Row Transformation)(계속) 원리 - 암호 입출력 뿐만 아니라 상태 배열이 4열의 4바이트 배열로 취급 - 암호화에서 평문의 첫 4바이트는 상태 배열의 첫 열에, 두 번째 4바이트는 상태 배열의 두 번째 열에 등으로 복사 - 라운드 키는 상태 배열에 열 단위로 적용 - 행 이동은 각각의 바이트가 하나의 열에서 4바이트 배수의 선형 거리인 다른 열로 이동 - 한 열의 4바이트가 4개의 다른 열로 흩어짐 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES의 4개 단계(계속) 열 혼합 변환(Mix Column Transformation) 순변환과 역변환 -- 순 열 혼합 변환(forward mix column transformation) - MixColumns 라 부르며, 각 열 별로 작동 -열의 각 바이트는 그 열의 모든 4바이트 함수의 새로운 값으로 맵핑 - 적행렬의 각 원소는 한 행과 한 열의 원소들의 곱의 합 -- 역 열 혼합 변환(inverse mix column transformation) - InvMixColumns라 부르며, 행렬 곱셈으로 정의 원리 -- 행렬의 계수는 코드 워드들 간의 최대 거리를 갖는 선형 코드가 바탕이 되며 각 열의 바이트들이 잘 혼합되게 함 -- 행 이동 변환과 함께 불과 몇 라운드의 실행 후에는 모든 출력 비트가 모든 입력 비트에 의존하게 함 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES의 4개 단계(계속) 라운드 키 추가 변환(Add Round Key Transformation) 순변환과 역변환 -- 순 라운드 키 추가 변환(forward add round key transformation) - AddRoundKey 라 부름 - 상태 배열의 128비트는 라운드 키의 128비트와 비트단위로 XOR됨 -- 역 라운드 키 추가 변환(inverse add round key transformation) - 순 라운드 키 추가 변환과 동일 : XOR연산은 그 연산의 역이기 때문에 원리 -- 상태 배열의 모든 비트에 영향 -- 라운드 키 확장의 복잡성은 AES의 다른 단계의 복잡성과 함께안전성 보장 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES 키 확장 키 확장 알고리즘 4워드(16바이트)를 입력으로 취하여 44워드(156바이트)의 선형 배열 생성 44워드 배열은 초기 라운드 키 추가 단계를 위한 4워드 라운드 키와 10 라운드의 각 암호화 라운드에 충분 키 확장 k0 k4 k8 k12 k1 k5 k9 k2 k6 k10 k14 k3 k7 k11 k15 g w0 w1 w2 w3 w0 w1 w2 w3 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) AES 키 확장(계속) 원리 라운드 상수를 라운드 종속으로 설정함으로써 라운드 키가 각 라운드에서 생성되는 방식의 대칭성과 유사성 제거 세부 기준 -- 암호화 키 또는 라운드 키의 일부분을 알도록 다른 라운드 키 비트 계산이 불가능 -- 역 변환 -- 넓은 범위의 프로세서 속도 -- 암호화 키의 차이가 라운드 키로 확장 -- 대칭성을 제거하기 위한 라운드 상수의 사용 -- 설명의 간결성 프로그래밍 세미나 프로그래밍 세미나
3. AES 암호(계속) 등가 역 암호화 InvShiftRows 와 InvSubBytes 의 교환 AddRoundKey 와 InvMixColumns 의 교환 상태 배열의 바이트 순서를 바꾸지 않음 열 입력에 대해여 선형 프로그래밍 세미나 프로그래밍 세미나
수고하셨습니다. 프로그래밍 세미나 프로그래밍 세미나