1. 현대 대칭키 암호
(1) 현대 블록 암호
1) 현대 블록 암호의 구성요소
- 개요 : 혼돈 (암호문과 키의 상관관계 숨김) & 확산 ( 평문과 암호문의 상관관계를 숨김)
- P박스 :
- 축소 P 박스 : 입력 n 비트 > 출력 m 비트, n비트 중 특정 비트 소실 , 비트 수 줄이고자
- 확장 P 박스 : 입력 n 비트 < 출력 m비트 , 1개 이상의 출력비트와 연결, 비트 수 늘리고자
- 단순 p박스 - 역함수 O 축소/확장P박스 - 역함수 X
2) S 박스
- 입력 n 비트와 출력 m 비트 같을 필요 없음
- 역함수 존재할 수도 있고 (존재시 n=m) , 존재하지 않을 수도 있음
3) 합성 암호
- 개요 : 치환, 전치 등 그 밖의 구성요소를 결합한 암호
- 라운드 (round) : 반복적으로 사용되는 합성 암호
4) 두가지 종류의 합성 암호
- Feistel 암호 / 페이스텔 암호
- 평문 블록 길이 64 비트 이상
- 키 길이 64비트 이상 (요즘은 128비트 이상)
- 라운드 수 16회 이상
- 복호화 과정은 암호화 과정의 입력 순서의 반대
- 특징
- L1 = R0
- R1 = L0 xor F1(R0,K1)
- SPN 구조 ( Substitution Permutation Network)
- 여러 함수 중첩하면 보다 안전하다.
- S-BOX 입력하여 대치 , P- BOX 로 전치
5)블록 암호에 대한 공격
- 차분 분석 (차분 해독) : 선택 평문 공격법, 암호문 블록들의 비트 차이 혹은 암호문의 변화 형태 조사하여 해독
- 선형 분석 (선형 해독) : 선형화하여 해독, 기지 평문 -> 선택 평문 공격 수행
- 전수 공격법 : 경우의 수가 적을 때
- 통계적 분석 : 평문의 빈도 이용
- 수학적 분석 : 수학적 이론 이용
(2) 현대 스트림 암호
1) 개요
- 개념 : 암호화 복호화 모두 한번에 r 비트 생성
- 스트림 암호 설계시 유의사항
- 긴 주기
- 난수 스트림과 비슷해야 함
- 키 길이가 충분히 길어야 함
2) 동기식 스트림 암호
- 개요 : 키스트림과 암호문의 독립성
- OTP (one-time pad) : 암호화를 수행할 때마다 랜덤하게 선택되는 키 스트림 / 암호화와 복호화 알고리즘 서로 역관계
- 귀환 시프트 레지스터 (FSR) : 시프트 레지스터 + 피드백 함수
- 선형 귀환 시프트 레지스터
- 비선형 귀환 시프트 레지스터
3) 비동기식 스트림 암호
- 키스트림이 평문 또는 암호문과 관계성 존재
- 자기 동기식 스트림 암호
- 암호문의 비트가 손실/ 변경 되어도 오류 전파 유한
2. DES
(1)개요
1) 역사 : 대표적인 대칭키 블록 암호
2)개관
평문 길이 | 암호문 길이 | 키 길이 | 라운드 횟수 | 서브 키 갯수 |
64 | 64 | 56 | 16 | 16 |
- 복호화 과정 : 암호화 과정과 동일하게, 서브 키 K 뒤집어서
(2) DES 구조
1) 개요
- 암호화 : 2개의 P 박스(초기, 최종) + 16개 라운드 함수
- 라운드 키 : 48 비트
2) Round 함수
- 16번의 라운드 함수
- 요소 : 혼합기 (mixer) + 교환기 (swapper) - 역연산 가능
3) DES 함수
- 32비트 출력값을 산출하기 위해 가장 오른쪽 32비트에 48비트 키 적용
- 구성요소 (4) : 확장 P-BOX, 키 XOR, 8개의 S-BOX, 단순 P-BOX
4) 알고리즘
- 라운드 키들은 역순으로 적용
- 키 생성 과정
- 암호화 키 (64비트) -> 8비트 패리티 피트로(-8) -> 남은 키 (58비트) -> 16개의 48비트로 쪼개짐
(3) DES 분석
1) 설계 기준
- S-BOX : 혼돈 만족 위해, 비선형 함수, 입력 1비트가 바뀌면 - 출력은 2비트 이상 바뀜
- P-BOX : 확산 만족 위해
2) DES 취약점
- 쇄도효과 : 평문 / 키의 작은 변화가 큰 변화 만듬
- 완비성 : 각 비트가 평문의 비트들에 크게 의존
(4) 다중 DES
1) 3중 DES
- 개요 : 2개 키 갖는 3중 DES, 3개 키 갖는 3중 DES
- 2 개의 키를 갖는 3중 DES
- 두개의 키 : k1, k2
- 평문 -> 암호화 (k1) -> 복호화 (k2) -> 암호화 (k1) -> 암호문
- 3개의 키를 갖는 3중 DES
- 3개의 키 : k1, k2, k3
- 평문 -> 암호화 (k1) -> 복호화 (k2) -> 암호화 (k3) -> 암호문
- 복호화 : k3-k2-k1 순으로 진행, 복호화 -> 암호화 -> 복호화
- 키 크기 : 112, 168비트
3. AES
(1) 개요
평문 | 암호문 | 라운드 | 키 크기 |
128 | 128 | 10,12,14 | 128,192,256 |
(2) 암호
1) 개요
- SPN 구조
- 각 라운드 구성
- SubByte()
- ShiftRows()
- MixColumns()
- AddRoundKey()
- 마지막 라운드에서는 MixColumns X
4. 기타 대칭키 암호 알고리즘
(1) 국제 암호 알고리즘
- IDEA(International Data Encryption Algorithm)
- 키 길이 : 128비트
- 블록 암호 길이 : 64비트
- Feistel 구조
- 라운드 횟수 : 8.5회
- S-BOX 사용하지 않음
- DES 보다 2배 빠른 속도 / 무차별 공격에 대응
- RC5
- 입출력 , 키 , 라운드 수 가변적
- 블록 암호 길이 : 32 64 128
- DES보다 10배 빠른 속도
(2) 국내 암호 알고리즘
SEED | ARIA | HGIHT | LEA | |
특징 | 개인정보 보호 대칭키 알고리즘 F-함수 (Feistel 구조) |
학계/연구소/정부기관에서 공동 개발 국가 암호화 알고리즘 |
저전력 경량화 블록 암호 |
경량 / 고속/ 블록 암호 알고리즘 |
평문 길이 | 128 | 128 | 64 | |
암호문 길이 | 128 | 128 | 64 | |
키 길이 | 128 -> 256 확장 | 128 / 192 / 256 | ||
라운드 키 길이 | 64 | |||
라운드 횟수 | 16 |
5. 현대 대칭키 암호를 이용한 암호화 기법
(1) 블록 암호의 사용 방식
1) 개요
- 임의의 길이인 평문을 암호화하기 위해 평문을 특정 길이로 분할하여 블록 암호에 입력시킨다.
- 5가지 운영모드 ECB / CBC / CFB / OFB / CTR
2) ECB (Electronic Code Book)
- 개요
- 가장 간단함
- N개의 n비트 블록으로 분할
- 갯수가 맞지 않다면 크기를 맞춰주기 위해 덧붙이기 (Padding) 필요함
- 특징
- 블록들 간 독립성
- 암호화 / 복호화 병렬적 수행
- 오류가 다른 블록에 영향 X
- 평문과 암호문의 블록 패턴이 동일하게 유지되므로, 난수 발생 같은 경우에만 사용
- 응용
- 많은 DB 암호화할 때 병렬적 수행
- 레코드가 중간에 수정되도 암호화 복호화 가능
- 단점
- 평문 블록이 동일하면 암호문도 동일
3) CBC(Cipher Block Chaining)
- 개요
- 각각 평문은 이전 암호문 블록과 XOR (메모리에 저장됨)
- 첫번째 블록의 경우, 이전 암호문이 없음 -> 허구 블록 = 초기 벡터 XOR
- 초기 벡터 : 송수신자 모두 알고 있음 , 해독자가 예측 불가
- 특징
- 초기 평문 블록이 바뀌면 암호문 블록 모두 변경
- 암호문은 모든 평문의 영향을 받음
- 암호화 / 복호화
- 암호문 블록은 현재 평문 블록 + 이전 평문 블록에 영향
- 복호화시 암호문 블록 1개 에러시, 평문 2개만 영향 ( 그 다음 복호화 정상)
- 단, 평문 블록에 오류시 모든 암호문에 영향 (오류 전파)
- CBC 모드 활용 : IPsec
4) CFB(Cipher FeedBack)
- 개요
- 어떤 블록 암호도 스트림 암호로 변경 가능
- 덧붙이기 (Padding) 필요 없음
- 초기 벡터 존재
- 실시간 사용 가능
- 암호화 / 복호화
- 암호화/복호화에서 사용하는 암호 함수 : DES AES
- 복호화시 암호화 함수 사용
- 스트림 암호로서의 CFB 모드 : 블록 암호를 이용한 운영 모드 , 비동기식 스트림 암호
※CFB 와 CBC 모드 공통점 : 오류 전파
5) OFB(Output Feedback)
- 개요
- 암호기의 출력과 평문 XOR -> 암호기의 출력과 동시에 다음 암호문 전달 = 오류 전파 X
- 송수신자 사이의 동기 조절 , 암호문 전달 시 비트 손실과 전달에 유의
- 초기 벡터 사용
- 특징
- 초기치 변경 -> 모든 암호문 변경
- 암호기 출력값 평문과 무관
- 오류 전파 X
- 스트림 암호로서의 OFB 모드 : 블록 암호를 기반으로 한 스트림 암호 , 동기식
6)CTR(counter)
- 개요
- 암호화시 피드백 X
- 키 스트림의 의사난수성 사용
- 이전 암호문 블록과 독립적 키 스트림을 생성
- 다른 평문 블록은 서로 다른 키로 xor
- 평문 xor 카운터
- 카운터 만드는 법 : 암호화 때마다 다른 값을 기초로 생성
- 스트림 암호로서의 CTR 모드 : 실제 스트림 암호, 동기식 스트림 암호화 지원, 병렬처리 가능(ECB와 동일)
★헷갈리는 부분 "CFB와 CBC 모드 운영 방식 차이점"
CBC 모드는 암호문과 평문 사이에 XOR과 암호기 (암호 알고리즘) 둘다 적용
CFB 모드는 암호문과 평문 사이에 XOR 연산만
+) CFB 모드는 이전에 암호화된 암호문을 그대로 쓰는 것이 아니라 한번 더 (2번) 암호화를 진행하고 XOR 연산
'자격증 > 정보보안기사' 카테고리의 다른 글
2022년도 정기검정 4회차 정보보안기사 필기 CBT 후기 ⭐️ (1) | 2022.11.11 |
---|---|
[Sec. 4] 비대칭키 암호 (0) | 2022.03.05 |
[Sec. 2] 암호학 (0) | 2022.03.01 |
[Sec. 1] 정보보호관리의 개념 (0) | 2022.03.01 |
네트워크 보안 (0) | 2021.07.25 |