티스토리 뷰


관용 암호와 공개키 암호 비교

 

구분

관용암호

공개키암호

작동방식

l        Feistel Cipher 구조에 기반

l        비트연산

l        Diffie and Hellman 제안

l        수학적 계산

l        비밀키 사용(싱글키, 단일키)

l        키 분배 센터 필요

l        공개키, 개인키 사용

l        키에 대한 공인 인증 필요

장점

l        속도가 빠르다

l        키의 길이가 상대적으로 길다

l        키 분배가 쉽다

단점

l        키 분배, 키 관리 문제 발생

l        계산량이 많다

운용

l        Block Size, Key Size, 라운드 수에 따라 다양한 알고리즘 존재

l        암호화블록의 운영모드 고려

l        암호화/복호화 적용

l        디지털 서명을 통한 인증

l        키 분배에 활용

알고리즘

l        DES

l        Triple DES

l        IDEA

l        Blowfish

l        RC5

l        Cast-128

l        RSA

l        Diffie-Hellman

l        DSS

l        Elliptic Curve

 


관용 암호 설명


1) Feistel Cipher
구조


    Feistel Cipher
는 관용암호에 기본이 되는 알고리즘으로서 평문블록을 두개의 블록으로 나누고 오른쪽 블록과 라운드 카 K를 입력으로 함수 F를 통과시켜서 나온 값과 왼쪽 블록을 XOR합니다. 이러한 라운드를 N번 반복해서 Cipher Text를 만드는 것이 Feistel Cipher 구조입니다.

 
2) DES 알고리즘


   앞서 살펴본 Feistel Cipher와 동일한 구조로 되어 있습니다.

 

먼저 64 비트의 평문 블록을 L0, R0의 두개로 나누고 56bit의 키를 연산을 통해 48bit의 키를 생성합니다.

이어서 R0 K1을 함수 f에 통과시켜 나온 값과 L0 XOR 연산을 수행해서 R1을 생성합니다. L1 R1이 그대로 이동합니다.

이런 연산을 16번의 라운드를 거쳐서 최종적으로 Cipher Text를 구성합니다.


3)
키분배

관용 암호의 경우 동일한 비밀키를 사용하기 때문에 키분배와 관리에 대한 문제가 발생합니다. A B가 직접 물리적으로 키를 교환하는 방식이 가장 바람직하지만 네트워크 환경에서는 적합하지 않기 때문에 KDC(Key Distribution Center)와 같은 Third Party 기관을 통하여 키를 분배하는 방식을 주로 사용하고 있습니다. 이러한 키 분배에 공개키 암호를 활용할 수도 있습니다.

 

또한 관용암호에서는 블록 모드의 운용 방식도 중요한 부분입니다만 앞에서 이미 정리했으므로 여기에서는 생략하도록 하겠습니다.

 

3. 공개키 암호 설명

 

공개키는 관용 암호와 달리 두 개의 키를 쌍으로 사용하며 키 생성에 수학적 계산이 들어갑니다. 이런 공개키는 기밀성 유지를 위한 암호화, 디지털 서명을 통한 인증, 키 분배에 활용됩니다. 각각에 대해 살펴보고 공개키 암호의 대표적인 RSA알고리즘에 대해서 정리합니다 


1) 공개키 암호화

 

송신자(Bob)은 수신자(Alice)의 공개키로 암호화 해서 전송합니다. 수신자는 수신자 본인의 개인키로 복호화합니다. 송신자는 공개키 레파지토리(Public Key ring)에서 수신자의 공개키를 가져옵니다.

 


2)
디지털 서명 인증

 

인증에 활용할 경우 송신자(Bob)는 송신자의 개인키로 암호화해서 전송합니다. 수신자(Alice)는 송신자의 공개키로 복호화해서 사용합니다. 수신자는 송신자의 공개키로 복호화 하므로 사람에 대한 인증으로 누가 보낸 것인지 확인할 수 있습니다. 이런 경우는 브로드캐스트로 메시지를 전송할 때 사용합니다.


3) RSA
알고리즘

Ron Rives, Adi Sharmir, Len Adelman이 만든 공개키 알고리즘으로 널리 사용되고 있는 독보적인 암호화 알고리즘입니다. 개인키나 공개키로 암호화하는 것이 모두 수학적으로 안전하다고 알려져 있습니다. 키를 생성하고 암호화 하는 방식은 다음과 같습니다.



위 과정을 실제 예를 들어 설명한 자료를 참고하면 다음과 같습니다.

 

먼저 두개의 소수 47 71 p q로 설정합니다.

p q의 곱인 3337 n으로 설정하고 (p-1)*(q-1)의 값인 3220을 오일러n으로 선정합니다.

이어서 최대공약수를 계산해 e값인 79를 선택하고 d 값을 1019로 계산하면 공개키 (79, 3337), 개인키 (1019, 3337)이 만들어집니다.

 

암호화와 복호화는 수학 계산에 따라서 이루어집니다.

 

참고자료.

[1] William Stallings, Network Security Essentials : Applications and Standards, Prentice Hall, pp. 22-80, 2000. 

[2]http://www.sds.samsung.co.kr/itplaza/blog/personal/blog.jsp?blog_id=kimsumin75&idx=/vCS7Uqpmbs~KE/RzR9L7sM~, 삼성SDS IT지식채널

[3] http://tadoli.springnote.com/pages/1064412, tadoli님의 노트

[4] http://seonz.tistory.com/13, 선수의 세상사는 이야기 블로그


댓글
댓글쓰기 폼