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% 느림 |
[Algorithm] 기수 정렬 (Radix Sort)
[용어/개념] AAA(Authentication Authorization Accounting) 프로토콜
[MSTSC] Windows10 원격 데스크톱 연결 및 설정법 3가지