|
보안카드는 password가 변하지 않는다는 점에서 보안이 취약하다
one-time password card
미리 정해진 패스워드가 아닌, 특정한 알고리즘에 따라 수시로 생성되는 비밀번호를 이용하는 보안 시스템. 아이디어 자체는 100년도 넘은, 그리고 그만큼 검증된 기술이다.
대한민국의 경우, 금융기관의 오픈뱅킹을 사용해야 할 때 OTP 토큰이나 시각장애인 전용 점자 보안카드가 반드시 필요해서 찾게 되는 물건이기도 하다. 보안카드를 사진 찍어서 보관하는 등 허술하게 보관하는 사람도 많고, 이걸 어떻게든 빼가서 장난치려는 악의적인 사기가 많아졌기 때문.
다이렉트 뱅킹은 OTP가 필수다. 웬만한 은행들의 오픈뱅킹은 OTP를 강제하고 있으며, 보안카드는 오픈뱅킹에서 계좌 조회만 가능하다.
접속시마다 그때그때 필요한 비밀번호를 생성하여 그 번호를 통해 사용자 본인 확인을 하는 방식이다.
대개는 주로 난수 발생기에 현재 시간을 넣어 비밀번호를 생성한다. 서버와 사용자의 생성기는 서로 교류하지 않지만, 시간을 seed로 하여 같은 알고리즘으로 생성 매칭을 하므로 서로 시간이 동기화되는 것이 중요하다. seed 시간은 초단위가 아닌 특정 time window 유닛으로 작동하므로 적정 수준의 톨러런스가 있다 (서로 몇초 차이가 나도 맞춰 동작된다.). 사용자 단말기 쪽 시계가 많이 달라져서 차이가 나게 되어도 서버쪽에서 해당 단말기에 대한 seed 차이 offset 보정 기능을 갖추면 여전히 동작한다.
비밀번호가 1회용이라 노출되어도 재사용이 불가능하며, 비밀번호를 숨겨진 알고리즘을 이용하여 생성해내므로 서버와의 접속 없이도 생성이 가능하여 중간 과정에서 패킷이 유출되거나 하는 위험이 없다. 보안의 개념을 방어력에서 기동성(?)으로 바꿔버린 체계. 보통 시간 동기나 해시 체인을 사용한다. 참고로 금융기관에서 흔히 사용하는 시간 동기(Time OTP) 방식을 사용하는 OTP 토큰이 아닌, 비밀번호 생성 횟수(서버쪽은 사용 횟수)에 기반하는 Event OTP 방식 토큰을 사용하는 경우 비밀번호 생성 버튼을 신나게 누르다가 어느 순간부터 해당 OTP 토큰을 못쓰게 될 수도 있으니 주의해야 한다.
OTP 하나를 여러 은행에다가 등록해 놓았다면, OTP를 분실했다가 회수하였을 때 일일이 등록한 은행에 가서 정지를 풀어야 한다. 그리고 은행마다 다를 수 있겠지만 타행 OTP를 연결해서 쓰는데 그 OTP 유효기간이 다 되어서 갱신하게 될 일 등이 생기면 갱신 전에 OTP 등록을 해지하고 새 OTP를 다시 등록해야 하는 경우가 생길 수 있다.
접속시마다 새로 생성된 번호를 입력해야 하므로 번거로우며(그래도 보안카드보다는 훨씬 덜 번거롭다), 흔히 사용되는 시간 기반 하드웨어 OTP 토큰의 경우 내장된 시계의 품질이 좋지 않으면 내부 시계에 오차가 생길 수 있어서, 서버와 시간을 자주 동기화해 줘야 한다는 점이 단점이다. 게임에 한정된 이야기일 수 있지만, 막 점검이 끝난 게임 등 사람들이 몰려 서버의 상태가 좋지 않을 때 OTP를 이용해서 접속을 하려고 하면 비이용자의 두 배 이상의 시간이 걸리게 된다.
하지만 보안이라는 것은 귀찮음을 대가로 안전을 보장받는 것이라서, 귀찮지 않은 보안이란 이 세상에 존재하지 않는다. 물론 ActiveX처럼 귀찮으면서 안전성도 없는 것은 있지만
컴퓨터를 이용하여 OTP 토큰이 만들어낸 비밀번호를 입력하는 일을 할 경우에는 자신이 쓰는 컴퓨터의 관리를 잘 하는 것도 중요하다. PC·휴대폰용 소프트웨어 OTP를 안 쓰는 금융 거래에선 이런 일이 없지만, PC·휴대폰용 소프트웨어 OTP를 활용하는 온라인 게임의 해킹에 다음의 기법이 실제로 사용된 적도 있다.
사용자가 올바른 OTP를 입력하긴 했는데 여러가지 방법을 써서[2] 정상적인 로그인 과정을 방해한 뒤 해커의 컴퓨터로 올바르게 입력한 OTP를 보낸 후 해커의 컴퓨터에서 사용자의 OTP를 자동으로 대신 입력해서 해커가 로그인한다.
위의 방법 이외에도 미처 OTP와 연결해놓지 못한 채 잊고있는 부분에서 넥슨의 캐쉬 털이 사건같은 색다른 해킹이 발생할 수 있으므로 자기 PC의 보안을 잘 지키는 것이 최우선이며, PC방 등지의 불안한 장소에서 쓸 보안수단으로 OTP를 사용하는 것이 바람직하다. 결국 OTP 하나만 걸었다고 안심하지 말고 추가적인 보안 수단을 사용할 수 있다면 그것도 같이 사용하는 것이 좋다.
OTP 토큰의 알고리즘을 만든 곳이 해킹 당해서 한방에 모든 사용자가 노출되는 경우도 있다. OTP 토큰을 만들던 美 RSA社가 해킹을 당해서 알고리즘이 털린 적이 있었는데 나중에 해킹 당한 RSA의 알고리즘이 적용된 OTP 토큰을 사용했던 록히드 마틴이 해킹당한 적이 있었다. 이에 따라 금융 당국에서 RSA社의 알고리즘을 사용한 OTP 토큰를 무상으로 급히 교체했던 적이 있다.[3]
2.1. 하드웨어 OTP
2.1.1. 토큰형 OTp
원래의 OTP는 일회용 비밀번호를 생성할 수 있도록 제작된 OTP 토큰이란 이름의 특수 하드웨어 장치나 카드를 사용하는 형태이다. 금융기관용 OTP 토큰이 가장 많이 쓰이며, 이 외에도 블리자드 로그인용이나 정부기관용 OTP 토큰 등도 있다. 여기선 금융기관용 OTP 토큰을 중점으로 설명하기로 한다.
흔히 볼 수 있고 흔히 사용하는 금융기관용 OTP 토큰은 은행이나 증권사에서 2000~5000원[4]에 구입할 수 있다. 당연하지만 일단 한 번 OTP 토큰을 구입해 두면 금융기관별로 OTP 토큰을 다시 구매할 필요 없이 해당 금융기관에 방문하여 자신이 구입한 OTP 토큰을 등록할 수 있다. 심지어 금융 공동망으로 OTP 발급내역이 조회되어서 텔러가 "XX은행에서 받으신 OTP로 등록해 드릴까요?"라고 물어본다. 보통 금융기관이나 기타 OTP를 지급하는 곳에서는 미래테크놀러지와 바스코 OTP를 많이 주는데, 미래 OTP는 유리몸 수준의 품질과 바스코에 비해 짧은 배터리 수명으로 악명 높다.
배틀넷 2.0(월드 오브 워크래프트, 스타크래프트2, 디아블로 3,하스스톤) 로그인 전용 하드웨어 OTP 토큰인 'Battle.net 인증기'는 블리자드 홈페이지에서 7000원에 구입할 수 있다. 소프트웨어 OTP 토큰도 있으며, OTP를 사용하면 월드 오브 워크래프트에서 사용할 수 있는 '새끼 심장부 사냥개'를 선물로 준다. 단, 말 그대로 배틀넷 2.0 로그인 전용 OTP 토큰이라서 금융기관에선 사용할 수 없다.
보통 금융거래용으로 많이 쓰는 금융기관용 OTP 토큰을 잃어버리거나 배터리가 방전된 경우, OTP 토큰을 새로 구입하는 것으로 끝나는 것이 아니다. 보안상 배터리를 바꾸는 순간 OTP 토큰의 생성값(시드)이 바뀌어 버리게 설계되어 있어서 배터리 교체는 불가능하다. 보통 구입 후 2~3년 정도 이용할 수 있고, 거의 안쓰면 4년 이상 사용할 수도 있다. 그러나 OTP 토큰이 신기하거나 심심하다고 매일 시도때도 없이 OTP 토큰의 전원 버튼을 누르면 배터리가 빨리 방전된다.
금융기관용 OTP 토큰을 배터리 방전 등의 이유로 재발급하려는 경우, 은행마다 다르지만 우량 고객 등 지극히 한정적인 조건을 갖추지 않은 이상 재발급 비용이 필요하다. 인터넷으로도 타기관 OTP 등록이 가능한 은행이 있지만, 없거나 연동이 불안한 곳도 많아 은행 지점을 방문해야 하는 경우가 많다. 다른 용도의 OTP 토큰인 경우는 다를 수도 있기 때문에 해당 OTP 토큰을 사용하는 해당 기관의 설명을 참조하자.(범용이 아닌 한정용으로 발급한 경우 타 은행에 등록을 못할 수 있다.) 다만, OTP는 몇 개를 받건 상관없지만 반드시 1기관 1OTP. 이를테면 보안카드와 같이 쓴다거나 여러 개를 걸어놓고 쓰는 것은 안 된다.
하드웨어 OTP를 사용할 경우 소액의 장치 구입 비용과 유지 비용이 발생하기 때문에 OTP 토큰 구입 비용을 들이면서까지 돈과 크게 관련없는 서비스에 로그인할 필요가 없다고 생각하지만 그래도 OTP는 필요한 업체/사람을 위한 소프트웨어 OTP란 것이 있다.
2.1.2. 카드형 OTP
둥글넙적한 기존 OTP 토큰의 불편한 휴대성을 개선하여 나온 OTP 토큰으로, 신용카드처럼 생겨서 카드형 OTP라고 불린다. 금융기관용은 은행이나 증권사에서 10,000~15,000원 정도에 구입할 수 있다. 우체국은 2만원이다. 하지만 카드형 OTP라고 해서 우리가 보아왔던 플라스틱 카드처럼 얇고 잘 휘어지는 건 아니었다. 카드형 OTP는 교통카드·IC현금카드처럼 CPU와 RAM이 내장되어 있는 건 같지만, 외부 요인과 완전히 독립적인 장치라서 외부로부터 전원을 공급받는 카드와는 달리 자체 배터리가 장착되어 있고, 1회용 암호를 보여줄 디스플레이까지 장착되어 있기 때문에 폭과 너비만 신용카드 크기였지 꽤 두꺼웠다. 처음에는 흑백 패시브 LCD 액정이 달려 있었는데, 카드가 휘어지면 액정이 손상된다는 큰 문제가 있었다. 이런 이유로 초기의 카드형 OTP는 거의 사장되었다.
이런 단점을 개선하고자 디스플레이에 전자잉크를 쓴 제품이 나왔다. 두께도 신용카드와 거의 비슷할 정도로 얇아지고, 휘어지기도 잘 휘어진다. 전자잉크는 LCD에 비해서 휨에 훨씬 더 강할 뿐만 아니라 배터리 소모도 적어서 수명도 길고, 흑백 LCD보다 훨씬 더 잘 보인다는 장점도 가지고 있다.
모든 은행에서 카드형 OTP를 취급하는 것은 아니며, 일반적인 동글형보다 비싸다. 게다가 지점에 따라서는 카드형 OTP가 없을 수도 있으므로, 방문하려는 지점에 전화로 재고를 확인하고 찾아가야된다.
전자잉크를 기반으로 OTP 기능을 넣은 신용카드가 기업은행와 SC제일은행, 우리은행에서 출시되었다. NH투자증권, 케이뱅크은행에서는 체크카드로 발행된다. 이후 스마트 OTP 기반으로 OTP 기능을 넣은 신용카드도 국민카드, 신한카드에서 출시되었다. 심지어 카카오뱅크에서는 라이언 캐릭터가 그려진 OTP도 발급해준다. 발급시 라이언 스티커도 덤.
2.2. 하이브리드 OTP (스마트 OTP)
기존에 사용되던 하드웨어형 토큰은 배터리가 닳으면 사용이 불가능하고 휴대하기에도 까다롭다는 단점이 있었고, 소프트웨어형 토큰은 보안이 취약하여 은행 거래에는 부적합하다는 단점이 있었다. 하이브리드 OTP 토큰은 이 두가지 시스템을 절충하여 만든 것으로 실질적으로는 하드웨어 토큰에 가까운 방식이다. NFC를 이용하기 때문에 현재는 안드로이드 단말기에서만 이용할 수 있고, 본인 명의 USIM이 장착된 기기여야 한다는 약점이 있다. 다만 단순히 NFC만 지원하면 되므로 구글 넥서스에서도 문제 없이 쓸 수 있다.
이 방식은 은행이 고객에게 비밀번호 발생에 필요한 정보가 담긴 IC카드를 발급하고, 고객이 비밀번호가 필요할 때마다 전용 프로그램에 IC카드를 읽혀서 비밀번호를 생성하는 방식이다. 배터리의 교체가 필요없어 반영구적으로 사용이 가능하며, 기존 카드형 OTP보다 튼튼하고 저렴하지만, OTP 번호가 (인터넷에 연결된)단말기 화면에서 보여주므로 보안성이 떨어진다.[5] 또한 타행에서 사용시 별도의 코드와 앱이 필요한 것 등 사용법 또한 기존 OTP에 비하여 비교적 불편하다.
은행권에서는 스마트 OTP라고 부르며 현재 국민은행 과 신한은행[6], 산업은행, 기업은행, 케이뱅크은행 그리고 우리은행이 발급하고 있으며 타기관 OTP 등록시 국민은행, 신한은행, 산업은행, 우리은행, 하나은행, NH농협은행, 우체국, SC은행, 기업은행은 정상적으로 등록이 가능하지만 외환은행, 전북은행, 시티은행은 등록이 불가능하다.
2.3. 소프트웨어 OTP (OTP 프로그램)
외부와 완전히 독립적인 장치인 OTP 토큰과는 달리 소프트웨어 OTP는 보통 휴대폰이나 PC에 OTP 프로그램을 설치하여서 번호를 생성하는 방식을 이용하며 처음 사용할 때 최대 5000원의 비용이 발생하는 OTP 토큰과 달리 별도의 비용이 요구되지 않는 것이 보통이다.
대한민국에서 소프트웨어 OTP 토큰이 보안계의 무적 치트와 비슷한 위력을 가져온다는 것을 깨달아 본격적으로 도입된 이후로부터 대부분의 온라인 프로그램(대표적으로 게임)들의 로그인 메뉴를 살펴보면 OTP 로그인 서비스를 찾아볼 수 있다.
하지만 OTP만 걸어놓으면 보안 문제가 해결될 것 같은 희망(과 부실해지는 보안 개념)과는 다르게, 소프트웨어적인 OTP는 독립된 하드웨어 토큰에 비해 시드가 외부로 유출되기 대단히 쉽기 때문에인터넷 연결 안 된 컴퓨터 봤어? 보안상 대단히 취약하다. 따라서 금융거래에서는 PC·휴대폰용 소프트웨어 OTP 프로그램은 사용하지 않는다.
스마트폰 OTP 프로그램의 경우에는 시드가 해킹 당할 위험이 상대적으로 적다. 안드로이드 계열이라면 iOS에 비해 약간 더 신경을 써줘야 하지만, 관리만 잘해주면 대체로 안전한 편. PC OTP 프로그램의 경우엔 해킹 후 OTP 프로그램의 시드를 읽어내어 해킹한다던가 하는 위험성이 존재한다. 그러니까 PC OTP 프로그램을 쓴다면 자신의 컴퓨터를 잘 관리하자. 다른 단점으로는 비밀번호를 맞게 쳤는데도 접속이 안 되는 말도 안되는 상황도 존재한다. OTP의 불안전성에 대한 구체적인 원리를 설명하는 글@
KEB하나은행은 모바일OTP라는 이름으로 소프트웨어 OTP를 사용하고 있다.
금융권 밖에서는 구글의 OTP 앱이 잘 알려져 있으며, 이것은 공개 표준을 사용하기 때문에 호환되는 타사 생성기(Authy나 마이크로소프트 인증기 등)도 존재한다. 사이트마다 토큰을 문자열 혹은 QR코드로 등록해 두면 대개 6자리의 숫자가 생성되는 방식.
2.4. 이메일형 OTP
인터넷뱅킹에서 특정 거래를 하려고 할때 사전에 등록한 이메일로 1회용 비밀번호가 보내지는 방식이다.
일본의 금융기관에서 주로 쓰인다. メ?ル通知パスワ?ド라고도 한다.
이메일형 OTP를 쓸 수 있는 일본의 주요 금융기관 리스트
유쵸은행 - 1일 누계 금액 5만엔 이상을 자주 송금하는 계좌에 등록을 하지 않은 계좌로 즉시 송금하려면 휴대전화 이메일이거나 자주 송금하는 계좌 등록을 해야 된다. 일반적인 웹메일은 5만엔까지만 송금이 가능하고 5만엔 이상은 창구나 ATM에서 하거나 당일 즉시 송금이 아닌 송금 예약(X일 뒤)을 하거나 하드웨어형 OTP를 이용하면 제한이 없어진다. 아무래도 보이스피싱 대책인 거 같다. ゆうちょダイレクトのセキュリティを強化します