사진제공 : 한국정보인증
사진제공 : 한국정보인증

모바일 상의 거래나 온라인 뱅킹 등에서 공인인증서는 지난 몇 년간 보편적으로 가장 많이 사용되고 있다. 공인인증서는 전자서명법에 따라 거래 사실을 안전하고 공정하게 관리·보증할 수 있는 기술이며, 공인인증기관(금융결제원, 한국정보인증, 한국증권전산, 한국전자인증, 한국전산원, 한국무역정보통신)에서 발행한다. 이러한 공인인증서 사용은 기존에 전자금융감독규정에 따라 의무적으로 사용하도록 했으나, 최근 핀테크 등의 시장개방과 맞물려  공인인증서의 의무사용이 폐지되고, 단지 ‘안전한 인증방법’을 사용하도록 규정이 변경되었다. 이러한 개정의 취지는 “공인인증서를 꼭 사용할 필요는 없다.”로써 만약 새로운 기술을 개발할 의지나 능력이 없다면 공인인증서를 계속 사용해도 된다는 의미이다. 그렇다면, 공인인증서는 여전히 사용되는 기술로써 그 작동 원리와 일반사용자가 입력하는 패스워드에 대한 관리 대책을 깊이 숙지해야 할 필요가 있다.



먼저, 인증서가 어떤 매커니즘으로 작동하는지 연구해보았다. 자동차를 운전하기 위해 운전면허증이 필요하듯이, 공개키 인증서도 운전면허증과 비슷하다고 생각하면 된다. 공개키 인증서에는 이름이나 소속, 메일 주소 등의 개인 정보, 그 사람의 공개 키가 기재되고, 인증기관(Certification Authority, CA)의 개인 키로 디지털 서명이 되어 있다. 그러므로 이 인증서를 보면 해당 인증기관(CA)이 “이 공개키는 확실히 이 사람의 것이 맞음”임을 보증해주는 것이다. 이러한 매커니즘은 ITU에서 정하고 있는 X.509 규격을 따른다. 한국에서 흔히 사용하는 공인인증서를 보면 크게 소유자의 공개키 인증서 파일(.der)과 개인키 파일(.key)로 구성되어 있다. 공개키 암호화 알고리즘은 비대칭 키 방식으로 암호화시 사용하는 키와 복호화시 사용하는 키가 다르다. 공개키의 경우 타인에게 알려져도 상관이 없지만, 개인키의 기밀성은 반드시 지켜져야 한다. 공인인증서는 공인인증기관으로부터 사용자 본인이 맞음을 보증 받으려 서명 값을 생성할 때 사용자의 개인키를 사용한다. 일반적으로 암호학 분야에서 안전성을 판단할 때는 Kerckhoff의 원리를 따라 공격자는 암호 알고리즘의 방식이나, 공개키 등을 획득할 수 있는 능력이 충분히 있다고 가정해야 하고, 보안 레벨은 개인키의 안전성에만 의지해야한다. 따라서 사용자의 개인키는 공개되어서는 안되므로 평문으로 저장하지 않고 암호화하여 저장하는데 이를 PBE(Password Based Encryption)이라 한다. 이 개인키는 사용자가 필요시 다시 복호화하여 사용할 수 있어야하므로 대칭키 알고리즘을 사용하는데 이때 암호화 키로 사용되는 것이 바로 우리가 통상적으로 사용하는 ‘공인인증서 비밀번호’이다. 사용자가 입력하는 문자열에 해쉬함수를 사용해서 출력값을 얻은 뒤, 이 값을 암호화 키로 사용한다. 이때 같은 문자열이 입력되는 경우 해쉬값이 같아지는 현상을 막기 위해 Salt를 적용한다. Salt를 사용하면 패스워드에 랜덤한 값이 추가되어 키 스페이스가 늘어나고, 이 정보를 암호문과 함께 저장하여 향후 복호화시에 salt를 구분할 수 있도록 한다. 이러한 salt는 공인인증서 갱신시마다 다르게 생성되기 때문에 사용자가 동일한 비밀번호를 재사용한다 하더라도 해쉬 결과값은 다르게 도출해낸다. 결국 암호학적인 보안수준은 동일하게 유지된다고 볼 수 있다.


다만, 포렌식 관점에서 보자면 공인인증서가 저장되는 매체별로 비밀번호를 독립적으로 사용하므로 만약 인증서가 담겨있는 HDD나 USB가 유출됐을 경우에 다른 매체에 담겨있는 공인인증서의 비밀번호를 바꾸는 것만으로는 아무런 소용이 없다. 분실한 기기에 저장된 패스워드는 변경되지 않기 때문이다. 따라서 획득된 USB 공인인증서에 기존 비밀번호로 시도해보면 로그인이 될 것이다. 따라서 분실한 경우에는 즉시 인증기관에 신고하여 해당 인증서 자체를 폐기하고 재발급하도록 해야 한다. 이렇게 되면 인증서 폐지목록에 포함된 인증서에 대하여는 인증이 실패한다. 또한 사회공학적으로도 사용자가 동일한 패스워드를 지속적으로 사용하는 경우 공인인증서 외에도 다른 포털 사이트 계정이나 이메일 등에 접근해 볼 수 있는 잠재적인 여지를 해커에게 제공하게 되기 때문에 결코 안전하지 않다. 패스워드는 주기적으로 바꿔주는 것이 비교적 안전하다고 권고된다.

CPUU님의 창작활동을 응원하고 싶으세요?