키
- 다른 사람은 모르지만 둘만 이해할 수 있게 메시지를 변형했다가 복원할 수 있도록 일정하게 공유된 비미을 가지고 있어야 한다. 이 비미을 키key라고 한다.
- 현대 컴퓨터 기반 암호화 체계에서 키는 어떤 알고리즘에 사용되는 큰 비밀 수이다.
- 모든 보안은 키에 달려 있다고 가정해야 한다.
- 그렇지 않고 어떤 암호 체계가 사용되었고 어떤 원리로 작동하는지 적수가 이해하고 있지 않다고 가정하는 것을 모호함에 의한 보안security by obscruity라고 하는데 혹시나 작동하더라도 결코 오래가지 않는다.
- 누군가가 자신의 암호 체계가 완벽하게 안전하다고 말하면서 어떻게 작동하는지 알려주지 않는다면, 그 체계는 안전하지 않다고 확신해도 된다.
- 암호 체계는 개방형 환경에서 개발하는 것이 필수적이다.
대칭키
- 같은 비밀키를 사용하여 메시지를 암호화하고 복호화한다.
- 이 비밀키는 메시지를 교환하고자 하는 모든 당사자에게 공유된다.
- 메시지 암호를 해독하는 유일한 방법은 무차별 대입 공격brute force attack이다.
- 만약 키가 N비트라면 키를 찾는 데 드는 노력은 대략 2^N에 비례하기 때문에 무차별 대입 공격은 보통 시간이 오래 걸린다.
DES(Data Encryption Standard, 데이터 암호화 표준)
- 2000년대 초반까지 가장 널리 사용된 비밀키 암호 알고리즘으로 1970년대 초에 IBM과 NSA가 개발하였다.
- DES는 56비트 키를 이용했는데, 컴퓨터 처리 속도가 빨라짐에 따라 56비트는 너무 짧은 길이가 되었다.
AES(Advanced Encryption Standard, 고급 암호화 표준)
- DES보다 더 긴 키를 이용하는 새로운 알고리즘이 만들어졌는데 그중 가장 널리 사용된다.
- AES는 128빝, 192비트, 256비트의 세가지 키 길이를 지원
- 어떤 프로세서가 초당 10^13번의 연산을 수행한다면 이 프로세스 100만개로는 초당 10^19번의 연산을 수행할 수 있다. 이는 연간 약 2^90번 이며 이 값은 2^128에 한 참 못 미치므로 AES-128만 돼도 무차별 대입 공격에서 안전하다.
대칭키 암호의 키분배 문제
- 통신 중인 각 당사자가 키를 알아야 하므로 키를 각자에게 저날할 안전한 방법이 있어야만 한다.