과학2013. 2. 1. 19:33

 OTP 원리가 무엇인지에 대해서 공부해 봤습니다. 최첨단 IT 개념이다 보니 웹상으로 여기저기 많이 돌아다니면서 공부해 봤지만 그 원리가 무엇인지 이해하기가 여간 어렵습니다. 물론 지금도 정확한 원리를 확실히 파악하지는 못했습니다. 정리된 것만 몇 가지 포스팅합니다. 


1. 카드형 보안카드의 보안상 취약점

 흔히 사용되는 보안카드는(뒤에 숫자가 적혀 있는 보안카드) 휴대의 불편함 때문에 사진으로 찍어서 파일로 저장하고 그것을 웹으로 올리는 등의 보안상의 취약점이 있습니다. 실제로 그 파일이 유출되면서 해킹되는 사례도 발생하였습니다. 

 


2. OTP(One Time Password) 란?

 OTP란 (One Time Password) 로서 고정된 패스워드 대신 무작위로 생성되는 일회용 패스워드를 이용하는 사용자 인증 방식이다. 보안을 강화하기 위해여 도입한 시스템으로 로그인 할 때마다 일회성 패스워드를 생성하여 동일한 패스워드가 반복해서 사용됨으로 발생하는 보안상의 취약점을 극복하기 위해 도입되었다. 



 주로 금융권에서 온라인 뱅킹(Online banking) 등의 전자 금융 거래에서 사용되며, 사용자는 일회성 비밀번호를 생성하는 하드웨어인 OTP 생성기(OPT Token)를 이용한다. 별도의 OTP 생성기를 소지해야 하는 불편함 등으로 전자 금융 거래를 제외한 인터넷 등의 광범위한 네트워크에서는 일반적으로 사용되지 않는다. 



 OTP 생성기는 버튼을 누르면 6자리의 패스워드가 나오는 방식, 매 1분마다 자동으로 서로 다른 6자리의 패스워드가 노오는 시간동기 방식, 키패드에 4자리 비밀번호를 입력하명 6자리 패스워드를 보여주는 방식등이 있다. 형태로는 소형 단말기 모양의 토큰형과 신용카드 모양의 카드형이 사용되고 있으며 최근에는 휴대폰의 범용가입자식별모듈(USIM)을 기반으로 하는 모바일 OTP의 도입이 추진되고 있다. 


3. OTP의 원리는?

 모든 경우의 OTP를 다르게 하기 위해서는 OTP 생성 시에 각 사용자에게만 할당된 비밀키를 이용하여 값을 생성해야 하고, 비밀키는 초기에 OTP 생성기를 제작할 때에 함게 생성되어 인증서버에 저장한다. 사용자의 OTP를 매회 다르게 하기 위해서는 인증정보(현재시간, 누름횟수 등)를 OTP가 생성될 대에 비밀키와 동시에 연산되도록 한다. 인증정보는 OTP 성성기와 인증서버가 동일하게 유지되기 위해서 OTP를 사용할 때마다 자동 보정되어야 한다. 

 일회용 비밀번호를 생성할 수 있는 OTP 토큰(Token)을 보고 가장 많이 받는 질문 중 하나가 어떻게 토큰이 서버와 통신을 하는 것이고, 통신을 하지 않는다면 어떻게 인증을 해주냐하는 것이다. 

 OTP는 시간을 Seed 값으로 사용하기 때문에 OTP 토큰 안에는 전자시계와 OTP 생성기가 같이 들어있다고 보면 된다. 시계에서 생성된 시간과 토큰 고유의 Secret Key를 Seed 값으로 이용해 128bit 암호화 알고리즘과 OTP 생성 알고리즘을 통해 6자리의 비밀번호를 생성하게 된다.  

 OTP에서 가장 중요한 것은 시간이다. 우리 주위에는 수많은 시계들이 있다. 그 시계들이 모두 초단위까지 정확하게 일치하지는 않지만 일정한 범위 내에서 모두 비슷한 시간을 가르키고 있다. OTP도 마찬가지로 OTP 토큰의 시간과 인증서버의 시간이 정확히 일치하지는 않는다. 하지만 일정범위 내에서는 비슷한 시간을 서로 가르키고 있을 것이다. 여기에서 말하는 일정범위란 OTP에서 사용하는 'Time Window'다. 특정한 범위의 Time Window를 설정하고 그 범위 내에서 생성된 OTP를 인증해 주는 방식을 사용하고 있는 것이다. 

 인증에 성공한 이후 서버는 인증요청을 받은 OTP가 Time Window 범위 안에 속해 인증은 해주었지만 해당 OTP의 생성 시각이 인증 서버의 시각과 다름을 확인할 수 있을 것이다. 인증 서버는 이후 인증 서버와 OTP 토큰 사이의 시간 오차를 기억했다가 다음 인증시 사용한다. (서로간의 오차를 1분 빠름으로 가정) 다음 인증 요청이 들어올 경우 서버는 인증요청을 받은 OTP 토큰이 1분이 빠름을 인지하고, 자신의 시간에 1분을 더한 후 인증 알고리즘을 적용하게 된다. 이렇듯 매번 인증 시마다 서로 간에 발생하는 오차를 보정하게 되는 것이다. 


 정리하겠습니다. OTP 생성기 작동시 컴퓨터와 인증서버와 직접적으로 무선통신하는 원리가 아닙니다. OTP 생성기에 나오는 번호는 시간, 함수, 은행의 특정 번호 등으로 조합됩니다. 보통은 시간을 이용하여 번호가 만들어지는 것이 일반적입니다. 시간이라고하는 것은 모든 서버에서 항상 같은 값을 가르킬 것입니다. 근데 OTP 생성기와 동일한 카드가 인증서버에 있다고 생각하면 이해가 편합니다. 특정시간에 나타나는 OTP 생성기와 동일한 숫자값이 인증서버에도 나타날 것입니다. 이 두 개의 번호 일치 여부가 인증 성공을 좌우합니다. 

 그렇다면 OTP 생성기의 보안상 장점은 무엇일까? 보안카드처럼 OTP 생성기는 최소한 카드의 형태로 숫자가 표시되어 있지 않고, 숫자 조합이 현재 시간에 의해서 결정되기 때문에 정해진 숫자가 안 나오는 보안상의 장점이 있습니다. 이 세상 어떤 보안 장비도 완벽한 것은 없습니다. 항상 그것을 무력화시키는 해킹 기술이 나오기 마련이죠. 보안카드처럼 일정한 숫자가 카드 뒷면에 적혀 있질 않다는 것입니다. 보안카드는 조합할 수 있는 숫자가 한정되어 있고 특히 그것이 문자로 카드 뒷면에 표시되어 있다보니 그것이 유출되었을 때 해킹이 될 수가 있습니다. 사진으로 찍어 저장하거나 웹 상으로 저장시키는 등 보안성의 취약점이 있을 수 있습니다. 물론 OTP 생성기가 범죄자들에게 유출되었을 때는 해킹이 충분히 가능하다고 생각됩니다. 그래서 OTP 생성기를 빌려주거나 보관을 소흘히 하면은 안되겠습니다. 


이번 건은 저의 전공이 아니다고 보니 포스팅하는데에 시간이 많이 걸렸습니다. ^^

원고료입니다. 밑에 추전 꾹~ 눌러주세용..ㅎ

'과학' 카테고리의 다른 글

허블 울트라 딥 필드(Hubble Ultra Deep Field)  (0) 2017.08.12
편광 마술 터널 만들기  (0) 2016.07.27
게성운(Crab nebula)  (0) 2013.01.23
Posted by 지구인