- 회원들이 추천해주신 좋은 글들을 따로 모아놓는 공간입니다.
- 추천글은 매주 자문단의 투표로 선정됩니다.
Date | 18/11/07 14:35:04수정됨 |
Name | T.Robin |
Subject | 인터넷 뱅킹, 공인인증서를 사용하지 않아도 안전할까? |
안녕하세요. T.Robin입니다. 타임라인을 보던 중에 모 회원님께서 제목과 같은 질문을 주셔서 간단하게 답변하려다가, 답변이 너무 길어져서 티타임으로 옮깁니다. 도움이 되셨으면 합니다. 공인인증서. 참 여러가지로 불편합니다. 파일도 챙겨야 되고, 패스워드도 알아야 되고, 뭐 설치도 해야 되고...... 그렇습니다. 뭐 보안때문에 그렇다고는 하는데, 정말 이게 안전한 걸까요? 이게 없으면 더 뚫리기가 쉬워지는 걸까요? 우선 결론부터 먼저 말씀드리자면, 공인인증서는 별로 의미가 없고, 기타 [보안 솔루션]들은 제 역할을 하지 못하거나 의미가 없습니다-최소한 제 의견은 그러합니다. 진짜 우려되시거든 OTP를 쓰시는게 정답입니다. 서버가 직접 뚫리는 사태가 발생하지 않는 한, 현재로서는 OTP가 가장 효율적이고 궁극적인 보안 체계입니다. 공인인증서는 공인인증서에 있는 인증서 내용으로 데이터를 암호화해서 전달하는 역할을 수행하는데, 문제는 이걸 [HTTPS가 똑같이 수행]하고 있다는 거죠. HTTP도 서버-클라이언트간 인증서를 사용해서 암호화를 수행하고 암호화된 데이터로 통신을 수행합니다. 단지 공인인증서는 부수적으로 [이걸 암호화한게 나]라는걸 제 3자를 통해 인증해주는 효과가 있습니다만, 엄밀하게 따지면 사실 이게 진짜 나인지 아니면 다른 사람인지 확실하게 구분하지는 못합니다. PC 뒤에서 공인인증서 패스워드를 입력하는 사람이 나인지, 아니면 다른 사람인지 어떻게 알 수 있을까요? 특히나 공인인증서는 PC 내부에 그냥 독립된 파일로 존재하는 녀석이라, 파일의 위치만 알면 Windows 탐색기로도 쉽게 복사나 이동이 가능합니다. 어떤 측면에서는 ID/password 외에 결재 전용의 두번째 패스워드를 입력하는 것과 하등 다를게 없습니다. 물론 금융거래에서는 해당 거래를 수행하는게 본인임을 증명하는게 매우 중요하죠. 하지만 그런 방법이라면 전통적인 해결방안도 있고, 새로운 방안도 있습니다. 난수표(은행에서 주는 속칭 '시크릿 카드')나 OTP가 그것이죠. 이건 물리적으로 들고 다녀야 되는거고, 잃어버리거나 고장나면 신고를 하게 되어있습니다. 뒤집어서 말하면 본인임을 증명하는 용도라면 이 쪽이 훨씬 더 확실할 뿐더러 더 안전합니다. 제 관점에서 보면, 공인인증서는 그냥 계륵이에요. 참고로 말씀드리면, 암호화를 사용하면 통신을 도청하거나 적용된 암호화 기술을 알아도 통신한 내용을 해석할 수 없습니다. 20세기 이후 암호화 기술의 특징 중 하나가 암호화 [알고리즘을 알아도 암호화를 풀어낼 수 없다]는 거죠. 자세한건 수학적인 내용이라 말씀드리기는 어렵습니다만, 하여간 그렇습니다(이 부분은 누가 좀 도와주셨으면......). 하지만 이게 다가 아니죠. 사실 문제가 되는 부분은 [양 끝단]입니다. 이를테면, 송수신 데이터를 암호화하기 전에 PC나 전화기, 서버 등에서 해당 정보를 가로채는 경우가 있습니다. 바이러스에 감염되었다던가, 해킹툴이 설치되었다던가 하는 경우 송수신되는 자료(송장, 결재 패스워드 등)를 가로채버릴 수 있습니다. 그러면 서버나 클라이언트(PC, 전화기 등)를 해킹해야 되는데, 서버는 일단 해킹이 매우 어렵습니다. 보안에 쏟아붓는 비용, 규모, 전문성이 일반인들이 PC 보안에 투자하는 것과는 비교가 되지 않습니다. 원래 공격은 상대의 가장 약한 부분을 자신의 가장 강력한 무기로 치는게 기본이라, 전자금융거래에 있어서는 대부분 클라이언트가 해킹의 대상이 됩니다. 가장 쉬운 방법은 PC에 해킹툴을 심어서 접속 암호 등을 가져와서 정상적인 거래인 것처럼 꾸미는 겁니다. 참고로 스마트폰 등의 경우 이런 부분에 있어서 운영체제 수준에서 별도의 대응방안이 마련되어 있습니다. 대상 프로그램이 명시적으로 허용하지 않는 한, 다른 프로그램은 내가 현재 사용중인 프로그램의 데이터를 가져올 수 없습니다. 내가 A 프로그램을 사용중인데, A 프로그램이 B 프로그램과 데이터를 연동한다고 명시적으로 선언하지 않는 이상은 B 프로그램이 백날 발악(......)해봐야 A 프로그램의 데이터를 가져올 수 있는 방법이 없다 이거죠. PC는 프로그램간 데이터 공유라는 측면에서 더 유연함을 보이는 반면, 이 유연함을 악용하는 경우가 있다는 문제가 있습니다. 그리고 대부분의 해킹툴은 이 '유연함'을 악용해서 키보드 입력(=패스워드 입력)을 훔치는 등의 방법으로 사용자의 정상적 금융거래를 흉내냅니다. 현존하는 EXE니 ActiveX니 하는 보안프로그램들은 악성 프로그램들을 감지해서 문제를 차단하는 역할을 수행합니다. 키보드 입력을 훔쳐내는 방법을 감지(키보드 보안)한다던가, 인터넷 통신 시도나 알려진 악성프로그램인지 여부를 확인(백신/antivirus)하는게 바로 이들의 역할입니다. 문제라면 얘들이 제대로 된 역할을 수행하느냐 하면 절대로 그렇지 않다는 거죠. 우스갯소리로-내지는 자조적인 목소리로-, 보안시장은 창과 방패가 있으면 항상 창이 이기는 시장이라고들 합니다. 뭐가 됐든 먼저 공격을 할 수 있는 새로운 방법이 나오고, 그 방법이 나오면 그 뒤에야 부랴부랴 대응방안이 나오는게 이 업계의 기본 사이클인거죠. 이론상으로는, 무슨 짓을 하던간에 여러분의 PC는 언젠가 뚫리게 되어 있습니다. 여러분이 입력하는 패스워드와 공인인증서 파일은 언제든지 해커에게 넘어갈 준비가 되어 있고요. 이쯤 되면, 눈치 빠르신 홍차넷의 여러 고수 여러분들께서는 제가 왜 OTP가 가장 효율적이고 궁극적인 보안 체계라고 말씀드리는지 감을 잡으셨을 겁니다. 해커가 아무리 쇼를 한들 PC 밖에서 물리적으로 존재하는 OTP에 영향을 끼칠 수 있는 방법은 기술적으로는 없습니다. PC에 연결이 되어야 뭘 하던지 말던지 하는데, OTP는 뭐 연결하는 곳도 없을 뿐더러 내장 배터리가 다되면 그냥 버리는 1회용품이잖아요. 게다가 패스워드가 1분에 한번씩 바뀌니, 패스워드를 1분에 한 번씩만 사용할 수 있게 해두면 해킹을 당해서 패스워드가 해커 손에 넘어가봐야 의미가 없어지죠. 물론 비슷한 이유로 난수표도 좋은 대응방안이긴 합니다만, 적용가능한 패스워드의 조합 수가 훨씬 적기 때문에 OTP보다 보안성이 더 떨어집니다. 요는, 시크릿 카드 사진찍어서 보내버리면 말 그대로 '개털리는' 상황이 되죠. 설이 길었습니다만(그리고 하고 싶은 말을 다 하진 못했습니다만), 전자금융보안을 이해하는데 도움이 되셨으면 합니다. * Toby님에 의해서 티타임 게시판으로부터 게시물 복사되었습니다 (2018-11-21 04:04) * 관리사유 : 추천게시판으로 복사합니다. 10
|