[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102153666B1 - 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법 - Google Patents

인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법 Download PDF

Info

Publication number
KR102153666B1
KR102153666B1 KR1020190061231A KR20190061231A KR102153666B1 KR 102153666 B1 KR102153666 B1 KR 102153666B1 KR 1020190061231 A KR1020190061231 A KR 1020190061231A KR 20190061231 A KR20190061231 A KR 20190061231A KR 102153666 B1 KR102153666 B1 KR 102153666B1
Authority
KR
South Korea
Prior art keywords
server
key
terminal
value
input value
Prior art date
Application number
KR1020190061231A
Other languages
English (en)
Inventor
이동성
Original Assignee
이동성
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이동성 filed Critical 이동성
Priority to KR1020190061231A priority Critical patent/KR102153666B1/ko
Application granted granted Critical
Publication of KR102153666B1 publication Critical patent/KR102153666B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Input From Keyboards Or The Like (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템 및 그 방법을 개시한다. 즉, 본 발명은 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 동적 키보드를 생성하고, 상기 생성된 동적 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 서버키의 유효성 및 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공함으로써, 키로깅과 중간자 공격에 따른 해킹을 방지할 수 있다.

Description

인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템 및 그 방법{System for preventing hacking according to key logging of authentication section and MITM and method thereof}
본 발명은 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템 및 그 방법에 관한 것으로서, 특히 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 키보드를 생성하고, 상기 생성된 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템 및 그 방법에 관한 것이다.
키로깅(Keylogging, 또는 키 스트로크 로깅(Keystroke logging))은 사용자가 키보드로 PC에 입력하는 내용을 몰래 가로채어 기록하는 행위를 나타낸다. 이러한 키로깅 방법으로는 하드웨어, 소프트웨어 등을 활용한 방법에서부터 전자적, 음향기술 등을 활용한 기법까지 다양한 키로깅 방법이 존재한다.
이러한 키로깅에 따른 해킹을 방지하기 위해 단순히 키패드의 순서를 무작위로 배열하는 방법 등이 이용되고 있으나, 여전히 사용자의 좌/우/뒤에서 해당 키패드에 입력되는 입력값을 확인할 수 있고, 또한 한장의 스크린샷과 마우스 클릭 이벤트 만으로 키 정보 유출의 가능성이 존재하고 있다.
중간자 공격(Man-in-the-middle Attack: MITM)은 장치(PC/전화)와 웹서버 사이에서 데이터 전송이 이루어지는 동안, 기술과 도구를 사용하여 공격자는 두 사이에 자신을 배치하고 데이터를 가로채는 방식이다. 대표적인 중간자 공격은 스니핑(Sniffing), 패킹 주입(Packet Injection), 세션 하이재킹(Session Hijacking), SSL 스트리핑(SSL Stripping) 등이 있다. 이러한 중간자 공격은 SSLStrip과 Port Redirect를 이용하여 사용자가 Https 보안 연결이 된 것으로 속여 중간에 계정의 키를 탈취할 수도 있다.
한국공개특허 제10-2018-0067082호 [제목: 다이얼식 가상 보안 키패드 및 이를 이용한 인증 방법 및 장치]
본 발명의 목적은 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 키보드를 생성하고, 상기 생성된 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템 및 그 방법을 제공하는 데 있다.
본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법은 미리 설정된 이벤트가 발생할 때, 단말에 의해, 키패드 형식, 입력 형식 및 단말의 식별 정보를 서버에 전송하는 단계; 상기 서버에 의해, 상기 입력 형식을 근거로 미리 설정된 크기로 구성되는 서버 키를 생성하는 단계; 상기 단말에 의해, 상기 서버로부터 전송되는 서버 키를 근거로 상기 입력 형식에 대응하여 상기 단말에 미리 저장된 키 테이블을 셔플하는 단계; 상기 단말에 의해, 상기 셔플된 키 테이블, 상기 키패드 형식 및 상기 입력 형식을 근거로 원형링 또는 원통형의 키보드를 생성하는 단계; 상기 단말에 의해, 사용자로부터 비밀번호에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 단말의 일측에 표시하는 단계; 상기 단말에 의해, 상기 단말의 일측에 표시되는 키보드에 대해서 사용자 입력에 따른 입력값을 수신하는 단계; 상기 단말에 의해, 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값을 생성하는 단계; 상기 단말에 의해, 상기 생성된 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터 및 상기 단말의 식별 정보를 상기 서버에 전송하는 단계; 상기 서버에 의해, 상기 단말로부터 전송되는 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리하는 단계; 상기 서버에 의해, 상기 수신된 단말의 식별 정보에 대응하여 상기 서버에 미리 등록된 비밀번호, 상기 서버 키 및 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값을 생성하는 단계; 상기 서버에 의해, 상기 생성된 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단하는 단계; 상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치할 때, 상기 서버에 의해, 인증이 성공하였음을 나타내는 정보를 상기 단말에 전송하는 단계; 상기 단말에 의해, 상기 서버로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신하는 단계; 상기 단말에 의해, 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력하는 단계; 및 상기 단말에 의해, 상기 서버와 연동하여, 인증 성공에 따른 추가 기능을 수행하는 단계를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 이벤트는, 상기 단말에 표시되는 특정 영역이 마우스 또는 사용자 입력에 따라 선택되는 경우, 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 마우스의 버튼이 선택되는 경우, 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 키보드 상의 미리 설정된 키가 선택되는 경우 및 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 상기 단말의 화면 일측에 표시되는 특정 영역 또는 특정 버튼이 사용자 입력에 따라 선택되는 경우 중 어느 하나를 포함하며, 상기 키패드 형식은, 상기 단말에 표시될 키패드의 모양으로 원형링 및 원통형 중 어느 하나를 포함하며, 상기 입력 형식은, 숫자 형식, 문자 형식, 특수문자 형식 및 이들의 조합 형식 중 어느 하나를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 단말에 미리 저장된 키 테이블을 셔플하는 단계는, N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 대상으로 키값을 포함하는 행, 키값을 포함하는 열, 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하는 과정; 및 상기 순차로 선택된 각각의 복수의 범위를 기준으로 미리 설정된 방향으로 미리 설정된 단위만큼 시프트하는 복수의 서브 셔플 방식에 따라 상기 서버 키를 이용하여 상기 키 테이블을 셔플하는 과정을 포함하며, 상기 N과 M은 같거나 다른 자연수이고, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다를 수 있다.
본 발명과 관련된 일 예로서 상기 키보드를 생성하는 단계는, 상기 셔플된 키 테이블에 대응하여 미리 설정된 인디케이터를 기준으로 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬하는 과정; 및 상기 순차로 정렬된 값을 상기 키패드 형식에 대응하는 원형링 또는 원통형의 키보드에 순차로 정렬하여, 상기 순차로 정렬된 값으로 구성되는 키보드를 생성하는 과정을 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하지 않을 때, 상기 서버에 의해, 인증이 실패하였음을 나타내는 정보를 상기 단말에 전송하는 단계; 상기 단말에 의해, 상기 서버로부터 전송되는 인증이 실패하였음을 나타내는 정보를 수신하는 단계; 및 상기 단말에 의해, 상기 수신된 인증이 실패하였음을 나타내는 정보를 출력하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템은 미리 설정된 이벤트가 발생할 때, 키패드 형식, 입력 형식 및 단말의 식별 정보를 상기 서버에 전송하고, 상기 전송에 응답하여 상기 서버로부터 전송되는 서버 키를 수신하고, 상기 서버 키를 근거로 상기 입력 형식에 대응하여 단말에 미리 저장된 키 테이블을 셔플하고, 상기 셔플된 키 테이블, 상기 키패드 형식 및 상기 입력 형식을 근거로 원형링 또는 원통형의 키보드를 생성하고, 사용자로부터 비밀번호에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 단말의 일측에 표시하고, 사용자 입력에 따른 입력값을 수신하고, 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값을 생성하고, 상기 생성된 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터 및 상기 단말의 식별 정보를 상기 서버에 전송하는 상기 단말; 및 상기 단말로부터 전송되는 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리하고, 상기 수신된 단말의 식별 정보에 대응하여 상기 서버에 미리 등록된 비밀번호, 상기 서버 키 및 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값을 생성하고, 상기 생성된 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단하고, 상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치할 때 인증이 성공하였음을 나타내는 정보를 상기 단말에 전송하는 서버를 포함할 수 있다.
본 발명과 관련된 일 예로서 상기 단말은, 상기 서버로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신하고, 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력하고, 상기 서버와 연동하여, 인증 성공에 따른 추가 기능을 수행할 수 있다.
본 발명은 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 동적 키보드를 생성하고, 상기 생성된 동적 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 서버키의 유효성 및 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공함으로써, 키로깅과 중간자 공격에 따른 해킹을 방지할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템의 구성을 나타낸 블록도이다.
도 2는 본 발명의 실시예에 따른 단말의 구성을 나타낸 블록도이다.
도 3 내지 도 5는 본 발명의 실시예에 따른 키 테이블의 예를 나타낸 도이다.
도 6은 본 발명의 실시예에 따른 원통형 셔플 방식의 예를 나타낸 도이다.
도 7은 본 발명의 실시예에 따른 복수의 인디케이터로 구성되는 원형링의 예를 나타낸 도이다.
도 8은 본 발명의 실시예에 따른 복수의 인디케이터로 구성되는 원통형의 예를 나타낸 도이다.
도 9 내지 도 10은 본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법을 나타낸 흐름도이다.
도 11은 본 발명의 실시예에 따른 셔플 과정의 예를 나타낸 도이다.
도 12는 본 발명의 실시예에 따른 원형링 형태의 키보드의 예를 나타낸 도이다.
도 13은 본 발명의 실시예에 따른 시프트 연산된 사용자 입력값의 생성 예를 나타낸 도이다.
본 발명에서 사용되는 기술적 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 발명에서 사용되는 기술적 용어는 본 발명에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다. 또한, 본 발명에서 사용되는 기술적인 용어가 본 발명의 사상을 정확하게 표현하지 못하는 잘못된 기술적 용어일 때에는 당업자가 올바르게 이해할 수 있는 기술적 용어로 대체되어 이해되어야 할 것이다. 또한, 본 발명에서 사용되는 일반적인 용어는 사전에 정의되어 있는 바에 따라, 또는 전후 문맥상에 따라 해석되어야 하며, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 발명에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함한다. 본 발명에서 "구성된다" 또는 "포함한다" 등의 용어는 발명에 기재된 여러 구성 요소들 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 발명에서 사용되는 제 1, 제 2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제 1 구성 요소는 제 2 구성 요소로 명명될 수 있고, 유사하게 제 2 구성 요소도 제 1 구성 요소로 명명될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 발명의 사상을 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 발명의 사상이 제한되는 것으로 해석되어서는 아니 됨을 유의해야 한다.
도 1은 본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템(10)의 구성을 나타낸 블록도이다.
도 1에 도시한 바와 같이, 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템(10)은 단말(100) 및 서버(200)로 구성된다. 도 1에 도시된 해킹 방지 시스템(10)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 1에 도시된 구성 요소보다 많은 구성 요소에 의해 해킹 방지 시스템(10)이 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 해킹 방지 시스템(10)이 구현될 수도 있다.
상기 단말(100)은 스마트 폰(Smart Phone), 휴대 단말기(Portable Terminal), 이동 단말기(Mobile Terminal), 폴더블 단말기(Foldable Terminal), 개인 정보 단말기(Personal Digital Assistant: PDA), PMP(Portable Multimedia Player) 단말기, 텔레매틱스(Telematics) 단말기, 내비게이션(Navigation) 단말기, 개인용 컴퓨터(Personal Computer), 노트북 컴퓨터, 슬레이트 PC(Slate PC), 태블릿 PC(Tablet PC), 울트라북(ultrabook), 웨어러블 디바이스(Wearable Device, 예를 들어, 워치형 단말기(Smartwatch), 글래스형 단말기(Smart Glass), HMD(Head Mounted Display) 등 포함), 와이브로(Wibro) 단말기, IPTV(Internet Protocol Television) 단말기, 스마트 TV, 디지털방송용 단말기, AVN(Audio Video Navigation) 단말기, A/V(Audio/Video) 시스템, 플렉시블 단말기(Flexible Terminal), 디지털 사이니지 장치, POS기기, ATM, KIOSK 등과 같은 다양한 단말기에 적용될 수 있다.
도 2에 도시한 바와 같이, 상기 단말(100)은 통신부(110), 저장부(120), 표시부(130), 음성 출력부(140) 및 제어부(150)로 구성된다. 도 2에 도시된 단말(100)의 구성 요소 모두가 필수 구성 요소인 것은 아니며, 도 2에 도시된 구성 요소보다 많은 구성 요소에 의해 단말(100)이 구현될 수도 있고, 그보다 적은 구성 요소에 의해서도 단말(100)이 구현될 수도 있다.
상기 통신부(110)는 유/무선 통신망을 통해 내부의 임의의 구성 요소 또는 외부의 임의의 적어도 하나의 단말기와 통신 연결한다. 이때, 상기 외부의 임의의 단말기는 상기 서버(200) 등을 포함할 수 있다. 여기서, 무선 인터넷 기술로는 무선랜(Wireless LAN: WLAN), DLNA(Digital Living Network Alliance), 와이브로(Wireless Broadband: Wibro), 와이맥스(World Interoperability for Microwave Access: Wimax), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), IEEE 802.16, 롱 텀 에볼루션(Long Term Evolution: LTE), LTE-A(Long Term Evolution-Advanced), 광대역 무선 이동 통신 서비스(Wireless Mobile Broadband Service: WMBS) 등이 있으며, 상기 통신부(110)는 상기에서 나열되지 않은 인터넷 기술까지 포함한 범위에서 적어도 하나의 무선 인터넷 기술에 따라 데이터를 송수신하게 된다. 또한, 근거리 통신 기술로는 블루투스(Bluetooth), RFID(Radio Frequency Identification), 적외선 통신(Infrared Data Association: IrDA), UWB(Ultra Wideband), 지그비(ZigBee), 인접 자장 통신(Near Field Communication: NFC), 초음파 통신(Ultra Sound Communication: USC), 가시광 통신(Visible Light Communication: VLC), 와이 파이(Wi-Fi), 와이 파이 다이렉트(Wi-Fi Direct) 등이 포함될 수 있다. 또한, 유선 통신 기술로는 전력선 통신(Power Line Communication: PLC), USB 통신, 이더넷(Ethernet), 시리얼 통신(serial communication), 광/동축 케이블 등이 포함될 수 있다.
또한, 상기 통신부(110)는 유니버설 시리얼 버스(Universal Serial Bus: USB)를 통해 임의의 단말과 정보를 상호 전송할 수 있다.
또한, 상기 통신부(110)는 이동통신을 위한 기술표준들 또는 통신방식(예를 들어, GSM(Global System for Mobile communication), CDMA(Code Division Multi Access), CDMA2000(Code Division Multi Access 2000), EV-DO(Enhanced Voice-Data Optimized or Enhanced Voice-Data Only), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 등)에 따라 구축된 이동 통신망 상에서 기지국, 상기 서버(200) 등과 무선 신호를 송수신한다.
또한, 상기 통신부(110)는 상기 제어부(150)의 제어에 의해, 상기 서버(200)로부터 전송되는 키 테이블, 서버 키(server key) 등을 수신한다.
상기 저장부(120)는 다양한 사용자 인터페이스(User Interface: UI), 그래픽 사용자 인터페이스(Graphic User Interface: GUI) 등을 저장한다.
또한, 상기 저장부(120)는 상기 단말(100)이 동작하는데 필요한 데이터와 프로그램 등을 저장한다.
즉, 상기 저장부(120)는 상기 단말(100)에서 구동되는 다수의 응용 프로그램(application program 또는 애플리케이션(application)), 단말(100)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 이러한 응용 프로그램 중 적어도 일부는 무선 통신을 통해 외부 서버로부터 다운로드 될 수 있다. 또한, 이러한 응용 프로그램 중 적어도 일부는 단말(100)의 기본적인 기능을 위하여 출고 당시부터 단말(100) 상에 존재할 수 있다. 한편, 응용 프로그램은 상기 저장부(120)에 저장되고, 단말(100)에 설치되어, 제어부(150)에 의하여 상기 단말(100)의 동작(또는 기능)을 수행하도록 구동될 수 있다.
또한, 상기 저장부(120)는 플래시 메모리 타입(Flash Memory Type), 하드 디스크 타입(Hard Disk Type), 멀티미디어 카드 마이크로 타입(Multimedia Card Micro Type), 카드 타입의 메모리(예를 들면, SD 또는 XD 메모리 등), 자기 메모리, 자기 디스크, 광디스크, 램(Random Access Memory: RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory: ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory) 중 적어도 하나의 저장매체를 포함할 수 있다. 또한, 단말(100)은 인터넷(internet)상에서 저장부(120)의 저장 기능을 수행하는 웹 스토리지(web storage)를 운영하거나, 또는 상기 웹 스토리지와 관련되어 동작할 수도 있다.
또한, 상기 저장부(120)는 상기 제어부(150)의 제어에 의해 상기 수신된 키 테이블, 서버 키 등을 저장한다.
상기 표시부(또는 디스플레이부)(130)는 상기 제어부(150)의 제어에 의해 상기 저장부(120)에 저장된 사용자 인터페이스 및/또는 그래픽 사용자 인터페이스를 이용하여 다양한 메뉴 화면 등과 같은 다양한 콘텐츠를 표시할 수 있다. 여기서, 상기 표시부(130)에 표시되는 콘텐츠는 다양한 텍스트 또는 이미지 데이터(각종 정보 데이터 포함)와 아이콘, 리스트 메뉴, 콤보 박스 등의 데이터를 포함하는 메뉴 화면 등을 포함한다. 또한, 상기 표시부(130)는 터치 스크린 일 수 있다.
또한, 상기 표시부(130)는 액정 디스플레이(Liquid Crystal Display: LCD), 박막 트랜지스터 액정 디스플레이(Thin Film Transistor-Liquid Crystal Display: TFT LCD), 유기 발광 다이오드(Organic Light-Emitting Diode: OLED), 플렉시블 디스플레이(Flexible Display), 3차원 디스플레이(3D Display), 전자잉크 디스플레이(e-ink display), LED(Light Emitting Diode) 중에서 적어도 하나를 포함할 수 있다.
또한, 상기 표시부(130)는 상기 제어부(150)의 제어에 의해 상기 수신된 키 테이블, 서버 키 등을 표시한다.
상기 음성 출력부(140)는 상기 제어부(150)에 의해 소정 신호 처리된 신호에 포함된 음성 정보를 출력한다. 여기서, 상기 음성 출력부(140)에는 리시버(receiver), 스피커(speaker), 버저(buzzer) 등이 포함될 수 있다.
또한, 상기 음성 출력부(140)는 상기 제어부(150)에 의해 생성된 안내 음성을 출력한다.
또한, 상기 음성 출력부(140)는 상기 제어부(150)의 제어에 의해 상기 수신된 키 테이블, 서버 키 등에 대응하는 음성 정보(또는 음향 효과)를 출력한다.
상기 제어부(controller, 또는 MCU(microcontroller unit)(150)는 상기 단말(100)의 전반적인 제어 기능을 실행한다.
또한, 상기 제어부(150)는 상기 저장부(120)에 저장된 프로그램 및 데이터를 이용하여 단말(100)의 전반적인 제어 기능을 실행한다. 상기 제어부(150)는 RAM, ROM, CPU, GPU, 버스를 포함할 수 있으며, RAM, ROM, CPU, GPU 등은 버스를 통해 서로 연결될 수 있다. CPU는 상기 저장부(120)에 액세스하여, 상기 저장부(120)에 저장된 O/S를 이용하여 부팅을 수행할 수 있으며, 상기 저장부(120)에 저장된 각종 프로그램, 콘텐츠, 데이터 등을 이용하여 다양한 동작을 수행할 수 있다.
또한, 상기 제어부(150)는 상기 서버(200)와의 연동에 의해, 상기 서버(200)에서 제공하는 전용 앱 및/또는 웹 사이트를 통해 해당 서버(200)에서 제공하는 서비스(또는 콘텐츠)를 제공받기 위한 사용자로 회원 가입하며, 개인 정보 등을 상기 서버(200)에 등록한다.
또한, 상기 제어부(150)는 해당 단말(100)의 사용자가 가입한 SNS 계정 정보를 이용하여 상기 서버(200)에 사용자로 회원 가입할 수도 있다. 여기서, 상기 SNS 계정은 페이스북, 트위터, 카카오 스토리 등과 관련한 정보일 수 있다. 이때, 콘텐츠를 제작하는 사용자와 콘텐츠를 이용하는 사용자에 따라, 상기 전용 앱은 서로 다른 사용자 인터페이스로 구성될 수 있다.
또한, 회원 가입 절차 수행 시, 상기 제어부(150)는 본인 인증 수단(예를 들어 이동 전화, 신용카드, 아이핀 등 포함)을 통한 인증 기능을 완료해야 상기 서버(200)에 대한 회원 가입 절차를 정상적으로 완료할 수 있다.
또한, 회원 가입이 완료된 후, 상기 제어부(150)는 상기 서버(200)에서 제공하는 서비스를 이용하기 위해서, 상기 서버(200)로부터 제공되는 전용 앱(또는 애플리케이션/응용 프로그램/특정 앱)을 해당 단말(100)에 설치한다. 이때, 상기 전용 앱은 상기 서버(200)에서 제공되는 서비스(또는 콘텐츠)를 제공받기 위한 앱일 수 있다.
또한, 비밀번호 입력 등을 위해서 미리 설정된 이벤트가 발생하는 경우, 상기 제어부(150)는 키패드 형식, 입력 형식, 단말(100)의 식별 정보 등을 상기 통신부(110)를 통해 상기 서버(200)에 전송한다. 여기서, 상기 이벤트는 표시부(130)에 표시되는 특정 영역이 마우스(미도시) 또는 사용자 입력(또는 터치)에 따라 클릭(또는 선택/터치)되는 경우, 표시부(130)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 마우스의 좌측 버튼/우측 버튼/휠 버튼 중 어느 하나의 버튼이 클릭(또는 선택)되는 경우, 표시부(130)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 키보드(미도시) 상의 미리 설정된 키(또는 복수의 키 조합)가 클릭/선택되는 경우, 표시부(130)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 표시부(130)의 화면 일측에 표시되는 특정 영역 또는 특정 버튼(또는 특정 메뉴/항목)이 사용자 입력(또는 터치)에 따라 선택(또는 터치)되는 경우 등을 포함한다. 또한, 상기 키패드 형식은 사용자 입력에 따라 선택되거나 또는 미리 설정된 상태이며, 상기 표시부(130)에 표시될 키패드의 모양(또는 키패드와 관련한 사용자 인터페이스/그래픽 사용자 인터페이스)으로 원형링, 원통형(또는 슬롯머신의 원통 릴) 등을 포함한다. 또한, 상기 입력 형식은 사용자 입력에 따라 선택되거나 또는 미리 설정된 상태이며, 상기 키패드에 표시될 숫자, 문자, 특수문자(또는 기호) 등의 형식을 지정하기 위한 것으로, 숫자 형식, 문자 형식, 특수문자 형식, 이들의 조합 형식 등을 포함한다. 또한, 상기 단말(100)의 식별 정보는 MDN(Mobile Directory Number), 모바일 IP, 모바일 MAC, Sim(subscriber identity module: 가입자 식별 모듈) 카드 고유정보, 시리얼번호 등을 포함한다.
또한, 상기 제어부(150)는 앞서 전송된 키패드 형식, 입력 형식 등에 응답하여 상기 서버(200)로부터 전송되는 서버 키를 상기 통신부(110)를 통해 수신한다.
또한, 상기 제어부(150)는 상기 수신된 서버 키를 근거로 상기 입력 형식에 대응하여 상기 저장부(120)에 미리 저장된(또는 등록된) 키 테이블을 셔플한다. 여기서, 상기 키 테이블은 상기 단말(100)과 상기 서버(200)에서 동일하게 저장(또는 관리/유지)된 상태일 수 있으며, 도 3에 도시된 바와 같은 4×4 형태의 숫자만으로 이루어진 키 테이블, 도 4에 도시된 바와 같은 6×6 형태의 문자만으로 이루어진 키 테이블, 특수문자만으로 이루어진 키 테이블, 숫자와 문자와 특수문자 간의 조합으로 이루어진 키 테이블(예를 들어 도 5에 도시된 바와 같은 숫자와 영문 소문자의 조합으로 이루어진 키 테이블) 등을 포함한다. 이때, 상기 키 테이블에 대한 셔플 방식은 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 복수 단계에 걸쳐 셔플 기능을 수행한다. 여기서, 상기 N과 M은 같거나 다를 수 있고 자연수이며, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다를 수 있다.
즉, 상기 제어부(150)는 상기 입력 형식에 대응하여 상기 저장부(120)에 미리 저장된 키 테이블에서 상기 수신된 미리 설정된 크기의 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자), 두 번째 키값, 세 번째 키값 등에 대해서 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플을 수행하여 최종 셔플된 키 테이블을 생성(또는 준비)한다. 여기서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 대상으로, 키값(또는 식별자)을 포함하는 행(row), 키값을 포함하는 열(column), 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선(예를 들어 1시 방향에서 7시 방향으로의 대각선, 11시 방향에서 5시 방향으로의 대각선 등 포함) 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 각각의 복수의 범위를 기준으로 미리 설정된 방향(예를 들어 상/하/좌/우 등 포함)으로 미리 설정된 단위(또는 크기)만큼 시프트(또는 대각선인 경우 대각선 범위를 기준으로 좌/우 대칭 교환)하는 복수의 서브 셔플 방식으로 구성하며, 상기 순차로 선택된 복수의 서브 셔플 방식에 따라 상기 서버 키를 이용하여 상기 키 테이블을 셔플하는데 사용된다.
또한, 원통형(또는 슬롯머신의 원통 릴)의 경우, 도 6에 도시된 바와 같이, 상기 제어부(150)는 복수의 인덱스(610)(예를 들어 1, 2, 3, 4)에 대해서 앞선 미리 순서가 설정된 셔플 방식에 따라 각각 셔플을 수행한다.
즉, 상기 제어부(150)는 인덱스 1에 포함된 0 ~ 9까지의 숫자에 대해서 미리 순서가 설정된 제 1 셔플 방식에 따라 셔플을 수행하고, 인덱스 2에 포함된 A ~ M까지의 영문 대문자에 대해서 미리 순서가 설정된 제 2 셔플 방식에 따라 셔플을 수행하고, 인덱스 3에 포함된 N ~ Z까지의 영문 대문자에 대해서 미리 순서가 설정된 제 3 셔플 방식에 따라 셔플을 수행하고, 인덱스 4에 포함된 복수의 특수문자(예를 들어 !, @, #, $, %, ^, &, *, (, ), <, >, ?)에 대해서 미리 순서가 설정된 제 4 셔플 방식에 따라 셔플을 수행한다.
또한, 상기 원통형의 경우, 상기 도 6에 도시된 셔플된 키 테이블 중에서 특정 부분(620)이 사용자 입력을 위한 화면으로 상기 표시부(130)에 표시되며, 사용자 제어에 따라 상기 원통이 상/하 또는 좌/우로 회전함에 따라 상기 셔플된 키 테이블 중 다른 부분이 사용자 입력을 위한 화면으로 상기 표시부(130)에 표시될 수 있다.
이와 같이, 상기 제어부(150)는 상기 저장부(120)에 저장된 키 테이블을 대상으로 상기 서버 키에 대응하여 미리 순서가 설정된 복수의 서브 셔플 방식에 따라 순차로 서브 셔플을 수행하여, 최종적으로 셔플된 키 테이블을 생성할 수 있다.
또한, 상기 제어부(150)는 상기 셔플된 키 테이블, 상기 키패드 형식, 상기 입력 형식 등을 근거로 원형링, 원통형 등의 다양한 형태의 키보드를 생성한다.
즉, 상기 제어부(150)는 상기 셔플된 키 테이블에 대응하여 미리 설정된 인디케이터(또는 상기 N×M 행렬에서 미리 설정된 기준 위치)를 기준으로 상기 셔플된 키 테이블에 포함된 값(예를 들어 숫자, 문자, 특수문자 또는 이들 간의 조합)을 순차로 정렬한다.
또한, 상기 제어부(150)는 상기 순차로 정렬된 값을 상기 키패드 형식에 대응하는 원형링 또는 원통형의 키보드에 순차로 정렬(또는 배치)하여, 상기 순차로 정렬된 값으로 구성되는 키보드를 생성한다.
또한, 상기 제어부(150)는 사용자로부터 비밀번호 등에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 표시부(130)의 일측에 표시한다.
또한, 상기 제어부(150)는 상기 표시부(130)의 일측에 표시되는 키보드에 대해서 사용자 입력(또는 사용자 터치/제어)에 따른 입력값을 수신한다. 여기서, 상기 입력값은 숫자, 문자, 특수문자 및 이들의 조합에 따른 적어도 하나 이상의 데이터(또는 키(key))로 구성될 수 있다.
또한, 원통형(또는 슬롯머신의 원통 릴)의 경우, 상기 표시부(130)의 일측에 표시되는 원통형의 키보드에서 일정 방향으로 회전하는 원통 내의 특정 영역이 사용자의 손가락이나 마우스에 의해 포커스된 영역(또는 부분)에서 상기 원통의 회전 방향인 일정 방향과 다른 방향으로의 방향 전환이 일어나는 경우, 상기 제어부(150)는 해당 손가락이나 마우스에 의해 포커스된 영역에 대응하는 값을 입력값으로 수신할 수 있다.
예를 들어, 상기 표시부(130)의 일측에서 원통형 키보드가 위에서 아래쪽으로 회전하도록 설정되어 있고, 상기 제 1 인덱스에 대응하는 숫자 '3'이 터치된(또는 포커스된) 상태에서 사용자 터치에 따라 상기 위에서 아래쪽으로의 회전 방향과 다른 좌측에서 우측으로의 방향 전환(또는 아래쪽에서 위쪽으로의 방향 전환)이 발생할 때, 상기 제어부(150)는 상기 방향 전환이 발생한 시점에 대응하여 터치된 상태의 숫자 '3'을 제 1 입력값으로 수신한다.
또한, 연속하여 상기 제 2 인덱스에 대응하는 영문 대문자 'E'가 터치된 상태에서 사용자 터치에 따라 상기 위에서 아래쪽으로의 회전 방향과 다른 좌측에서 우측으로의 방향 전환(또는 아래쪽에서 위쪽으로의 방향 전환)이 발생할 때, 상기 제어부(150)는 상기 방향 전환이 발생한 시점에 대응하여 터치된 상태의 영문 대문자 'E'를 제 2 입력값으로 수신한다.
이와 같이, 상기 제어부(150)는 상기 표시부(130)에 표시되는 원통형 키보드에서 일정 영역이 터치된 상태(또는 포커스된 상태)에서 상기 원통형 키보드가 회전하는 미리 설정된 방향과 다른 방향으로의 방향 전환이 발생하는 경우, 해당 방향 전환이 발생하는 시점에서 터치된 상태(또는 포커스된 상태)의 일정 영역에 대응하는 숫자, 문자, 특수문자 등을 입력값으로 수신할 수 있다.
또한, 본 발명의 실시예에서는 상기 인디케이터가 1개인 경우에 한해 설명하고 있으나, 이에 한정되는 것은 아니며, 상기 인디케이터는 복수일 수도 있다.
즉, 도 7에 도시된 바와 같이, 원형링의 키보드에 대해서, 상기 제어부(150)는 복수의 인디케이터(예를 들어 a, b, c, d)를 포함할 수 있다.
예를 들어, 상기 도 7에 도시된 바와 같이, 원형링의 키보드로 입력값을 수신하는 상태에서, 사용자 터치에 따라 상기 도 7에 도시된 상태로 설정되는 경우, 상기 제어부(150)는 상기 a 인디케이터에 대응하는 6, b 인디케이터에 대응하는 4, c 인디케이터에 대응하는 9 및 d 인디케이터에 대응하는 1에 해당하는 '6491'을 입력값으로 수신할 수 있다.
다른 예를 들어, 상기 도 7에 도시된 바와 같이, 원형링의 키보드로 입력값을 수신하는 상태에서, 사용자 터치에 따라 상기 도 7에 도시된 상태로 설정되는 경우, 상기 제어부(150)는 미리 설정된 a 인디케이터에 대응하는 6과 d 인디케이터에 대응하는 1에 해당하는 '61'을 입력값으로 수신할 수도 있다.
또한, 도 8에 도시된 바와 같이, 원통형의 키보드에 대해서, 상기 제어부(150)는 복수의 인디케이터(예를 들어 a, b, c, d, e, f)를 포함할 수 있다.
예를 들어, 상기 도 8에 도시된 바와 같이, 원통형의 키보드로 입력값을 수신하는 상태에서, 사용자 터치에 따라 상기 도 8에 도시된 상태로 설정되는 경우, 상기 제어부(150)는 미리 설정된 a-d 라인 상에서 제 1 인덱스의 숫자 '2'가 선택된 상태에서 상기 원통형 키보드가 회전하는 제 1 방향(예를 들어 위에서 아래쪽 방향)과 반대되는 제 2 방향(예를 들어 아래쪽에서 위쪽 방향)으로의 방향 전환이 발생할 때 상기 선택된 제 1 인덱스의 숫자 '2'를 제 1 입력값으로 수신하고, 제 2 인덱스의 영문 대문자 'C'가 선택된 상태에서 상기 제 2 방향으로의 방향 전환이 발생할 때 상기 선택된 제 2 인덱스의 영문 대문자 'C'를 제 2 입력값으로 수신하고, 제 3 인덱스의 영문 대문자 'P'가 선택된 상태에서 상기 제 2 방향으로의 방향 전환이 발생할 때 상기 선택된 제 3 인덱스의 영문 대문자 'P'를 제 3 입력값으로 수신하고, 제 4 인덱스의 특수문자 '#'가 선택된 상태에서 상기 제 2 방향으로의 방향 전환이 발생할 때 상기 선택된 제 4 인덱스의 특수문자 '#'를 제 4 입력값으로 수신하여, 상기 수신된 제 1 입력값 내지 제 4 입력값을 근거로 전체 입력값(예를 들어 2CP#)을 수신할 수 있다.
이와 같이, 상기 단말(100)에 표시되는 키보드 및 그에 따른 입력값을 다른 사용자가 어깨너머로 보거나 감시를 하더라도, 어느 인디케이터를 기준으로 입력값을 수신하는지 등을 확인할 수 없게 된다.
또한, 이와 같이, 상기 단말(100)에서 표시되는 키보드에 복수의 인디케이터가 포함된 경우, 상기 단말(100)은 상기 복수의 인디케이터 중에서 미리 설정된 적어도 하나의 인디케이터에 대응하는 적어도 하나의 값을 입력값으로 수신할 수 있다.
또한, 상기 제어부(150)는 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값(또는 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값)을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값(또는 사용자 입력값)을 생성(또는 산출)한다. 여기서, 상기 시프트 연산은 상기 입력값에 따라 미리 설정된 방향(예를 들어 우측 방향, 좌측 방향 등 포함)으로의 시프트 연산일 수 있다.
또한, 상기 제어부(150)는 상기 생성된(또는 산출된) 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터(또는 패킷), 상기 단말(100)의 식별 정보 등을 상기 통신부(110)를 통해 상기 서버(200)에 전송한다.
이때, 상기 제어부(150)는 상기 서버 키에 포함된 복수의 숫자, 문자, 특수문자 등을 미리 설정된 비트수(예를 들어 4비트, 8비트 등 포함)의 0과 1의 조합으로 구성되는 2진수로 각각 변환하고, 상기 2진수로 변환된 서버 키와 상기 생성된 시프트 연산된 사용자 입력값을 조합하여 바이너리 형태의 상기 데이터를 생성할 수도 있다. 또한, 상기 제어부(150)는 상기 생성된 바이너리 형태의 데이터, 상기 단말(100)의 식별 정보 등을 상기 통신부(110)를 통해 상기 서버(200)에 전송할 수도 있다.
여기서, 상기 제어부(150)는 상기 생성된(또는 산출된) 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터(또는 패킷), 상기 단말(100)의 식별 정보 등을 미리 설정된 암호화 방식을 통해 암호화하여, 암호화된 디지털 데이터를 생성한다. 또한, 상기 제어부(150)는 상기 생성된 디지털 데이터를 상기 통신부(110)를 통해 상기 서버(200)에 전송할 수도 있다. 이때, 상기 암호화 방식은 다양한 대칭키 암호화 방식, 비대칭키 암호화 방식 등을 포함할 수 있다.
상기 서버(200)에서 생성된 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하지 않은 경우, 상기 제어부(150)는 앞서 전송된 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 실패하였음을 나타내는 정보를 상기 통신부(110)를 통해 수신한다.
또한, 상기 제어부(150)는 상기 수신된 인증이 실패하였음을 나타내는 정보를 상기 표시부(130) 및/또는 상기 음성 출력부(140)를 통해 출력한다.
또한, 상기 서버(200)에서 생성된 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하는 경우, 상기 제어부(150)는 앞서 전송된 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 성공하였음을 나타내는 정보를 상기 통신부(110)를 통해 수신한다.
또한, 상기 제어부(150)는 상기 수신된 인증이 성공하였음을 나타내는 정보를 상기 표시부(130) 및/또는 상기 음성 출력부(140)를 통해 출력한다.
또한, 상기 제어부(150)는 상기 서버(200)와 연동하여 인증 성공에 따른 추가 기능을 수행한다.
또한, 상기 제어부(150)는 추가 기능 수행에 따른 결과 정보를 상기 표시부(130) 및/또는 상기 음성 출력부(140)를 통해 출력한다.
본 발명의 실시예에서는 상기 단말(100)에서 웹 사이트 형태로 상기 서버(200)에서 제공하는 서비스(또는 콘텐츠/인증 기능 수행) 기능 등을 제공하는 것을 설명하고 있으나, 이에 한정되는 것은 아니며, 상기 웹 사이트 이외에도 상기 서버(200)에서 제공하는 전용 앱(또는 특정 앱) 등을 통해 상기 서비스 기능 등을 제공할 수도 있다.
상기 서버(200)는 상기 단말(100) 등과 통신한다.
또한, 상기 서버(200)는 상기 단말(100)을 구성하는 상기 통신부(110), 상기 저장부(120), 상기 표시부(130), 상기 음성 출력부(140), 상기 제어부(150)에 대응하는 각 구성 요소를 포함하여 구성할 수 있다.
또한, 상기 서버(200)는 상기 단말(100) 등의 사용자에 대한 회원 가입 절차 등을 수행한다.
또한, 상기 서버(200)는 상기 단말(100) 등의 사용자와 관련한 개인 정보를 등록한다. 이때, 상기 서버(200)는 해당 개인 정보 등을 DB 서버(미도시)에 등록(또는 관리)할 수 있다.
또한, 상기 서버(200)는 상기 단말(100) 등의 사용자에 대한 회원 관리 기능을 수행한다.
또한, 상기 서버(200)는 해당 서버(200)에서 관리하는 다양한 서비스(또는 콘텐츠) 등을 제공하는 전용 앱 및/또는 웹 사이트를 상기 단말(100) 등에 제공한다.
또한, 상기 서버(200)는 상기 단말(100)로부터 전송되는 키패드 형식, 입력 형식, 단말(100)의 식별 정보 등을 수신한다.
또한, 상기 서버(200)는 상기 입력 형식을 근거로 고윳값을 가지며, 미리 설정된 크기로 구성되는 서버 키를 생성한다.
이때, 상기 서버(200)는 미리 설정된 단위(또는 크기)의 숫자 범위, 문자 범위, 특수문자 범위 및 이들 간의 조합 중에서 상기 입력 형식을 근거로 랜덤하게 어느 하나를 선택하고, 상기 랜덤하게 선택된 어느 하나를 상기 서버 키로 생성할 수도 있다. 여기서, 상기 서버(200)는 입력 형식별로 미리 설정된 단위의 숫자 범위, 미리 설정된 단위의 문자 범위, 미리 설정된 단위의 특수문자 범위, 미리 설정된 단위의 숫자와 문자와 특수문자의 조합에 의한 범위 등을 관리할 수 있다.
또한, 상기 서버(200)는 상기 생성된 서버 키를 상기 단말(100)에 전송한다.
또한, 상기 서버(200)는 상기 단말(100)로부터 전송되는 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터, 단말(100)의 식별 정보 등을 수신한다.
여기서, 상기 서버(200)에서 상기 단말(100)로부터 전송되는 암호화된 디지털 데이터를 수신하는 경우, 상기 서버(200)는 상기 수신된 암호화된 디지털 데이터를 미리 설정된 복호화 방식을 통해 복호화하여, 상기 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터, 상기 단말(100)의 식별 정보 등을 확인한다.
또한, 상기 서버(200)는 상기 수신된 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리한다. 이때, 상기 서버 키가 2진수로 변환되어 상기 데이터에 포함된 경우, 상기 서버(200)는 미리 설정된 데이터 프레임 형태에 따라 미리 설정된 비트의 수를 상기 서버 키로 확인하고, 나머지 비트의 수를 상기 t시프트 연산된 사용자 입력값으로 확인할 수 있다.
또한, 상기 서버(200)는 상기 수신된 단말(100)의 식별 정보에 대응하여 서버(200)에 미리 등록된 비밀번호, 상기 서버 키, 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값 등을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값(또는 비교 대상 입력값)을 생성(또는 산출)한다. 여기서, 상기 시프트 연산은 미리 설정된 방향(예를 들어 우측 방향, 좌측 방향 등 포함)으로의 시프트 연산일 수 있다.
즉, 상기 서버(200)는 상기 생성된 서버 키를 근거로 상기 수신된 입력 형식에 대응하여 해당 서버(200)에 미리 저장된(또는 등록된) 키 테이블을 셔플한다. 여기서, 상기 키 테이블은 상기 단말(100)과 상기 서버(200)에서 동일하게 저장(또는 관리/유지)된 상태일 수 있으며, 숫자만으로 이루어진 키 테이블, 문자만으로 이루어진 키 테이블, 특수문자만으로 이루어진 키 테이블, 숫자와 문자와 특수문자 간의 조합으로 이루어진 키 테이블 등을 포함한다. 이때, 상기 키 테이블에 대한 셔플 방식은 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 복수 단계에 걸쳐 셔플 기능을 수행한다. 여기서, 상기 N과 M은 같거나 다를 수 있고 자연수이며, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다를 수 있다.
이와 같이, 상기 서버(200)는 상기 입력 형식에 대응하여 미리 저장된 키 테이블에서 상기 미리 설정된 크기의 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자), 두 번째 키값, 세 번째 키값 등에 대해서 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플을 수행하여 최종 셔플된 키 테이블을 생성(또는 준비)한다. 여기서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 대상으로, 키값(또는 식별자)을 포함하는 행, 키값을 포함하는 열, 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선(예를 들어 1시 방향에서 7시 방향으로의 대각선, 11시 방향에서 5시 방향으로의 대각선 등 포함) 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 복수의 범위를 기준으로 미리 설정된 방향(예를 들어 상/하/좌/우 등 포함)으로 미리 설정된 단위(또는 크기)만큼 시프트(또는 대각선인 경우 대각선 범위를 기준으로 좌/우 대칭 교환)하는 복수의 서브 셔플 방식으로 구성하며, 상기 순차로 선택된 복수의 서브 셔플 방식에 따라 상기 서버 키를 이용하여 상기 키 테이블을 셔플하는데 사용된다.
또한, 상기 서버(200)는 상기 수신된 단말(100)의 식별 정보에 대응하여 서버(200)에 미리 등록된 비밀번호, 상기 서버 키 및 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여 시프트 연산된 비교 대상 입력값(또는 비교 대상 입력값)을 생성(또는 산출)한다.
이와 같이, 상기 서버(200)는 상기 단말(100)에서 사용자 입력에 따른 입력값에 대해서 상기 서버 키와 상기 키보드에 대응하는 순차로 정렬된 값(또는 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값)을 이용하여 상기 단말(100) 및 상기 서버(200)에서 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값을 생성하는 방식을 적용하여, 상기 서버(200)에 미리 저장된 해당 단말(100)의 식별 정보에 대응하는 비밀번호에 대해서 상기 서버 키와 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값을 이용하여 상기 시프트 연산을 수행하여 시프트 연산된 비교 대상 입력값을 생성할 수 있다.
또한, 상기 서버(200)는 상기 생성된(또는 산출된) 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단(또는 확인)한다.
즉, 상기 서버(200)는 상기 서버(200)에 저장된 해당 단말(100)의 식별 정보에 대응하는 비밀번호를 근거로 생성된 시프트 연산된 비교 대상 입력값과 상기 단말(100)에서 사용자 입력에 따른 입력값을 근거로 생성된 시프트 연산된 사용자 입력값이 일치하는지 여부를 판단한다.
상기 판단 결과(또는 상기 확인 결과), 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하지 않은 경우, 상기 서버(200)는 인증이 실패하였음을 나타내는 정보를 상기 단말(100)에 전송한다.
또한, 상기 판단 결과(또는 상기 확인 결과), 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하는 경우, 상기 서버(200)는 인증이 성공하였음을 나타내는 정보를 상기 단말(100)에 전송한다.
또한, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하는 경우, 상기 서버(200)는 상기 단말(100)과 연동하여 인증 성공에 따른 추가 기능을 수행한다.
또한, 상기 서버(200)는 추가 기능 수행 결과를 상기 단말(100)에 제공한다.
이와 같이, 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 동적 키보드를 생성하고, 상기 생성된 동적 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 서버키의 유효성 및 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공할 수 있다.
이하에서는, 본 발명에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법을 도 1 내지 도 13을 참조하여 상세히 설명한다.
도 9 내지 도 10은 본 발명의 실시예에 따른 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법을 나타낸 흐름도이다.
먼저, 비밀번호 입력 등을 위해서 미리 설정된 이벤트가 발생하는 경우, 단말(100)은 키패드 형식, 입력 형식, 단말(100)의 식별 정보 등을 서버(200)에 전송한다. 여기서, 상기 이벤트는 단말(100)에 표시되는 특정 영역이 마우스(미도시) 또는 사용자 입력(또는 터치)에 따라 클릭(또는 선택/터치)되는 경우, 단말(100)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 마우스의 좌측 버튼/우측 버튼/휠 버튼 중 어느 하나의 버튼이 클릭(또는 선택)되는 경우, 단말(100)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 키보드(미도시) 상의 미리 설정된 키(또는 복수의 키 조합)가 클릭/선택되는 경우, 단말(100)에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 단말(100)의 화면 일측에 표시되는 특정 영역 또는 특정 버튼(또는 특정 메뉴/항목)이 사용자 입력(또는 터치)에 따라 선택(또는 터치)되는 경우 등을 포함한다. 또한, 상기 키패드 형식은 사용자 입력에 따라 선택되거나 또는 미리 설정된 상태이며, 상기 단말(100)에 표시될 키패드의 모양(또는 키패드와 관련한 사용자 인터페이스/그래픽 사용자 인터페이스)으로 원형링, 원통형(또는 슬롯머신의 원통 릴) 등을 포함한다. 또한, 상기 입력 형식은 사용자 입력에 따라 선택되거나 또는 미리 설정된 상태이며, 상기 키패드에 표시될 숫자, 문자, 특수문자(또는 기호) 등의 형식을 지정하기 위한 것으로, 숫자 형식, 문자 형식, 특수문자 형식, 이들의 조합 형식 등을 포함한다. 또한, 상기 단말(100)의 식별 정보는 MDN, 모바일 IP, 모바일 MAC, Sim(가입자 식별 모듈) 카드 고유정보, 시리얼번호 등을 포함한다.
일 예로, 제 1 단말(100)에서 ABCD 은행에서 운영하는 웹 사이트에 접속하여 계좌 이체를 수행하기 위해서 비밀번호를 입력하고자 할 때, 상기 제 1 단말은 원형링과 관련한 제 1 키패드 형식, 숫자 형식의 제 1 입력 형식, 제 1 단말의 식별 정보 등을 상기 서버(200)에 전송한다.
다른 일 예로, 제 2 단말(100)에서 ZZZ 웹 사이트에 접속하여 비밀번호를 입력하고자 할 때, 상기 제 2 단말은 원통형과 관련한 제 2 키패드 형식, 숫자와 문자와 특수문자의 조합 형식의 제 2 입력 형식, 제 2 단말의 식별 정보 등을 상기 서버(200)에 전송한다(S910).
이후, 상기 서버(200)는 상기 단말(100)로부터 전송되는 키패드 형식, 입력 형식, 단말(100)의 식별 정보 등을 수신한다.
또한, 상기 서버(200)는 상기 입력 형식을 근거로 고윳값을 가지며, 미리 설정된 크기로 구성되는 서버 키를 생성한다.
이때, 상기 서버(200)는 미리 설정된 단위(또는 크기)의 숫자 범위, 문자 범위, 특수문자 범위 및 이들 간의 조합 중에서 상기 입력 형식을 근거로 랜덤하게 어느 하나를 선택하고, 상기 랜덤하게 선택된 어느 하나를 상기 서버 키로 생성할 수도 있다. 여기서, 상기 서버(200)는 입력 형식별로 미리 설정된 단위의 숫자 범위, 미리 설정된 단위의 문자 범위, 미리 설정된 단위의 특수문자 범위, 미리 설정된 단위의 숫자와 문자와 특수문자의 조합에 의한 범위 등을 관리할 수 있다.
또한, 상기 서버(200)는 상기 생성된 서버 키를 상기 단말(100)에 전송한다.
일 예로, 상기 서버(200)는 상기 제 1 단말로부터 전송되는 제 1 키패드 형식(예를 들어 원형링), 제 1 입력 형식(예를 들어 숫자 형식), 제 1 단말의 식별 정보 등을 수신한다.
또한, 상기 서버(200)는 상기 수신된 제 1 입력 형식(예를 들어 숫자 형식 포함)을 근거로 미리 설정된 4자리 단위의 숫자 범위(예를 들어 0000, 0001, 0002, ~ , 9999) 중에서 랜덤하게 어느 하나의 숫자(예를 들어 3795)를 선택하고, 상기 선택된 어느 하나의 숫자(예를 들어 3795)를 제 1 서버 키로 생성(또는 설정)한다.
또한, 상기 서버(200)는 상기 생성된 제 1 서버 키(예를 들어 3795)를 상기 제 1 단말에 전송한다.
다른 일 예로, 상기 서버(200)는 상기 제 2 단말로부터 전송되는 제 2 키패드 형식, 제 2 입력 형식, 제 2 단말의 식별 정보 등을 수신한다.
또한, 상기 서버(200)는 상기 수신된 제 2 입력 형식(예를 들어 숫자와 문자와 특수문자의 조합 형식 포함)을 근거로 미리 설정된 4자리 단위의 숫자와 문자와 특수문자의 조합의 범위 중에서 랜덤하게 어느 하나(예를 들어 5AD#)를 선택하고, 상기 선택된 어느 하나(예를 들어 5AD#)를 제 2 서버 키로 생성한다.
또한, 상기 서버(200)는 상기 생성된 제 2 서버 키(예를 들어 5AD#)를 상기 제 2 단말에 전송한다(S920).
이후, 상기 단말(100)은 앞서 전송된 키패드 형식, 입력 형식 등에 응답하여 상기 서버(200)로부터 전송되는 서버 키를 수신한다.
또한, 상기 단말(100)은 상기 수신된 서버 키를 근거로 상기 입력 형식에 대응하여 해당 단말(100)에 미리 저장된(또는 등록된) 키 테이블을 셔플한다. 여기서, 상기 키 테이블은 상기 단말(100)과 상기 서버(200)에서 동일하게 저장(또는 관리/유지)된 상태일 수 있으며, 숫자만으로 이루어진 키 테이블, 문자만으로 이루어진 키 테이블, 특수문자만으로 이루어진 키 테이블, 숫자와 문자와 특수문자 간의 조합으로 이루어진 키 테이블 등을 포함한다. 이때, 상기 키 테이블에 대한 셔플 방식은 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 복수 단계에 걸쳐 셔플 기능을 수행한다. 여기서, 상기 N과 M은 같거나 다를 수 있고 자연수이며, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다를 수 있다.
즉, 상기 단말(100)은 상기 입력 형식에 대응하여 미리 저장된 키 테이블에서 상기 수신된 미리 설정된 크기의 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자), 두 번째 키값, 세 번째 키값 등에 대해서 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플을 수행하여 최종 셔플된 키 테이블을 생성(또는 준비)한다. 여기서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 대상으로, 키값(또는 식별자)을 포함하는 행, 키값을 포함하는 열, 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선(예를 들어 1시 방향에서 7시 방향으로의 대각선, 11시 방향에서 5시 방향으로의 대각선 등 포함) 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 각각의 복수의 범위를 기준으로 미리 설정된 방향(예를 들어 상/하/좌/우 등 포함)으로 미리 설정된 단위(또는 크기)만큼 시프트(또는 대각선인 경우 대각선 범위를 기준으로 좌/우 대칭 교환)하는 복수의 서브 셔플 방식으로 구성하며, 상기 순차로 선택된 복수의 서브 셔플 방식에 따라 상기 서버 키를 이용하여 상기 키 테이블을 셔플하는데 사용된다.
일 예로, 상기 제 1 단말은 앞서 전송된 제 1 키패드 형식, 제 1 입력 형식 등에 응답하여 상기 서버(200)로부터 전송되는 제 1 서버 키(예를 들어 3795)를 수신한다.
또한, 도 11에 도시된 바와 같이, 상기 제 1 단말은 상기 제 1 입력 형식에 대응하여 미리 저장된 4×4 형태의 제 1 키 테이블 중에서 제1행부터 제3행 및 제1열부터 제3열로 구성되는 3×3 형태의 제 1 서브 키 테이블을 선택하고, 상기 선택된 제 1 서브 키 테이블을 대상으로 4자리 단위의 상기 제 1 서버 키(예를 들어 3795)에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 1 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자)(예를 들어 3)이 포함된 제 2 행과 상기 제 2 행에 인접한 제 1 행을 미리 설정된 아래 방향으로 1크기만큼 시프트하는 셔플 방식)에 따라 1차로 상기 제 1 서브 키 테이블을 셔플하여, 상기 도 11에 도시된 바와 같은 1차로 셔플된 제 1 서브 키 테이블(1110)을 생성한다. 이때, 상기 도 11에 도시된 바와 같이, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 도 11에 도시된 바와 같이, 상기 제 1 단말은 상기 1차로 셔플된 제 1 서브 키 테이블(1110)에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 2 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 두 번째 키값(예를 들어 7)이 포함된 제 2 열과 상기 제 2 열에 인접한 제 1 열을 미리 설정된 좌측 방향으로 1크기만큼 시프트하는 셔플 방식)에 따라 2차로 상기 1차로 셔플된 제 1 서브 키 테이블을 셔플하여, 상기 도 11에 도시된 바와 같은 2차로 셔플된 제 1 서브 키 테이블(1120)을 생성한다. 이때, 상기 도 11에 도시된 바와 같이, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 도 11에 도시된 바와 같이, 상기 제 1 단말은 상기 2차로 셔플된 제 1 서브 키 테이블(1120)에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 3 서브 셔플 방식(예를 들어 상기 3×3 행렬 형태의 제 1 서브 키 테이블에서 1시 방향에서 7시 방향으로의 대각선을 기준으로 좌/우 대칭 교환하는 셔플 방식)에 따라 3차로 상기 2차로 셔플된 제 1 서브 키 테이블을 셔플하여, 상기 도 11에 도시된 바와 같은 3차로 셔플된 제 1 서브 키 테이블(1130)을 생성한다. 이때, 상기 도 11에 도시된 바와 같이, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 도 11에 도시된 바와 같이, 상기 제 1 단말은 상기 3차로 셔플된 제 1 서브 키 테이블(1130)에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 4 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 네 번째 키값(예를 들어 5)이 포함된 제 1 열을 미리 설정된 우측 방향으로 2크기만큼 시프트하는 셔플 방식)에 따라 4차로 상기 3차로 셔플된 제 1 서브 키 테이블을 셔플하여, 상기 도 11에 도시된 바와 같이 최종 셔플된 제 1 키 테이블(11140)을 생성한다. 여기서, 상기 최종 셔플된 제 1 키 테이블(1140)은 상기 3차로 셔플된 제 1 서브 키 테이블을 4차로 셔플한 값과 상기 제 1 키 테이블 중에서 그 값(또는 상태)이 유지 중인(또는 셔플이 수행되지 않은) 제 4 행 및 제 4 열에 포함된 값으로 구성된다(S930).
이후, 상기 단말(100)은 상기 셔플된 키 테이블, 상기 키패드 형식, 상기 입력 형식 등을 근거로 원형링, 원통형 등의 다양한 형태의 키보드를 생성한다.
즉, 상기 단말(100)은 상기 셔플된 키 테이블에 대응하여 미리 설정된 인디케이터(또는 상기 N×M 행렬에서 미리 설정된 기준 위치)를 기준으로 상기 셔플된 키 테이블에 포함된 값(예를 들어 숫자, 문자, 특수문자 또는 이들 간의 조합)을 순차로 정렬하고, 상기 순차로 정렬된 값을 상기 키패드 형식에 대응하는 원형링 또는 원통형의 키보드에 순차로 정렬(또는 배치)하여, 상기 순차로 정렬된 값으로 구성되는 키보드를 생성한다.
또한, 상기 단말(100)은 사용자로부터 비밀번호 등에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 단말(100)의 일측에 표시한다.
일 예로, 상기 제 1 단말은 상기 제 1 입력 형식(예를 들어 숫자 형식)과 관련한 4×4 형태의 제 1 키 테이블에 대응하여 미리 설정된 제 1 인디케이터(예를 들어 4×4 형태의 최종 셔플된 키 테이블에서 2×2 위치/지점)를 기준으로(또는 시작 포인트로)하여 상기 도 15의 최종 셔플된 제 1 키 테이블에 포함된 복수의 숫자를 순차로 정렬(예를 들어 6, 3, 2, 8, 5, 9, 1, 7, 4, 0)하고, 상기 순차로 정렬된 값을 상기 제 1 키패드 형식(예를 들어 원형링)에 대응하는 원형링의 키보드에 순차로 배치하여, 도 12에 도시된 바와 같이, 상기 최종 셔플된 제 1 키 테이블과 상기 제 1 키패드 형식(예를 들어 원형링)으로 형성되는 제 1 키보드(1200)를 생성한다. 이때, 상기 최종 셔플된 키 테이블에 포함된 복수의 숫자를 순차로 정렬할 때, 상기 제 1 단말은 상기 최종 셔플된 키 테이블 내에서 값이 포함된 경우에 대해서만(또는 값이 포함되지 않은 경우 건너뜀) 상기 제 1 인디케이터를 기준으로 정렬할 수 있다.
또한, 상기 제 1 단말은 상기 생성된 제 1 키보드를 상기 제 1 단말의 화면의 일측에 표시한다(S940).
이후, 상기 단말(100)은 상기 단말(100)의 일측에 표시되는 키보드에 대해서 사용자 입력(또는 사용자 터치/제어)에 따른 입력값을 수신한다. 여기서, 상기 입력값은 숫자, 문자, 특수문자 및 이들의 조합에 따른 적어도 하나 이상의 데이터(또는 키(key))로 구성될 수 있다.
일 예로, 상기 제 1 단말의 일측에 표시되는 제 1 키보드 상에서 사용자 입력에 따른 제 1 입력값(예를 들어 3905)을 수신한다(S950).
이후, 상기 단말(100)은 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값(또는 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값)을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값(또는 사용자 입력값)을 생성(또는 산출)한다. 여기서, 상기 시프트 연산은 상기 입력값에 따라 미리 설정된 방향(예를 들어 우측 방향, 좌측 방향 등 포함)으로의 시프트 연산일 수 있다.
또한, 상기 단말(100)은 상기 생성된(또는 산출된) 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터(또는 패킷), 상기 단말(100)의 식별 정보 등을 상기 서버(200)에 전송한다. 이때, 상기 단말(100)은 상기 서버 키에 포함된 복수의 숫자, 문자, 특수문자 등을 미리 설정된 비트수(예를 들어 4비트)의 0과 1의 조합으로 구성되는 2진수로 각각 변환하고, 상기 2진수로 변환된 서버 키와 상기 생성된 시프트 연산된 사용자 입력값을 조합하여 바이너리 형태의 상기 데이터를 생성할 수도 있다.
여기서, 상기 단말(100)은 상기 생성된(또는 산출된) 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터(또는 패킷), 상기 단말(100)의 식별 정보 등을 미리 설정된 암호화 방식을 통해 암호화하여, 암호화된 디지털 데이터를 생성하고, 상기 생성된 디지털 데이터를 상기 서버(200)에 전송할 수도 있다. 이때, 상기 암호화 방식은 다양한 대칭키 암호화 방식, 비대칭키 암호화 방식 등을 포함할 수 있다.
일 예로, 도 13에 도시된 바와 같이, 상기 제 1 단말은 상기 순차로 정렬된 값(예를 들어 6, 3, 2, 8, 5, 9, 1, 7, 4, 0)에 따른 총 10 비트에 대해서 초기값(예를 들어 0)이 미리 설정된 상태(1310)에서, 상기 제 1 입력값(예를 들어 3905)에 포함된 첫 번째 입력값에 대응하는 '3'과 관련한 9번째 비트를 제외한 나머지 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 9번째 비트의 값을 '0'으로 유지하고 나머지 비트의 값을 '0'에서 '1'로 치환(또는 변경/변환/수정)하고, 라운드 로빈 방식으로 상기 제 1 서버 키(예를 들어 3795)에 포함된 첫 번째 값에 대응하는 '3'만큼 우측 시프트 연산을 수행하여 제 1 결과값(예를 들어 1111011111)(1320)을 산출한다.
또한, 상기 제 1 단말은 상기 제 1 결과값(예를 들어 1111011111)(1320)에 대해서, 상기 제 1 입력값(예를 들어 3905)에 포함된 두 번째 입력값에 대응하는 '9'와 관련한 5번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 5번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 두 번째 값에 대응하는 '7'만큼 우측 시프트 연산을 수행하여 제 2 결과값(예를 들어 1001111111)(1330)을 산출한다.
또한, 상기 제 1 단말은 상기 제 2 결과값(예를 들어 1001111111)(1330)에 대해서, 상기 제 1 입력값(예를 들어 3905)에 포함된 세 번째 입력값에 대응하는 '0'과 관련한 1번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 1번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 세 번째 값에 대응하는 '9'만큼 우측 시프트 연산을 수행하여 제 3 결과값(예를 들어 0011111101)(1340)을 산출한다.
또한, 상기 제 1 단말은 상기 제 3 결과값(예를 들어 0011111101)(1340)에 대해서, 상기 제 1 입력값(예를 들어 3905)에 포함된 네 번째 입력값에 대응하는 '5'와 관련한 6번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 6번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 네 번째 값에 대응하는 '5'만큼 우측 시프트 연산을 수행하여 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)(1350)을 최종적으로 산출한다.
또한, 상기 제 1 단말은 상기 제 1 서버 키(예를 들어 3795) 및 상기 산출된 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)을 조합하여 제 1 데이터(예를 들어 37951110100110)를 생성한다. 이때, 상기 제 1 단말은 상기 제 1 서버 키인 3795를 각각 4비트의 2진수로 변환하여 0011011110010101를 생성하고, 상기 생성된 값(0011011110010101)을 상기 산출된 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)과 조합하여 제 2 데이터(예를 들어 00110111100101011110100110)를 생성할 수도 있다.
또한, 상기 제 1 단말은 상기 생성된 제 1 데이터(예를 들어 37951110100110)(또는 제 2 데이터), 상기 제 1 단말의 식별 정보 등을 미리 설정된 공개키 암호화 방식을 통해 암호화하여 암호화된 제 1 데이터를 생성하고, 상기 생성된 암호화된 제 1 데이터를 상기 서버(200)에 전송한다(S960).
이후, 상기 서버(200)는 상기 단말(100)로부터 전송되는 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터, 단말(100)의 식별 정보 등을 수신한다.
여기서, 상기 서버(200)에서 상기 단말(100)로부터 전송되는 암호화된 디지털 데이터를 수신하는 경우, 상기 서버(200)는 상기 수신된 암호화된 디지털 데이터를 미리 설정된 복호화 방식을 통해 복호화하여, 상기 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터, 상기 단말(100)의 식별 정보 등을 확인한다.
또한, 상기 서버(200)는 상기 수신된 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리한다. 이때, 상기 서버 키가 2진수로 변환되어 상기 데이터에 포함된 경우, 상기 서버(200)는 미리 설정된 데이터 프레임 형태에 따라 미리 설정된 비트의 수를 상기 서버 키로 확인하고, 나머지 비트의 수를 상기 시프트 연산된 사용자 입력값으로 확인할 수 있다.
일 예로, 상기 서버(200)는 상기 제 1 단말로부터 전송되는 상기 암호화된 제 1 데이터를 수신하고, 상기 수신된 암호화된 제 1 데이터를 미리 설정된 공개키 복호화 방식을 통해 복호화하여 상기 제 1 데이터(예를 들어 37951110100110), 상기 제 1 단말의 식별 정보 등을 확인한다.
또한, 상기 서버(200)는 상기 제 1 데이터 중에서 미리 설정된 앞 4자리의 숫자와 나머지 10자리의 숫자를 각각 분리하여, 상기 제 1 서버 키(예를 들어 3795)와 상기 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)을 확인(또는 분리)한다(S970).
이후, 상기 서버(200)는 상기 수신된 단말(100)의 식별 정보에 대응하여 서버(200)에 미리 등록된 비밀번호, 상기 서버 키, 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값 등을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값(또는 비교 대상 입력값)을 생성(또는 산출)한다. 여기서, 상기 시프트 연산은 미리 설정된 방향(예를 들어 우측 방향, 좌측 방향 등 포함)으로의 시프트 연산일 수 있다.
즉, 상기 서버(200)는 상기 생성된 서버 키를 근거로 상기 수신된 입력 형식에 대응하여 해당 서버(200)에 미리 저장된(또는 등록된) 키 테이블을 셔플한다. 여기서, 상기 키 테이블은 상기 단말(100)과 상기 서버(200)에서 동일하게 저장(또는 관리/유지)된 상태일 수 있으며, 숫자만으로 이루어진 키 테이블, 문자만으로 이루어진 키 테이블, 특수문자만으로 이루어진 키 테이블, 숫자와 문자와 특수문자 간의 조합으로 이루어진 키 테이블 등을 포함한다. 이때, 상기 키 테이블에 대한 셔플 방식은 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 복수 단계에 걸쳐 셔플 기능을 수행한다. 여기서, 상기 N과 M은 같거나 다를 수 있고 자연수이며, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다를 수 있다.
이와 같이, 상기 서버(200)는 상기 입력 형식에 대응하여 미리 저장된 키 테이블에서 상기 미리 설정된 크기의 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자), 두 번째 키값, 세 번째 키값 등에 대해서 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플을 수행하여 최종 셔플된 키 테이블을 생성(또는 준비)한다. 여기서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M 형태의 키 테이블 중에서 선택되는 n×m 형태의 서브 키 테이블을 대상으로, 키값(또는 식별자)을 포함하는 행, 키값을 포함하는 열, 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선(예를 들어 1시 방향에서 7시 방향으로의 대각선, 11시 방향에서 5시 방향으로의 대각선 등 포함) 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 복수의 범위를 기준으로 미리 설정된 방향(예를 들어 상/하/좌/우 등 포함)으로 미리 설정된 단위(또는 크기)만큼 시프트(또는 대각선인 경우 대각선 범위를 기준으로 좌/우 대칭 교환)하는 복수의 서브 셔플 방식으로 구성하며, 상기 순차로 선택된 복수의 서브 셔플 방식에 따라 상기 서버 키를 이용하여 상기 키 테이블을 셔플하는데 사용된다.
또한, 상기 서버(200)는 상기 수신된 단말(100)의 식별 정보에 대응하여 서버(200)에 미리 등록된 비밀번호, 상기 서버 키 및 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬한 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여 시프트 연산된 비교 대상 입력값(또는 비교 대상 입력값)을 생성(또는 산출)한다.
일 예로, 상기 서버(200)는 상기 제 1 입력 형식에 대응하여 해당 서버(200)에 미리 저장된 4×4 형태의 제 1 키 테이블 중에서 제1행부터 제3행 및 제1열부터 제3열로 구성되는 3×3 형태의 제 11 서브 키 테이블을 선택하고, 상기 선택된 제 11 서브 키 테이블을 대상으로 4자리 단위의 상기 제 1 서버 키(예를 들어 3795)에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 1 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 첫 번째 키값(또는 첫 번째 식별자)(예를 들어 3)이 포함된 제 2 행과 상기 제 2 행에 인접한 제 1 행을 미리 설정된 아래 방향으로 1크기만큼 시프트하는 셔플 방식)에 따라 1차로 상기 제 1 서브 키 테이블을 셔플하여, 1차로 셔플된 제 11 서브 키 테이블을 생성한다. 이때, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 서버(200)는 상기 1차로 셔플된 제 11 서브 키 테이블에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 2 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 두 번째 키값(예를 들어 7)이 포함된 제 2 열과 상기 제 2 열에 인접한 제 1 열을 미리 설정된 좌측 방향으로 1크기만큼 시프트하는 셔플 방식)에 따라 2차로 상기 1차로 셔플된 제 11 서브 키 테이블을 셔플하여, 2차로 셔플된 제 11 서브 키 테이블을 생성한다. 이때, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 서버(200)는 상기 2차로 셔플된 제 11 서브 키 테이블에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 3 서브 셔플 방식(예를 들어 상기 3×3 행렬 형태의 제 11 서브 키 테이블에서 1시 방향에서 7시 방향으로의 대각선을 좌/우 대칭 교환하는 셔플 방식)에 따라 3차로 상기 2차로 셔플된 제 11 서브 키 테이블을 셔플하여, 3차로 셔플된 제 11 서브 키 테이블을 생성한다. 이때, 상기 제 1 키 테이블 중 제4행 및 제4열에 포함된 값(또는 데이터)은 그대로 유지될 수 있다.
또한, 상기 서버(200)는 상기 3차로 셔플된 제 11 서브 키 테이블에서 상기 4자리 단위의 제 1 서버 키에 대해서 미리 순서가 설정된 셔플 방식에 포함된 제 4 서브 셔플 방식(예를 들어 상기 제 1 서버 키에 포함된 네 번째 키값(예를 들어 5)이 포함된 제 1 열을 미리 설정된 우측 방향으로 2크기만큼 시프트하는 셔플 방식)에 따라 4차로 상기 3차로 셔플된 제 11 키 테이블을 셔플하여, 최종 셔플된 제 1 키 테이블을 생성한다.
또한, 상기 서버(200)는 상기 순차로 정렬된 값(예를 들어 6, 3, 2, 8, 5, 9, 1, 7, 4, 0)에 따른 총 10 비트에 대해서 초기값(예를 들어 0)이 미리 설정된 상태에서, 상기 단말(100)의 식별 정보에 대응하여 서버(200)에 미리 등록된 제 1 비밀번호(예를 들어 3905)에 포함된 첫 번째 입력값에 대응하는 '3'과 관련한 9번째 비트를 제외한 나머지 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 9번째 비트의 값을 '0'으로 유지하고 나머지 비트의 값을 '0'에서 '1'로 치환하고, 라운드 로빈 방식으로 상기 제 1 서버 키(예를 들어 3795)에 포함된 첫 번째 값에 대응하는 '3'만큼 우측 시프트 연산을 수행하여 제 11 결과값(예를 들어 1111011111)을 산출한다.
또한, 상기 서버(200)는 상기 제 11 결과값(예를 들어 1111011111)에 대해서, 상기 제 1 비밀번호(예를 들어 3905)에 포함된 두 번째 입력값에 대응하는 '9'와 관련한 5번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 5번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 두 번째 값에 대응하는 '7'만큼 우측 시프트 연산을 수행하여 제 12 결과값(예를 들어 1001111111)을 산출한다.
또한, 상기 서버(200)는 상기 제 12 결과값(예를 들어 1001111111)에 대해서, 상기 제 1 비밀번호(예를 들어 3905)에 포함된 세 번째 입력값에 대응하는 '0'과 관련한 1번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 1번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 세 번째 값에 대응하는 '9'만큼 우측 시프트 연산을 수행하여 제 13 결과값(예를 들어 0011111101)을 산출한다.
또한, 상기 서버(200)는 상기 제 13 결과값(예를 들어 0011111101)에 대해서, 상기 제 1 비밀번호(예를 들어 3905)에 포함된 네 번째 입력값에 대응하는 '5'와 관련한 6번째 비트에 대해 미리 설정된 NOT 연산을 수행하여, 해당 6번째 비트의 값을 '1'에서 '0'으로 치환하고 나머지 비트의 값을 그대로 유지하고, 상기 제 1 서버 키(예를 들어 3795)에 포함된 네 번째 값에 대응하는 '5'만큼 우측 시프트 연산을 수행하여 제 1 시프트 연산된 비교 대상 입력값(예를 들어 1110100110)을 최종적으로 산출한다(S980).
이후, 상기 서버(200)는 상기 생성된(또는 산출된) 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단(또는 확인)한다.
즉, 상기 서버(200)는 상기 서버(200)에 저장된 해당 단말(100)의 식별 정보에 대응하는 비밀번호를 근거로 생성된 시프트 연산된 비교 대상 입력값과 상기 단말(100)에서 사용자 입력에 따른 입력값을 근거로 생성된 시프트 연산된 사용자 입력값이 일치하는지 여부를 판단한다.
일 예로, 상기 서버(200)는 상기 산출된 제 1 시프트 연산된 비교 대상 입력값(예를 들어 1110100110)과 상기 분리된 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)이 일치하는지 여부를 판단한다(S990).
상기 판단 결과(또는 상기 확인 결과), 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하지 않은 경우, 상기 서버(200)는 인증이 실패하였음을 나타내는 정보를 상기 단말(100)에 전송한다.
또한, 상기 단말(100)은 앞서 전송된 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 실패하였음을 나타내는 정보를 수신한다.
또한, 상기 단말(100)은 상기 수신된 인증이 실패하였음을 나타내는 정보를 출력한다.
일 예로, 상기 산출된 제 1 시프트 연산된 비교 대상 입력값과 상기 분리된 제 1 시프트 연산된 사용자 입력값이 일치하지 않을 때, 상기 서버(200)는 인증이 실패하였음을 나타내는 정보를 상기 제 1 단말에 전송한다.
또한, 상기 제 1 단말은 앞서 전송된 제 1 데이터(예를 들어 37951110100110) 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 실패하였음을 나타내는 정보를 수신하고, 상기 수신된 인증이 실패하였음을 나타내는 정보를 출력한다(S1000).
또한, 상기 판단 결과(또는 상기 확인 결과), 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하는 경우, 상기 서버(200)는 인증이 성공하였음을 나타내는 정보를 상기 단말(100)에 전송한다.
또한, 상기 단말(100)은 앞서 전송된 시프트 연산된 사용자 입력값과 서버 키를 조합한 데이터 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신한다.
또한, 상기 단말(100)은 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력한다.
또한, 상기 단말(100)은 상기 서버(200)와 연동하여 인증 성공에 따른 추가 기능을 수행한다.
일 예로, 상기 산출된 제 1 시프트 연산된 비교 대상 입력값(예를 들어 1110100110)과 상기 분리된 제 1 시프트 연산된 사용자 입력값(예를 들어 1110100110)이 일치할 때, 상기 서버(200)는 인증이 성공하였음을 나타내는 정보를 상기 제 1 단말에 전송한다.
또한, 상기 제 1 단말은 상기 앞서 전송된 제 1 데이터(예를 들어 37951110100110) 등에 응답하여 상기 서버(200)로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신하고, 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력한다.
또한, 상기 제 1 단말은 인증 성공에 따라 상기 서버(200)와 연동하여, 상기 ABCD 은행에서 운영 중인 웹 사이트를 통해 홍길동과 관련한 계좌로의 계좌 이체 기능을 수행하고, 계좌 이체 수행 결과를 출력한다(S1010).
본 발명의 실시예는 앞서 설명된 바와 같이, 단말에서 서버로부터 제공되는 서버키를 이용해서 상기 서버와 공유하는 미리 설정된 키 테이블을 셔플하고, 상기 셔플된 키 테이블을 근거로 원형링, 원통형 등의 다양한 형태의 동적 키보드를 생성하고, 상기 생성된 동적 키보드 상에서의 사용자 입력에 따른 사용자 입력값과 상기 서버키를 상기 서버에 제공하고, 상기 서버에서 상기 단말로부터 제공되는 사용자 입력값과 상기 서버키를 근거로 서버키의 유효성 및 기존 저장된 비밀번호와의 일치 여부를 판단하여 인증 여부를 상기 단말에 제공하여, 키로깅과 중간자 공격에 따른 해킹을 방지할 수 있다.
전술된 내용은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 인증구간의 키로깅과 MITM에 따른 해킹 방지
100: 단말 200: 서버
110: 통신부 120: 저장부
130: 표시부 140: 음성 출력부
150: 제어부

Claims (7)

  1. 미리 설정된 이벤트가 발생할 때, 단말에 의해, 키패드 형식, 입력 형식 및 단말의 식별 정보를 서버에 전송하는 단계;
    상기 서버에 의해, 상기 입력 형식을 근거로 미리 설정된 크기로 구성되는 서버 키를 생성하는 단계;
    상기 단말에 의해, 상기 서버로부터 전송되는 서버 키를 근거로 상기 입력 형식에 대응하여 상기 단말에 미리 저장된 키 테이블을 셔플하는 단계;
    상기 단말에 의해, 상기 셔플된 키 테이블, 상기 키패드 형식 및 상기 입력 형식을 근거로 원형링 또는 원통형의 키보드를 생성하는 단계;
    상기 단말에 의해, 사용자로부터 비밀번호에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 단말의 일측에 표시하는 단계;
    상기 단말에 의해, 상기 단말의 일측에 표시되는 키보드에 대해서 사용자 입력에 따른 입력값을 수신하는 단계;
    상기 단말에 의해, 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값을 생성하는 단계;
    상기 단말에 의해, 상기 생성된 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터 및 상기 단말의 식별 정보를 상기 서버에 전송하는 단계;
    상기 서버에 의해, 상기 단말로부터 전송되는 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리하는 단계;
    상기 서버에 의해, 상기 수신된 단말의 식별 정보에 대응하여 상기 서버에 미리 등록된 비밀번호, 상기 서버 키 및 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값을 생성하는 단계;
    상기 서버에 의해, 상기 생성된 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단하는 단계;
    상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치할 때, 상기 서버에 의해, 인증이 성공하였음을 나타내는 정보를 상기 단말에 전송하는 단계;
    상기 단말에 의해, 상기 서버로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신하는 단계;
    상기 단말에 의해, 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력하는 단계; 및
    상기 단말에 의해, 상기 서버와 연동하여, 인증 성공에 따른 추가 기능을 수행하는 단계를 포함하고,
    상기 단말에 미리 저장된 키 테이블을 셔플하는 단계는,
    N×M형태의 키 테이블 중에서 선택되는 n×m형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플하여 복수 단계에 걸쳐 셔플 기능을 수행하는 단계;
    를 포함하고,
    여기에서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M형태의 키 테이블 중에서 선택되는 n×m형태의 서브 키 테이블을 대상으로, 키값을 포함하는 행(row), 키값을 포함하는 열(column), 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 각각의 복수의 범위를 기준으로 미리 설정된 방향으로 미리 설정된 단위 만큼 시프트하고,
    상기 N과 M은 같거나 다른 자연수이고, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다른 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법.
  2. 제 1 항에 있어서,
    상기 이벤트는,
    상기 단말에 표시되는 특정 영역이 마우스 또는 사용자 입력에 따라 선택되는 경우, 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 마우스의 버튼이 선택되는 경우, 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 키보드 상의 미리 설정된 키가 선택되는 경우 및 상기 단말에 비밀번호 입력을 위한 화면이 표시되고 있는 상태에서 상기 단말의 화면 일측에 표시되는 특정 영역 또는 특정 버튼이 사용자 입력에 따라 선택되는 경우 중 어느 하나를 포함하며,
    상기 키패드 형식은,
    상기 단말에 표시될 키패드의 모양으로 원형링 및 원통형 중 어느 하나를 포함하며,
    상기 입력 형식은,
    숫자 형식, 문자 형식, 특수문자 형식 및 이들의 조합 형식 중 어느 하나를 포함하는 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 키보드를 생성하는 단계는,
    상기 셔플된 키 테이블에 대응하여 미리 설정된 인디케이터를 기준으로 상기 셔플된 키 테이블에 포함된 값을 순차로 정렬하는 과정; 및
    상기 순차로 정렬된 값을 상기 키패드 형식에 대응하는 원형링 또는 원통형의 키보드에 순차로 정렬하여, 상기 순차로 정렬된 값으로 구성되는 키보드를 생성하는 과정을 포함하는 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법.
  5. 제 1 항에 있어서,
    상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치하지 않을 때, 상기 서버에 의해, 인증이 실패하였음을 나타내는 정보를 상기 단말에 전송하는 단계;
    상기 단말에 의해, 상기 서버로부터 전송되는 인증이 실패하였음을 나타내는 정보를 수신하는 단계; 및
    상기 단말에 의해, 상기 수신된 인증이 실패하였음을 나타내는 정보를 출력하는 단계를 더 포함하는 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 방법.
  6. 미리 설정된 이벤트가 발생할 때, 키패드 형식, 입력 형식 및 단말의 식별 정보를 서버에 전송하고, 상기 전송에 응답하여 상기 서버로부터 전송되는 서버 키를 수신하고, 상기 서버 키를 근거로 상기 입력 형식에 대응하여 단말에 미리 저장된 키 테이블을 셔플하고, 상기 셔플된 키 테이블, 상기 키패드 형식 및 상기 입력 형식을 근거로 원형링 또는 원통형의 키보드를 생성하고, 사용자로부터 비밀번호에 대응하는 입력값을 수신하기 위해서 상기 생성된 키보드를 상기 단말의 일측에 표시하고, 사용자 입력에 따른 입력값을 수신하고, 상기 수신된 입력값, 상기 서버 키 및 상기 키보드에 대응하는 순차로 정렬된 값을 근거로 미리 설정된 시프트 연산을 수행하여 시프트 연산된 사용자 입력값을 생성하고, 상기 생성된 시프트 연산된 사용자 입력값과 상기 서버 키를 조합한 데이터 및 상기 단말의 식별 정보를 상기 서버에 전송하는 상기 단말; 및
    상기 단말로부터 전송되는 데이터에서 상기 서버 키와 상기 시프트 연산된 사용자 입력값을 분리하고, 상기 수신된 단말의 식별 정보에 대응하여 상기 서버에 미리 등록된 비밀번호, 상기 서버 키 및 상기 서버 키를 이용하여 셔플된 후 순차로 정렬된 값을 근거로 상기 미리 설정된 시프트 연산을 수행하여, 시프트 연산된 비교 대상 입력값을 생성하고, 상기 생성된 시프트 연산된 비교 대상 입력값과 상기 분리된 시프트 연산된 사용자 입력값 간의 일치 여부를 판단하고, 상기 판단 결과, 상기 시프트 연산된 비교 대상 입력값과 상기 시프트 연산된 사용자 입력값이 일치할 때 인증이 성공하였음을 나타내는 정보를 상기 단말에 전송하는 서버를 포함하고,
    상기 단말은,
    N×M형태의 키 테이블 중에서 선택되는 n×m형태의 서브 키 테이블을 상기 수신된 서버 키에 포함된 값을 이용하여 미리 순서가 설정된 셔플 방식에 따라 순차로 셔플하여 복수 단계에 걸쳐 셔플 기능을 수행하고,
    여기에서, 상기 미리 순서가 설정된 셔플 방식은 상기 N×M형태의 키 테이블 중에서 선택되는 n×m형태의 서브 키 테이블을 대상으로, 키값을 포함하는 행(row), 키값을 포함하는 열(column), 키값을 포함하는 행과 해당 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 행에 인접한 하나 이상의 다른 행, 키값을 포함하는 열과 해당 열에 인접한 하나 이상의 다른 열, 키값을 포함하는 열에 인접한 하나 이상의 다른 열 및 행렬 형태의 키 테이블에서의 대각선 중 하나의 범위를 상기 서버 키의 크기만큼 순차로 선택하고, 상기 순차로 선택된 각각의 복수의 범위를 기준으로 미리 설정된 방향으로 미리 설정된 단위 만큼 시프트하고, 상기 N과 M은 같거나 다른 자연수이고, 상기 n은 상기 N보다 작거나 같은 자연수이고, 상기 m은 상기 M보다 작거나 같은 자연수이고, 상기 n과 m은 같거나 다른 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템.
  7. 제 6 항에 있어서,
    상기 단말은,
    상기 서버로부터 전송되는 인증이 성공하였음을 나타내는 정보를 수신하고, 상기 수신된 인증이 성공하였음을 나타내는 정보를 출력하고, 상기 서버와 연동하여, 인증 성공에 따른 추가 기능을 수행하는 것을 특징으로 하는 인증구간의 키로깅과 MITM에 따른 해킹 방지 시스템.
KR1020190061231A 2019-05-24 2019-05-24 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법 KR102153666B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190061231A KR102153666B1 (ko) 2019-05-24 2019-05-24 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190061231A KR102153666B1 (ko) 2019-05-24 2019-05-24 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
KR102153666B1 true KR102153666B1 (ko) 2020-09-09

Family

ID=72469150

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190061231A KR102153666B1 (ko) 2019-05-24 2019-05-24 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR102153666B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120047075A (ko) * 2010-11-03 2012-05-11 한국전자통신연구원 사용자 비밀번호 입력 장치 및 방법
KR101621002B1 (ko) * 2015-09-02 2016-05-13 주식회사 베이스인 네트웍스 이미지 배열을 이용한 로그인 서비스 제공 방법
KR101648779B1 (ko) * 2015-04-02 2016-08-17 (주)케이스마텍 정보단말기에서의 문자입력 보안방법
KR20180067082A (ko) 2016-12-12 2018-06-20 조선대학교산학협력단 다이얼식 가상 보안 키패드 및 이를 이용한 인증 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120047075A (ko) * 2010-11-03 2012-05-11 한국전자통신연구원 사용자 비밀번호 입력 장치 및 방법
KR101648779B1 (ko) * 2015-04-02 2016-08-17 (주)케이스마텍 정보단말기에서의 문자입력 보안방법
KR101621002B1 (ko) * 2015-09-02 2016-05-13 주식회사 베이스인 네트웍스 이미지 배열을 이용한 로그인 서비스 제공 방법
KR20180067082A (ko) 2016-12-12 2018-06-20 조선대학교산학협력단 다이얼식 가상 보안 키패드 및 이를 이용한 인증 방법 및 장치

Similar Documents

Publication Publication Date Title
CN107341387A (zh) 用于安全增强的电子图章系统及其控制方法
EP3443724B1 (en) Web service picture passwords
JP6713548B2 (ja) ワンタイム動的位置認証方法及びシステム並びにワンタイム動的パスワード変更方法
WO2018083088A1 (en) Method for securing a transaction performed from a non-secure terminal
EP2953323A9 (en) System and method of securing instant messaging sessions
CN108769027B (zh) 安全通信方法、装置、移动终端和存储介质
KR102023101B1 (ko) 원본 데이터의 위변조 방지 장치 및 그 방법
US20170085561A1 (en) Key storage device and method for using same
US10762188B2 (en) Wireless injection of passwords
KR102055625B1 (ko) 인증 서버 장치, 프로그램 및 인증 방법
US9659189B2 (en) Systems and methods of safeguarding user information while interacting with online service providers
KR101085490B1 (ko) 숄더 서핑 공격에 대응하기 위한 프라이버시 보호형 사용자 비밀번호 입력 시스템 및 그 방법
JP2010231510A (ja) ユーザ認証システム、ユーザ認証方法、認証サーバプログラム、およびクライアントプログラム
US9892246B2 (en) Security mode prompt method and apparatus
KR102153666B1 (ko) 인증구간의 키로깅과 mitm에 따른 해킹 방지 시스템 및 그 방법
CN101277183A (zh) 登录信息的输入方法、系统及系统的实现方法
KR102025659B1 (ko) 스마트 워치 및 이를 이용한 보안 입력 시스템
CN108549808B (zh) 一种密码管理方法和装置
CN109002698B (zh) 一种用户密码的安全输入方法及装置
US11010466B2 (en) Keyboard injection of passwords
CN111679781A (zh) 一种验证处理方法、装置、设备及介质
CN106385684B (zh) 用于共享无线网络、接入无线网络的方法和装置
KR101659809B1 (ko) 사용자 인증 및 패스워드 입력장치와 그 방법 및 시스템
EP2605165A1 (en) Gesture based generation of a user identifier
KR102505964B1 (ko) 보안 강화를 위한 전자 도장 시스템, 그의 제어 방법 및 컴퓨터 프로그램이 기록된 기록매체

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant