1. 암호 알고리즘
1. 암호 관련 용어 및 암호 시스템의 구성
(1) 암호 개요
o 암호화란 누구나 읽을 수 있는 평문(plain text)을 권한이 없는 제 3자가 알아볼 수 없는 형태(암호문)로 재구성하는 과정을 말하며, 암호화의 역과정으로 암호문을 평문으로 복원하는 것을 복호화라 말한다.
o 암호화는 인류 역사상 수천 년 전부터 군사적인 용도로 사용되어 왔으며, 오늘날 인터넷 기술의 발달과 함께 전자상거래의 확산으로 인해 정보통신망을 통해 유통되는 다양한 중요 정보를 암호화하여 사용되고 있다.
o 현재 대부분의 조직이 침입자의 악의적인 공격으로부터 중요한 정보를 보호하기 위해 침입차단시스템, 침입탐지시스템, 바이러스 방역 등의 정보보호 시스템을 운영하고 있다. 그러나 중요 정보에 대한 완벽한 방어는 불가능하므로 정보 자체에 대한 보호 수단으로 암호화가 사용된다.
(2) 암호시스템 관련 용어
구분 | 설명 |
평문 Plaintext |
평문이라고 부르며, 암호화할 대상이 되는 메시지를 의미한다. 송신자와 수신자 사이 주고받고자 하는 내용을 적은 일반적인 문장으로 모든 사람들이 이해할 수 있는 일반 형태의 문장을 말한다. 평문은 암호화의 대상이 되는 문장으로 한글이나 영어 등의 일반 언어로 작성된 문장이다. |
암호문 Ciphertext |
평문을 암호화한 메시지를 의미하여 암호문이라고 부른다. 송신자와 수신자 사이에 주고받고자 하는 내용을 제 3자가 이해할 수 없는 형태로 변형된 문장을 암호문이라 한다. |
암호화 Encryption |
‘Encipherment’로도 쓰이며, 암호화한다는 의미이다. 평문을 제 3자가 알 수 없도록 암호문으로 변형하는 과정을 말하며 일반적으로 암호화 과정은 송신자가 수행한다. |
복호화 Decryption |
‘Decipherment’로도 쓰이며, 암호화된 메시지를 원래의 메시지로 복호화 한다는 의미이다. 암호문을 다시 일반인들이 이해할 수 있는 평문으로 변환하는 과정을 말하며, 일반적으로 복호화 과정은 암호문을 수신한 수신자가 수행한다. |
키 | 평문의 암호화 과정이나 암호문의 복호화 과정에 필요로 하는 파라미터로 암호화키와 복호화 키로 나누어진다. |
암호 알고리즘 |
암호 알고리즘은 암호화와 복호화에 사용되는 수학적인 함수이며, 암호 알고리즘은 암호화에 사용되는 암호화 알고리즘, 복호화에 사용되는 복호화 알고리즘이 있다. |
암호학 Cryptography |
‘crypt’라는 말의 어원은 무덤처럼 지하에 무엇인가를 숨겨둔다는 의미이다. |
전자서명 Digital Signature |
정보의 송/수신 과정에서 정보의 송신자와 수신자의 인증과 전송되는 정보의 무결성을 보장하는 성질 |
일방향 함수 One-way function |
일방향 함수의 특성을 갖는 함수이다. Y=f(x)를 해시 함수라고 하면 이 함수가 갖추어야 하는 조건은 다음과 같이 요약될 수 있다. 단 여기서 x, y는 이진수로 표시된 임의의 수이다. ° x의 길이에는 제약이 없다. ° y의 길이는 정해져 있다. ° 일방향 함수의 특성을 갖는다. ° Collision이 없어야 한다. 즉, 서로 다른 모든 x에 대하여 계산된 모든 y 값은 서로 같지 않아야 한다. |
무결성 | 메시지 전송 중 인가되지 않은 자, 혹은 인가되지 않은 방법으로 정보가 변조되지 않아야 하는 성질 |
기밀성 | 인가된 자만이 접근하여 취득하여야 하는 성질 |
부인 봉쇄 | 송/수신자가 송/수신 사실에 대한 부인을 할 수 없도록 하는 성질 |
인증 | 인가된 자만이 정보 혹은 정보시스템에 접근하여야 하는 성질 |
가용성 | 컴퓨터 시스템이 인가 당사자가 필요할 때 이용할 수 있게 하는 것 |
접근 제어 | 특정 권한을 가진 자만 접근할 수 있도록 하는 것 |
암호해독 | 암호의 목적은 제3자의 도청으로부터 평문을 보호하는 데 있다. 암호해독은 암호 방식의 정당한 사용자가 아닌 제3자가 불법적으로 암호문으로부터 평문을 원복하는 시도를 말하며, 암호해독은 암호화에 사용된 암호 키를 찾거나 부대 정보를 이용하여 암호문으로부터 평문을 찾는 과정을 말하며 암호 공격이라고도 한다. |
송신자와 수신자 |
통신망 상에서 비밀리에 평문을 주고받는 사람들을 말하며, 평문을 암호문으로 변경하여 수신자에게 전달하는 사람이 송신자이며 암호문으로부터 평문을 복호화 하는 사람이 수신자이다. |
공격자 | 암호 방식의 정당한 참여자가 아닌 자로 암호문으로부터 평문을 해독하려는 제3자를 공격자라 한다. 특히, 송/수신자 사이의 암호통신에 직접 관여하지 않고 네트워크 상의 정보를 관찰함으로써 공격을 수행하는 공격자를 도청자라 한다. |
암호체계 (암호시스템) |
암/복호화 열쇠, 평문, 암호문을 포함한 암/복호 알고리즘을 말한다. |
(3) 암호화 주요 기능
o 전달 과정의 기밀성 보장
o 정보의 무결성 보장
o 송신자와 수신자의 정당성 보장
(4) 암호화 원리
종류 | 내용 |
대치 암호 (Substitution Cipher) |
메시지 각 글자를 다른 글자로 대치하는 방식(문자를 다른 문자로 바꾸어 암호문을 작성하는 방식)으로 전통적으로 많이 사용하던 방식 ※ 최초의 대치 암호: 로마의 시저 암호(Julius Caesar cipher) |
전치 암호 (Transposition Cipher) |
평문의 글자를 재배열하는 방식(문자의 위치를 바꿔 암호문을 작성하는 방식)으로 원문과 키를 가지고 있는 정보를 암호문 전체에 분산하는 방식 ※ 기원전 400년경 고대 희랍인들이 사용한 전치 암호: Scytale 암호 |
혼합 암호 (Product Cipher) |
대치와 전치 두 방법 모두 사용하는 방식 ※ 예, DES |
대수화 암호 (Algebraic Cipher) |
평문의 각 글자를 숫자로 바꾸어 수학적으로 처리하는 방식 |
(5) 스트림 암호
o 스트림 암호 개념 - 평문과 같은 길이의 키 스트림을 생성하여 평문과 키를 비트 단위로 XOR 하여 암호문을 얻는 방법
구분 | 설명 |
동기식 스트림 암호 |
1) 암호화와 복호화에서 상호 동기화가 필수 2) 전송 도중 변조되어도 후속 암호문에 오류의 영향이 파급되지 않음. 3) 의도적인 변조가 복호화 단계에서 검출 불가 |
자기 동기식 스트림 암호 |
1) 암호문이 전송 도중 변경되어도 자기 동기화가 가능 2) 변조된 암호문이 후속 암호문 복호화에 사용되지 않아 오류파급이 제한적 |
(6) 블록 암호
o 블록 암호의 개요 - 암호문을 만들기 위해 평문을 일정한 단위로 나누어서 각 단위마다 암호화 과정을 수행하여 블록단위로 암호문을 얻는 대칭 암호화 방식
o 블록 암호 알고리즘은 비밀키를 이용하여 고정된 크기의 입력 블록을 고정된 크기의 출력블록으로 변형하는 암호 알고리즘에 의해 암/복호화 과정을 수행하며, 이때 출력블록의 각 비트는 입력 블록과 키의 모든 비트에 영향을 받는다.
o 블록 암호는 주로 단순한 함수를 반복적으로 적용함으로써 암호학적으로 강한 함수를 만드는 과정으로 개발된다. 이때 반복되는 함수를 라운드 함수라 하고 라운드 함수에 작용하는 키를 라운드 키라고 한다.
2. 암호 공격의 유형별 특징
(1) 보안공격 - 전송되는 메시지에 대한 불법적인 공격자의 위협
구분 | 설명 | |
수동적 공격 | 전송되는 파일을 도청 |
불법적인 공격자가 전송되는 메시지를 도중에 가로채어 그 내용을 외부로 노출시키는 공격(메시지의 내용 공격) |
트래픽 분석 | 전송 메시지의 암호화로 도청을 통한 메시지 내용 파악이 불가능하더라도 메시지의 송신 측과 수신 측 신원의 파악 가능(메시지 존재에 대한 공격 - 익명성 제공으로 방어) | |
능동적 공격 | 메시지 변조 | 전송되는 메시지들의 순서를 바꾸거나 또는 메시지의 일부분을 다른 메시지로 대체하여 불법적인 효과를 발생시키는 공격 |
삽입 공격 | 불법적인 공격자가 정당한 송신자로 가장하여 특정 수신자에게 메시지를 보내어 역시 불법적인 효과를 발생시키는 공격 | |
삭제 공격 | 정상적인 통신 시설의 사용, 관리를 방해하는 서비스 거부 공격, 특정 수신자에게 전송되는 메시지의 전부/일부가 공격자에 의해 삭제되는 것. | |
재생 공격 | 공격자가 이전에 특정 송신자와 수신자 간에 행해졌던 통화 내용을 도청하여 보관하고 있다가 나중에 재생하여 전송하는 공격 |
(2) 암호 공격 방식 - 해독자가 도청한 암호문으로부터 평문/비밀키를 도출하는 수동적 공격법
구분 | 설명 |
암호문 단독 공격 (Ciphertext only attack) | 암호 해독자는 단지 암호문 C만을 갖고 이로부터 평문 P나 키 K를 찾아내는 방법으로 평문 P의 통계적 성질, 문장의 특성 등을 추정하여 해독하는 방법 |
기지 평문 공격 (Known plaintext attack) |
암호 해독자는 일정량의 평문 P에 대응하는 암호문 C를 알고 있는 상태에서 해독하는 방법으로 암호문 C와 평문 P의 관계로부터 키 K나 평문 P를 추정하여 해하는 방법 |
선택 평문 공격 (Chosen plaintext attack) |
암호 해독자가 사용된 암호기에 접근할 수 있어 평문 P를 선택하여 그 평문 P에 해당하는 암호문 C를 얻어 키 K나 평문 P를 추정하여 암호를 해독하는 방법 |
선택 암호문 공격 (Chosen ciphertext attack) |
암호 해독자가 암호 복호기에 접근할 수 있어 암호문 C에 대한 평문 P를 얻어내 암호를 해독하는 방법 |
(3) 안전성 개념
o 주어진 암호 시스템의 안전성을 말할 때는 두 가지 관점이 있다.
- 첫 번째는 암호 시스템을 공격하는 데 필요한 계산량이 매우 커 현실적으로 공격할 수 없는 경우를 계산적으로 안전하다고 말한다.
- 둘째는 무한한 계산능력이 있어도 공격할 수 없는 경우를 무조건적으로 안전하다고 말한다.
o 암호 알고리즘 사용자가 해야 할 일은 다음 두 기준 중의 하나 또는 전부를 만족하는 알고리즘을 개발하는 것이다.
- 암호 해독 비용이 암호화된 정보의 가치 초과
- 암호 해독 시간이 정보의 유효 기간 초과
구분 | 설명 |
차분 공격에 대한 기본 개념 (Differential Cryptanalysis) |
1990년 Biham과 Shamir에 의하여 개발된 선택된 평문 공격법으로, 두 개의 평문 블록들의 비트의 차이에 대하여 대응되는 암호문 블록들의 비트의 차이를 이용하여 사용된 암호 열쇠를 찾아내는 방법이다. |
선형 공격에 대한 기본 개념 (Linear Cryptanalysis) |
1993년 Matsui에 의해 개발되어 알려진 평문 공격법으로, 알고리즘 내부의 비선형 구조를 적당히 선형화시켜 열쇠를 찾는 방법이다. |
전수 공격법 (Exhaustive key search) |
1977년 Diffie와 Hellman이 제안한 방법으로 암호화할 때 일어날 수 있는 모든 가능한 경우에 대하여 조사하는 방법으로 경우의 수가 적을 때는 가장 정확한 방법이지만, 일반적으로 경우의 수가 많은 경우에는 실현 불가능한 방법이다. |
통계적 분석 (Statistical analysis) |
암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법이다. |
수학적 분석 (Mathematical analysis) |
통계적인 방법을 포함하며 수학적 이론을 이용하여 해독하는 방법이다. |
3. 대칭키 암호시스템 특징 및 활용
(가) 개요 - 암호화에 사용하는 키(암호화키)와 복호화에 사용하는 키(복호화키)가 서로 동일한 암호화 방식으로, 전문의 송수신을 위하여 송신자와 수신자는 사전에 암·복호화에 사용하는 키를 공유 및 보유하고 있어야 한다.
o 예를 들어 A라는 사용자가 3명의 서로 다른 사용자에게 암호화된 문서를 전송해야 할 경우 각각 하나씩, 총 세 개의 관용키(대칭키)를 보유하고 있어야 한다. 따라서 이 방식에서의 중요한 관건은 해당 관용키(대칭키)의 안전한 분배 및 관리 방법에 있다.
o 대칭키 암호방식
구분 | 대칭키 암호방식 |
암호키 관계 | 암호화 키 = 복호화 키 |
암호화 키 | 비밀 |
복호화 키 | 비밀 |
암호 알고리즘 | 비밀/공개 |
비밀키 수 | n C 2 |
안전한 인증 | 곤란 |
암호화 속도 | 고속 |
o 일반적으로 키를 입력하여 라운드 키를 발생하여 사용하는데 이러한 과정을 키 스케줄이라 부른다. 키 스케줄은 입력된 키의 모든 비트를 균등하게 사용하여 라운드 키를 독립인 것처럼 발생시켜야 한다.
구분 | 설명 |
Feistel 구조 | o Feistel구조는 3라운드 이상이며, 짝수 라운드로 구성된다. 이러한 Feistel 구조는 라운드 함수와 관계없이 역변환이 가능하며(즉, 암/복호화 과정이 같음), 두 번의 수행으로 블록 간의 완전한 확산(diffusion)이 이루어지며, 알고리즘의 수행속도가 빠르고, 하드웨어 및 소프트웨어구현이 용이하고, 아직 구조상에 문제점이 발견되고 있지 않다는 장점이 있다. o Feistel 구조는 입력을 좌우 블록으로 분할하여 한 블록을 라운드 함수에 적용한 후의 출력 값을 다른 블록에 적용하는 과정을 좌우 블록에 대해 반복적으로 시행하는 방식으로, 라운드 키가 역순으로 작용한다는 점을 제외하면 암/복호화 과정이 동일하고 라운드 함수에 대한 제약 조건이 없어 DES를 비롯한 대부분의 블록 암호에 채택되어 사용되고 있다. |
SPN 구조 | o SPN 구조는 라운드 함수가 역변환되어야 한다는 등의 제약이 있지만, 더 많은 병렬성(parallelism)을 제공하기 때문에 암/복호화 알고리즘의 고속화가 요구되고 최근의 컴퓨터 프로세스(CPU)가 더 많은 병렬성을 지원하는 등의 현 추세에 부응하는 방식이라 할 수 있다. o SPN은 입력을 여러 개의 소블록으로 나누고 각 소블록을 S-box로 입력하여 대치시키고 S-box의 출력을 P-box로 전치하는 과정을 반복한다. |
o Feistel구조와 SPN구조를 사용하는 알고리즘
Feistel 구조 | SPN 구조 |
DES LOKI CAST Blowfish MISTY RC5, RC6, CAST256 E2 Twofish Mars |
SAFER IDEA SHARK Square SRYPTON Rijndael SAFER+ Serpent * * |
(나) 특징
o 비교적 구현이 용이
o 실행 속도가 빠름.
o 키 분배 및 관리가 어려움.
o 거래 쌍방이 동일한 키를 사용하는 관계로 인증 및 송수신 부인 방지가 보장되지 않음.
o 블록 암호 요소의 특징 – 블록 암호 알고리즘을 특징하는 요소로는 다음과 같은 것이 있으며, 이러한 요소에 의해 전체 블록 암호의 안전성이 결정된다.
구분 | 설명 |
블록 크기 | 입출력 블록의 비트 수로, 일반적으로 더 클수록 안전하다고 보지만, 암/복호화 과정에서 시간이 더 걸린다. 주로 64비트가 널리 쓰였지만, 최근에는 128바이트를 채택하고 있다. |
키 크기 | 비밀키의 비트수로, 일반적으로 더 클수록 이 역시 라운드키를 생성할 때 시간이 더 걸린다. DES는 56비트를 사용하였는데 작은 키의 크기로 인하여 안전성에 큰 문제가 되었고, 최근에는 128비트나 그 이상을 주로 사용한다. |
라운드 키 생성 |
비밀키로부터 각 라운드에 사용할 키를 생성하는 과정으로, 유사시에 라운드 키가 누출되더라도 비밀키는 안전해야 한다. |
라운드 함수 |
암/복호화를 수행하는 핵심함수로 다양한 암호분석을 거쳐 안전하게 만들어져야 한다. |
라운드 수 |
한 번의 암/복호화를 위해 반복하는 라운드 함수의 횟수로, 많을수록 더 안전하다고 보지만 암/복호화 과정에서 시간이 더 걸린다. 근본적으로 한 번의 라운드 함수로 충분한 안전성을 확보할 수는 없기에 라운드 함수에 대한 다양한 암호 분석을 통해 충분한 안전성을 얻을 수 있도록 라운드 횟수를 결정한다. |
(다) 관용키(대칭키) 알고리즘 종류
종류 | 내용 |
RC2 | RC2는 비밀키를 사용하는 블록 암호화 알고리즘으로서, DES를 대체하는 목적으로 개발되었다. Input Block과 Output Block의 크기는 8Byte에 이르기까지 다양하게 사용될 수 있다. 보통은 8Byte의 키를 사용한다. |
RC4 | RC4는 다양한 길이의 키 사이즈를 가지는 Stream Cipher이다. 알고리즘은 OFB mode의 형태로 작동하게 되며, 키 Stream은 Plaintext와 독립적이다. |
RC5 | RC5는 Word에 기초한 Block Cipher로서 다양한 Parameter(Block Size, 키 Size, Word Size, Number of Rounds)를 가진다. 이때 Block Size는 Word Size의 두 배이며, 일반적으로는 16, 23, 64 등과 같이 사용된다. Round는 최소 6 이상이 되어야 보안적인 의미를 지니게 되며, 최소 12이상, 가능하다면 16 정도가 권장된다. |
IDEA | IDEA는 8Byte의 Block과 16Byte의 비밀키를 가진다. Cipher IDEA는 Output의 변화에 따라 8 Round로 구성되는 Iterated Cipher이다. |
DES | DES는 8Byte의 Plaintext/Ciphertext와 8Byte의 키를 지니는 Block Cipher 알고리즘으로서, 복호화 알고리즘은 암호화 알고리즘을 역으로 적용하게 된다. 8Byte의 키 중에서 실제로 사용되는 키 길이는 56bit이며, 각 Byte의 Least Significant bit은 Parity Check에 사용된다. Plaintext(원문) + 키(패스워드) + Encryption 알고리즘 = Cypher Text(암호화된 원문) |
DES3 | DES3(triple-DES, DES_EDE3)는 보안적 효과를 증가시키기 위해서 사용되며, 각 8Bytes의 키를 사용하여 암호화-복호화-암호화를 행한다. 따라서 키 사이즈는 24Bytes가 되며, Plaintext/Ciphertext의 크기는 DES와 같이 8Bytes이다. |
o 블록 암호화 운영 모드
구분 | 설명 |
ECB | 평문(Plaintext) 블록은 각각 독립적으로 암호화되어 암호문(Ciphertext) 블록을 생성한다. |
CBC | 각각의 평문 블록은 이전의 암호문 블록과 XOR된 후에 암호화된다. (앞서 암호화한 블록을 다음 블록의 seed로 사용하는 방법). |
CFB | 독립적으로 움직이는 sequence data 블록 S가 존재하여 각각의 평문 블록은 이전의 S(i-l)를 암호화한 S(i)와 XOR되어 암호문 블록을 생성한다. |
OFB | 이전의 암호문 블록은 Output되는 동시에 암호화되어 현재의 평문과 XOR된 후에 암호문 블록을 생성한다. |
o 전자코드북 모드(Electronic Code Bool Mode) - 가장 단순한 방식으로 각 블록을 독립적으로 암호화한다. 이 방식은 동일한 평문 블록은 동일한 암호문을 생성하는데 이는 안전성에 있어서 이런 점은 바람직하지 않다.
1) 암호화: C i = E k ( P i )
2) 복호화: P i = D k (C i )
o 암호 블록 연결 모드(Cipher Block Chaining Mode) - 초기치를 암호화한 값과 평문 블록을 XOR 하여 암호문 블록을 생성하고 그 암호문을 초기치로 하여 다시 암호화한 값과 평문 블록을 XOR 하여 암호문 블록을 반복하여 생성하는 방식이다.
o 초기화 벡터가 같은 경우 출력 결과가 항상 같기 때문에, 매 암호화 마다 다른 초기화 벡터를 사용해야 한다.
o 암호화에서는 특정 입력 이후로 영향을 미치지만, 복호화에서는 특정 암호문의 오류가 계속적으로 이후에 영향을 미치지는 않는다는 특징이 있다.
1) 암호화: C i = E k (C i - 1.P i )
2) 복호화: P i = D k (C i ).C i – 1
o 암호피드백 모드 (Cipher FeedBack Mode) - 초기치를 암호화한 값과 평문 블록을 XOR 하여 암호문 블록을 생성하고 그 암호문을 초기치로 하여 다시 암호화한 값과 평문 블록을 XOR 하여 암호문 블록을 반복하여 생성하는 방식이다.
o 암호화에서는 특정 입력이 이후로 영향을 미치지만, 복호화에서는 특정 암호문의 오류가 계속적으로 이후에 영향을 미치지는 않는다는 특징이 있다.
1) 암호화: C i = P i .E k ( I i ) < i.....r >, I i + 1 = (I i<< r) .( 0..0∥C i )
2) 복호화: P i = C i .E k ( I i ) < i.....r >, I i + 1 = (I i<< r) .( 0..0∥C i )
o 출력피드백 모드(Output FeedBack Mode) - 초기치 Ⅳ를 암호화하고 그 값을 다시 암호화하는 과정을 반복함으로써 생성된 수열과 평문 수열을 XOR 하여 암호문을 생성하는 방식으로, 주로 블록 암호 시스템을 스트림암호 시스템처럼 사용하고자 할 때 이용된다.
o 이 방식에서 암호문의 오류는 복호화 과정에서 대응되는 한 블록에만 영향을 미치므로, 영상이나 음성 같은 디지털 신호화한 아날로그 신호에 많이 사용된다.
1) 암호화: I i = E k ( I i - 1 ),C i = P i .I i
2) 복호화: C i = P i .E k ( I i ), P i = C i .I i
o 카운터 모드(Counter Mode) - 초기치 Ⅳ와 Ⅳ+1, Ⅳ+2, ....을 암호화하여 생성된 평문 수열을 XOR 하여 암호문 블록을 생성하고 그 암호문을 기초로 하여 다시 암호화한 값과 평문 블록을 XOR 하여 암호문 블록을 반복하여 생성하는 방식이다.
o 카운터 모드는 각 블록의 암호화 및 복호화가 이전 블록에 의존하지 않으며, 따라서 병렬적으로 동작하는 것이 가능하다. 혹은 암호화된 문자열에서 원하는 부분만 복호화하는 것도 가능하다.
o 암호화에서는 특정 입력이 이후로 영향을 미치지만, 복호화할 때 Ⅳ가 주어지면 미리 계산할 수 있어 평문이 주어지면 바로 암호문을 만들 수 있다는 장점이 있지만, 동일한 비밀키와 Ⅳ를 반복하여 사용할 경우 안전성에 문제가 생긴다는 약점이 있다.
1) 암호화: C i = P i .E k ( I i ), P i = I i + 1+ 1
2) 복호화: P i = C i .E k ( I i ),P i = I i + 1+1
(라) 블록암호 알고리즘 종류
구분 | 개발 국가 |
개발 년도 |
특징 | 블록 크기 |
키의 길이 |
라운드 수 |
DES | 미국 | 1972년 | NIST에서 표준으로 공표(1977년) | 64 | 56 | 16 |
IDEA | 유럽 | 1990년 | PGP채택 | 64 | 128 | 8 |
Rijndael | 벨기에 | 2000년 | AES알고리즘으로 선정 | 128 | 128,192, 256 | 10,12, 14 |
SEED | 한국 | 1999년 | 한국표준 블록암호 알고리즘 | 128 | 128 | 16 |
CRYPTON | 한국 | 1998년 | 128 | 0-256 | 12 | |
RC5 | 미국 | 1994년 | 알고리즘이 간단하여 속도가 빠름 | 64 | 0-256 | 16 |
FEAL | 일본 | 1987년 | S/W구현에 적합 | 64 | 64 | 4 |
MISTY | 일본 | 1996년 | 차분/선형공격에 안전성증명구조 | 64 | 128 | 8 |
SKIPJACK | 미국 | 1990년 | Fortezza카드에 사용 | 64 | 80 | 32 |
(1) DES의 암/복호화 과정 - 현재까지 DES는 가장 널리 사용됐지만 열쇠의 길이가 짧고, 컴퓨터 속도의 개선과 암호해독기술의 발전으로 오늘날 더는 DES를 안전하다고만 생각하지 않게 되었다. 최근 DES를 보완하는 끊임없는 연구로 많은 블록 암호들이 개발되어 공개되어왔으며 또한 DES가 공모되었던 것과 같이 새로운 암호 AES를 선정하였다.
o DES는 64비트의 평문을 46비트의 암호문으로 만드는 블록 암호 시스템으로 64 비트의 키를 사용한다. 64비트의 키(외부 키) 중 56비트는 실제의 키(내부 키)가 되고 나머지 8비트는 검사용 비트로 사용한다. 또한, DES의 안전성을 증가시키기 위하여 키의 길이를 두 배 즉, 128비트, 십진수 16개를 키로 선택한 변형된 알고리즘을 일반적으로 사용한다. DES는 16라운드(Round)의 반복적인 암호화 과정을 갖고 있으며, 라운드마다 전치(Transposition) 및 대치(Substitution)의 과정을 거친 평문과 56비트의 내부 키에서 나온 48비트의 키가 섞여 암호문을 만든다.
o 복호화는 암호화 과정과 동일하나 사용되는 키만 역순으로 작용하는 것이다.
o DES는 컴퓨터 성능의 발달로 인해 보안성이 약화되어 3DES를 사용하고 있다.
(2) 3DES - DES의 56비트라는 짧은 키 길이로 인한 안전성 문제를 해결하기 위한 대안으로 3개의 키로 DES를 3회 반복하여 사용하는 Triple DES를 사용한다.
o 3DES는 속도가 DES보다 3배 정도 느리다는 단점에도 불구하고, 기존의 DES를 이용하여 쉽게 구현되며 DES의 안전성 문제를 해결하는 장점으로 인하여 여러 표준에서 사용되었다.
o 서로 다른 키로 DES 암호 방식을 반복적용하면 외형상으로는 2배의 키 길이지만 메모리 용량이 충분하면 57비트 효과밖에 얻지 못한다. 그러나 두 개의 암호키를 사용하여 첫 번째 키 K1으로 암호화하고 다시 두 번째 키 K2로 복호화한 다음 또다시 첫 번째 K1로 암호화하면 강한 암호를 얻을 수 있다.
(3) IDEA - 스위스에서 1990년 Xuejia Lai, James Messey에 의해 만들어진 PES(Proposed Encryption Standard)는 이후 1992년 IDEA(International Data Encryption Algorithm)로 이름을 고쳐 제안하였고, 블록 초당 177Mbit의 처리가 가능한 빠른 암호화 방법이다.
o IDEA는 128비트 키, 8라운드, 64비트 블록 암호이며 주된 세 가지 연산은 XOR, add mod 216, multiply mod 216+1이다. RSA와 더불어 PGP에 사용되는 방식이기도 하다.
o IDEA는 블록 암호 알고리즘으로써 64비트의 평문에 대하여 동작하며, 키의 길이는 128비트이고, 8라운드의 암호 방식을 적용한다. 또한, 암호화와 복호화에 동일한 알고리즘이 사용된다.
o IDEA 알고리즘은 상이한 대수 그룹으로부터의 세 가지 연산을 혼합하는 것으로 이들은 모두 하드웨어나 소프트웨어로 쉽게 구현될 수 있다. IDEA는 16비트 단위 연산을 사용하여 16비트 프로세스에 구현이 용이하도록 설계되었다.
1) 암호화 과정 - 다른 암호화 방식과 마찬가지로 암호화 함수는 암호화될 평문과 키의 두 가지 입력을 갖는다. 이 경우 평문은 64비트이고, 키는 128비트이다. IDEA 알고리즘은 마지막 변환함수에까지 8개의 라운드 혹은 반복들로 구성된다.
o 이 알고리즘은 입력을 4개의 16비트 서브 블록으로 분해한다. 각각의 반복과정은 4개의 16비트 서브 블록들을 입력받고, 4개의 16비트로 된 결과 블록을 생성한다. 최종 변환은 또한 4개의 16비트 블록들을 생성하는데, 이것들은 다시 64비트 암호문을 형성하기 위해 연결된다.
o 각 반복은 전체 52개의 서브키에 대하여 6개의 16비트 서브키를 이용하는 반면 최종변환은 4개의 서브키를 사용한다.
2) 복호화 과정 - 복호화 과정은 암호화 과정과 본질적으로 같은 작업이다. 복호화는 같은 IDEA구조로서 암호문을 입력으로 사용함으로써 얻어진다. 그러나 서브키의 선택에 있어서 다르다. 복호화 서브키 U1, ..., U52는 암호화 서브키로부터 유도된다.
(4) SEED - KISA에서 1998년 10월에 초안을 개발하여 공개검증과정을 거쳐 안전성과 성능이 개선된 최종수정안을 1998년 12월에 발표하였다. 1999년 2월 최종결과를 발표하고 128비트 블록 암호표준(안)으로 한국통신기술협회에 제안하였다. SEED 알고리즘의 전체 구조는 변형된 Feistel구조로 이루어져 있으며, 128비트 열쇠로부터 생성된 16개의 64비트 회전 열쇠를 사용하여 총 16회전을 거쳐 128비트 평문 블록을 128비트 암호문 블록으로 암호화하여 출력한다.
① 국내 표준 암호(대칭키) 알고리즘
② 입출력 처리 기본 단위(블록 크기)가 128bits, 입력키의 크기가 128bits, 라운드 수가 16라운드인 블록 암호 알고리즘
③ DES와 같은 Feistel 구조를 가짐.
④ 1999년 TTA에서 표준으로 제정함(TTA.KO-12.0004, '99. 9)
⑤ 현재 ISO/IEC국제 표준 암호 알고리즘 후보로 제출함.
o 이 알고리즘의 전체 구조는 블록의 길이만 다를 뿐 DES의 구조와 같으며, 평문 블록 128비트를 64비트 블록을 L0과 R0로 나누어 DES와 같은 단계를 거쳐 16회전을 하여 최종출력 비트를 얻는다.
(5) AES (Rijndael) - 1997년 미국의 NIST는 기존의 DES를 대신할 수 있는 새로운 암호 알고리즘(AES, Advanced Encryption Standard)을 공모하였다. 기존의 3중 DES보다 안전하면서 128비트 이하의 키를 사용해야 한다는 조건에도 불구하고, 약 15개의 알고리즘이 응모하였다. 2000년 안전성 분석과 구현 효율성을 검증받은 5개의 후보 가운데 J. Daemen과 V. Rijmen이 제출한 Rijndael이 차세대 AES로 선정되었다.
o AES의 암호화 과정의 각 라운드는 비선형성을 갖는 S-Box를 적용하여 바이트 단위로 치환을 수행하는 SubBytes( ) 연산, 행단위로 순환 시프트를 수행하는 ShiftRows( ) 연산, Diffusion을 제공하기 위해 열 단위로 혼합하는 MixColumns() 연산과 마지막으로 라운드 키와 State를 XOR 하는 AddRoundKey( ) 연산으로 구성된다.
구분 | 키 길이(Nk Words) | 블록 길이(Nb words) | 라운드 수(Nr) |
AES-128 | 4 | 4 | 10 |
AES-192 | 6 | 4 | 12 |
AES-256 | 8 | 4 | 14 |
(6) KCDSA (Korea Certification-based Digital Signature Algorithm)
- 국내 표준 전자서명 알고리즘
- 이산대수 문제의 어려움을 기반으로 한 전자서명 알고리즘
- 인증서 기반의 전자서명 알고리즘
- 1998년 TTA에서 표준으로 제정함.
(7) ECKCDSA (Certification-based Digital Signature Algorithm using Elliptic Curves)
- KCDSA를 타원곡선을 이용하여 변형한 전자서명 알고리즘
- 다른 공개키 시스템의 키 길이에 비해서 훨씬 짧은 키를 사용하여도 동일한 안전도를 제공
- 스마트 카드, 무선 통신 등과 같이 메모리와 처리 능력이 제한된 분야에서 매우 효과적임.
- 2001년 TTA에서 표준으로 제정함(TTAS.KO-12.0015).
(8) HAS-160(Hash Algorithm Standard-160)
- 국내 표준 해시 알고리즘
- KCDSA에서 사용될 목적으로 만들어진 해시 알고리즘
- 512bits 블록 단위로 처리하여 160bits의 해시 코드를 출력
- 1998년 TTA에서 표준으로 제정
'정보보호관리체계(ISMS-P) > 실무 Q&A' 카테고리의 다른 글
ISMS-P 인증심사원 - 해쉬함수 (0) | 2022.06.10 |
---|---|
ISMS-P 인증심사원 - 공개키 암호 (0) | 2022.06.10 |
ISMS-P 인증심사원 - 접근통제 (0) | 2022.06.10 |
ISMS-P 인증심사원 - BCP/DRP (0) | 2022.06.10 |
ISMS-P 인증심사원 - 위험 관리(Risk Management) (0) | 2022.06.10 |