정보보안기사 #07 암호학 강의 내용정리 - 2. 대칭키 암호
by jennysgap정보보안기사 #07 암호학 강의 내용정리 - 2. 대칭키 암호
▼ 2016년 정보보안(산업)기사 암호학 파트 서브노트
▼ 2016년 정보보안(산업)기사 암호학 강의
http://sec.algisa.com/front/ProductVodView?a_lLinkCtgKey=2089&a_lGKey=104300
※ 2018년부터 암호학파트는 유료로 전환됨에 따라 2016년도 무료 강의로 대체 (참고 - 2017년 암호학 강의도 유료화 됨)
암호학 파트 전체 학습 구조
2. 대칭키 암호
3. 비대칭키 암호
※ 양방향 : 대칭키, 비대칭키
4. 해시함수와 응용
※ 일방향 : 해시함수
5. 전자서명과 PKI
6. 키와 난수
2. 대칭키 암호
현대 블록 암호
1) 대칭키 암호 (Symmetric Encryption)
= 관용 암호 (Conventional Encryption)
= 비밀키 암호 (Secret-key Encryption)
= 단일키 암호 (Single-key Encription)
2) 비대칭키 암호
= 공개키 암호
※ 고전 암호와 비교했을 때, 현대 암호는 비트(bit) 중심의 암호로 복잡하다.
※ 치환(Substitution)과 전치(Transposition) : 현대 블록 암호는 치환암호로 설계
현대 블록 암호의 구성요소
확산과 혼돈 성질 만족을 위하여 전치요소(P-박스) + 치환요소(S-박스) + 그 밖의 구성요소들을 결합하여 설계
1) P-박스
2) S-박스
- 대치 암호의 축소 모형
- 입력과 출력의 개수가 달라도 됨
- 역함수 존재(입력=출력) or 비존재 가능
- Shift(비트 워드에서의 왼쪽 혹은 오른쪽 순환이동)
Swap(8비트 워드에서의 스왑 연산)
Split&Combine(8비트 워드에서의 분할과 결합)
3) 합성 암호(Product Ciphers) : P박스 + S박스
확산(Diffusion)과 혼동(Confusion)
① 엔트로피 개념으로 설명 (무질서도 증가 방향으로 변함)
② shannon의 정의
③ 혼돈 : 암호문과 키 사이의 관계를 숨긴다.
암호문 이용 -/-> 키를 찾음
④ 확산 : 암호문과 평문 사이의 관계를 숨긴다. (평문의 통계적 성질을 암호문 전반에 퍼뜨려 숨김)
암호문 통계테스트 이용 -/-> 평문 찾음
라운드(Rounds) : 반복적으로 사용되는 합성 암호를 라운드(round)라고 칭한다.
두 가지 종류의 합성 암호
1) Feistel 암호
- DES를 포함해서 대부분의 대칭 블록 암호 알고리즘은 1973년 IBM의 Horst Feistel이 최초로 소개한 구조를 따라 만들어진다.
- Feistel 암호는 세 가지 타입의 구성요소를 가진다.
① 자기 자신을 역으로 갖는 것
② 역함수가 존재하는 것
③ 역함수가 존재하지 않는 것
- 역이 존재하지 않는 구성요소를 결합(서로 상쇄되도록 하는 것이 특징이다.)하고 암호화 알고리즘과 복호화 알고리즘에서 동일한 구성요소(unit)를 사용한다.
- Feistel 구조는 3라운드 이상이며, 짝수 라운드로 구성된다.
- Feistel 암호 특징 : 많은 블록 암호 알고리즘에서 이용 (단, AES로 최종 선정된 Rijndael은 사용 안함)
2) Non-Feistel 암호 (=SPN 구조)
- 역함수가 존재하는 요소만을 사용
- Feistel 암호에서처럼 평문이 반으로 분할될 필요는 없다.
- AES로 최종 선정된 Rijndael에서 SPN구조가 사용되었다.
대칭 블록 암호 구현 ★★★
① 블록 크기 (Block size) : 블록 길이가 클 수록... 128bit(합리적인 크기)
② 키 길이 (Key size) : 키 길이가 길 수록... 128bit(보편적인 길이)
③ 라운드 수 (Numver of rounds) : 라운드 수를 증가시킬 수록... 16(전형적인 라운드 수)
④ 서브키 생성 알고리즘 (Subkey generation algorithm) : 알고리즘이 복잡할 수록...
⑤ 라운드 함수 (Round function) : 함수가 복잡할 수록...
현대 스트림 암호
스트림 암호는 블록 암호보다 빠를 뿐만 아니라 하드웨어 구현 또한 블록 암호보다 더욱 용이하다.
1) 동기식 스트림 암호
동기식 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적이다.
① One-Time Pad : shannon(이론적으로 해독 불가능), XOR(암호화알고리즘과 복호화알고리즘은 서로 역관계), 한 번에 한 비트씩 적용
② Feedback Shift Register(FSR) : Shift 레지스터와 Feedback 함수로 구성된다.
③ Linear Feedback Shift Register(LFSR)
④ Nonlinear Feedback Shift Register(NLFSR)
2) 비동기식 스트림 암호
① Chipher Feedback Mode(CFB) : 실제로 스트림 암호를 생성한다.
DES(Data Encryption Standard)
1. 목적 : 데이터 암호화(Data Encryotion)
2. 방식 : Substitution(S-박스, 치환) + Permutation(P-박스, 전치, Transposition)
주로 S-box에 의존
3. 사례 : Kerberos 버전 4 (대칭 암호기법에 바탕을 둔 티켓 기반 인증 Protocol)
4. Round 횟수 : 16회전 (S-box, P-box 각각 16번)
5. Crack 이유 : 짧은 key size
6. Key size : 56bit(유효) - 원래는 64bit지만 8bit가 parity bit가 drop된다.
7. Block 크기 : 64bit
8. Crack time 구하기
WEP(Wired Equivalent Privacy) 40 bits 1hr (work factor)
DES crack time?
2^40 : 1 = 2^60 : x
2^40x = 2^60
x = 2^16 = 65,536
DES의 일반적 구조
- 56bit의 key가 Round-key generator에 들어간다.
- 그러면 48bit의 key가 16개 산출된다. (round 횟수가 16번 회전하기 때문)
- 각 Round 중에서 1개를 확대해 보면 왼쪽 32bit, 오른쪽 32bit 나눠서 왼쪽은 그대로 내려가고 오른쪽은 f function으로 들어간다.
- f function을 살펴보면 --32bit--> [ Expansion P-box ] --48bit--> [ XOR ] --48bit--> [ S-Boxes ] --32bit--> [ Straight P-box ]
- S-box의 구조를 살펴보면 아래 그림과 같다.
Key 생성 구조
- 64bit의 키가 Parity drop 되어 56bit가 되고
- 56bit의 키는 round-key generator에 들어가서 48bit의 키가 16개 산출된다.
DES 역사
- 미국 국립기술표준원(NIST)은 1973년 국가적으로 사용할 대칭키 암호시스템의 제안 요청서를 발표
- 이에 따라 Lucifer 프로젝트의 수정판인 IBM의 제안이 DES로 채택
DES 개관
- 평문의 길이는 64bit
- 키의 길이는 56bit
- 이보다 긴 평문은 64bit 블록으로 나눈다.
- DES 구조는 Feistel 네트워크의 변형된 형태이다.
- 라운드 회수는 16
- 56bit짜리 원래 키로부터 16개 서브키를 생성
- 그 서브키를 각 라운드에서 사용한다.
DES의 구조
- 각 라운드는 라운드 키 생성기에 의해 암호키로부터 생성된 48bit 라운드 키를 사용한다.
DES 함수
- DES 함수는 확장 P-box, 키 XOR, 8개의 S-box, 단순 P-box 4개로 구성되어 있다.
암호화 알고리즘과 복호화 알고리즘
- 중요한 점은 라운드 키들이 (K1에서 k16) 역순으로 적용되어야 한다는 사실이다.
- 암호화 과정에서 1라운드는 k1을 사용하고 16라운드는 k16을 사용한다.
- 복호화 과정에서 1라운드는 k16을 사용하고 16라운드는 k1을 사용한다.
DES 분석
1) 설계 기준
- S박스 : 안전성을 결정하는 요소이다.
각 라운드에서부터 그 다음 라운드까지 혼돈과 확산 성질을 만족하도록 설계되었다.
비선형 함수이다
- P박스 : 비트들을 동시에 확산(diffusion)시킨다.
2) DES 취약점 : 키 크기가 짧다. (56bit)
Triple DES
AES
기타 대칭키 암호 알고리즘
현대 대칭키 암호를 이용한 암호화 기법
블로그의 정보
jennysgap
jennysgap