현재의 암호화 방식이 왜 양자컴퓨터에 취약한가
2012.04.07 13:51
현재의 암호화 방식은 모두 '키 독립적'인 방식입니다.
좋은 예를 들어봅시다. 동영상입니다.
동영상을 인코딩하게 되면 I, P, B 프레임으로 나누어져 구성되게 됩니다.
I프레임은 우리가 키프레임이라 부르는 것으로, 그 자체로 온전한 정보를 갖습니다.
반면 P프레임과 B프레임은 이전 프레임에서의 '변화값'만을 가집니다.
따라서 P프레임과 B프레임은 '바로 이전 프레임에서 가장 가까운 이전 키프레임까지의 모든 프레임에 의존성'을 띕니다.
즉 P프레임과 B프레임만 딱 찍으면, 화면이 안나옵니다.
가장 가까운 이전 키프레임까지 이동한 다음, 하나하나 정보를 조합해서 탐색지점까지 와야 비로소 해당 지점의 데이터가 완성됩니다.
이 방식이 '의존적 암호화 방식'에 비유될 수 있습니다.
반면 키 독립적이라는 말은,
모든 키가 키 그 자체로 하나의 값을 가지게 된다는 의미입니다.
동영상과는 달리, 그 값을 얻기 위해 이전의 정보를 알 필요가 없습니다.
그저 정해진 암호화 규칙에 따라 키가 이동할 뿐입니다. 일종의 해시함수와 비슷합니다.
따라서 키 독립적인 경우에는 병렬연산이 적극적으로 가능하게 되고,
엄청난 규모의 병렬연산을 통 동시에 모든 가능한한 입력값을 한번에 넣어버리면(ex. 모든 민번조합을 다 집어넣음)
그중 하나는 반드시 원하는 값이 나오게 됩니다. 즉 뚫립니다.
병렬화를 가능하게 하는 가장 큰 요인이 '상호간 키 독립적 방식' 때문이고요.
양자컴퓨터는 기본베이스가 병렬컴퓨팅입니다.
따라서 지금과 같은 상호간 키 독립적 방식으로 암호화를 할 경우,
그냥 몇분 내에 "brute-force attack"으로 암호를 깰 수 있습니다. (기술적으로 매우 심각한 이야기)
왜냐하면, 엄청난 규모의 병렬컴퓨팅이 실제로 가능하기 때문에,
모든 가능한한 키 값을 일일이 대입하는 일이 간단한 작업이 됩니다.
그리고 현재.. 세상에는 안전한 암호는 존재하지 않습니다.
털리면, 그것도 대량으로 털리면 무조건 뚫린다고 보는게 정설이고요.
키스트레칭을 하더라도, 뚫을 가치가 있는 정보라면 어떻게든 뚫습니다.
현재까지 Mathematically Secure Ciphering Algorithm은 없습니다.
(수학적으로 증명된 안전한 암호화 알고리즘)
이 문제를 풀기 위해서는 "P-NP는 equal or not equal인가?" 라는 문제를 풀어야 하는데
이 문제는 '리만 가설', '푸앵카레의 추측' 등 세계 10대 수학의 난제에 해당합니다.
게다가, 그 중에서도 가장 '돈이 되는 난제' 입니다. 그런데도 못풉니다.
즉 Mathehatically Secure Ciphering Algorithm은 현재 수준의 수학기술로는 만들 수 없습니다.
그래서 제시된게, Attacker에게 Time, Processing Speed, Key 등의 상당한 제약을 걸어서
(우리가 흔히 들어오던) "일정 시간 내에 못풀면 안전하다"는 개념의
Pratically Secure Ciphering Algorithm이라는 새로운 개념을 만들었습니다.
(실용적으로 안전한 암호화 알고리즘)
그런데 결론부터 말씀드리자면, 이것도 없습니다. 이정도도 못 만듭니다.
그 말은..
현재 아무리 안전한 암호라고 하더라도, 암호화문이 털리면 그냥 끝장이라는 거구요.
양자컴퓨터가 도입되면 SSL-128bit 그딴거(?) 그냥 한방에 날아갑니다.
네이트에서 털린 정보가 얼마나 엄청난지 정부에서는 전혀 인지를 못하는 것 같아요.
이 정보 몇년 묵혔다가, 컴퓨터값좀 내려가면 병렬화해서 풀 수도 있는거고,
후에 양자컴퓨터가 좀 싸지면 풀어서 쓸 수도 있는건데 말이죠.. 한마디로 우리나라 전 국민은 그냥 다 털렸습니다.
코멘트 11
-
클라우드나인
04.07 14:00
OTP는 최초의 키 교환을 특수한 경로를 통해 전송함으로써 중간에 키를 가로채지 못하게 하는 방식입니다.
사실.. 그 키가 매번 바뀐다는게 특이할 뿐, 패킷 캡쳐해서 뚫으면.. 뚫립니다. ^^;
-
현용 상용 암호화 방식은 각국 정부 정보기관에서 다 열람할 수 있는 방식만 팔린다는 말이 있죠.
오픈소스 방식만 빼고요.
-
인포넷
04.07 14:28
털리라고 있는게 암호이잖아요... ㅋㅋㅋ...
-
꼬소
04.07 15:38
현재의 암호화 기술은 못 푸는게 안니라 시간이 많이 걸리는 것 뿐이죠.
핸드폰 암호처럼 0000~9999만 넣을 시간만 주면 풀리듯이 컴퓨터 암호도 모든 방법을 다 대입 할 수 있으면 풀리게 되어 있습니다. 그 중 핵심적인 역할을 하는것이 소수이고 아주 큰 소수는 비싼값에 팔리고 있습니다.
지금도 충분히 빠른 컴퓨터가 있지만, 추후 더 빠른 컴퓨터가 나오면 모든 경우수를 대입하여 풀면 풀리는 현재 방식의 암호화 방식은 의미가 없어질 겁니다. 하지만 창과 방패가 있듯이 항상 다음 버전의 암호화 방식이 나오겠죠.
정말 리만 가설이 풀려서 정말정말 엄청난 소수를 만들어 낼 수 있다면 결국 지금이랑 동일한 암호화 방식을 사용 하여도 문제 없으리라 봅니다. 결국 문제는 시간일테니 말이죠.
-
미쁘리
04.07 16:19
Block cipher의 경우 하나의 키에 의해 암호화가 되지만 stream chiper 일 경우 비밀키와 이전의 데이터의 조합으로 암호가 생성되지 않나요? 하도 오래전에 전공하던 거라 기억이 정확하지 않을수도 있지만 암호란게 정보의 가치를 유지할 수 있는 동안에만 암호로서의 기능을 유지하면 되죠. 양자컴퓨팅이 활성화 된다면 아마도 키의 길이를 늘리거나 양자컴퓨팅으로 암호를 해독하는데 걸리는 시간을 늘리는 쪽으로 진화하겠죠. 또는 양자컴퓨팅의 자원을 많이 소비하도록 만들도록 하던가 하겠죠. -
클라우드나인
04.07 19:05
Stream cipher가 오히려 Block cipher보다 쉽게 뚫립니다. 거의 쓰이지도 않고요.
만약 Mathematically random generated key를 사용하는 stream cipher라고 할 경우, brute-force attack으로 깰 수 없지만,
이 "Mathematically random generated key"를 구하는 문제는 P-NP 문제를 해결해야지만 풀 수 있습니다.
따라서 현행 Stream cipher는 의미가 없습니다.
제가 알기로는 현재 사용하는 거의 모든 암호화방식은 Block cipher입니다.
-
미쁘리
04.07 19:43
그런가요?? 오래전에 해서 기억이 가물가물...ㅡㅡㅋ 이동통신이나 Bit stream 전송할 때는 stream chipher 를 사용했던것 같은데...그래서 triple DES나 AES에도 stream chipher 생성방식이 있지 않나요?? 요즘은 이걸 사용안하나 보군요. 간만에 예전 전공했던 암호내용을 들으니 기분이 새롭군요. 암튼 좋은 글 잘 봤어요. ^^ -
너무 어렵습니다.... 람쥐
-
유여
04.07 20:54
우선 양자컴퓨터를 살만큼 돈이 많거나 싸게 만들만큼 똑똑하면서 해킹짓 할만큼 나쁜사람을 찾아야 하지 않을까요ㅎㅎ
양자컴퓨터가 나쁜짓에 응용될 정도로(국가가 하는거 제외) 보급될수준이면 핵융합로가 상용화되고 우주여행이 패키지여행으로 팔릴 시대가 아닐까 생각해봅니다. -
맑은샛별
04.08 01:36
무슨 소리인지.... 대충 감으로 알아 듣겠네요. ^^;;;
흠냐~ OTP는 어떨지 모르겠네용~ 아무튼 복잡한 세계입니다람쥐~