IT/Cryptography(암호)2011. 12. 30. 18:10

한 해가 저물어 가네요. 저는 2011년도 한해가 정말 빠르게 지나간 것 같습니다. 그렇게 한 것도 많지 않은 것 같은데요. --!!!
다음 한해도 저 자신에게 부끄럽지 않도록 열심히 살겠습니다. ^^

오늘은 하이브리드 암호에 대해서 설명하도록 하죠.
자 그럼 여러분에게 제가 하이브리드 암호을 이용해서 인터넷을 이용해서 '새해 복 많이 받으세요 ^^' 라는 메세지를 보낸다고 가정하고 아래 그림을 보고 이해해 보세요. 
보안상 암호화해서 보냅니다. ^^ 


그림은 책을 보고 공부하면서 참조해서 그린 그림입니다.

하이브리드란 복합이란 뜻을 가지고 대칭키
(공유키 방식)과 비대칭키(공개키 방식)을 조합해서 사용하는 것을 말합니다.

앞에서 살펴본 바처럼 공유키 암호 방식는 처리 속도가 빠르지만 키를 공유하기에 만약 키가 노출되면 암호문이 해독이 가능한 상태가 되기 때문에 공격에 취약합니다. 그리고 공개키 암호는 암호화 방식과 복호화 방식이 복잡한 방식을 취하기에 안전성이 좋지만 암호화하는데 계산 시간이 오래 걸린다는 점이 있죠. 그래서 등장한 것이 바로 하이브리드 암호입니다.

하이브리드는 머리가 좋아서 속도도 안정성도 확보하겠다는 것이죠.
 

,
1단계 
메시지(새해 복 많이 받으세요^^)는 공유키로 암호화해서 보내고, 사용한 공유키(평문을 암호화 할때 사용)를 수신자에게 받은 공개키로 암호화해서 보냅니다.(완벽하게 암호화 시키겠다는 이야기네요.)

2단계 수신자는 비밀키를 이용해서 앞에서 암호화했던 암호화된 공유키를 복호를 수행합니다. 그리고 난 후 복호되면 공유키를 이용해서 앞에서 보낸 암호문을 평문 메세지로 복호를 수행하면 평문메세지를 수신자는 확인할 수 있다는 것이죠.

전체적으로 살펴보면 평문 메세지를 암호화하는 것은 대칭키(공유키)방식을 이용하고,
암호문과 복호에 사용하는 공유키를 암복호화 할때는 비대칭키(공개키)방식을 이용한다는 것이네요.

공유키 A,B는 동일한 키입니다.
공개키와 비밀키는 수신자가 미리 만들어 둔 한 쌍의 키입니다. 


활용

하이브리드 암호는 실제로 인터넷 등에서 사용되고 있습니다. 메일 등에 사용되는 PGP나 웹 브라우저에 사용되는 SSL/TLS등은 하이브리드 암호 형식을 이용한 것이죠.

혹시 설명이 부실했다면 이해하시고 좀 더 필요한 부분은 개별 학습을 부탁드리겠습니다. 
저는 이만 실례하겠습니다.

 

Posted by 예영교육 연구소
IT/Cryptography(암호)2011. 12. 27. 16:17


블록 암호란?

기밀성 있는 정보를 정해진 블록 단위로 암호화 하는 대칭키 암호 시스템입니다.

만약 암호화하려는 정보가 블록 길이보다 길 경우에는 특정한 운용 모드가 사용됩니다.(ECB, CBC, OFB, CFB, CTR) 운용 모드는 나중에 살펴보도록 하겠습니다.

 

장점

Block단위 암호화로 인해 기호를 삽입하거나 제거가 불가능하고 다양한 운영 방법에 의해 혼돈과 확산의 이론을 기반으로 설계될 수 있는 것이 장점.

 

단점

블록 단위로 암호화가 이루어지기 때문에 평문 비트들이 완전한 하나의 블록으로 구성한 다음에 암호화 되므로 암호화 과정이 블록의 크기에 따라 지연된다. (암호화 시간이 느리다는 이야기죠.)



대칭키 방식의 블록 암호의 암호화와 복호화를 그림을 통해 알아보죠.

 
그림 설명
t는 t번째라는 의미입니다.
즉 일정 비트가 되어 블록이 되면 Key와 암호화 함수를 이용하여 암호문 블록이 생성됩니다. 그리고 생성된 암호화 블록을 전송하고 이를 받은 측에서는 암호문 블럭을 다시 Key와 복호 함수를 사용하여 평문 블럭으로 만듭니다.

Ct Pt의 사이의 관계는 각각 Ct=E(Pt,K) Pt=D(Ct,K)입니다. 이해하시겠죠.
왼쪽이 암호화가 이루어지는 과정이고 오른쪽이 복호화가 이루어지는 과정입니다.
암호화와 복호화에 사용되는 열쇠는 K로 같습니다.

블록의 길이
(Pt)
블록의 길이(Pt가 해당)는 대표적으로 64비트와 128비트가 있습니다. 블록의 길이는 변수에 의해 지정 가능하고, 블록의 길이를 변경할 수 있는 것도 있습니다.

K(Key)

키의 길이는 40, 56, 64, 80, 128, 192, 256비트가 있습니다.


안전성

블록 암호는 N비트의 키 길이에 대해 2이상의 안정성을 가지지 않습니다. , 키의 전수 검색으로 반드시 해독이 가능합니다. 이것은 블록 암호를 정하는 경우, 매우 중요한 요소의 하나입니다. 그래서 최근에 짧은 키의 길이를 가지는 DES(56비트)가 채용되지 않는 이유 중에 하나입니다.
 

라운드 함수의 구성 방법에 따라 분류

Feistel : DES, 3DES

SPN   : AES

 

비트별 블록 암호 종류(이런 것이 있다고 알고 계시면 됩니다.)

64bit

TDEA-ISO/IEC_18033, CRYPTREC

MISTY1-ISO/IEC_18033, CRYPTREC, NESSIE

CAST-128-ISO/IEC_18033

CIPHERUNICORN-E – CRYPTREC

Hierocrypt-L1 –CRYPTREC

MULTI2-ARIB한정 수신 방식

KASUMI

 

128bit

 AES

 Camellia

 SEED우리나라에서 개발되었죠.^^

 CIPHERUNICORN-A-CRYPTREC

 Hierocrypt-3-CRYPTREC

 SC2000 – CRYPTREC

256bit

 SHACAL-2-NESSIE

 

다음 글에는 블록 암호 시스템의 'Feistel' 구조에 대해 알아보도록 하겠습니다.

 
<위키 백과 참조> 

Posted by 예영교육 연구소
IT/Cryptography(암호)2011. 12. 21. 17:59

 

비대칭키에 대해 알아보도록 하겠습니다.
 


1단계, Bob은 한 쌍의 키를 만듭니다. 그리고 Bob공개키를 어딘가에 공개하죠.

2단계, Jane Bob에게 암호화를 해서 문서를 보내고 싶습니다. Bob에게 보내려면 Bob의 공개키를 가지고 옵니다.

3단계, Jane Bob의 공개키로 암호화를 수행한 후, Bob에게 암호문을 송신합니다.

4단계, Bob은 자신만이 가진 개인키를 이용해서 받은 문서를 Bob의 개인키로 해독합니다.

 

정리하면 다음과 같죠.

누군가에게 암호문을 보내려면 누군가의 공개키가 필요합니다. ^^

그리고 한 쌍의 키가 존재합니다. 개인키와 공개키

Jane과 같은 사람이 많아지면 어떻게 해야 할까요?
공개키를 n명만큼 늘리면 되겠죠.

그리고 한번의 송수신에서 개인키, 공개키 한번씩만 사용이 가능합니다.

 

그러면 비 대칭키가 더 안전하겠네요?(여기서는 Bob으로 설명할께요)
당근이죠. 왜냐하면 대칭키에 비해 Bob개인키는 Bob만이 가지고 있으니까요 암호문을 중간에 가로채더라도 Bob의 개인키를 가지고 있지 않으면 암호문을 해독할 수 없죠. 그래서 상대적으로 공유되어지는 대칭키에 비해 안전 ^^~~~ 

그러면 대칭키 말고 비대칭키를 사용합시다~~

잠시만요. 여기서 비대칭키는 안전하지만 암호화 복호화 할때 함수 사용으로 인해 속도가 무지 느려요.(들은 이야기로는 1000배정도 느리다고 하네요.와우~~~) 그래서 정말 필요한 인증이나 디지털 서명에서 보조적인(보안 강화)역할로 대칭키와 함께 사용합니다.죠. 좀 이해가 되시죠. ^^
알고 보면 악어와 악어새와 같이 공생하는 존재죠.

공개키(비대칭키의 종류)
RSA, ECC, EL Gamal, DSA, Knapsack, Diffie-Hellman 
설명은 이 글에서는 여기까지만 하겠습니다. 기회가 될 때 하나 하나 살펴보도록 하겠습니다.

보안 위협
만약 공격자가 공개키 저장소를 공격하여 중간자 공격을 수행한다면 조금 위험해 질 수 있습니다.
혹시 중간자 공격을 모르는시는 분을 위해 나중에 포스팅 한후 링크를 하도록 하겠습니다.
 

그럼 저는 이만 실례하겠습니다.

Posted by 예영교육 연구소
IT/Cryptography(암호)2011. 12. 21. 17:00

오늘은 대칭키 암호화 방식에 대해 알아보도록 하겠습니다.

암호화 방식의 하나 하나의 자세한 설명은 후일을 기약하며 여기서는 전체적인 밑그림을 그려보는 것을 목표로 합니다.

 


암호화 방식은 크게 2가지로 구분되는 것은 앞에서 보셨죠.
 

대칭키 방식은 또한 크게 2가지로 구분됩니다.

 

스트림 암호와 블록 암호

스트림 암호 :  하드웨어 구현에 용이하며 다른 암호시스템과 비교할 때 알고리즘 구현속도가 매우 빠르고 실용적이기 때문에 군사적인 목적으로 널리 사용되고 있습니다. 2진 표현된 평문과 이진 의사난수열(Key)을 택한 결과를 암호문으로 출력합니다. 속도는 빠르지만 상당한 비용과 자원이 소모됩니다. (왜냐하면 10비트 암호화 하려면 10, 1000비트 암호화 하려면 1000번을 연산해야 하니까요~)

블록 암호  : 블록 암호는 평문을 일정한 블록으로 나누고, 고정된 크기를 가지는 블록 단위의 암호문을 생산한다. 여러 번의 회전(round)에 걸치 함수 F를 반복 수행하는 과정을 거쳐 평문으로부터 암호문이 생성됩니다.

 

스트림 암호의 A5/1 RC4

A5/1 GSM 휴대폰에서 사용되고 있고, RC4 SSL protocol에 포함한 여러 곳에서 사용됩니다.

다만 RC4도 스트림 암호이지만 A5/1과는 현저하게 다른 개념의 암호입니다. A5/1이 하드웨어로 구현되도록 설계되어 있는 것에 반해, RC4는 소프트웨어로 구현되도록 설계되어 있습니다. RC4 알고리즘은 바이트 단위로 실행됩니다.

 

블록 암호는 몇가지 구조로 나눌 수 있습니다.

Feistel구조 : DES, 3DES

블록 암호의 선구자인 호스트 페이스텔의 이름을 빌어 명명했습니다장점은 안전성 문제가 회전 함수 문제로 귀결된다는 것.(???)

가.  DES : 1970년대에 개발되었습니다.

나.  3DES : DES가 크랙된 후, 개발된 알고리즘. 속도 문제로 인해 AES로 대체되는 경향.

 

떠오르는 샛별 AES(SPN구조)

AES알고리즘은 고난도의 수학적 구조를 갖습니다. AES의 모든 것에 대한 자료는 방대하며, 역사적으로 AES만큼 짧은 시간 내에 그렇게 많은 검토 및 시험이 이루어진 알고리즘은 없습니다.

 가장 최근에 강력한 암호 방식에 사용되어지고 있는 것은 AES입니다. 초기에는 DES가 많이 쓰이다가 크랙당해서 3DES가 등장했죠. 3DES DES보다 256배 정도 강하다고 하지만 DES에 비해 너무 느려진 암호화 속도로 인해서 AES가 등장하게 되었고 최근에 많이 사용되고 있습니다.

 

나는 AES이다. .^^

하나, 저는 하드웨어와 소프트웨어 관계없이 구현이 가능합니다.

, 저는 SMART CARD에도 적용이 되구요.

, 저는 SPN구조를 사용하죠.

 
기타 암호 알고리즘 

유럽에 강자 IDEA(International Data Encryption Algorithm)

아시다시피 블록 암호 방식이죠. 그리고 저는 64비트의 블록의 데이터에 작동됩니다.

128비트의 키를 가집니다. 그리고 어디에 쓰이냐? PGP암호화 소프트웨어에 많이 사용되죠.

 

그외 암호화 방식(RC6, Blowfish,TEA)가 있습니다.
설명해야 할 것들이 너무 많지만 오늘의 목적인 밑그림을 그리는 데에 목적을 두고 여기서 마무리를 짓도록 하겠습니다.

Reference
암호학의 이해, 교우사
정보 보안 이론과 실제, 한빛 미디어 
위키 백과 

Posted by 예영교육 연구소
IT/Cryptography(암호)2011. 12. 19. 12:37

점점 더 암호화의 중요성은 개인정보 보호법이 시행되면서 더 강조되는 것 같습니다.
이글에서는 기본적인 개념중에 하나인 암호에 대해서 잠시 다루어 볼까 합니다.

> 용어 정의
암호화, 복호화

> 대칭키와 비대칭키에 대해서
이렇게 다루면 어느정도 내용이 될 것 같네요.

암호(cryptography,cipher) 또는 암호화(Encryption)는 제 삼자가 통신 내용을 알수 없도록 특수한 통신 방법중에 하나로서, 통신문을 봐도 특수한 지식없이는 읽을 수 없도록 변환한 표기법(변환 알고리즘)입니다. 통신뿐만 아닌 보관하는 문서등의 내용도 은닉하는 방법으로 이용 가능합니다.

복호화는 암호화 된 정보을 암호문을 다시 원래 형태로 되돌리는 작업입니다.

기호로 표현하면 다음으로 생각해 볼 수 있겠습니다.
M:평문, C:암호문, E(encryption), D(Decryption)
암호화 E(M)=C
복호화 D(C)=M

대칭키와 비대칭키 암호
대칭키 암호(Symmetric Key Cryptography)는 보내는 사람과 받는 사람이 같은 공유키를 사용하여 메세지의 암호화와 복호화를 처리하는 것을 말합니다. 앞에서 설명한 WEP이 대칭키 암호 방식을 사용합니다.

비대칭키 암호(Asymmetric Key Cryptography,AKC)는 암호화와 복호화에 다른 키를 사용합니다. 복호화 키는 암호화 키와 다르고 암호화 키와 연관성이 없습니다. 그래서 추측하는 것도 할 수 없습니다.

그림을 통해 살펴보도록 하겠습니다.


대칭키 방식
1. 이용자와 은행은 사용될 암호(암호시스템)에 합의합니다.
2. 이용자와 은행은 사용될 키의 사용에 합의합니다. 여기서 키는 공유키를 말합니다. 공유키는 은행과 사용자 동일한 키를 가집니다.
3. 이용자는 공유키를 이용해서 메세지를 암호화를 수행하고 은행에 암호문을 보냅니다.
4. 은행은 암호문을 자신이 가진 공유키를 이용해서 복호화를 수행합니다.

보안 취약점 : 여기서 만약 공유키가 공격자에게 도난을 당하면 안됩니다.

비대칭키 방식
1. 이용자와 은행은 사용될 암호(암호시스템)에 합의합니다.
2. 은행은 이용자에게 공개키를 보냅니다.
3. 이용자는 받은 공개키를 이용해서 암호화를 수행하고 은행에게 암호문을 보냅니다.
4. 은행은 1에서 합의한 암호방식과 자신이 가진 개인키를 이용해서 암호문을 복호화 합니다.
 
날씨가 많이 춥지만 마음은 따뜻한 하루가 되시기를.... ^^
오늘은 다시 돌아오지 않을 소중한 하루이기 때문이죠. 화이팅~~~
 

<일부 위키 참조)
Posted by 예영교육 연구소