Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

layer 3

[CISCO Network Security] 6장 암호학 본문

CISCO Networks/Security

[CISCO Network Security] 6장 암호학

뿅뿅뽁 2018. 7. 4. 10:27

안녕하세요 뿅뿅뽁입니다.


오늘 다룰 내용은 암호학의 배경지식, 깨는 법을 볼 것입니다.


암호화를 하는 이유는 간단합니다. 데이터를 보호하기 위해서입니다.


정보를 감추는 것은 암호화, 감춰진 정보를 보는 것을 복호화라고 합니다. 그러면 암호화에 대해 지식이 없으신 분들을 위해 역사를 알고 가겠습니다.


1. 역사와 암호학의 개념


4천년 전 율리우스 시저는 시저 암호화라는 독창적인 암호 방법을 고안해냈습니다. 알파벳 문제들을 세 문자만큼 회전시키는 방법입니다.


게임을 좋아하시는 분들은 어쌔신크리드2 에서 시저 엄호화 비슷한 것을 보셨을 겁니다. 오늘날 사용됐던 방법인 ROT13이 이러한 방법입니다.



암호학에서는 두 가지 유형의 키를 사용합니다. 대칭과 비대칭입니다.


대칭키는 오래전부터 존재해 왔습니다. 이 방법은 암호화할 때 사용하는 키와 복호화 할 때 사용하는 키가 같습니다. 이러한 키를 비밀 키라고 합니다. 만약 키가 노출되면 키를 알고있는 사람이 메시지를 복호화 할 수 있습니다.


대칭키 방식은 대부분 오래 된 것들이 많으며 대중에 공개된 것들도 많습니다.


비대칭암호화는 암호학의 역사에서 볼 때 비교적 최근에 나온 것입니다. 비대칭 알고리즘에서는 두 개의 다른 키를 사용합니다. 하나는 암호화에 사용하는 공개 키 이고 다른 하나는 복호화에 사용하는 비밀 키 입니다.


처음으로 공캐 키 암호화 방식을 발표한 사람은 Whitfield Diffie와 Martin Hellman입니다. 그리고 이 알고리즘은 Diffie-Hellman(DH) 알고리즘이라고 합니다.


2. 표준 암호 알고리즘


암호화 알고리즘을 사용하는데 있어서 보안, 속도, 구현의 용이성을 봐야 합니다.


지금부터는 유명한 알고리즘 중 5개를 알아보겠습니다.


2.1 DES (대칭 알고리즘)


DES(Data Encryption Standard)는 Horst Feistel이 만든 Lucifer 알고리즘을 기반으로 하고 있습니다. 


하나의 64비트 키로 64비트 데이터를 암호화하는 것이 원칙이고 이 키는 16개의 48비트 키로 확장됩니다. 이 16개의 키는 16개의 라운드에 하나씩 사용됩니다.


알고리즘을 알아가면서 패리티 비트라는것을 보시게 될 텐데.  패리티 비트란 쉽게 말해 데이터 오류를 확인하기 위한 비트입니다. 자세한 내용은 설명하지 않겠습니다.


이 알고리즘은 아래 그림을 보시면 F박스에서 데이터를 키와 합하는 치환단계, 치환된 데이터를 뒤섞는 순서 바꿈 단계 가 일어나는데 치환 연산이 선형 연산이 아니기 때문에 DES 암호를 깨기가 매우 어렵습니다.


그러나 키 길이가 56비트라 하나하나 넣어보는 전수 조사 공격으로 풀릴 수 있다는 취약점이 있습니다


1997년에 병렬 연결 컴퓨팅으로 4달동안 굴려서 깼었고, 그 이후에는 DES 크랙 전문 컴퓨터를 이용해서 3일만에 깻다고 합니다. 그 이후에는 22시간 만에 크랙하는데 성공하여 DES는 새로운 알고리즘으로 교체 됩니다.


아래는 DES 암호화 알고리즘 입니다.


2.2 AES (대칭 알고리즘)


DES의 수명이 다해감에 따라 NIST는 DES를 대신 사용할 Advanced Encryption Standard(AES)에 대한 연구 계획을 발표 했습니다.


그러자 대형 암호 회사들은 자신들이 만듬 AES알고리즘을 제출하였고, NIST가 만든 6개의 요구사항을 충족하고 후보들을 압축해서 총 5개로 지정되었습니다. 여기서 우승자를 가리는데 1년이 걸렸고 Rijndael이 최종 우승자로 결정되었습니다. AES/Rijndaell은  DES가 각 라운드에서 Feistel 싸이클을 사용하는 것과는 달리 라운드를 반복합니다.


이 알고리즘은 128비트 단위로 데이터를 다루는데 이 데이터는 4개의 32비트 데이터로 나눠집니다. 즉 키 크기에 따라 라운드의 수가 달라집니다. 예를 들어 128비트 키의 경우 9라운드, 192비트 키의 경우 11라운드, 256비트 키의 경우 13라운드를 수행합니다.


2.3 IDEA (대칭 알고리즘)


미국에 DES가 있다면 유럽에는 IDEA 알고리즘이 있습니다. IDEA는 DES보다 좀 더 늦게 나온 최신 알고리즘일 뿐만 아니라 DES보다 빠르고 더 안전하다는 장점이 있습니다. 현재 미국과 유럽에서 특허 신청이 돼 있지만, 비상업용으로 누구나 무료로 이용할 수 있다고 합니다.



2.4 Diffie-Hellman (비대칭 알고리즘)


DES에서의 비밀키 교환을 쉽게 하기 위해 개발하였습니다. 비대칭 암호화 방식의 특징은 느리다는 것이기 때문에 Diffie-Hellman 알고리즘은 일반 암호화를 하는데 사용되기는 어려웠습니다. 이 알고리즘은 DES의 비밀키를 전송하는데 사용되는데 그 이유가 구현에 따라 DES보다 10에서 1000배 정도 느리기 때문입니다.


이 알고리즘은 특허가 만료되었음에도 불구하고 여러곳에서 쓰입니다. IPSec 프로토콜에서는 Diffie-Hellman 알고리즘과 RSA 인증 방식을 함께 사용해서 세션 키를 교환하고 이 세션키는 IPSec 터널을 통과하는 모든 트래픽을 암호화하는 데 사용됩니다.


2.5 RSA (비대칭 알고리즘)


위 Diffie-Hellman 알고리즘은 못들어보셨어도 RSA는 몇번 보신적이 있으실겁니다. 수학을 좋아하시는 분들은 리만 가설을 보시면서 RSA를 접하신 분들도 있을 겁니다. RSA는 이 알고리즘을 고안한 연구원들의 이름 첫글자를 따서 만든 알고리즘 입니다. 큰 수의 소인수분해는 힘들다는 특징을 이용해 Diffie-Hellman과 유사합니다. 하지만 Diffie-Hellman 보다는 매우 빠르다고 합니다.


여기서 리만 가설은 소수에도 일정한 규칙성이 존재하다는 가설입니다. RSA가 소수의 곱셈인걸 생각하면 소수에 규칙성이 나온다면 RSA 알고리즘을 깨는 것은 간단해질 것이라는 게 일반적인 견해입니다. 수학 7대 난제가 하나씩 풀리고 있다는걸 생각하면 다른 비대칭 알고리즘을 생각해야 암호 체계가 안정적일 것 같습니다.


3. 전수 조사 공격


암호를 해독하는 데는 두가지 방식이 있습니다. 1. 전수조사, 2. 암호 해독 기법입니다.


전수 조사는 모든걸 대입한다는 뜻이고 암호해독기법은 알맞은 알고리즘으로 암호를 해독한다는 것입니다. 


지금부터는 전수 조사 공격을 알아보겠습니다.


3.1 전수 조사 기본


암호가 한자리 수라 한다면 10가지 경우의 수를 통해 쉽게 해독이 가능합니다.


암호가 유한하다는 특징을 이용해 하나씩 넣어보는 것이 전수 조사의 기본입니다. 이것을 방지하기 위해서는 값을 크게 잡는 것인데요. 제가 전수프로그램을 돌려본 결과 6자리 수의 암호를 해독하는데 10분이 걸린것을 보면 8자리수는 어마어마하게 오래걸릴것으로 추정됩니다.


DES는 56비트이기 때문에 전수조사에 매우 취약합니다. 특히 분산 전수 조사 공격은 병렬연결 컴퓨팅으로 더 빠르게 조사를 할 수있습니다.


RSA와 기타 공개 키 암호화 방식에는 전수 조사기법을 적용하기가 그리 간단하지가 않습니다. 숫자가 작다면 전수조사 보다는 소인수분해로 푸는 것이 더 빠를수도 있을 겁니다.


이렇게 보면 전수 조사 기법이 최고일 거라 생각하시겠지만 RSA 512비트 키는 약 155자리 숫자이고 존 더 리퍼라는 프로그램을 사용하셨던 분들은 경험해보셨겠지만, 특수문자, 대문자, 소문자가 들어간다는 것을 고려해도 4자리, 5자리, 6자리, 7자리 암호를 해독하는데 자리수에 따라 시간이 크게 증가한다는 것을 아실겁니다. 즉 155자리 수는 아주 오래 걸릴 것입니다.


3.2 크랙 프로그램


암호 크랙 프로그램은 여러가지가 있지만 시중에 공개되있는 John the Ripper(JTR)을 예를 들겠습니다. JTR은 유닉스, DOS, window용 버전을 모두 제공합니다. 또한 MD5와 같은 비밀번호 포맷을 사용하는 최신 시스템에 알맞은 프로그램입니다.  JTR사이트에 들어가시면 쉽게 다운 받으실수 있을겁니다. 


책에서 4자리 암호를 해독하는데 1분정도 걸렸다고 하지만 18년은 컴퓨터 성능이 너무 좋아 노트북인데도 1초도 안걸립니다.


개인적으로는 알집에 암호를 걸어 JTR을 이용해 해시코드를 추출하고 그것을 해독하는 방법으로 해보시길 바랍니다.



4. 알고리즘을 잘못 사용하는 경우


4.1 잘못된 키 교환


Diffie-Hellman 알고리즘은 인증 과정이 들어 있지 않습니다. 따라서 이 단점을 이용한 MITM 공격을 받을 수 있습니다.


예를 들어 보겠습니다 A하고 B는 서로 통신을 하고 있습니다. 공개키를 주는 과정에서 C가 관여하여 공개키를 받습니다.


A가 B에게 보내는 것을 C가 가로채 공개키로 복호화를 하여 내용을 보고 다시 공개키로 암호화하여 B에게 보냅니다.


B는 이것을 보고 공개키로 암호화하여 A에게 보내지만 C가 가로채 내용을 보고 암호화하여 A에게 보냅니다.


이러한 이유 때문에 인증 시스템을 사용 하고 있고 키 교환 방식에 주의를 기울여야 합니다.


4.2 비밀번호를 나눠서 각각 해싱함


예전에 윈도우 기반 클라이언트는 비밀번호를 LANMAN 해시 포맷으로 저장했지만, 이것은 아주 취약한 방법입니다.  7자리 7자리를 합쳐 14자리 LANMAN 비밀번호가 되는데 문제는 7자리 7자리를 각각 해싱한다는 것입니다.


앞에 전수조사 공격이 암호의 수가 늘어날수록 증가폭이 크다는걸 알 수 있었습니다. 즉 14자리를 전수조사하는 것은 7자리 7자리 전수조사하는 것보다 매우 오래 걸린다는 뜻입니다. 따라서 7자리 전수조사, 7자리 전수조사를 통해 암호를 알아내면 14자리 암호가 됩니다. 따라서 비밀번호를 나눠서 해싱하는 것은 하지 말아야 할 것 입니다.


4.3 짧은 비밀번호를 사용한 긴 키 생성


대부분 공개키나 비밀키는 비밀번호나 패스프레이즈를 통해 생성됩니다. 여기서는 비밀번호만 보겠습니다. 따라서 비밀번호 생성 과정이 전수 조사 공격을 당해 공격자가 비밀키, 공개키를 모르는데 비밀번호를 알고있는 상황이 발생합니다. 따라서 강력한 비밀번호를 사용하는 것이 중요합니다. 최소 8자리이상 사용하는 것을 권장하고 있습니다.


4.4 개인키 또는 비밀키가 제대로 저장되지 않음


Operation System을 공부하신 분들은 시스템의 메모리를 다 소모하면 가상 메모리에서는 정보를 디스크로 저장한다는 것을 아실겁니다. 이런 방식으로 키 정보를 탈취할수도 있습니다. 요즘 대부분에 벤더사들은 이러한 공격 방식을 알아 대처 했기 때문에 안심하셔두 댈것 같습니다.



5. 비전문가가 만든 암호 알고리즘 깨기


이것은 매우 간단합니다. 암호문을 분류하여 빈도분석, 암호문 길이 분석, 유사한 평문을 이용한 분석, 단문자 암호화 같은 것을 분석하여 알고리즘을 깨는 것입니다. 간단히 예를 들면 도어락에 있는 비밀번호는 누구의 생일인 경우가 있을텐데 하나씩 넣어보면 쉽게 뚫릴 것입니다.



6장에서 본 암호학은 이정도입니다. 암호학 자체는 분량이 매우 방대할 뿐만 아니라 심오하고 어렵습니다. 따라서 간단한 암호학에 대한 개요정도만 보았습니다. 하지만 암호의 중요성, 인증을 해야하는 이유등을 알기에는 부족함이 없을 것이라 생각됩니다. 


7장에서는 LocalDirector와 DistributedDirector을 보겠습니다.