4. 5 (목) - 암호 (DES)
DES의 순서
M block(64) → 초기전치 → DES Round
-------------------------------------------------------------------------------------------------------------------------
DES Round 순서
L(i-1)(32) / R(i-1)(32) → R(i-1)(32)를 F함수 연산 →
=========================================================
F함수 순서
R(i-1)(32) → 48비트로 확장(확장 순열) → Key(48)와 XOR 연산
→ S-box를 통한 치환선택 (48->32) → 순열
=========================================================
→ F함수의 결과와 L(i-1)(32) 를 XOR 연산 = R(i) → R(i-1)은 그대로 L(i)가 됨
-------------------------------------------------------------------------------------------------------------------------
→ 16라운드가 끝나면 역전치 → 암호문 C(64) 생성
◎ DES의 Key
- 64비트를 56비트로 축약하여 서브키 생성
- 8번째 비트마다 패리티 비트 포함시켜 64비트를 키로 사용
- 사용시엔 패리티 비트 제거하여 56비트로 이용
- 암호화 과정에 맞춰 16 Round 실행
- 각 Round 별 서버키 생성
- 64비트 키는 PC-1을 지나며 패리티 비트(8비트) 제거
- 남은 56 비트 키는 C0(28개비트)비트로 양분할 됨.
- Round별 정해진 Left-Shift를 적용하고, PC-2(순열/수축) 한 뒤 나온 C1(28개비트)
둘(56개 비트) 중에서 48개의 비트를 선정해 키로 사용
- 여기까지의 과정이 1개의 Round, 위 과정을 16번 수행
◎ DES의 작동 모드
▷ ECB (Electronic Codebook) 모드
- 기존에 사용하던 모드
- K를 입력하는 방법은 각양각색 (직접 생성, 난수 등등)
- 대신 K는 안전하게 보관해야함.
- K를 상대방에게 안전하게 주는 방법을 강구
- 가장 안전한 방법 : 상면(face to face) 방법
- 단점 : 동일한 P에 대응되는 C가 같다는 단점이 존재 (통계적인 추측이 가능)
▷ CBC (Cipher Block Chaining) 모드
- ECB 방식의 단점을 보완, 입력된 P가 같은 평문이어도 순서에 따라 다른 결과가 나옴.
- P1을 제외한 나머지 평문은 이전 평문의 암호문 C(i-1)과 XOR 연산되어
DES 알고리즘이 적용된다.
- 첫 평문인 P1은 미리 지정해둔 초기값과 XOR 연산된다.
▷ CFB (Cipher Feedback)
- NASA에서 필요로 의해 64 비트보다 적은 비트 단위로 암호화할 필요성을 느껴 만들어짐
- 암호 시스템 자체를 건드리지 않고 조정해야했음.
- 링크 암호 기법 (H/W로 구현)
- 64비트 레지스터를 사전에 준비 (64비트의 임의의 문자열) - 다른사람들은 모름
- 64비트 레지스터를 메모리에 복사, 이를 DES 암호화 -> 64비트가 나옴,
- 여기서 나온 64비트 중 8비트를 오른쪽에서 부터 뽑음
- 이를 입력할 8비트 평문과 XOR 연산하여 암호문을 구함.
- 처음 만들어진 C1을 메모리에 저장된 64비트 레지스터의 오른쪽에 패딩시킴,
- 왼쪽으로 삐져나온 8비트는 버림 (레지스터가 바뀌도록->보안을 위해)
- 특징 : 원문의 길이를 자신의 마음대로 조절할 수 있음 (but, 64비트보단 작은 단위로)
- 현재는 사용하지 않음, 인공위성의 cpu 성능이 더 나아졌기 때문.
▷ OFB (Output Feedback)
- CFB 형식과 구조는 같음
- 차이점이라면, 다음 64비트 레지스터에 패딩되는 값이 이전의 암호문이 아닌,
선택한 j비트가 패딩된다는 점.
◎ DES의 작동 모드 - 3중 DES
- 배경 : DES의 K는 64비트길이, brute-force공격에 취약함.
- 새로운 알고리즘의 개발 : IDEA (128bits 키 사용) - 전수조사가 2^64배 어려워짐
- DES의 응용 : 3중 DES, 2중 DES
▷ 3중 DES
- 2개의 키를 사용
- 암호화 : 암호화(1번 키) - 복호화(2번 키) - 암호화(1번 키)
- 복호화 : 복호화(1번 키) - 암호화(2번 키) - 복호화(1번 키)
- brute-force 공격에 일반 DES 알고리즘보다 강하다.
- 더 강해졌지만, 키가 하나 늘었기에 2배 강해졌을 뿐이다.
◎ 추가 암호 알고리즘
▷ AES (Advanced Encryption Standard)
- DES를 대체하기 위한 표준암호 알고리즘
- 리인델, 투피쉬, 서펀트, 마스 등이 2차 선정
- 2000년 10월 2일에 리인델이 AES에 선정되었다.
▷ Rijndael Algorithm
- 128, 192, 256 비트의 다양한 길이의 키를 사용
- 알려진 모든 공격에 대응 가능하다
- 스마트 카드 상의 컴팩트한 보조 프로세서 등에 이용가능
- 문제 : 유럽에서의 불신
▷ IDEA (International Data Encryption Algorithm)
- 유럽에서 정한 국제 데이터 암호 알고리즘
- 현재 사용 불가
- 64비트 평문 블록에서 128비트 키를 이용해 작동
- 8 라운드
- PGP의 메일 시스템에 이용
▷ RC5
- 32, 64, 128 비트 블록 사이즈 이용
- 0 ~ 255 까지의 다양한 라운드 사용
- 0 ~ 2048 비트까지의 키를 이용
- 돈내고 이용해야함.
M block(64) → 초기전치 → DES Round
-------------------------------------------------------------------------------------------------------------------------
DES Round 순서
L(i-1)(32) / R(i-1)(32) → R(i-1)(32)를 F함수 연산 →
=========================================================
F함수 순서
R(i-1)(32) → 48비트로 확장(확장 순열) → Key(48)와 XOR 연산
→ S-box를 통한 치환선택 (48->32) → 순열
=========================================================
→ F함수의 결과와 L(i-1)(32) 를 XOR 연산 = R(i) → R(i-1)은 그대로 L(i)가 됨
-------------------------------------------------------------------------------------------------------------------------
→ 16라운드가 끝나면 역전치 → 암호문 C(64) 생성
◎ DES의 Key
- 64비트를 56비트로 축약하여 서브키 생성
- 8번째 비트마다 패리티 비트 포함시켜 64비트를 키로 사용
- 사용시엔 패리티 비트 제거하여 56비트로 이용
- 암호화 과정에 맞춰 16 Round 실행
- 각 Round 별 서버키 생성
- 64비트 키는 PC-1을 지나며 패리티 비트(8비트) 제거
- 남은 56 비트 키는 C0(28개비트)비트로 양분할 됨.
- Round별 정해진 Left-Shift를 적용하고, PC-2(순열/수축) 한 뒤 나온 C1(28개비트)
둘(56개 비트) 중에서 48개의 비트를 선정해 키로 사용
- 여기까지의 과정이 1개의 Round, 위 과정을 16번 수행
◎ DES의 작동 모드
▷ ECB (Electronic Codebook) 모드
- 기존에 사용하던 모드
- K를 입력하는 방법은 각양각색 (직접 생성, 난수 등등)
- 대신 K는 안전하게 보관해야함.
- K를 상대방에게 안전하게 주는 방법을 강구
- 가장 안전한 방법 : 상면(face to face) 방법
- 단점 : 동일한 P에 대응되는 C가 같다는 단점이 존재 (통계적인 추측이 가능)
▷ CBC (Cipher Block Chaining) 모드
- ECB 방식의 단점을 보완, 입력된 P가 같은 평문이어도 순서에 따라 다른 결과가 나옴.
- P1을 제외한 나머지 평문은 이전 평문의 암호문 C(i-1)과 XOR 연산되어
DES 알고리즘이 적용된다.
- 첫 평문인 P1은 미리 지정해둔 초기값과 XOR 연산된다.
▷ CFB (Cipher Feedback)
- NASA에서 필요로 의해 64 비트보다 적은 비트 단위로 암호화할 필요성을 느껴 만들어짐
- 암호 시스템 자체를 건드리지 않고 조정해야했음.
- 링크 암호 기법 (H/W로 구현)
- 64비트 레지스터를 사전에 준비 (64비트의 임의의 문자열) - 다른사람들은 모름
- 64비트 레지스터를 메모리에 복사, 이를 DES 암호화 -> 64비트가 나옴,
- 여기서 나온 64비트 중 8비트를 오른쪽에서 부터 뽑음
- 이를 입력할 8비트 평문과 XOR 연산하여 암호문을 구함.
- 처음 만들어진 C1을 메모리에 저장된 64비트 레지스터의 오른쪽에 패딩시킴,
- 왼쪽으로 삐져나온 8비트는 버림 (레지스터가 바뀌도록->보안을 위해)
- 특징 : 원문의 길이를 자신의 마음대로 조절할 수 있음 (but, 64비트보단 작은 단위로)
- 현재는 사용하지 않음, 인공위성의 cpu 성능이 더 나아졌기 때문.
▷ OFB (Output Feedback)
- CFB 형식과 구조는 같음
- 차이점이라면, 다음 64비트 레지스터에 패딩되는 값이 이전의 암호문이 아닌,
선택한 j비트가 패딩된다는 점.
◎ DES의 작동 모드 - 3중 DES
- 배경 : DES의 K는 64비트길이, brute-force공격에 취약함.
- 새로운 알고리즘의 개발 : IDEA (128bits 키 사용) - 전수조사가 2^64배 어려워짐
- DES의 응용 : 3중 DES, 2중 DES
▷ 3중 DES
- 2개의 키를 사용
- 암호화 : 암호화(1번 키) - 복호화(2번 키) - 암호화(1번 키)
- 복호화 : 복호화(1번 키) - 암호화(2번 키) - 복호화(1번 키)
- brute-force 공격에 일반 DES 알고리즘보다 강하다.
- 더 강해졌지만, 키가 하나 늘었기에 2배 강해졌을 뿐이다.
◎ 추가 암호 알고리즘
▷ AES (Advanced Encryption Standard)
- DES를 대체하기 위한 표준암호 알고리즘
- 리인델, 투피쉬, 서펀트, 마스 등이 2차 선정
- 2000년 10월 2일에 리인델이 AES에 선정되었다.
▷ Rijndael Algorithm
- 128, 192, 256 비트의 다양한 길이의 키를 사용
- 알려진 모든 공격에 대응 가능하다
- 스마트 카드 상의 컴팩트한 보조 프로세서 등에 이용가능
- 문제 : 유럽에서의 불신
▷ IDEA (International Data Encryption Algorithm)
- 유럽에서 정한 국제 데이터 암호 알고리즘
- 현재 사용 불가
- 64비트 평문 블록에서 128비트 키를 이용해 작동
- 8 라운드
- PGP의 메일 시스템에 이용
▷ RC5
- 32, 64, 128 비트 블록 사이즈 이용
- 0 ~ 255 까지의 다양한 라운드 사용
- 0 ~ 2048 비트까지의 키를 이용
- 돈내고 이용해야함.
댓글
댓글 쓰기