제임스딘딘의
Tech & Life

개발자의 기록 노트/Algorithm

[보안] 암호화 알고리즘

제임스-딘딘 2012. 7. 18. 13:31

DES (Data Encryption Standard) ; 데이터 암호 표준


 DES는 개인키를 사용하여 데이터를 암호화하는 방법으로서 널리 사용되며, 미국 정부는 이 알고리즘을 해독하기 어렵다고 판정하고 다른 나라들에 수출하는 것을 금지하고 있다. DES에는 72,000,000,000,000,000 (72천조)개 이상의 암호 키가 사용되는 것이 가능하다. 주어진 각 메시지를 위한 키는, 이렇게 막대한 량의 키 중에서 무작위로 선택된다. 다른 개인키 암호화 방법과 마찬가지로, 송신자와 수신자 둘 모두는 동일한 개인키를 알고, 사용해야만 한다.


 DES는 각 64 비트 데이터 블록에, 56 비트 길이의 키를 적용한다. 이 과정은 여러 가지 모드에서 실행될 수 있으며, 16번의 연산이 수반된다. 비록 DES가 강력한 암호화이라고 판단되고는 있지만, 많은 회사들은 세 개의 키가 잇달아 적용되는 "트리플 DES"를 사용한다. 그렇다고 해서 DES로 암호화된 메시지가 해독될 수 없다고 말하는 것은 아니다. 1997년 초에, 다른 암호화 방식의 소유자인 RSA가 DES 메시지 해독에 10,000 달러의 상금을 걸었다. 인터넷상에서 14,000명 이상의 사용자들이 다양한 키들을 시험하는 공동 노력으로 결국 그 메시지를 해독하였는데, 가능한 72천조 개의 키 중에서 고작 18천조 개의 시험을 통해 그 키가 발견되었다. 그러나, 오늘날 DES 암호화로 발송되는 것 중, 이러한 종류의 코드 해독 노력에 영향을 받을 것 같은 메시지는 거의 없다.


 DES는 1977년에 IBM에서 발명하였으며, 미국 국방부에 의해 채택되었다. 이것은 ANSI X3.92와 X3.106 표준 및 미국 연방정부 FIPS 46과 81 표준에 정의되어 있다. 이 암호화 알고리즘이 비우호적인 국가에 의해 사용될 수 있다는 염려 때문에, 미국 정부는 암호화 소프트웨어의 수출을 막고 있다. 그러나, 이 소프트웨어의 프리버전은 BBS나 웹사이트 등에서 어렵잖게 입수할 수 있다. 이 암호화 알고리즘이 깨지지 않고 비교적 오래 남아있을 것이라는 일부 관심이 있지만, NIST는 DES를 대체하기 위한 새로운 표준이나 대안에 관한 작업이 진행중이므로 DES를 다시 인증하는 일은 없을 것이라고 지적했다. 그후 2001년에 DES를 대체하는 표준으로 AES (Advanced Encryption Standard)가 선정되었다.


AES (advanced encryption standard) ; 고급 암호 표준


 AES는, 민감하지만 비밀로 분류되지는 않은 자료들에 대해 보안을 유지하기 위해 미국 정부기관들이 사용하는 암호화 알고리즘이며, 그에 따라 민간 부문의 상업 거래용으로서 사실상의 암호화 표준으로 자리 잡을 것으로 보인다 (미군이나 그밖에 극비로 분류된 통신은 별도의 비밀 알고리즘에 의해 암호화된다).


1997년 1월에, 기존의 데이터 암호 표준, 즉 DES를 대체할 보다 강력한 알고리즘을 찾기 위한 공모 작업이 미국 상무부의 한 기관인 표준기술연구소(NIST)에 의해 시작되었다. 새로운 알고리즘이 충족해야 할 규격 요건으로는, 최소 128 비트나 192 비트 또는 256 비트 크기의 키를 지원하는 128 비트 크기의 블록 암호화를 사용한 대칭형 (암호화나 복호화를 하는데 동일한 키가 사용되는) 알고리즘으로서, 전 세계적으로 로열티 없이 사용할 수 있어야 하며, 향후 20년~30년 동안 데이터를 보호하기 위해 충분한 정도의 보안성을 제공할 것이 요구되었다. 또한, 이 알고리즘은 스마트카드 등과 같은 제한된 환경을 포함하여 하드웨어나 소프트웨어로 구현하기 쉬워야 했으며, 다양한 공격 기술에 대해서도 잘 방어할 수 있어야 했다.


전반적인 선정 과정은 대중적 조사와 평가에 완전히 공개되었으며, 이러한 투명성으로 인해 제출된 모든 설계안들에 대해 최적의 분석이 가능하였다. 1998년에 NIST는 미국 안보국을 포함, 세계의 암호화 단체에 의해 기본적인 분석을 받게 될 15개의 AES 후보작을 선정하였다. 여기에 기반을 두고 1999년 8월, NIST는 보다 심도 있는 2차 분석을 받게 될 다음의 5개 알고리즘을 선정하였다.


MARS: IBM 연구소 제출

RC6: RSA Security 제출

Rijndael: 두 명의 벨기에 암호학자 Joan Daemen와 Vincent Rijmen 공동 제출

Serpent: Ross Andersen, Eli Biham 그리고 Lars Knudsen의 공동 제출

Twofish: Counterpane의 존경받는 암호학자 Bruce Schneier를 비롯한 대규모 연구팀 제출


 

위의 다섯 개 알고리즘은 모두 ANSI C와 자바 언어를 이용, 하드웨어와 소프트웨어 중심의 시스템 모두에서, 암호화와 복호화 속도 측정, 키와 알고리즘 설정 시간, 다양한 공격에 대한 저항성 등과 같은 심도 있는 시험을 거쳤다. 그 후, 이들 알고리즘은 새로운 암호화 체계를 깨보고자 자원하는 일부 팀을 포함 세계적인 암호화 단체들에 의해 다시 한번, 자세한 분석이 이루어졌다. 그 결과, 2000년 10월 2일에 NIST는 Rijndael를 표준안으로 최종 선정하였다. 2001년 12월 6일, 미 상무부 장관은 민감하지만 비밀로 분류되지 않은 모든 문서들에 AES로서 Rijndael을 사용할 것을 규정하는 연방 정보처리 표준, 즉 FIPS 197을 공식 승인하였다.


RSA (Rivest-Shamir-Adleman)


 RSA는 1977년에 Ron Rivest, Adi Shamir와 Leonard Adleman에 의해 개발된 알고리즘을 사용하는 인터넷 암호화 및 인증 시스템이다. RSA 알고리즘은 가장 보편적으로 사용되는 암호화 및 인증 알고리즘으로서, 넷스케이프와 마이크로소프트 웹브라우저 기능의 일부로 포함된다. 이것은 또한 로터스 노츠, 인튜잇의 Quicken 등 많은 제품에 채용되어 있기도 하다. 이 암호화 시스템의 소유권은 RSA Security라는 회사가 가지고 있다. 이 회사는 알고리즘 기술들을 라이선스 해주고, 또 개발도구 등을 판매하기도 한다. 이 기술들은 기존에 이미 나와있거나 제안되어 있는 웹, 인터넷 및 컴퓨팅 표준들의 일부를 이루고 있다.


RSA 시스템의 동작원리


공개키와 개인키의 획득에 사용되는 알고리즘의 상세한 수학적 설명은 RSA 웹사이트에서 찾아볼 수 있다. 간단히 말해, 이 알고리즘은 두 개의 큰 소수 (소수는 그 숫자와 1로만 나누어지는 수이다)들의 곱과, 추가 연산을 통해 하나는 공개키를 구성하고 또하나는 개인키를 구성하는데 사용되는 두 세트의 수 체계를 유도하는 작업이 수반된다. 한번 그 키들이 만들어지면, 원래의 소수는 더 이상 중요하지 않으며, 버릴 수 있다. 공개 및 개인키 둘 모두는 암호화/복호화를 위해 필요하지만, 오직 개인키의 소유자만이 그것을 알 필요가 있다. RSA 시스템을 사용하면, 개인키는 절대로 인터넷을 통해 보내지지 않는다.


개인키는 공개키에 의해 암호화된 텍스트를 복호화하는데 사용된다. 그러므로, 내가 만약 누군가에게 메시지를 보내는 상황을 가정해 보면, 나는 중앙의 관리자로부터 수신자의 공개키를 찾은 다음, 그 공개키를 사용하여 보내는 메시지를 암호화할 수 있다. 수신자는 그것을 받아서, 자신의 개인키로 복호화하면 된다. 프라이버시를 확실하게 하기 위해 메시지를 암호화하는 것 외에도, 자신의 개인키를 사용하여 디지털 서명을 암호화해서 함께 보냄으로써, 그 메시지가 틀림없이 바로 당신에게서 온 것임을 받는 사람에게 확신시켜줄 수 있다. 메시지를 받은 사람은, 발신자의 공개키를 이용해 메시지를 복호화할 수 있다. 아래의 표가 이러한 과정을 이해하는데 도움을 줄 수 있을 것이다.



구 분누구의 어떤 키를 사용하나?
암호화된 메시지를 보냄수신자의 공개키
암호화된 서명을 보냄발신자의 개인키
암호화된 메시지를 복호화수신자의 개인키
암호화된 서명 (발신자 인증) 을 복호화발신자의 공개키