'일련번호'에 해당되는 글 1건

  1. 2013.09.24 인터넷 뱅킹의 필수품인 OTP의 원리에 대한 간단한정보

 요즘 인터넷 뱅킹 보안 강화로 가장 널리 쓰이는것이 바로 OTP입니다. 몇일 뒤부터는 OTP말고 2차적인 인증이 필요하긴 합니다. 그런데 이 OTP가 어떻게 작동되길래 보안에 좋고 조금 늦게 입력해도 정상작동하게 되는걸까요?



 우선 OTP란 이름은 One Time Password의 앞글자를 따서 만든 이름입니다. 번역을 하자면 일회용 비밀번호 생성기 이죠. 기존에 많이 사용된 보안카드는 정해진 번호 36세트 정도의 번호들을 계속 재활용 하게 되는데, 이 보안카드는 복사나 스캔으로 쉽게 복제가 되고 복사해놓고 쓰는 사람들도 워낙 많다보니 보안카드가 유출되는 경우도 많아지고 보안에 헛점이 생기는것이죠, 게다가 사용자의 키입력을 가로채는 해킹의 경우에는 몇번의 보안카드 입력 번호만 누적시켜도 어느정도의 보안카드 번호를 추측하게 될 수도 있구요.


 어쨌든 기존 보안카드의 문제점을 해결하고자 비밀번호가 순간적으로 유출되어도 이후 보안에 문제가 없도록 일회용으로 바꿔버리는것이죠. 이 OTP는 비밀번호가 약 1분마다 무조건 바뀌게 됩니다. 물론 버튼을 누르면 또다시 새로운 비밀번호가 생성되긴 합니다. 이 6자리의 비밀번호는 동일한 비밀번호가 나올 가능성이 거의 없기 때문에 한번의 비밀번호 유출이 된다 하더라도 별 상관은 없습니다.


 그러면 이 OTP에서 생성되는 6자리 비밀번호는 어떻게 생겨날까요? 또한 이것을 인터넷 뱅킹에 입력하면 맞는지 안맞는지 어떻게 알까요? 어떤 분들은 이 기기가 삐삐나 핸드폰처럼 은행서버에서 지속적으로 비밀번호를 발송해주는 장치로 알고 계신분들이 있는데 그것은 아닙니다. 그냥 간단하게 이야기 하면 누구나 쉽게 가지고 다니는 단순 계산기라고 생각하면 되겠습니다.


 이 OTP(계산기)는 그냥 번호 입력버튼이 없는 계산기인것이죠. 모든 OTP마다 저마다의 일정한 공식이 내장되어있습니다. 이 각기다른 공식에다가 뒷면 일련번호와 비밀번호가 생성되는 시각을 입력하면 나오는 값이라고 생각하면 되겠습니다. 버튼을 누를때 마다 생성되는 6자리가 달라지는 이유가 입력하는 시간변수가 매번 틀려지기 때문이죠.


 은행 서버에서는 기기의 일련번호와 기기안에 내장되어있는 일정한 공식을 이미 알고있기 때문에 현재 시간만 알고 있다면 고객의 OTP에 무슨 번호가 출력되고 있는지를 통신장비 없어도 알 수 있는것이죠. 이렇게 공식과 일련번호는 가입할때 저장해두고 시각이라는 글로벌한 공식 변수를 더해서 동일한 번호가 입력되는지 확인할 수 있는것입니다.


 그런데 간혹 비밀번호가 바뀌는 순간에 비밀번호를 입력하고 아직 전송하기전에 OTP번호는 바뀌어서 새로 입력해야 하는거 아닌가 싶지만 그래도 정상처리가 가능한것을 경험한적이 많을겁니다. 이건 또 어떻게 가능한걸까요? OTP번호가 바뀌었는데 기존번호라할지라도 이미 무효한 번호인데 정상처리되는것은 보안에 문제가 있진 않은걸까요?


 그렇지 않습니다. 물론 이와 관련해서 논문을 조금 찾아봐야겠지만, 지금은 추측한 내용으로 알려드리겠습니다. 은행 서버는 고객이 언제 켰는지 버튼을 언제 눌렀는지 알 수 없기 때문에 정해진공식에다가 매시간을 넣어서 나온 번호를 전부 유효하다고 판단하고 있을겁니다. 예를들어 시간변수가 1초단위라면 1분 안에는 총 60개의 6자리 암호가 생성될것이고 이것의 유효시간을 2분씩 더해준다면 매 초마다 지난 120개의 6자리 번호가 유효하겠죠. OTP에서 1분마다 바뀐다고 한들 아직 1분의 유효기간이 더 남았기 때문에 정상처리가 되는것이죠.


 물론 이 유효시간과 시간의 변수에 대해서는 정확한것은 아니고 은행마다 틀릴 수 있습니다.


 이런 원리로 작동되다보니 기존 보안카드 보다는 좀더 강력한 보안을 유지할 수 있는것이라고 생각되네요. 이렇게 보안을 잘 유지하기 위해서는 고객 스스로도 OTP관리에 신경써야겠지만, 은행도 OTP일련번호와 공식이 저장된 서버가 해킹당하지 않도록 어마어마한 보안을 유지해야 할것 같습니다.

Posted by myeva
,