정보보안기사 필기 3장 요약내용입니다.

6 minute read

* 2020 조현준 정보보안기사 산업기사 필기 + 핵심기출 1200제 정보보안기사 & 산업기사 필기 교재를 기반으로 요약하였습니다.

Section 03. 대칭키 암호

1. 대칭키 암호(Symmetric Encryption)

= 관용암호(Conventional Encryption), 비밀키 암호(Secret-key Encryption), 단일키 암호(Single-key Encryption)

1) 블록암호

→ 현대 블록 암호는 치환암호로 설계

→ 확산과 혼돈 성질 만족을 위하여 전치요소 + 치환요소 + 이외의 구성요소들을 결합하여 설계

확산(diffusion): 암호문 C와 평문 P 사이의 관계를 숨기는 것. C ↔ P / 평문의 통계적 성질을 암호문 전반에 퍼트려 숨김

혼돈(confusion): 암호문 C와 키 K의 관계를 숨기는 것. C ↔ K

*- 라운드(Round)* : 반복적으로 사용되는 합성 암호

[구성요소]

P-box (전치 장치, Permutation box) : 확산 제공

- 단순 : n 비트를 입력 받아 n 비트를 출력 (n = m), 유일하게 역함수가 존재

- 축소 : n 비트를 입력 받아 m 비트를 출력 (n > m), 비트 수를 줄이고자 함

- 확장 : n 비트를 입력 받아 m 비트를 출력 (n < m), 비트 수를 증가시키고자 함

S-box (치환 장치, Substitution box) : 혼돈 제공

- 대치 암호의 축소 모형으로 입력과 출력의 개수가 달라도 됨

- 역함수가 존재 : 입력 비트 = 출력 비트

- 역함수가 비존재 : 입력 비트 ≠ 출력 비트

- Shift : 비트 워드에서의 왼쪽 혹은 오른쪽 순환이동

- Swap : 8비트 워드에서의 스왑 연산

- Split&Combine : 8비트 워드에서의 분할과 결합

합성암호 (Product Ciphers) : P-box와 S-box의 결합

- 엔트로피 개념으로 설명

- 무질서도 증가 방향으로 변함

[합성 암호의 종류]

(1) Feistel 암호 구조

- 암호 강도를 결정짓는 요소 : 평문 M 의 길이, 키 K의 길이, 라운드의 수 - 암호화 과정 = 복호화 과정

- 구성 요소 : 자기자신을 역으로 갖는 타입, 역함수가 존재하는 타입, 역함수가 존재하지 않는 타입

- 역이 비존재하는 구성요소를 결합하고 암호화 알고리즘, 복호화 알고리즘에서 동일한 구성요소를 사용

- 3라운드 이상이며, 짝수 라운드로 구성

(2) SPN(Substitution-Permutation Network) 암호 구조(Non-Feistel 암호)

- 역함수가 존재하는 요소만을 사용

- S-box, P-box 반복적으로 사용하는 구조

2) 블록암호에 대한 공격

차분 분석 : 평문의 한 비트를 변경하면 암호문은 전혀 다른 비트 패턴으로 변화하므로, 이 변화 형태를 분석하는 공격 •선형 분석 : 평문 비트와 암호문 비트를 일부 XOR하는 과정으로 근사적 선형 관계를 찾는 방법.

전수 공격 : 가능한 모든 경우에 대해 공격하는 방법. 경우의 수가 적은 경우 효율적인 방법

통계적 분석 : 통계적인 자료를 통해 해독하는 방법

수학적 분석 : 통계적 분석을 포함하여 수학적 이론을 이용하여 해독하는 방법

3) 스트림 암호

동기식 스트림 암호: 키 스트림은 평문 혹은 암호문 스트림과 독립적

- 암호화, 복호화에서 상호 동기화가 필수적이며, 전송도중 변조되어도 후속 암호문에 오류의 영향이 없다.

- One-Time Pad

(1) 암호화 알고리즘과 복호화 알고리즘은 서로 역관계

(2) 이론적으로 해독이 불가능

(3) 한번에 한 비트씩 사용

- Feedback Shift Register(FSR): Shift 레지스터와 Feedback 함수로 구성

- Linear Feedback Shift Register(LFSR) : 많은 스트림 암호가 이를 이용하며, 선형성 때문에 공격에 취약

- Non-Linear Feedback Shift Register(NLFSR)

비동기식(자기 동기식) 스트림 암호 : 키 스트림은 평문 혹은 암호 스트림에 종속적

- 암호문이 전송도중 변경되어도 자기 동기화가 가능

- 변조된 암호문이 후속 암호문 복호화에 사용되지 않아 후속 암호문에 오류의 영향이 없다.

- Chipher Feedback Mode(CFB) : 실제로 스트림 암호를 생성

4) DES(Data Encryption Standard)

• 목적 : 데이터 암호화

• S-box + P-box / 주로 S-box에 의존

• Block 크기 =64bits

• 키 =56bit(오류검출비트 8bit 제외)

• 라운드 횟수 =16회(S-box, P-box 각각 16회)

• 키 생성기에 의해 48bit의 라운드 키가 생성

* 다중 DES

> 3중 DES : H/W에서 효율적이지만 S/W에서 비효율적

2가지 버전이 존재

1) 두 개의 키를 갖는 3DES

→ 암호화 - 복호화 - 암호화 과정을 거쳐서 암호문이 만들어진다.

→ 암호화 과정의 중간 단계에서는 복호화 알고리즘을 사용하고 복호화 과정에서는 DES의 암호화 알고리즘을 사용

2) 세 개의 키를 갖는 3DES

→ 두 개의 키를 갖는 3DES에 대한 기지평문공격(KPA) 가능성 때문에 사용

→ 3DES에서 모든 키를 동일하게 하면, 보통의 DES가 된다.

→ 복호화는 암호화의 역이 되어 복호화 - 암호화 - 복호화를 수행

5) AES(Advanced Encryption Standard)

선정 기준 : 안전성, 비용, 구현 효율성 - 최종적으로 Rijndael이 채택(SPN구조)

SPN구조 : 라운드 함수가 역변환이 되어야 한다는 제약이 있지만, 많은 병렬성을 제공 - 고속화

• 128비트 평문을 128비트 암호문으로 출력하는 알고리즘 > non-feistel 알고리즘

• 3가지 버전이 존재

1) AES-128 (Round 10)

2) AES-129 (Round 12)

3) AES-256 (Round 14)

→ 키 확장 알고리즘으로부터 생성되는 라운드 키 크기는 평문과 암호문 크기와 동일한 128비트

AES 암호 단계

1) 평문을 byte 단위로 나눔

2) SubBytes (바이트 치환) : 바이트 단위로 치환

3) ShiftRows (행의 이동) : 행 단위로 순환 시프트 수행

4) MixColums (열의 혼합) : 열 단위로 혼합(Mixing). 높은 확산을 제공. 마지막 라운드에서 수행 X

5) AddRoundKey : 라운드 키와 XOR 연산

6) 기타 대칭키 암호 알고리즘

[국제]

IDEA (International Data Encryption Algorithm) - DES를 대체하기 위한 알고리즘

- K = 128bits, M = 64bits, 블록암호 구조(Feistel 구조)

- 8라운드에 걸쳐 데이터를 변환하지만 마지막에 한 번 더 키를 작용시켜 8.5 라운드라고 말한다.

- DES보다 안전하며, PGP(Pretty Good Privacy)의 암호 알고리즘으로 사용되고 있다.

RC5

- 비교적 간단한 연산으로 빠른 암호화와 복호화 기능을 제공.

- 모든 H/W에 적합

- 속도는 DES의10배차이

[국내]

SEED

- 한국에서 개발된 암호 알고리즘 (Feistel 구조)

- 중요 정보 및 개인 정보를 보호하기 위한 대칭키 알고리즘

- K = 128bits, M = 128bits, Round = 16 암호문 블록으로 암호화하여 출력하는 방식

ARIA

- NSRI(국가보안기술연구소, 한국) 주도로 개발된 알고리즘 (ISPN 구조)

- K = 128/192/256bits, M = 128bits

HIGHT

- 저전력, 경량화를 요구하는 컴퓨팅 환경에서 기밀성을 제공하기 위해 개발된 알고리즘

- M = 64bits 블록 암호

LEA

- 128bits 경량 고속 블록 암호 알고리즘

- 다양한 정보보호 서비스에서 대용량 데이터를 빠르게 처리하거나 스마트폰 보안, 사물 인터넷(IoT) 등 저전력 암호화에 사용 가능

블록암호 요소의 특징

1) 블록 크기

2) 키 크기

3) 라운드 키 생성

4) 라운드 함수

5) 라운드 수


7) 현대 대칭키 암호를 이용한 암호화 기법

1) 블록 암호의 사용 방식

- 블록 암호는 고정된 n비트 블록을 n비트 블록으로 변환시키는 함수

[블록암호 주요모드]

* ECB 모드 : 전자 부호요 모드

> 동일한 평문블록 모양에서 항상 동일한 암호문이 출력되기 때문에 해독가능성이 높음

> 장점 : 블록간의 독립성 / 많은 DB를 암호화할 때 병렬처리 가능

> 동일한 키로 여러 블록의 평문을 암호화할 때 권고하지 않음(평문의 블록 패턴과 암호문의 블록 패턴이 동일하게 유지되는 문제점)

* CBC 모드 : 암호 블록 연쇄 모드

> 암호화 : 1단계 전에 수행되어 결과로 출력된 암호문 블록에 평문 블록을 XOR하고 나서 암호화를 수행 - 현재 평문 블록과 이전의 평문 블록들의 영향도 받음(각 블록에 동일한 키 사용)

> 복호화 : 암호문 블록이 1개 파손, 길이 변함 없음 - 평문 블록에 미치는 영향은 2개 블록에 머문다.

> 통신의 기밀성

* CFB 모드 : 암호 피드백 모드

> 암호화와 복호화는 블록 암호의 암호화 함수(DES, AES)를 이용

> 어떤 블록 암호도 스트림 암호로 변경 가능

> 비동기식 스트림 암호 : 키 스트림이 암호문에 의존

* OFB 모드 : 출력 피드백 모드

> 평문 블록이 동일하면 암호문이 같아지는 ECB 모드의 단점과 오류 전파가 발생하는 CBC, CFB모드를 개선한 동작모드

> 전송중인 암호문의 비트 손실이나 삽입 등에 유의

> 초기화 벡터 사용 : 암호화할 때마다 다른 랜덤 비트열을 이용( = CBC, CFB 모드)

> 특징

(1) 초기치가 바뀌면 암호문은 모두 바뀜

(2) 암호 알고리즘의 출력은 평문과 무관

(3) 전송 중의 비트 오류가 전파되지 않음

* CTR 모드 : 카운터 모드

> 이전 암호문 블록과 독립적인 키 스트림을 생성하지만 피드백을 사용하지 않는다.(=OFB 모드)

> 독립적인 n비트 암호문 블록을 생성(=ECB)

[블록 암호 모드 비교]
이름 장점 단점 암호모드
ECB 모드 - 간단
- 고속
- 병렬 처리 가능(암호, 복호 양쪽)
- 조작 가능
- 재전송 공격 가능
블록 암호(사용하지 말기)
CBC 모드 - 평문의 반복은 암호문에 반영되지 않음
- 병렬 처리 가능(복호화만)
- 임의의 암호문 블록을 복호화 가능
- 암호화에서는 병렬 처리 불가능 블록 암호(Practice Crypto graphy 권장)
CFB 모드 - 패딩이 불필요
- 병렬처리 가능(복호화만)
- 임의의 암호문 블록을 복호화 가능
- 암호화에서는 병렬 처리 불가능
- 재전송 공격 가능
스트림 암호(비동기식)
OFB 모드 - 패딩이 불필요
- 암/복호화의 사전 준비 가능
- 암/복호화 같은 구조
- 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러
- 병렬 처리 불가능
- 적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전
스트림 암호(동기식)
CTR 모드 - 패딩이 불필요
- 암/복호화의 사전 준비 가능
- 암/복호화 같은 구조
- 비트 단위의 에러가 있는 암호문을 복호화하면 평문의 대응하는 비트만 에러
- 병렬 처리 가능(암호, 복호 양쪽)
- 적극적 공격자가 암호문 블록의 비트를 반전시키면 대응하는 평문 블록의 비트가 반전 스트림 암호(Practice Crypto graphy 권장)

Leave a comment