사전 공격방법(dictionary attack)은 무엇인가요?
비밀키 암호 알고리즘의 키를 사용자가 원하는 값으로 생성할 경우, 적용 가능한 공격 방법입니다.
일반적인 사용자는 암호키로 자신에게 친숙한 값을 선택합니다(예 : 생일, 전화번호).
이 경우, 해당 사용자와 관련된 값을 차례대로 대입하여 키를 찾을 수 있는 확률이 매우 높습니다.
만일 이 방법을 이용하여 사용자들의 키를 알아내려는 사람은 사용자들의 키가 될 가능성이 있는 값들을 이용하여 하나의 거대한 사전을 만듭니다.
어떤 사전의 경우는 Webster 사전의 모든 단어가 입력되어 있을 정도로 많은 데이터를 가지고 있으며 실제 적용 하였을 경우, 상당히 높은 확률로 키를 알아낼 수 있습니다.
UNIX system의 경우를 살펴보면 사용자들의 패스워드는 암호화 되어 passwd라는 파일에 저장됩니다.
이 경우, 사전 공격을 할 경우, 상당수의 사용자의 패스워드를 알아낼 수 있습니다.
연구자료에 의하면 40% 이상의 확률로 사용자들의 패스워드를 알 수 있다고 되어 있습니다.
키는 어떻게 생성하나요?
공개키 암호 알고리즘의 키 또는 전자 봉투를 사용하여 문서를 암호화 할 때, 사용되는 비밀키 암호 알고리즘의 키는 난수 발생기를 작동하여 키를 생성하기 때문에 사전 공격에 대해서 어느 정도는 안전하다고 말할 수 있습니다(물론 난수 발생기가 좋다는 가정하에서입니다).
현재 인터넷에 있는 사이트 중, 일부는 패스워드를 설정할 때, 여러 제약조건을 가하고 있습니다.
예를 들면 "숫자로만 패스워드를 설정하지 마시오", "특수 문자를 2자 이상 삽입하시오"등이 이에 해당됩니다.
이러한 문구는 사용자들에게 많은 불편함을 주는 것처럼 여겨질 수 있으나 이는 사용자들의 패스워드를 보호하기 위한 사이트의 배려입니다.
실제로 이와 같이 패스워드를 설정하지 않을 경우, 사전공격에 대해 상당히 취약하게 됩니다.
따라서 패스워드를 설정할 때, 위에서 언급한 정도는 꼭 염두에 두시고 패스워드를 설정하시기 바랍니다.
키는 어떻게 보관하나요?
사전 공격에 대해서 가장 안전하게 키를 생성하는 방식은 좋은 난수 발생기를 사용하여 키를 생성하는 것입니다.
하지만 이 경우에는 사용자가 키 값을 외우기가 힘들 것입니다.
공개키 암호 알고리즘이나 전자 서명의 키와 같은 경우는 또한 키 값이 너무 길기 때문에 외우기가 힘듭니다.
이 경우 키를 별도의 도구에 보관하는 방식이 필요합니다.
키를 보관하는 방식에서는 각별한 주의가 필요합니다.
어떤 사용자가 자신의 노트에 키를 적어 놓았을 때, 그 노트를 다 사용한 다음에 노트를 버릴 수 있습니다. 이 경우, 그 노트를 발견한 사람은 사용자의 키를 찾을 확률이 매우 높아집니다.
이 경우는 아주 간단한 경우지만 이와 비슷한 방법으로 키를 찾는 방식이 실제로 많이 사용되고 있으며, 그 효용성도 의외로 높다는 사실에 주의하시기 바랍니다.
안전하게 키를 보관하는 방식은 여러 가지가 있습니다.
매우 높은 보안을 요할 경우, 키를 디스켓 또는 문서에 적은 다음 금고에 넣어 두는 방법이 있을 것입니다. 하지만 이와 같은 방법은 안전성은 높으나 일반 사용자들이 사용하기에는 곤란한 점이 많습니다.
이 경우, 키를 분산하여 보관하는 방법, 가령 키가 10자로 이루어져 있다면 각각을 다른 곳에 써서 보관하는 방법, 아니면, Secret Sharing이라는 별도의 암호 프로토콜을 사용하는 방법도 적용이 가능합니다.
최근에는 이러한 방법 이외에 스마트카드라는 별도의 도구를 사용하여 키를 저장하는 방식을 사용하기도 합니다.
1.8 암호의 응용 분야는 무엇이 있나요?
암호 알고리즘의 가장 기본적인 역할은 문서의 암호화입니다.
하지만 암호 알고리즘에 기반한 여러 종류의 암호 프로토콜들이 개발되었고, 이들을 사용하여 보다 많은 응용 분야에 적용할 수 있습니다.
대표적인 응용 분야로는 네트워크 상에서의 사용자 인증 및 접근 통제, 전자 상거래를 위한 전자 지불, 안전한 메일 교환 등이 있습니다.