암호화(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
가. 블록암호 암복호화 과정
나. 블록암호 암복호화 과정
암호화 라운드 함수 |
복호화 라운드 함수 |
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
- 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법으로 가장 많이 사용된다.
- 평문의 각 블록은 XOR연산을 통해 이전 암호문과 연산되고 첫번째 암호문에 대해서는 IV(Initial Vector)가 암호문 대신 사용된다. 이 때, IV는 제 2의 키가 될수 있다.
- 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 얻기 위해서 Padding을 해야만 한다.
- 암호화가 병렬처리가 아닌 순차적으로 수행되어야 한다.
- 깨진 암호문의 해당블록과 다음블록의 평문까지 영향을 미치게 됨
다. CFB(Cipher FeedBack) Mode
- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다(패딩이 필요 없다)
- 최초의 키생성 버퍼로 IV가 사용되며, 이때 IV는 제2의 키가 될수 있다.
- 스트림의 기본단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 CFB8~CFB128로 쓰인다.
- 암호화, 복호화 모두 암호화로만 처리할 수 있다.
- CBC모드와 마찬가지로 암호화는 순차적이고, 복호화는 병렬적으로 처리할 수 있다.
- CBC모드와 마찬가지로 한 암호문 블럭의 에러는 해당평문블록과 다음 평문블록, 이렇게 총 2개의 블록에 전파된다.
라. OFB(Output FeedBack) Mode
- 대응되는 한 블록에만 영향을 미치므로, 영상이나 음성과 같은 digitized analog신호에 많이 사용된다.
- 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다.(패딩이 필요없다)
- 암호화 함수는 키 생성에만 사용되며, 암호화 방법과 복호화 방법이 동일해 암호문을 한번 더 암호화하면 평문이 나온다. (복호화시에 암호화)
- 최초의 키생성 버퍼로 IV가 사용되며, 이 때 IV는 제2의 키가 될수 있다.
- 스트림의 기본 단위를 Bit단위로 설정할 수 있으며, Bit단위에 따라 OFB8~OFB128로 쓰인다.
마. CTR (CounTeR) Mode
- 블록을 암호화할 때마다 1씩 증가해 가는 카운터를 암호화 해서 키스트림을 만든다. 즉 카운터를 암호화한 비트열과 평문블록과의 XOR를 취한 결과가 암호문 블록이 된다.
- CTR모드는 OFB와 같은 스트림 암호의 일종이다.
- CTR모드의 암복호화는 완전히 같은 구조가 되므로 구현이 간단하다.(OFB와 같은 스트림 암호의 특징)
- CTR모드에서는 블록의 순서를 임의로 암/복호화 할 수있다.(비표와 블록번호로부터 카운터를 구할 수 있기 때문에)
- 블록을 임의의 순서로 처리 할 수 있다는 것은 처리를 병행 할 수 있다는 것을 의미한다.(병렬처리 가능)
- 각 블록이 병렬처리 되므로 같은 블록 내에서만 이루어짐.
[해쉬함수]
- 보안 분야의 해싱
가. 개념
- 데이터의 무결성 및 메시지 인증에 사용하여 정보보호의 여러 메커니즘에 이용
- 고정되지 않은 임의 길이의 비트 열을 입력으로 하여 고정된 해시코드 생성하여 암호학적으로 풀 수 없는 키를 만들어 내는 것
나. 사용 용도
용 도 |
내 용 |
전자서명 |
메시지 전송시 송신자가 전자서명을 하여 위, 변조 막음 |
부인방지 |
메시지 수신자가 수신한 메시지를 부인하거나 이의를 제기할 경우를 방지하기 위한 서비스 |
다. 해시함수의 기본 요건
- 입력은 어떤 크기라도 무관하도록 가변적인 길이를 수용해야 하며 출력은 고정된 길이를 가져야 함
- 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% 느림 |