정보보안 - 대칭키 암호
대칭키 암호의 종류
- DES (Data Encryption Standard)
- 개요
- NIST(미국 국립기술표준원) 에서 1973년 국가적으로 사용할 대칭키 암호시스템 제안요청서를 발표
- IBM의 제안으로 DES가 채택됨
- FIPS(연방정보처리기준) 의 초안으로 공표
- DES 발표 후 가장 널리 사용된 대칭키 블록 암호
- 이후 삼충 DES 사용을 권고한 FIPS 46-3 발표
- 최신 AES 는 DES 를 대체한 알고리즘
- 개관
- 평문의 길이는 64비트, 키의 길이는 56비트, 이보다 길면 64비트 블록으로 나눔
- DES 구조는 Feistel 네트워크의 변형, 라운드 회수는 16
- 원래 키로부터 16개의 서브키를 생성하고 서브키를 각 라운드에서 사용
- DES 복호화 과정은 암호화 과정과 동일
- DES의 구조
- 개요
- 두 개의 전치(P-박스)와 16개의 Feistel 라운드 함수로 구성
- P-박스는 초기 전치(initial Permutation) 과 최종 전치(Final Permutation) 임
- 암호화
-
Plain Text Plain Text (평문을 절반으로 자름) - P-Box
- 1 Round
- R2 = L1 XOR F1(R1)<-K1
- L2 = R2
- …
- 16 Round (교차 없음)
- R16 = R15
- L16 = L15 XOR F15(R15)<-K15
- P-Box
- 64Bit 암호문(Cipher Text)
-
- 복호화도 동일하게 마지막 라운드에 교차 없음
- 라운드 함수
- 개요
- DES 는 16번의 라운드 함수를 사용
- 각 라운드 함수는 Fiestal 암호로 되어있음
- 라운드 함수는 이전 라운드 함수의 출력 값 L-1 과 R-1 을 입력으로 받고 다음 라운드에 입력으로 전송될 L 과 R을 생성
- 각 라운드에는 2개의 암호 요소 혼합기(mixer) 와 교환기 (swapper) 가 있음, 이런 요소들은 역연산이 가능함
- DES 함수
- DES 의 핵심은 함수
- 라운드 함수에서 사용된 함수를 가리킴
- DES 함수는 32비트 출력값을 산출하기 위해 가장 오른쪽의 32비트에 48비트 키를 적용
- DES 함수는 확장 P-박스, 키 XOR, 8개의 S-박스 그리고 단순 P-박스의 4개 부분으로 구성
- 예시
- 32Bit 입력
- 확장 P-박스 (48Bit)
- 48Bit XOR Key (48Bit)
- S-Box (8개)
- 32Bit 출력
- 단순 P-박스
- 32Bit 결과
- 예시
- 개요
- 암호화 알고리즘과 복호화 알고리즘
- 라운드 키들이 역순으로 적용되어야 한다는 사실이 중요
- 암호화 과정에서 1라운드는 K1, 복호화 과정에서 1라운드는 K16
- 개요
- DES 분석
- 설계 기준
- S-박스
- 각 라운드에서 그 다음 라운드까지 혼돈과 확산 성질을 만족하도록 설계
- 비선형 함수
- 입력 값의 한 비트를 바꾸면 출력 값에서 두 비트 이상 바뀜
- P-박스
- 32비트에서 32비트로 가는 하나의 단순 P-박스
- 32비트에서 48비트로 가는 하나의 확장 P-박스
- 2개의 P-박스는 비트들을 동시에 확산(diffusion) 시킴
- S-박스
- DES의 취약점
- 키의 크기(56비트)
- 키에 대한 전수 조사를 위해 2의 56승 키를 조사
- 전사공격 가능
- 다중 DES 사용
- 설계 기준
- 다중 DES
- 삼중 DES
- 개요
- 두 개의 키를 갖는 삼중 DES 와 세 개의 키를 갖는 삼중 DES가 있음
- 두 개의 키를 갖는 삼중 DES (DES-EDE2)
- 두 개의 키를 갖는 삼중 DES 에서는 k1과 k2 두 개의 키를 사용
- 첫 번째와 세번째 단계에서는 k1, 두 번째 단계에서는 k2를 사용
- 하나의 DES로 삼중 DES를 만들기 위하여 암호화 과정의 중간 단게에서는 복호화 알고리즘을 사용하고, 복호화 과정에서는 DES 암호화 알고리즘을 사용
- 기지평문 공격에 취약
- 세 개의 키를 갖는 삼중 DES (Triple-DES)
- 세 개의 키 k1, k2, k3 를 사용
- P -> 암호화(k1) -> 복호화(k2) -> 암호화(k3) -> 암호문
- PGP (이메일 보안, Pretty Good Privacy) 에서 사용
- 기지평문 공격 보완
- 복호화 : 암호화의 역
- 트리플 DES에서 모든 키를 동일하게 하면 3DES는 보통 DES와 같아짐
- 과거에 DES로 암호화된 암호문을 3DES를 사용하여 복호화 가능
- 개요
- 삼중 DES
- 개요
- AES
- 개요
- 역사
- 1997년 미국 국립기술표준원(NIST)은 DES를 대체하기 위해 Advanced Encryption Standard(AES) 암호 알고리즘을 공모
- NIST의 제안 요청서
- 128비트 블록크기
- 128, 192, 256 비트의 세 가지 키 크기
- 공개 알고리즘으로 누구나 이용 가능해야 함
- 레인달(Rijndael) AES 알고리즘 선택
- 선정기준
- 안정성
- 비용
- 구현 효율성
- 라운드(Rounds)
- AES는 128비트 평문을 128비트 암호문으로 출력하는 알고리즘
- Non-feistel 알고리즘
- 10 (128bit key), 12 (192bit key), 14 (256bit key) 라운드 사용
- AES-128, AES-192, AES-256 으로 불림
- 역사
- 암호(Ciphers)
- 개요
- DES : Feistel 네트워크를 기본 구조로 사용
- Rijndael : SPN (Substitution-Permutation Network) 구조 사용
- 연산은 바이트 단위의 연산을 사용
- S-Box 를 이용한 치환, 행이동, 행연산 열변환, 키연산 열변환의 4가지 기본연산을 수행
- 알려진 공격방법들로부터 안전하도록 설계
- 하드웨어, 소프트웨어 구현 시 속도나 코드 압축성 면에서 효율적
- SPN 구조
- 라운드 함수가 역변환이 되어야 한다는 등의 제약이 있음
- 더 많은 병렬성을 제공
- 입력을 여러 개의 소블록으로 나누고 각 소블록을 S-box에 입력하여 치환, S-box의 출력을 P-box로 전치하는 과정 반복
- Feistel 과 SPN 구조 알고리즘
- Feistel : DES, Blowfish, MISTY, RC5
- SPN : IDEA, Rijndael (AES), Square
-
DES 와 AES 의 비교
구분 DES AES 년도 1976 1999 블록크기 64bits 128bits 키 길이 56bits 128,192,256bits 암호화 프리미티브 치환,전치 치환,시프트,비트 혼합 암호학적 프리미티브 혼돈,확산 혼돈,확산 설계 공개 공개 설계 원칙 비공개 공개 선택 과정 비밀 비밀,공모 출처 IBM,NSA 벨기에 암호학자
- 개요
- 개요
- 기타 대칭키 암호 알고리즘
- IDEA(International Data Encryption Algorithm)
- DES를 대체하기 위해 스위스 연방 기술 기관에서 개발
- 128비트의 키를 사용해 64비트의 평문을 8라운드를 거쳐 64비트 암호문으로 변경
- Feistel 구조
- DES 보다 2배 빠름
- 무차별 공격에 더욱 효율적으로 대응
- PGP 암호화 소프트웨어에서 사용
- SEED
- KISA 에서 개발한 알고리즘
- 인터넷, 전자상거래, 무선 통신 등에서 공개될 경우 민감한 영향을 끼칠 수 있는 중요 정보 및 개인 정보를 보호하기 위해 개발된 대칭 알고리즘
- 1999년 9월 정보통신단체표준(TTA) 로 제정
- 2005년 국제 표준화 기구인 ISO/IEC 및 IETF에서 국제 블록암호 알고리즘 표준으로 제정
- IEC(International Electro-technical Commission) : 국제전기기술위원회
- IETF(Internet Engineering Task Force) : 국제 인터넷 표준화기구
- 128비트 비밀키에서 생성된 16개의 64비트 라운드키를 사용하여 16라운드
- 2009년에는 256비트 비밀키 사용 (SEED256)
- 128비트의 평문 블록을 128비트 암호문 블록으로 출력
- DES 와 유사한 변형된 Feistel 구조
- f 함수의 비선형성 안전도에 의존
- ARIA (Academy Research Institute Agency)
- 국가보안기술연구소(NSRI) 주도로 학계, 국가정보원 등의 암호기술전문가들이 개발한 국가 암호화 알고리즘
- ARIA : 개발팀이 학계, 연구소, 정부기관으로 구성됨
- ISPN(Involutional SPN) 구조
- 128비트 블록 암호
- 128비트, 192비트, 256비트의 3종류의 키 사용을 제공
- 길이에 따라 ARIA-128, ARIA-192, ARIA-256
- 입출력 크기와 사용가능한 키 크기는 미국 표준 블록 암호인 AES와 동일
- HIGHT (HIGh security and light weigHT)
- KISA, ETRI, 고려대에서 2005년도에 개발
- 2006년에 TTA (정보통신단체) 표준으로 제정됨
- 2010년 ISO/IES 국제표준 암호로 제정
- 64bit 블록암호
- 저전력, 경량화
- LEA (Lightweight Encryption Algorithm)
- 2012년 국가보안기술연구소(NSRI) 가 개발한 경량 고속 암호화 알고리즘
- 128bit 블록암호
- AES에 비해 1.5~2배 빠름
- 스마트폰, 사물인터넷 등에 사용
- RC5
- 1994년 RSA 연구소에서 개발
- 입출력, 키, 라운드 수가 가변적임
- 32bit, 64bit, 128bit 블록암호
- DES의 10배의 속도
- IDEA(International Data Encryption Algorithm)
-
대칭키 암호 정리
구분 국가 개발년도 특징 블록크기 키의길이 라운드수 DES 미국 1927년 NIST에서 표준으로 공표(1997년) 64 56 16 IDEA 유럽 1990년 PGP 채택 64 128 8 Rijndael 벨기에 2000년 AES알고리즘으로 선정 128 128,192,256 10,12,14 SEED 한국 1999년 한국표준 블록암호 알고리즘 128 128 16 CRYPTON 한국 1998년 128 0-256 12 RC5 미국 1994년 알고리즘이 간단, 속도가 빠름 64 0-256 16 FEAL 일본 1987년 S/W구현에 적합 64 64 4 MISTY 일본 1996년 차분/선형공격에 안정성증명구조 64 128 8 SKIPJACK 미국 1990년 Fortezza카드에 사용 64 80 32 - 현대 대칭키 암호를 이용한 암호화 기법
- 현대 블록 암호의 사용
- 개요
- 기본개념
- 블록 암호를 다양한 응용에 사용하기 위해 NIST에서 5가지 운영모드를 정의
- DES, AES를 포함한 어떤 대칭 블록 암호에도 적용 가능
- ECB모드 : Electric CodeBook mode (전자 부호표 모드)
- CBC모드 : Cipher Block Chaining mode (암호 블록 연쇄모드)
- CFB 모드 : Cipher-FeedBack mode (암호 피드백 모드)
- OFB 모드 : Output-FeedBack mode (출력 피드백 모드)
- CTR 모드 : CounTeR mode (카운터 모드)
- CFB, OFB, CTR 모드 : 스트림 암호화 방식
- 기본개념
- Electric CodeBook(ECB) 모드
- 개요
- 가장 간단한 모드. 평문은 N개의 n비트 블록으로 분할
- 평문 크기가 블록 크기의 배수가 아니라면, 평문의 마지막 블록은 다른 블록들과 동일한 크기로 만들기 위하여 padding이 필요
- 각 블록에 키는 동일
- 응용
- 매우 많은 데이터베이스를 암호화할 때 병렬적으로 처리 가능
- 암호화된 레코드를 저장하거나 복호화 해야하는 분야에서 독립성이 유용
- 다른 레코드에 영향을 주지 않음
- 암호화 예시
- P1 -> Enc(K1) = C1
- P2 -> Enc(K1) = C2
- P3 -> Enc(K1) = C3
- P4 -> Enc(K1) = C4
- 개요
- Cipher Block Chaining(CBC) 모드
- 개요
- 각각의 평문 블록은 암호화되기 전에 이전 암호화 블록과 XOR 됨
- 블록이 암호화될 때 암호화블록은 전송되지만, 다음 블록 암호화를 위해 메모리에 저장됨
- 첫 번째 블록은 이전 암호화 블록이 없으므로 초기벡터라고 불리는 허구의 블록이 사용됨
- 암호화와 복호화
- 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR 하고 나서 암호화를 수행함
- 복호화할 때 암호문 블록 1개가 파손된 경우, 평문 블록에 미치는 영향은 2개 블록에 머문다. 반면 평문 블록 한 비트 오류는 모든 암호문에 영향을 미친다.
- CBC 모드 활용
- 인터넷에서 보안을 제공하는 프로토콜 중 하나인 IPSec 에서 통신의 기밀성을 지키기 위해 CBC 모드를 사용
- 3DES 를 CBC 모드로 사용한 3DES-CBC, AES를 CBC로 사용한 AES-CBC
- CBC 모드 인증으로 수행하는 대칭키 암호 시스템의 하나인 Kerberos version 5에서도 사용
- 암호화 예시
- P1 -> IV Xor -> Enc(K1) = C1
- P2 -> C1 Xor -> Enc(K2) = C2
- P3 -> C2 Xor -> Enc(K3) = C3
- P4 -> C3 Xor -> Enc(K4) = C4
- IV 가 바뀌면 암호문 블록 모두가 바뀌게 됨
- P1 가 바뀌면 암호문 블록 모두가 바뀌게 됨
- 복호화 예시
- C1 -> Dec(K1) -> IV Xor = P1
- C2 -> Dec(K2) -> C1 Xor = P2
- C3 -> Dec(K3) -> C2 Xor = P3
- C4 -> Dec(K4) -> C3 Xor = P4
- C2 가 손상되면 P2, P3가 영향을 받음
- 암호문 길이에는 변화가 없어야 함
- 개요
- Cipher-FeedBack(CFB) 모드 / 스트림암호 방식 블록암호 모드
- 개요
- 어떤 블록 암호도 스트림 암호로 바꿀 수 있다.
- 스트림 암호의 경우 메시지의 길이가 블록의 정수배가 되도록 패딩 할 필요가 없으며 실시간으로 사용 가능
- 한 문자를 전송하는 경우 문자 중심 스트림 암호를 이용하여 각 문자가 암호화되는 즉시 전송 가능
- 암호화와 복호화
- 복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀌었을 뿐 동일
- CBC에서는 복호화 함수를 사용
- CFB에서는 암호화 함수를 복호화에 사용
- DES 나 AES 와 같은 블록 암호를 이용한 운용 모드
- 그 결과는 스트림암호와 같다.
- 키 스트림이 암호문에 의존하는 비동기식 스트림암호와 비슷
- 복호화 과정은 평문 블록과 암호문 블록의 역할만 바뀌었을 뿐 동일
- 암호화 예시
- IV -> Enc(K1) -> P1 Xor = C1
- C1 -> Enc(K2) -> P2 Xor = C2
- C2 -> Enc(K3) -> P3 Xor = C3
- C3 -> Enc(K4) -> P4 Xor = C4
- 복호화 예시
- IV -> Enc(K1) -> C1 Xor = P1
- C1 -> Enc(K2) -> C2 Xor = P2
- C2 -> Enc(K3) -> C3 Xor = P3
- C3 -> Enc(K4) -> C4 Xor = P4
- 개요
- Output-FeedBack(OFB) 모드 / 스트림암호 방식 블록암호 모드
- 개요
- CFB 모드와 유사하지만 모든 암호문 블록의 각 비트는 이전 암호문 블록의 비트들과 독립적
- 오류 파급의 영향을 피할 수 있음
- 오류 발생 시 다른 비트에 영향 안줌
- CFB와 마찬가지로 초기화 벡터 사용
- 스트림 암호로서의 OFB 모드
- 블록 암호를 기반으로 한 스트림 암호
- 키 스트림은 평문이나 암호문과는 독립적이므로 동기식 스트림암호
- IV 암호화 -> 평문 블록과 XOR -> 암호화 블록 생성
- IV 암호화 결과를 암호화 -> 평문 블록과 XOR -> 암호화 블록 생성
- CFB 모드와 유사하지만 모든 암호문 블록의 각 비트는 이전 암호문 블록의 비트들과 독립적
- 암호화 예시
- IV -> Enc(K1) = I1 -> P1 Xor = C1
- I1 -> Enc(K2) = I2 -> P2 Xor = C2
- I2 -> Enc(K3) = I3 -> P3 Xor = C3
- I3 -> Enc(K4) = I4 -> P4 Xor = C4
- 복호화 예시
- IV -> Enc(K1) = I1 -> C1 Xor = P1
- I1 -> Enc(K2) = I2 -> C2 Xor = P2
- I2 -> Enc(K3) = I3 -> C3 Xor = P3
- I3 -> Enc(K4) = I4 -> C4 Xor = P4
- 초기치가 바뀌면 모든 암호문이 바뀜
- 암호화 알고리즘의 결과는 평문과는 무관하다
- 개요
- CounTeR(CTR) 모드 / 스트림암호 방식 블록암호 모드
- 개요
- ATM(asynchronous transfer mod) 네트워크 보안과 IPSec 에 응용되면서 관심이 늘어남.
- 암호화 시 피드백이 존재하지 않음. -> 암/복호화 병렬처리가 가능
- 키 스트림의 의사난수성은 카운터를 사용함으로써 성취될 수 있음
- CTR 값은 암호화 할 때마다 새로운 비표값으로 생성
- CTR 모드는 OFB 모드와 마찬가지로 이전 암호문 블록과 독립적인 키 스트림을 생성하지만 (동기식) 피드백을 사용하지 않음
- ECB 모드처럼 CTR 모드는 서로 독립적인 n비트 암호문 블록을 생성함
- ECB와 CTR은 암복호화 병렬처리가 가능
- OFB : 병렬처리 불가
- CBC/CFB : 복호화만 병렬처리 가능
- CTR 암호화 -> 평문블록과 XOR -> 암호화 블록 생성
- 암호화 예시
- CTR+0 -> Enc(K1) -> P1 Xor = C1
- CTR+1 -> Enc(K2) -> P2 Xor = C2
- CTR+2 -> Enc(K3) -> P3 Xor = C3
- CTR+3 -> Enc(K4) -> P4 Xor = C4
- 복호화 예시
- CTR+0 -> Enc(K1) -> C1 Xor = P1
- CTR+1 -> Enc(K2) -> C2 Xor = P2
- CTR+2 -> Enc(K3) -> C3 Xor = P3
- CTR+3 -> Enc(K4) -> C4 Xor = P4
- 개요
- 개요
- 현대 블록 암호의 사용
- 블록 암호 공격
- 차분공격에 대한 기본 개념 (Differential Cryptanalysis)
- 선택 평문 공격
- 두 개의 평문 블록들의 비트의 차이에 대응되는 암호문 블록들의 비트의 차이를 이용하여 사용된 암호키를 찾는 방법
- 선형공격에 대한 기본 개념 (Linear Cryptanalysis)
- 기지 평문 공격
- 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 암호키를 찾는 방법
- 평문과 암호문 비트를 XOR 하여 0이 되는 확률
- 전수공격법 (Exhaustive key search)
- 암호화할 때 일어날 수 있는 모든 경우에 대해 조사
- 경우의 수가 적을 때 좋음
- 통계적 분석 (Statistical analysis)
- 암호문에 대한 평문의 각 단어의 빈도에 관한 자료와 더불어 지금까지 알려진 모든 통계적인 자료를 이용하여 해독
- 수학적 분석 (Mathematical analysis)
- 통계적인 방법과 수학적 이론을 이용
- 차분공격에 대한 기본 개념 (Differential Cryptanalysis)
댓글남기기