암호학 (3)대칭키(비밀키) 암호

2020. 1. 13. 09:50Security/알고리즘&암호학

* 대칭키(비밀키) 암호의 원리

비밀키 암호를 주고 받는 과정

1. 평문을 송신

2. 공격을 방해하기 위해 암호 알고리즘 프로그램을 이용해 암호문을 만드는데 key라고하는 정해진 문자열이 필요

3. 수신자가 암호문을 받는다.

4. 키를 이용해서 복호 알고리즘에 넣으면 평문이 나온다.

 

특징

- 키의 비밀성에 의존해야함.

- 암호화 알고리즘 프로그램과 복호 알고리즘 프로그램이 같다. 

- 암호화, 복호화 과정은 xor 연산과 유사하다.

- 다양한 알고리즘 개발, 알고리즘 수행속도가 빠름

- 사전에 키를 서로 나눠 가져야하는등의 키 분배 및 키 관리가 어렵다.  

- 전자 서명의 어려움(행위의 주체를 정확히 파악할 수 없다. 즉, 책임 추적성(=근원지 증명)을 입증할 수 없다.)

 

종류

- DES

- AES

- IDEA

- SEED

- RC4 등등,,

 

Feistel 암호

- 별도의 복호화 과정이 불필요
- 블록 암호의 대표적인 구조
- Li=Ri-1, Ri=Li-1 XOR F(Ri-1) -> Li는 Ri-1이 그대로, Ri는 F함수를 거친 Ri-1과 xor연산.

- F함수는 최대한 간단하고 이해하기 쉽게 만들어야 한다.
- 라운드 함수와 무관하게 복호화가 됨
- 구조적인 취약점이 발견되지 않음
- 취약한 라운드 함수를 반복적으로 사용함으로 강한 암호를 설계
- 암호화와 복호화가 동일

 

* DES(그림 알아둘 것)

- 최초의 표준 암호 알고리즘(가이드 라인)(1977년 미 상무성의 국립 표준국(NBS)에서 표준 암호 알고
리즘으로 채택)

- 암호화 키(Encryption key) = 복호화 키(Decryption key)
- 대칭키(=단일키=관용) 암호 시스템 
- 혼합(confusion), 확산(Diffusion)을 이용 원문과 암호문간에 통계적 연관을 감춘다.

- 2의 64승까지 쓸 수 있지만 금방 노출되기때문에 현재는 권고되지 않음.

- DES에서 발전한 AES 알고리즘을 현재 사용. 유럽은 IDEA를 사용한다. 

- 64비트 블록 암호 알고리즘(64비트씩 나눠 처리)

- 56비트 키를 사용(8비트는 parity check로 사용한다)

 

초기 전치

f 함수(핑크 박스 안에 bit의 확장 축소에 주목)

- 확장/순열(E테이블) : 32비트중 16비트를 한번 더 무작위로 출력해서 48비트로 확장한다. 

- S-box(치환/선택) : 48bit를 8개로 나눠 6bit 길이로 만들고 6bit를 전부 참여시켜서 4bit로 만든뒤 8개를 전부 출력하면 32bit가 된다. 6bit를 4bit로 만드는 8개의 s-box가 있다. 

- 순열 :순서를 한번 섞는다.

 

확장 순열(32bit를 48bit로 확장)

치환 선택(48bit를 6bit씩 8개로 나눈 후 각각 4bit로 축소)

S-box

맨 첫 숫자와 마지막 숫자를 분리하면 수를 십진수로 변환해서 행에 대입, 나머지 4숫자도 십진수로 변환해서 열에 대입한다.

 

[실습]15를 5bit로 표현한 후에 끝에 임의의 숫자를 넣어서 위의 s-box를 참고해 4비트로 출력해보기

1. 15를 5bit로 표현하면 01111

2. 6bit로 만들어 주기 위해 마지막에 임의로 0을 추가해주면 011110이 된다.

3. 첫 숫자와 마지막 숫자를 분리하면 00이고 십진수로 변환하면 0이기때문에 0행

4. 나머지 4개의 숫자 1111은 십진수로 변환하면 15이기 때문에 15열이다.

5. 0행 15열의 숫자인 7을 4비트로 출력하면 0111이 된다. 

 

순열(32bit의 문자열을 섞어줌)

DES의 단점

- 64bit로 끊어서 암호화 할 경우 똑같은 평문이 같은 암호문으로 암호화 될 수도 있다. 따라서 같은 평문도 다른 암호문으로 출력되도록 해야한다.

-64bit씩 잘라서하기 때문에 속도가 느리다.

 

* DES - key 생성 방법 

64비트의 키를 이용

- 56비트로 축약해 서브키를 행성

- 8번째 비트마다 패리트비트를 포함하여 64비트를 키로 이용
- 패리트비트를 제거하여 56비트로 이용

 

암호화 과정에 맞추어 16라운드를 실행
- 각 라운드마다 서브키를 생성

PC-1(8번째 bit를 제거해서 56bit로 축소)

PC-2(9번째 bit 7개와 22를 제거해서 48bit로 축소)

* DES의 최종 작동 원리(알아둬야 함)

* DES의 작동 모드

ECB

- Pn과 K가 같으면 Cn값이 같게 나올 수 있는 단점이 존재

 

CBC 모드

- ECB의 단점을 xor 연산을 통해 보완한 방법

- 이렇게 했을때 Cn값이 같으면 Pn값이 다른 경우이다. 

 

CFB

- OFB와 사실상 같은 방식

- 인공위성과의 통신에서 사용

- 링크 암호 방식

- 메모리에 64비트 레지스터가 이미 존재. key(K)값도 같이 메모리에 존재한다.

- 선택 j 비트의 오른쪽 8비트를 사용해서 원문 P1과 xor연산을 한 8bit 길이의 암호문C1을 생성해서 복제된 64비트 레지스터의 오른쪽에 붙여준다.   

 

OFB

- CFB와 사실상 같은 방식

- 인공위성과의 통신에서 사용

- 링크 암호 방식

- 메모리에 64비트 레지스터가 이미 존재. key(K)값도 같이 메모리에 존재한다.

- 선택 j 비트의 오른쪽 8비트를 사용해서 원문 P1과 xor연산을 한 8bit 길이의 암호문 C1을 생성한다.

- 암호문 C1을 생성하기전에 j비트에서 잘라낸 오른쪽 8bit를 복제된 64비트 레지스터의 오른쪽에 붙여준다.

- xor연산이 진행되기전에 넘겨주기때문에 CFB보다 빠르지만 의미 있는 수치는 아니다.

 

* 3DES(트리플 DES)

- 2개의 키를 사용
- 암호화 : 암호화, 복호화, 암호화
- 복호화 : 복호화, 암호화, 복호화
- brute-force 공격에 DES보다 강함

 

암호화 복호화 과정

* AES

- DES를 대체하기 위한 표준암호 알고리즘
- 리인델(Rijndael), 투피쉬(Twofish), 서펀트(Serpent), MARS 등이 2차 선정 (2000)
- 2000년 10월2일 리인델이 AES로 선정

 

* IDEA

- 국제 데이터 암호 알고리즘
- 64비트 평문 블록에서 128비트 키를 이용 작동(2의 64승 증가) 
- 8라운드로 작동
- PGP (Pretty Good Privacy) 의 메일 시스템에 이용

 

* RC5
- 32,64,128비트 블록 사이즈를 이용
- 0에서 255까지 다양한 라운드 사용
- 0에서 2048비트까지의 키를 이용

- 블록 사이즈, 라운드, 키를 다양한 종류의 사용이 가능해서 많이 사용

 

* 대칭키 암호 최총 정리

- 암호 알고리즘과 복호 알고리즘에 사용하는 키가 같음

- xor연산이 알고리즘에 주로 사용

- 속도가 빠름

- 키의 분배가 어려움. 나눠 가지려면 반드시 상면해야 한다.

- 책임 추적성(근원지 증명)이 없다.(누구의 잘못인지 구분할 수 없다)

 

 

* 용어 및 개념 정리

스탠다드 : 법률, 명령, 행정명령

 

가이드 라인 : 스탠다드를 지킬 수 있는 방법을 알려줌. 예를들면 DES 시스템을 사용할 경우 유출문제에 대해서 책임이 면제 된다. 

 

 

'Security > 알고리즘&암호학' 카테고리의 다른 글

암호학 (5)키 관리&hash 함수  (0) 2020.01.16
암호학 (4)공개키 암호  (0) 2020.01.14
암호학 (2)고전적 암호  (0) 2020.01.07
암호학  (0) 2020.01.06
알고리즘  (0) 2019.12.27