암호화(DES, SEED, ARIA 등)

개념
암호화(원리, DES, SEED, ARIA, RSA, LEA 등) 원리 암호화(Cryptography)의 정의 - 메시지의 내용이 불명확하도록 평문(Plain text)재구성하여 암호화된 문장 (Cipher text)으로 만드는 과정

I. 데이터 안전한 교환과 저장을 위한 보안 알고리즘, 암호화의 개요

가. 암호화(Cryptography)의 정의

  • 메시지의 내용이 불명확하도록 평문(Plain text)재구성하여 암호화된 문장 (Cipher text)으로 만드는 과정

나. 암호화의 특성

특성

기능

적용기술

인증(Authentication)

PKI 사용자에 대한 신원 확인 기능

인증서

기밀성(Confidentiality)

송/수신자 이외는 송신내용 인지불가

암/복호화

무결성(Integrity)

정보의 조작 및 변경 여부 확인

해쉬함수

부인봉쇄(Non-repudiation)

송수신자의 송수신 사실 부인 봉쇄

전자서명

가용성(Availability)

정합한 요구시 서비스 제공

암호/인증

 

II. 암호 시스템

가. 암호화/복호화 개념도

- 침해자는 암호키가 없기 때문에 암호문을 파악할 수 없음

나. 암호화 구성 요소

구성요소

내용

평문(Plain-text)

암호화 하고자 하는 문장

암호문(Cipher-text)

평문을 암호화 알고리즘과 키를 이용하여 암호화한 문장

암호화(Encryption)

평문을 암호화 키를 이용하여 암호문으로 변환시키는 과정

복호화(Decryption)

복호화 키를 이용하여 원래의 평문으로 변환시키는 과정

키 (Key)

암호화 알고리즘의 매개변수

암호 알고리즘(Encryption Algorithm)

암호화와 복호화에 이용되는 알고리즘

암호 시스템(Cryptosystem)

암호화 기술과 복호화 기술의 통칭

 

 

III. 암호화의 분류

 

가. 암호화 알고리즘의 분류

구분

내용

대체(Substitution)

문자 대체표를 이용하여 해당 문자를 대체

블록화(Blocking)

열과 행을 바꾸어 표현한 후 블록 구성

치환(Transposition)

문자열의 위치를 서로 바꾸어 표현

확장(Expansion)

무의미한 문자를 삽입하여 문자열을 확장

압축(Compaction)

문자열에서 일부 문자를 삭제해 압축문과 삭제문을 분리

 

 

나. 키(Key)의 형태에 따른 분류

구분

대칭키

비대칭키

개념도

대표적 알고리즘

DES, SEED, AES

RSA, ECC

키의 관계

암호키 = 복호키

암호키 ≠ 복호키

키의 수

두 사람이 한 개의 비밀키를 공유

전송 당사자간에 각각 키쌍(Private Key, Public Key)를 공유

키의 종류

암호화키 : Secret Key

복호화키 : Secret Key

암호화키 : Public Key

복호화키 : Private Key

구현 방식

블록, 스트림암호화

소인수분해, 이산대수, 근저백터

키의 관리

모든 전송 당사자간 암/복호화를 위한 키를 공유해야 함

인증기관을 통해 전송 당사자 별 Private Key 발급

부인방지여부

대칭키로 인하여 부인방지 불가능

키의 이원화로 부인방지 가능

속도

비트 단위 암호화로 상대적으로 빠른 속도 제공

큰 소수를 찾거나, 곡률 방정식 등의 연산으로 속도가 느림

용도

개인파일암호화, 특정 불특정그룹 내의 통신에 사용

다수의 정보교환(Key)에 주로 사용

장점

구현 용이, 변형 가능

암호해독이 어려움, 전자서명

단점

상대적으로 쉽게 해독가능하며, 키관리가 어려움

해독시간이 상대적으로 오래 걸림

 

 

다. 암호화를 수행하는 정보 단위에 따른 분류

구분

블록 암호(Block Cipher)

스트림 암호(Stream Cipher)

개념

평문을 일정한 블록 단위로 나누어서 각 블록마다 암호화 과정을 수행하여 고정된 크기의 블록단위의 암호문을 생성

평문과 같은 길이의 키 스트림을 생성하여 평문과 키 이진 수열을 비트단위로 배타적 논리합 이진연산으로 결합하여 암호문 생성

장점

기밀성, 해쉬함수 다양

암호 속도가 빠름,

에러 전파 현상 없음

사례

DES, SEED

LFSR

단위

블록 단위

비트 단위

원리

 

 

라. 암호화 기술 분류

암호화 기술

주요 내용

적용 알고리즘

SPN

- Substitution-Permutation Network(대치-치환망 구조)

- 전치와 치환을 이용하여 관용 암호방식의 문제 해결

- 128비트를 4x4 행렬로 나타내어 행렬을 이용한 암호화

AES

ARIA

Feistel

- N비트의 블록을 N/2씩 둘로 나누고, R번의 라운드만큼 반복적으로 적용, 이전 블록 암호문과 평문을 Exclusive-OR 한 형태

DES

SEED

인수분해

- 두 큰 소수 p와 q의 곱셈은 쉬우나 n으로부터 p와 q를 추출하기 어려운 점 이용

RSA

타원곡선

- PKI 기반인 RSA의 문제점인 속도와 안정성을 해결하기 위해서 타원기반의 안정성과 효율성을 기반으로 생성된 알고리즘

ECC

이산대수

- 이산대수의 계산은 어렵지만 그 역함수/지수함수의 계산은 빠르게 수행하는 특징을 이용

Diffle-

Hellman

DSA

해쉬 알고리즘

- 임의의 길이를 가지고 있는 메시지를 받아들여 고정된 길이의 출력값으로 바꾸어주는 알고리즘

- 원래의 입력값을 찾아내는 것은 불가능

MD-5

SHA-1

SHA-2

 

마. 암호화 기술 분류 (2)

구분

암호 기술

알고리즘

적용사례

암호화 기술

비밀키 알고리즘

블록암호알고리즘

DES, AES, SEED

스트림암호알고리즘

LFSR

공개키 알고리즘

소인수 분해

RSA

이산대수

DSA, ECC

근접벡터

Lattice

암호프로토콜 기술

기본암호프로토콜

개인 식별 및 인증, 전자서명, 키분배

발전된 암호프로토콜

전자화폐, 전자결재, 전자선거

 

IV. 주요 암호화 알고리즘 비교 및 보안강도 분류

가. 비밀키 암호화 알고리즘 특성 비교

구분

DES

3DES

AES

ARIA

SEED

HEIGHT

키 크기

56

168

128/192/256

128/192/256

128/256

128

평문블록크기

64

64

128

128

128

64

암호문 블록크기

64

64

128

128

128

64

라운드수

16

48

10/12/14

12/14/16

16/24

32

전체구조

Feistel

Feistel

SPN

ISPN

Feistel

변형-Feistel

개발기관

미국 표준 기술 연구소

국가보안기술연구소

정보보호진흥원

고려대

 

나. 보안강도에 따른 분류

보안강도

NIST(미국)

국내

안전성유지기간

80비트 이상

AES-128/192/256

2TDEA

3TDEA

SEED

ARIA-128/192/256

2010년까지

112비트 이상

AES-128/192/256

3TDEA

SEED

ARIA-128/192/256

2011년부터 2030년까지

(최대 20년)

128비트 이상

AES-128/192/256

SEED

ARIA-128/192/256

2030년 이후

(최대 30년)

192비트 이상

AES-192/256

ARIA-192/256

256비트 이상

AES-256

ARIA-256

 

[LEA]

I. 국산 경량.고속 128비트 블록 암호 알고리즘 LEA

가. LEA (Light Weight Algorithm)

- 사물인터넷 발달에 따라 고속, 경량화를 위해 최적화하여 개발된 128비트 블록 암호 알고리즘

나. LEA개발배경

- 사물인터넷(IoT)의 발달에 따라, 인터넷 기기, 네트워크, 서비스, 플랫폼의 저전력 특성을 고려한 암호화 기술 필요

- 2010년부터 미래창조과학부 지원으로 3년간 개발, 2012년 공개된 국산 암호 기술

다. LEA 특징

- 128비트 데이터 블록 알고리즘, 안전성 및 경량 구현 가능

- 요구되는 안전성 기준에 따라 128,192,256 비밀키 사용 가능

- 라운드 함수는 32비트 단위의 ARX 연산만으로 구성

 

II. LEA 동작과정 및 Mode

가. 블록암호 암복호화 과정

EMB0000129c63cd

나. 블록암호 암복호화 과정

EMB0000129c63ce

암호화 라운드 함수

EMB0000129c63cf

복호화 라운드 함수

 

III. LEA 규격

가. 전체 규격

구분

블록길이

키 길이

라운드 수(Nr)

LEA-128

16

16

24

LEA-192

16

24

28

LEA-256

16

32

32

나. 암복호화 함수

- 입출력 128비트, 라운드 키 PK 192비트

- 라운드 함수를 구성하는 내부연산는 32비트 덧셈 배열 형태 사용

- 내부연산은 32비트 덧셈, XOR, OR, ROLn(RORn)은 n비트 좌측(우측) 회전 연산.

다. 키 스케줄 함수

- 비밀키 길이에 따라 라운드 키 생성 방법을 별도로 정의

- 키 스케쥴 함수의 입력갑은 32비트

 

IV. LEA의 안전성과 효율성

- 현재 까지 알려준 모든 블록 암호 공격 방법에 대해 안전

- AES와는 달리 키 스케쥴 특성에 기인한 이론적 취약성이 존재하지 않으며, ARX 구조특성의 공격방법에도 안정적.

- 2015년 9월 룰셈부르크대 암호성능 측정 프로젝트에서 우수성 인정 받음.

- 32비트 운영체제에 최적화 되어 AES보다 1.5~2배 빠르며, 하드웨어 면적대비 속도는 LEA-128이 AES-128보다 3배이상 효율적임.

 

V. 기대 효과

- 블록암호 LEA 고속 구현 코드를 공개해 산업계는 보다 쉽게 제품에 암호기술을 적용가능

- 저전력 암호화, 금융분야에 널리 사용할 수 있음.

 

 

  • 블록암호]

I. 대칭키 암호화 방식, 블록 암호화의 개요

가. 블록 암호화(Block Cipher)의 정의

- 평문을 일정 길이로 분할하여 이 블록을 암호화 해서 전달하는 방법

- 무결성 및 기밀성 확보를 위하여 정보를 쉽게 해독되지 않는 형태로 변환하는 기술

나. 블록 암호화 알고리즘 개념도

- 블록 암호화는 대칭키 알고리즘에 속하며 128Bit 암호화를 한다고 가정하면, 평문을 위와과 같이 128Bit로 나눈 다음에 위와 같이 생성이 된다

II. 블록암호화 알고리즘 유형

가. ECB (Electronic Code Block) Mode

- 가장 단순한 모드로 블록단위로 순차적으로 암호화 하는 구조이다

- 한개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. (Brute-Force Arttack, Dictionary Attack)

- 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해서 Padding을 해야한다

- 각 블록이 독립적으로 동작하므로 한블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않는다. 해당 블록까지 에러 전파

나. CBC(Cipher Block Chaining) Mode

http://cfile24.uf.tistory.com/image/12470B1C4A45883951D10E

- 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법으로 가장 많이 사용된다.

- 평문의 각 블록은 XOR연산을 통해 이전 암호문과 연산되고 첫번째 암호문에 대해서는 IV(Initial Vector)가 암호문 대신 사용된다. 이 때, IV는 제 2의 키가 될수 있다.

- 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 얻기 위해서 Padding을 해야만 한다.

- 암호화가 병렬처리가 아닌 순차적으로 수행되어야 한다.

- 깨진 암호문의 해당블록과 다음블록의 평문까지 영향을 미치게 됨

 

다. CFB(Cipher FeedBack) Mode

http://cfile3.uf.tistory.com/image/197F9B1B4A458B3D06E03C

- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다(패딩이 필요 없다)

- 최초의 키생성 버퍼로 IV가 사용되며, 이때 IV는 제2의 키가 될수 있다.

- 스트림의 기본단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 CFB8~CFB128로 쓰인다.

- 암호화, 복호화 모두 암호화로만 처리할 수 있다.

- CBC모드와 마찬가지로 암호화는 순차적이고, 복호화는 병렬적으로 처리할 수 있다.

- CBC모드와 마찬가지로 한 암호문 블럭의 에러는 해당평문블록과 다음 평문블록, 이렇게 총 2개의 블록에 전파된다.

라. OFB(Output FeedBack) Mode

http://cfile2.uf.tistory.com/image/2029E41E4A458EBE5D167F

- 대응되는 한 블록에만 영향을 미치므로, 영상이나 음성과 같은 digitized analog신호에 많이 사용된다.

- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다.(패딩이 필요없다)

- 암호화 함수는 키 생성에만 사용되며, 암호화 방법과 복호화 방법이 동일해 암호문을 한번 더 암호화하면 평문이 나온다. (복호화시에 암호화)

- 최초의 키생성 버퍼로 IV가 사용되며, 이 때 IV는 제2의 키가 될수 있다.

- 스트림의 기본 단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 OFB8~OFB128로 쓰인다.

 

마. CTR (CounTeR) Mode

http://cfile3.uf.tistory.com/image/1959F5184A462368CEC927

- 블록을 암호화할 때마다 1씩 증가해 가는 카운터를 암호화 해서 키스트림을 만든다. 즉 카운터를 암호화한 비트열과 평문블록과의 XOR를 취한 결과가 암호문 블록이 된다.

- CTR모드는 OFB와 같은 스트림 암호의 일종이다.

- CTR모드의 암복호화는 완전히 같은 구조가 되므로 구현이 간단하다.(OFB와 같은 스트림 암호의 특징)

- CTR모드에서는 블록의 순서를 임의로 암/복호화 할 수있다.(비표와 블록번호로부터 카운터를 구할 수 있기 때문에)

- 블록을 임의의 순서로 처리 할 수 있다는 것은 처리를 병행 할 수 있다는 것을 의미한다.(병렬처리 가능)

- 각 블록이 병렬처리 되므로 같은 블록 내에서만 이루어짐.

 

 

[해쉬함수]

  1. 보안 분야의 해싱

가. 개념

- 데이터의 무결성 및 메시지 인증에 사용하여 정보보호의 여러 메커니즘에 이용

- 고정되지 않은 임의 길이의 비트 열을 입력으로 하여 고정된 해시코드 생성하여 암호학적으로 풀 수 없는 키를 만들어 내는 것

나. 사용 용도

용 도

내 용

전자서명

 메시지 전송시 송신자가 전자서명을 하여 위, 변조 막음

부인방지

 메시지 수신자가 수신한 메시지를 부인하거나 이의를 제기할 경우를 방지하기 위한 서비스

다. 해시함수의 기본 요건

- 입력은 어떤 크기라도 무관하도록 가변적인 길이를 수용해야 하며 출력은 고정된 길이를 가져야 함

- H(x) 즉 해시함수 H의 입력인 x는 어떠한 값이 들어와도 계산하기 쉬워야 하며, H(x)는 일방향성(역변환 불가)이어야 하고, 충돌이 없어야 함

라. 대표적인 해시함수

구 분

내 용

SNEFRU

 1990. R.C. Merkle

 32bit 프로세서 구현을 용이하게 할 목적으로 생성

 52bit를 입력하여 125 또는 256 bit의 코드 생성

 1993년 차분 공격법에 의해 해독됨

N-NASH

 1989 일본 미야자키

 128bit à 128bit out

 1993년 차분 공격법에 의해 해독

MD4

 1990 Rou Rivest

MD5

 안정성, 효율성, 단순성을 갖추었으나, 차분 공격법으로 해독

SHA

 Secure Hash Algorithm

 미국 1993  Nist

 MD4에 기반을 둔 160Bit 해시 코드 출력

 MD5 보다 32bit 긴 해시코드를 출력하여 속도는 25% 느림

 

 

 

댓글