[CS : 네트워크] 대칭키 & 공개키

2021. 5. 10. 16:28CS 스터디

1. 대칭키 알고리즘

암호문을 생성할 때 사용하는 키와 암호문을 평문으로 복원할 때 사용하는 키가 동일한 암호 시스템

 

 

 

1) 대칭키의 장단점

: 대칭키는 송신자와 수신자가 같은 키를 보유하고 키를 통해 송신자가 평문을 암호화해서 전송하면 수신자가 같은 키로 복호화한다. 크기가 상대적으로 작고 암호 알고리즘 내부 구조가 단순하여, 시스템 개발 환경에 용이하고, 비대칭키에 비해 암호화와 복호화 속도가 빠르다. 하지만 교환 당사자간에 동일한 키를 공유해야 하기 때문에 관리의 어려움이 있고, 잦은 변경이 있는 경우에 불편함을 초래한다. 뿐만 아니라 디지털 서명 기법에 적용이 곤란하고 안전성을 분석하기가 어렵고 중재자가 필요하다.

 

대칭키에서의 키 분배 방식

 

2) 대표적인 대칭키의 종류

 

a. DES(Data Encryption Standard)

: IBM에 의해 고안되고 1976년 미국 표준으로 채택된 대칭키 블록 암호화 기법, 1998년 해독, 현재에는 보안 등급이 낮은 응용에 사용

                               

- 키의 작은 변화가 암호문에 큰 변화를 만드는 쇄도 효과(Avalanche Effect)가 큼 -> 암호문으로부터 키 보호

- 암호문의 각 비트가 평문의 많은 비트들에 의존하는 완비성(completeness)이 높음 -> 암호문으로부터 평문 보호

- 키의 길이가 짧아(56비트) 전사 공격에 취약함

 

b. AES(Advanced Encyption Standard)

: 2001년 미국 표준화 기구인 NIST(National Institute of Standard and Technology)에 의해 표준화되어 공표, 128비트 블록 암호

 

 

3) 대칭키 암호 방식

 

a. 블록 암호

: 평문을 고정된 크기의 블록으로 나누어 각 블록마다 암호화 과정을 수행하여 블록 단위로 암호문을 얻는 대칭키 암호 방식

 

- 블록 암호 알고리즘 공격 방식 

 

전사 공격 : 가능한 모든 키를 이용해서 암호문으로부터 의미가 있는 평문을 얻어낼 때까지 시도하는 방법. 성공적으로 수행하기 위해서는 평균적으로 가능한 모든 키 개수의 절반 정도를 시도해봐야 한다.일반적으로는 실현 불가능함.

 

차분 공격 : 1990BihamShamir에 의하여 개발된 선택 평문 공격법으로, 두 개의 평문 블록의 비트 차이에 대하여 대응되는 암호문 블록들의 비트 차이를 이용하여 사용된 암호키를 찾아내는 방법이다.

 

수학적 공격 : 통계적인 방법을 포함하여 수학적 이론을 적용하여 해독하는 방법이다.

 

통계적 공격 : 암호문에 대한 평문의 각 단어의 빈도에 관한 자료를 포함하는 지금까지 알려진 모든 통계적인 자료를 이용하여 해독하는 방법이다.

 

 

b. 스트림 암호

: 평문과 같은 길이의 키 스트림을 생성하고 평문과 키를 비트 단위로 XOR 연산하여 암호문을 얻는 대칭키 암호 방식

 

 

 

2. 비대칭키 알고리즘

공개키 암호는 대칭키 암호의 전달에 있어서 취약점을 해결하고자 노력의 결과로 탄생했다. 쌍의 키가 존재하며, 하나는 특정 사람만이 가지는 개인키(또는 비밀키)이고 다른 하나는 누구나 가질 있는 공개키이다. 공개키 암호화 방식은 암호학적으로 연관된 개의 키를 만들어서 하나는 자기가 안전하게 보관하고 다른 하나는 상대방에게 공개한다. 개인키로 암호화 정보는 쌍이 되는 공개키로만 복호화가 가능하고, 공개키로 암호화한 정보는 쌍이 되는 개인키로만 복호화가 가능하다. 개인이 비밀 통신을 경우엔 대칭키 암호 사용할 있지만, 다수가 통신을 때에는 키의 개수가 급증하게 되어 어려움이 따른다. 이런 어려움을 극복하기 위해 나타난 것이 공개키 암호이다. 공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 있다는 장점이 있다.

 

공개키에서의 암호화 복호화 방식

 

대칭키와 공개키의 차이점

 

1) 공개키의 장단점

공개키 암호는 다른 유저와 키를 공유하지 않더라도 암호를 통한 안전한 통신을 한다는 장점을 가진다. 사용자는 자신에게 전송하기 위해 사용될 키를 공개하고, 공개된 키의 정보로 암호화된 정보를 복호화할 있는 키를 비밀로 보유하고 있음으로써 누구나 암호화할 있지만 공개키에 대응되는 비밀키를 가진 사람만이 복호화할 있는 특징을 가진다. n명의 사용자로 구성된 네트워크를 고려하면 사용자는 공개키와 비밀키 개를 보유하고 있으므로 네트워크 전체적으로 2n 개의 키가 필요하다. 그리고 사용자는 2개의 키만 보유하면 된다. 또한, 관리와 분배가 용이하다. 공개키 암호화 통신을 경우 각자의 공개키 개인키를 생성하여 공개키는 공개하고 자신의 개인키만 관리하면 되고, 공개키에 의한 암호화 통신을 경우에는 각자의 공개키를 공개하여 필요할 상대방이 이용할 있도록 한다.[3] 공개키 암호는 보안의 강도가 높아 RSA 경우, 소인수분해 문제의 어려움을 이용했기 때문에, 현재로서는 암호가 깨지지 않는다. 그리고 현재 256비트의 암호키를 사용하면, 복호화하는데 우주의 나이만큼의 시간이 필요하다.[4] 하지만 공개키 암호는 수학적인 난제를 기반으로 설계되었기 때문에, 암호화나 복호화를 수행하기 위한 연산이 복잡한 수학 연산을 기반으로 구성되기 때문에 효율성은 대칭키 암호 비해 높지 않고, 대칭키 알고리즘보다 속도가 대략 1000 느리다.

 

 

2) 공개키의 특징

 

a. 기밀성

b. 인증

 

3) 공개키 암호의 문제점

공개키를 공개 발표하는 경우 다음과 같은 상황이 일어날 수 있다.

 

a. 어떤 사용자 C A B사이의 메시지 교환 중간에서 B의 공개키를 탈취하여 C의 공개키를 보낸다.

 

b. A는 눈치채지 못한 채 C의 공개키로 평문을 암호화하여에게 보낸다.

 

c. C C의 개인키로 복호화하여 평문을 습득하고 다시 B의 공개키로 암호화하여 B에게 보낸다.

 

d. B B의 개인키로 복호화하여 평문을 습득했지만, 이미 해킹당했다.

 

이를 해결하기 위해 특별 기관을 이용하거나 다른 방식을 이용하여 공개키 또한 안전하게 교환해야 한다.

 

 

- 디피 헬만 알고리즘

공격자는 중간에서 가로챈 값을 사용해도 g^(a + b) mod P 밖에 만들지 못한다.

 

- 디피 헬만 알고리즘 공격 방식

중간 개입하는 t가 서로의 키를 빼돌린 후 자신의 키를 넘겨주어 결국 A, B, T가 동일한 값을 갖게 된다.

 

 

4) 대표적인 공개키 알고리즘

RSA(Rivest, Shamir and Adleman)

: RSA[25]는 라이베스트(Rivest)와 샤미르(Shamir) 애들먼(Adleman) 자를 따서, RSA라고 ) 의해 처음으로 명명되었다. RSA 공개키 암호 시스템으로 암호화와 인증에 사용되고, RSA 오늘날 사용되는 공개키 암호 방식의 가장 일반적인 공개 알고리즘이다. RSA 일반 정수론적인 면에서 정의되었다. RSA 체계에서는 개의 숫자(대개 개의 소수) 곱하여 얻어낸 계수를 이용해 키를 생성한다. 시스템은 수의 인수분해의 어려움에 안전성을 두고 있다. RSA 수많은 국제기구의 표준일 뿐만 아니라 산업 표준으로 권장되고 있다.