520 likes | 1.54k Views
6 장 블록 암호 운용 (Block Cipher Operation). 목차. 6.1 다중 암호화와 3 중 DES 6.2 전자 코드북 모드 6.3 암호 블록 연결 모드 6.4 암호 피드백 모드 6.5 출력 피드백 모드 6.6 계수기 모드 6.7 블록 지향 저장장치를 위한 XTS-AES. 핵심정리. 다중암호화 암호알고리즘이 여러 번 사용되는 기술 평문은 암호알고리즘에 의해 암호문으로 변환 이 암호문은 다시 평문으로 입력 후 암호 알고리즘이 다시 적용 3 중 DES
E N D
목차 6.1 다중 암호화와 3중 DES 6.2 전자 코드북 모드 6.3 암호 블록 연결 모드 6.4 암호 피드백 모드 6.5 출력 피드백 모드 6.6 계수기 모드 6.7 블록 지향 저장장치를 위한 XTS-AES
핵심정리 • 다중암호화 • 암호알고리즘이 여러 번 사용되는 기술 • 평문은 암호알고리즘에 의해 암호문으로 변환 • 이 암호문은 다시 평문으로 입력 후 암호 알고리즘이 다시 적용 • 3중 DES • 두개 또는 세개의 서로 다른 키들을 사용하는 DES알고리즘으로 구성 • 운용모드 • 암호 알고리즘의 효과를 강화시키거나 어플리케이션에 알고리즘을 적용시키기 위한 기술 • 5가지 운용모드 • ECB(electric codebook)모드 • CBC(cipher block chaining)모드 • CFB(cipher feedback)모드 • OFB(output feedback)모드 • CRT(counter)모드
6.1 다중 암호화와 3중 DES • 다중암호화와 3중 DES 필요성 • 전수조사 공격에 대한 DES의 잠재적인 취약성 발견 • DES 암호 알고리즘의 대안을 연구 • 새로운 암호 알고리즘 설계 → AES 암호 알고리즘 • DES와 다중키를 이용한 다중 암호화 → 기존의 소프트웨어와 장비에 대한 투자를 보전
6.1 다중 암호화와 3중 DES • 2중 DES • 가장 간단한 다중 암호방식 • 2개의 암호화 단계와 2개의 키를 가짐 암호화 복호화 K2 K1 K1 K2 X X P E E C C D D P < 2중 DES >
6.1 다중 암호화와 3중 DES • 단일 단계로의 축소 • DES의 56비트 키 K1과K2에 대하여, 다음을 만족하는 키 K3의 존재를 가정 • 만약 가정이 사실이라면 2중 DES와 다중 DES는 모두 56비트의 단일키를 이용한 단일 암호화 결과를 가짐 하지만 • DES 암호화를 64비트 블록의 64비트 블록에 사상이라고 가정 • 가능한 모든 264개의 입력 블록을 고려할 때, 특정 키에 의한 DES 암호화는 각 블록을 유일한 64비트 블록에 사상
6.1 다중 암호화와 3중 DES • 단일 단계로의 축소 • 264개의 가능한 입력으로 입력 블록의 순열을 생성하는 서로 다른 수 → (264)! = 10347380000000000000000 > ( ) • DES는 각기 다른 키에 대하여 한 개의 사상을 정의하고 있으므로 총 사상수 → 256 < 1017 따라서 • 다른 키를 사용하여 DES를 두 번 적용하면, DES의 단일 적용에 의해 정의되지 않는 다수의 사상중의 하나를 생성한다는 가정은 타당
6.1 다중 암호화와 3중 DES • 중간 결과에 의한 공격 • 2중 DES 공격 유형 암호화 복호화 K2 K1 K1 K2 X X P E E C C D D P < 2중 DES >
6.1 다중 암호화와 3중 DES • 중간 결과에 의한 공격 • 주어진 평문-암호문 쌍 (P, C)에대하여 다음의 공격이 진행 • 평문P를 256개의 가능한 모든 키 K1으로 암호화 • 1번의 결과를 표에 저장하고 X의 값으로 정렬 • 암호문 C를 키 K2의 가능한 모든 256개의 값으로 복호화 • 복호화가 진행될 때 각 복호화 결과를 표의 내용과 비교 • 동일한 값이 표에 있다면, 해당 두 키로 평문-암호문 쌍 테스트 • 해당 두 키가 동일 암호문을 생성하면 올바른 키로 받음 • 2중 DES가 생성 가능한 암호문은 264개 존재 • 2중 DES는 사실 112 비트 키를 사용 • 2112개의 가능한 키가 존재 • 암호문을생성하는 서로다른 키의 수는 평균 2112 / 264 =248
6.1 다중 암호화와 3중 DES • 중간 결과에 의한 공격 • 첫 번째 (P, C) 쌍에 대하여 약 248번의 테스트 후에 성공 • 유사한 방법으로 64비트 추가 평문과 암호문이 주어지면 오탐율은248/264=248-64=2-16으로 감소 • 평문-암호문 두 쌍으로 중간 결과 공격을 수행하면 정확한 키를 발견할 확률은 1-2-16 결국 • 112 비트 키를 사용하는 이중 DES에 대한 평문 공격은 단일 DES에서의 255보다 상대적으로 차이 없는 256 복잡도로 성공. (실제론 256 + 256 =257 )
6.1 다중 암호화와 3중 DES • 2키에 의한 3중 DES • 앞서 살펴본 중간 결과 공격에 대한 대책은 상이한 세 개의 키를 이용한 3단계 암호화 과정을 사용하는 것 • 이것은 중간 결과에 의한 공격 복잡도를 2112로 증가 • 그러나 이 방법은 56 3=168 비트 길이의 키를 사용하는 단점 암호화 복호화 K2 K2 K1 K1 K1 K1 A B B A P C E E D D D C E C P < 2키에 의한 3중 DES >
6.1 다중 암호화와 3중 DES • 2키에 의한 3중 DES • 3중 DES의 두 번째 단계의 복호화 과정은 암호화에 별 의미가 없음 • 따라서 이 방식의 유일한 장점인 이전의 단일 DES 방식에 의해 암호화된 자료를 3중 DES를 이용하여 복호화할 수 있음 • 현재까지 실용적인 3중 DES 암호 분석 공격은 없음 • 하지만 실용성은 없지만 3중 DES 공격법 2개를 살펴볼 것임 • Merkle과 Hellman의 제안 공격법 • A=0의 첫 번째 중간 값을 생성하는 평문 값을 찾음 • 두 개의 키를 찾기 위해 중간 결과에 의한 공격을 사용 • 암호 해독의 복잡도는 256이지만, 현실적으로 어려운 256개의 선택 평문-암호문 쌍이 요구됨
6.1 다중 암호화와 3중 DES • 2키에 의한 3중 DES • 기지 평문 공격 (선택 평문 공격을 개선) • n개의 (P, C) 쌍을 구한다. 이 쌍들을 [표1]에 P의 값에 따라 저장 • A의 값으로 임의의 a를 선택한 후 다음과 같이 정의된 [표2]를 작성. 256개의 가능한 키의 각 K1=i에 대하여, a를 생성하는 평문 값 Pi를 계산 • [표1]에서 일치하는 각 Pi에 대하여 다음과 같은 K1의 값의 가정 하에, K1의 값과 [표1]로 부터(P, C) 쌍을 위해 생성된 B값으로 구성되는 [표2]를 작성. B의 값에 의해 [표2]를정렬 Pi Ci Keyi Bj [표1] [표2]
6.1 다중 암호화와 3중 DES • 2키에 의한 3중 DES • 기지 평문 공격 (선택 평문 공격을 개선) • [표2]에 다수의 K1후보 값이 있다. K2값 탐색을 위해 256개 후보 키의 각 K2=j에 대하여, a의 선택된 값에 대한 두 번째 중간 값을 계산 • 각 단계에서 [표2]의 Bj를 찾는다. 만약 일치하는 값이 있으면 해당 대응 값이 미지의 키(K1, K2)에 대한 후보값 • 각 후보 키 쌍(i, j)를 몇 개의 다른 평문 암호문 쌍에 대하여 테스트 • 만약 어떤 키 쌍이 원하는 암호문 생성시 공격 과정 종료 • 하지만 어떤 키 쌍도 원하는 암호문을 생성하지 않으면 새로운 a값을 가지고 1단계부터 반복 j i i a Bj Pi Ci E D E < 2키에 의한 3중 DES >
6.1 다중 암호화와 3중 DES • 2키에 의한 3중 DES • 기지 평문 공격 (선택 평문 공격을 개선) • 하나의 기지의 쌍 (P, C)가 주어질 경우, 키 쌍을 찾을 수 있는 a값을 선택할 확률은 1/264 • N개의 쌍 (P, C)가 주어질 겨우 선택된 하나의 a값으로 성공할 확률은 n/264 • 암호 해독의 복잡도는 256이지만, 현실적으로 어려운 256개의 선택 평문-암호문 쌍이 요구됨
6.1 다중 암호화와 3중 DES • 3키에 의한 3중 DES • 앞서 2키에 의한 3중 DES 공격을 살펴봄 • 실용성 없는 공격이지만, 잠재적 위협을 가짐 • 따라서 전문가들은 3키의 3중 DES를 최선의 방법으로 생각함 • 3키에 의한 3중 DES는 168비트의 효과적인 키 길이를 가짐 • 3키의 의한 3중 DES의 정의는 다음과 같음 • DES 역행(backward) 호환성은 K3=K2혹은 K1=K2로 제공될 수 있음
6.2 전자 코드북 모드 • 전자 코드북 모드 • 블록 암호는 길이가 고정된 b비트 텍스트 블록과 키를 입력으로 b비트길이의 암호문 블록을 출력함 • 다양한 어플리케이션에 블록 암호의 적용을 위해 5가지 운용 모드를 정의함 • 운영 모드는 암호알고리즘의 효과를 강화, 어플리케이션에 알고리즘 적용, 일련의 데이터 블록 혹은 데이터 스트림에 블록 암호를 적용하는 목적 • ECB 모드 • 가장 단순한 모드 • 평문이 한 번에 하나의 평문 블록을 처리, 각 평문 블록은 동일키로 암호화 • 하나의 키에 대하여 평문의 모든 b비트블록에 대한 유일한 암호문 존재
6.2 전자 코드북 모드 • 전자 코드북 모드
6.2 전자 코드북 모드 • ECB 모드 P1 P2 PN K K K Encrypt Encrypt Encrypt C1 C2 CN Encryption < 전자 코드북(ECB) 모드 >
6.2 전자 코드북 모드 • ECB 모드 C1 C2 CN K K K Decrypt Decrypt Decrypt P1 P2 PN Decryption < 전자 코드북(ECB) 모드 >
6.2 전자 코드북 모드 • ECB 모드 • b비트 이상의 메시지를 b비트 블록으로 나누고 암호화 • 복호화는 한 번에 한 블록씩 동일키를 이용하여 수행 • 평문은 일련의 b비트 평문 블록 P1, P2, …, PN • 암호문은 일련의 암호 블록 C1, C2, …, CN • ECB 모드 정의는 다음과 같음 • ECB 모드는 암호 키와 같이 짧은 데이터에 적당 • ECB 모드의 가장 중요한 성질은 평문의 동일한 b비트 블록이 두 번 이상 나올 경우, 항상 동일한 암호문 생성 • 따라서 이러한 정규성이 메시지가 길어질 경우, 주기적으로 반복되는 요소들로 인하여 암호 해독을 쉽게 해줄 수 있음
6.3 암호 블록 연결 모드 • 암호 블록 연결 모드 • ECB의 보안 결함을 위한 모드 • 동일한 평문 블록이 반복되어도 상이한 암호 블록을 생성 • 입력은 현 평문 블록과 선행 암호 블록의 XOR 연산 결과가 되며, 각 블록에 동일한 키가 사용 • 평문 블록에 대한 암호 함수 입력은 평문 블록과의 고정된 관계가 없음 따라서 • b비트의 반복 패턴이 나타나지 않음
6.3 암호 블록 연결 모드 • CBC 모드 P2 PN P1 IV CN-1 K K K Encrypt Encrypt Encrypt Decryption C2 CN C1 Encryption < 암호 블록 연결(CBC) 모드 >
6.3 암호 블록 연결 모드 • CBC 모드 C1 C2 CN K K K Decrypt Decrypt Decrypt IV CN-1 P1 P2 PN Decryption < 암호 블록 연결(CBC) 모드 >
6.3 암호 블록 연결 모드 • CBC 모드 • CBC 모드 정의는 다음과 같음
6.4 암호 피드백 모드 • 스트림 암호방식의 암호 피드백(CFB) • 메시지가 블록 크기의 정수배가 되도록 패딩하는 과정이 필요 없음 • 실시간 작동이 가능 • 따라서문자 스트림의 전송 중 각 문자지향 스트림 암호화를 이용하여 암호화 후 즉시 전송 가능 • 암호문과 평문의 길이가 같음 • 따라서 8비트의 문자열 전송의 경우, 각 문자열은 반드시 8비트의 출력 암호문을 생산하기 위하여 암호화가 되어야 함 • 스트림 암호같이 보이지만, 스트림 암호의 전형적인 구조를 따르지는 않음 • 암호화 • i • 복호화 Shift Lefts(Ij-1)||Cj-1)] j j Shift Lefts(Ij-1)||Cj-1)] j j
6.4 암호 피드백 모드 • CFB모드의 암호화 과정 • 입력: IV로 초기화된 b비트 이동 레지스터 CN -1 Shift register Shift register IV b-s bits | s bits b-s bits | s bits K K K Encrypt Encrypt Encrypt . . . Select s bits Select s bits Select s bits Discard b–s bits Discard b–s bits Discard b–s bits S bits S bits S bits P1 P2 PN C1 C2 CN S bits S bits S bits < s비트 암호 피드백(CFB) 모드 >
6.4 암호 피드백 모드 • CFB모드의 복호화 과정 • 입력: IV로 초기화된 b비트 이동 레지스터 CN -1 Shift register Shift register IV b-s bits | s bits b-s bits | s bits K K K Encrypt Encrypt Encrypt . . . Select s bits Select s bits Select s bits Discard b–s bits Discard b–s bits Discard b–s bits S bits S bits CN C1 C2 S bits S bits S bits P1 P2 PN S bits S bits S bits < s비트 암호 피드백(CFB) 모드 >
6.5 출력 피드백 모드 • 출력 피드백 모드(Output Feedback Mode) • 출력 피드백(OFB) 모드는 CFB의 구조와 유사함 • 암호화 함수의 출력이 OFB의 이동 레지스터로 피드백이 되는 반면에 CFB에서는 암호 함수의 출력이 이동 레지스터에 의해 피드백 됨 • S 비트 부분집합이 아닌 평문과 암호문의 꽉 찬 블록으로 운용이 됨 • 전형적인 스트림 암호 구조를 가지고 있음 • 장점 • 비트 오류가 전파되지 않음 • 단점 • CFB보다 메시지 스트림 변조 공격에 더욱 취약함 • 암호화 • 복호화 Oj-1) Oj-1)
6.5 출력 피드백 모드 • OFB모드의 암호화 과정 Nonce K K K . . . Encrypt Encrypt Encrypt P2 P1 PN C2 C1 CN < 출력 피드백(OFB) 모드 >
6.5 출력 피드백 모드 • OFB모드의 복호화 과정 Nonce K K K . . . Encrypt Encrypt Encrypt C2 C1 CN P2 P1 PN < 출력 피드백(OFB) 모드 >
6.6 계수기 모드 • 계수기 모드 • 평문 블록 사이즈와 같은 계수가 사용 • 특히, 계수기는 어떤 값으로 초기화된 다음 매 블록 마다 1씩 증가 • OFP모드와 같이, 초기의 계수값은 반드시 난수 • T1은 동일한 키를 사용한 암호화된 메시지와 반드시 구별이 되야함 • 계수값의 유일성을 보장하기 위한 한 가지 방법 • 전달 메시지에 대해 계속적으로 계수값을1씩 증가시킴
6.6 계수기 모드 • CTR모드의 암호화 과정 Counter 1 Counter 2 Counter 3 K K K . . . Encrypt Encrypt Encrypt P2 P1 PN C2 C1 CN < 계수기(CTR) 모드 >
6.6 계수기 모드 • CTR모드의 복호화 과정 Counter 2 Counter 1 Counter 3 K K K . . . Encrypt Encrypt Encrypt C2 C1 CN P2 P1 PN < 계수기(CTR) 모드 >
6.6 계수기 모드 • 계수기 모드의 장점 • 하드웨어 효율성 • 소프트웨어 효율성 • 전처리(Preprocessing) • 임의 접근(Random access) • 검증보안(Provable security) • 단순성 • 운용 모드의 피드백 성질 • ECB를 제외하고는, 모든 블록 암호 운용 모드는 피드백을 포함 • 이를 강조하기 위해, 입력 레지스터와 출력 레지스터에 저장된 산출물이 다시 입력으로 사용 • 입력 레지스터는 한번에 한 블록씩 피드백 메커니즘에 의해 업데이트가 됨
6.6 계수기 모드 Plaintext block Input register Key Encrypt Input register Key Encrypt Counter • Output register Input register Input register • Output register Key Key Encrypt Encrypt Plaintext block Cipher block chaining (CBC) mode Output feedback (OFB) mode • Output register • Output register Plaintext block Plaintext block Counter (CTR) mode Cipher feedback (CFB) mode < 운용 모드의 피드백 성질 >
6.7 블록 지향 저장장치를 위한 XTS-AES • 블록 지향 저장장치를 위한 XTS-AES • XTS-AES 모드는 변경 가능한 블록 암호의 개념에 기반을 두고 있음 • 저장 암호화 요구사항 • 저장된 데이터를 암호화하기 위한 요구사항에는 전송되는 데이터들과는 다른 의미를 갖는 “움직이지 않는 데이터”에 대한 언급을 하고 있음 • 단일 블록 운용 • 키 2개를 이용하며, 두 번의 AES알고리즘을 적용함 • 파라미터j의 기능은 CTR 모드의 계수기와 같음 • 파라미터i의 기능은 데이터 단위 레벨의 난수와 같음
6.7 블록 지향 저장장치를 위한 XTS-AES • 단일 블록 운용(암호화: ) αj i(128bit) Pj Key2 T AES Encrypt PP • AES • Encrypt Key1 α: GF(2128)의 원시원소 CC Cj Encryption < 단일블록에서의 XTS-AES 운용 >
6.7 블록 지향 저장장치를 위한 XTS-AES • 단일 블록 운용(복호화: ) αj i Cj Key2 T AES Encrypt CC • AES • Decrypt Key1 PP Pj Decryption < 단일블록에서의 XTS-AES 운용 >
6.7 블록 지향 저장장치를 위한 XTS-AES • 섹터에 대한 운용 • XTS-AES 알고리즘의 입력은 m개의 128비트 블록과 마지막 잔여 블록들로 구성됨 • 암호화와 복호화에서 각 블록은 독립적으로 다루어짐 • 단 마지막 블록이 128비트 보다 작을 때만 예외가 일어남 • 이러한 경우에 ciphertext-stealing 기술을 사용 • Pm-1은 마지막 전체 블록이고, Pm는 마지막 평문 블록이며, s비트를 포함하고 있음 • Cm-1은 마지막 전체 암호문 블록이고, Cm은 마지막 암호문 블록이며, s비트를 포함하고 있음
6.7 블록 지향 저장장치를 위한 XTS-AES • 섹터에 대한 운용 P0 P1 Pm-1 PmCP i, 0 i, 1 i, m i, m-1 YY Key Key Key Key XTS-AES block encryption XTS-AES block encryption XTS-AES block encryption XTS-AES block encryption . . . XX Cm-1 CmCP C0 C1 Cm-1 Cm-1 Encryption < XTS-AES 모드 >
6.7 블록 지향 저장장치를 위한 XTS-AES • 섹터에 대한 운용 C0 C1 Cm-1 CmCP i, 0 i, 1 i, m-1 i, m XX Key Key Key Key XTS-AES block decryption XTS-AES block decryption XTS-AES block decryption XTS-AES block decryption . . . YY Pm-1 PmCP P0 P1 Pm-1 Pm-1 Decryption < XTS-AES 모드 >