KR102350718B1 - 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버 - Google Patents

가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버 Download PDF

Info

Publication number
KR102350718B1
KR102350718B1 KR1020200062749A KR20200062749A KR102350718B1 KR 102350718 B1 KR102350718 B1 KR 102350718B1 KR 1020200062749 A KR1020200062749 A KR 1020200062749A KR 20200062749 A KR20200062749 A KR 20200062749A KR 102350718 B1 KR102350718 B1 KR 102350718B1
Authority
KR
South Korea
Prior art keywords
password
hash
salt
access
input message
Prior art date
Application number
KR1020200062749A
Other languages
English (en)
Other versions
KR20210145925A (ko
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 KR1020200062749A priority Critical patent/KR102350718B1/ko
Publication of KR20210145925A publication Critical patent/KR20210145925A/ko
Application granted granted Critical
Publication of KR102350718B1 publication Critical patent/KR102350718B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 일 실시예에 따른 패스워드 암호화 방법에 있어서, 특정 계정의 접속 인증을 위한 패스워드를 수신하는 단계; 상기 패스워드에 솔트(salt)를 추가하여 해쉬(Hash) 입력 메시지를 생성하는 단계; 상기 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득하는 단계; 상기 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 데이터 베이스에 등록하는 단계; 및 상기 솔트는, 상기 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함할 수 있다.

Description

가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버{Password encryption method using variable salt, apparatus and server therefor}
본 명세서는 가변 솔트를 활용한 사용자 패스워드 암호화 방법과, 이를 위한 장치 및 서버를 제안한다.
개인 정보 보호법의 개인 정보 안전성 확보 조치 기준 제7조 제2항에 따라 웹 사이트의 패스워드는 복호화 되지 않도록 일방향 암호화하여 저장하여야 한다. KISA(Korea Internet & Security Agency)의 개인 정보 암호화 조치 안내서에서는 일방향 암호화를 해쉬(Hash) 함수를 이용한 암호화로 정의하고 있으며, KISA와 NIST 등 국내외 보안 관련 기관에서 사용을 권고하는 해쉬 함수를 소개하고 있다.
해쉬 함수는 임의의 길이를 갖는 메시지를 입력으로 하여 고정된 길이의 해쉬 값을 생성하는 함수이다. 웹 사이트에서는 패스워드를 해쉬 함수에 입력하여 생성한 해쉬 값을 데이터베이스에 저장한다. 웹 서버는, 사용자가 웹 사이트 접속을 위해 입력한 패스워드의 해쉬 값과 데이터 베이스에 저장되어 있는 해쉬 값을 비교하여 상호 매칭되면 접속을 허용하며, 매칭되지 않으면 접속을 허용하지 않는다.
해쉬 함수의 요구 사항은 일방향 함수와 강한 충돌회피이다. 그러나, 컴퓨터의 성능이 좋아짐에 따라, 현재 많이 사용되고 있는 MD5와 SHA-1 해쉬 함수의 충돌이 발견되었고, 해쉬 값이 무차별 공격과 사전 공격에 의해 복호화되었다. 이처럼 컴퓨터의 성능이 계속 좋아지게 된다면 안전하다고 생각된 해쉬 함수들도 더 이상 안전하지 않게 될 수 있다. 즉, 해쉬 함수는 더 이상 안전한 암호화 장치로 볼 수 없게 된 것이다. 이에, 해쉬 함수를 안전하게 하기 위한 방법으로 도 1에 예시된 바와 같은 솔트(Salt)가 제시되었다.
도 1은 솔트를 이용한 패스워드 암호화 방법을 예시한 도면이다.
도 1을 참조하면, 솔트(102)는 패스워드(101)의 앞이나 뒤에 추가되어 해쉬 함수(103)의 입력 데이터로서 입력되어 패스워드 해쉬 값(104)으로 출력된다. 솔트(102)를 사용하면 해쉬 함수(103)에 입력되는 메시지 길이가 길어지기 때문에 크래킹 시간이 더 많이 소요되므로 패스워드(101)를 보호하기 위한 보다 안전한 방법이라 할 수 있다. Pritesh는 솔트(102)를 사용한 패스워드(101)는 사전 공격을 줄일 수 있고, 크래킹이 어려울 뿐 아니라 SQL(Structured Query Language) 주입(Injection) 공격까지 막을 수 있다고 본다. Pritesh에서 제시한 솔트(102)는 데이터 베이스의 회원 테이블에 하나의 컬럼으로 저장된다. 웹 서버는, 로그인 시에 사용자가 입력한 패스워드(101)에 솔트(102) 컬럼의 값을 추가하고 해쉬 함수(103)에 입력하여 결과 값(104)을 획득한 후, 저장되어 있던 패스워드 해쉬 값과의 일치 여부로 로그인 성공과 실패를 판정한다.
솔트는 사용자마다 랜덤하게 생성되더라도, 한 번 생성되기만 하면 특정 값으로 고정되어 데이터 베이스에 저장된다. 따라서, 데이터 베이스가 해킹되는 경우, 해커는 각 사용자별로 부여된 솔트를 쉽게 파악하여 패스워드 크래킹에 이용할 수 있다는 취약점이 있다. 특히, 솔트는 패스워드의 앞이나 뒤에 추가되는 경우가 대부분이므로, 해커 입장에서는 무차별 공격 회수가 2배 정도로 늘어나는 것에 불과하다.
따라서, 본 명세서에서는 상술한 솔트의 문제점을 해결하기 위하여 가변 솔트를 활용한 패스워드의 암호화 방법에 대해 제안하고자 한다.
본 발명의 일 실시예에 따른 패스워드 암호화 방법에 있어서, 특정 계정의 접속 인증을 위한 패스워드를 수신하는 단계; 상기 패스워드에 솔트(salt)를 추가하여 해쉬(Hash) 입력 메시지를 생성하는 단계; 상기 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득하는 단계; 상기 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 데이터 베이스에 등록하는 단계; 및 상기 솔트는, 상기 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함할 수 있다.
또한, 본 발명의 다른 실시예에 따른 패스워드 암호화 서버에 있어서, 특정 계정의 접속 인증을 위한 패스워드를 수신하고, 상기 패스워드에 솔트(salt)를 추가하여 해쉬(Hash) 입력 메시지를 생성하고, 상기 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득하는, 패스워드 암호화부; 및 상기 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 저장하는, 데이터 베이스부; 를 포함하되, 상기 솔트는, 상기 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 다양한 데이터(가변/고정 데이터)가 솔트로 사용되기 때문에 기본적으로 해쉬 함수의 입력 메시지 길이가 상당히 길어지게 되어, 해커 입장에선 크래킹 시간이 증가하게 된다. 또한 데이터 베이스뿐 아니라 로그인과 관련된 소스 코드가 유출되더라도, 해커는 사용자의 패스워드를 알 수 없기 때문에 어떤 솔트를 사용하였는지도 알 수 없게 된다. 결국 해커는 모든 케이스의 솔트 조합을 이용하여 크래킹을 시도해야 하는데, 솔트 조합 케이스 수가 매우 많아 시간이 상당히 소요되게 된다. 나아가, 만일 해커가 크래킹하는 도중에 사용자가 로그인하여 해쉬 값이 바뀌게 되면, 해커는 처음부터 다시 크래킹해야 하므로 보안 레벨이 매우 높게 안정적으로 유지된다는 효과가 있다.
도 1은 솔트를 이용한 패스워드 암호화 방법을 예시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 패스워드 암호화 방법을 예시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 패스워드 암호화 방법에 관한 순서도이다.
도 4는 본 발명의 일 실시예에 따라 사용자가 입력한 패스워드의 인증 방법에 관한 순서도이다.
도 5는 본 발명의 일 실시예에 따른 해쉬 입력 메시지의 다양한 실시예를 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따라 후보 해쉬 입력 메시지 리스트를 예시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 후보 해쉬 입력 메시지 포맷의 선택 방법에 관한 순서도이다.
도 8은 본 발명의 일 실시예에 따라 후보 해쉬 입력 메시지 포맷을 정의한 PHP 코드를 예시한 도면이다.
도 9는 본 발명의 일 실시예에 따른 패스워드 암호화 장치/서버의 블록도이다.
이하 설명하는 기술은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 이하 설명하는 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 이하 설명하는 기술의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 이하 설명하는 기술의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다" 등의 용어는 설시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 명세서에서 제안되는 패스워드 암호화/등록/인증 방법은 사용자 인증이 필요한 실시예들에 다양하게 적용될 수 있다. 예를 들어, 웹 사이트, 전자 장치 및 어플리케이션 등으로의 사용자 접속/로그인/잠금해제, 또는 계좌 이체 및 카드 결제를 위한 사용자 보안 인증 등에 본 발명이 적용될 수 있다. 따라서, 본 발명의 수행 주체는 ‘웹/어플리케이션 서버/장치’ 또는 ‘전자 장치’ 등과 같이 사용자 인증을 주체적으로 수행하는 서버/장치가 될 수 있다.
이하에서는 설명의 편의를 위해 웹 사이트로의 접속/로그인을 위한 사용자 인증 방식에 사용되는 패스워드 암호화/등록/인증 방법을 중심으로 설명한다. 따라서, 이하의 실시예들에서 수행 주체는 웹 사이트를 관리하는 웹 서버를 대표로 하여 설명한다. 그러나, 이에 한정되는 것은 아니며, 본 발명은 다양한 사용자 인증 실시예에 적용될 수 있음은 물론이다.
도 2는 본 발명의 일 실시예에 따른 패스워드 암호화 방법을 예시한 도면이다.
본 발명의 일 실시예에 따른 패스워드(101) 암호화에는, 기본적으로 앞서 상술한 솔트 및 해쉬 함수가 사용될 수 있다. 그러나, 종래의 암호화 방식과 다른 점은, 가변 솔트(201)가 사용된다는 점이다.
도 2를 참조하면, 사용자(200)가 입력한 패스워드(101)에는 적어도 하나의 가변 솔트(201)가 부가됨으로써 1차로 암호화될 수 있다. 여기서, 가변 솔트(201)는 고정되지 않고 지속적으로 변경/업데이트되는 가변 데이터를 기반으로 생성되는 솔트를 의미한다. 특히, 본 명세서에서 가변 솔트(201)는, 사용자(200)의 최근 접속 기록을 기반으로 생성되는 솔트에 해당할 수 있다. 예를 들어, 사용자(200)의 최근 접속 기록은 상기 특정 계정의 최근 접속 IP(Internet Protocol) 주소, 최근 접속 시간, 최근 접속 날짜, 최근까지 누적된 접속 횟수, 최근 접속 브라우저 또는 최근 접속 OS(Operating System) 종류에 해당할 수 있으며, 가변 솔트(201)는 이들 중 어느 하나에 해당할 수 있다. 따라서, 가변 솔트(201)는 사용자(200)가 접속/로그인할 때마다 변경/업데이트될 수 있다.
이렇듯 가변 솔트(201)로서 사용자의 최근 접속 기록을 사용하는 이유는, 국내외 개인 정보 보호 정책에 따라 웹 사이트의 개인 정보 처리자는 방문자(200)의 접속 기록을 반드시 데이터 베이스에 저장하여야 하기 때문이다. 따라서, 본 발명은, 별도로 가변 데이터(예를 들어, 난수 함수를 통한 난수 데이터 생성 등)를 생성할 필요 없이, 개인 정보 보호법에 따라 필수적으로 저장해야 하는 최근 접속 기록을 가변 솔트(201)로 재활용함으로써, 별도의 가변 데이터 생성을 위한 불필요한 프로세스를 줄일 수 있다.
최근 접속 기록은 사용자(200) 접속/로그인 시 변경/업데이트되므로, 이들이 가변 솔트(201)로 활용되면, 개인 정보 보호 정책도 따름과 동시에 패스워드 해쉬 값이 사용자(200) 접속/로그인 시점마다 변경/업데이트되게 된다. 이는, 웹 사이트 관리자나 해커 입장에서는, 사용자(200)가 접속/로그인 시마다 패스워드(101)를 변경/업데이트하는 것처럼 보인다.
이렇듯 가변 솔트(201)를 사용하게 되면, 데이터 베이스가 유출되더라도 공격자는 솔트가 무엇인지 알 수 없을 뿐만 아니라 솔트를 사용하고 있는지 조차 알 수 없게 된다. 또한, 공격자가 패스워드(101)를 크래킹하고 있는 동안, 사용자(200)가 로그인/접속을 하게 되면 패스워드 해쉬 값이 변경/업데이트되어 공격자는 크래킹을 처음부터 다시 시도해야 한다.
이렇듯 가변 솔트(201)를 활용하여 패스워드(101)를 암호화 및 등록하는 방법에 대해 도 3을 참조하여 이하에서 보다 상세히 후술한다.
도 3은 본 발명의 일 실시예에 따른 패스워드 암호화 방법에 관한 순서도이다.
본 순서도는 웹 사이트에 사용자가 회원 가입 시 패스워드가 웹 서버에 최초 등록되는 실시예(예를 들어, 회원 가입 또는 암호/보안/잠금 최초 설정)뿐 아니라, 회원 가입 후 접속/로그인을 위해 사용자가 패스워드를 입력하는 실시예에도 적용될 수 있다.
도 3을 참조하면, 웹 서버는 우선, 사용자가 입력한 패스워드를 수신할 수 있다(S301). 이때 수신되는 패스워드는, 특정 계정에 대한 최초 회원 가입 시 회원 등록을 위해 사용자가 입력한 패스워드, 또는 해당 계정에 대한 패스워드로서 데이터 베이스에 기등록되어 있는 패스워드에 해당할 수 있다.
다음으로, 웹 서버는 수신한 패스워드에 솔트를 추가하여 해쉬 입력 메시지를 생성할 수 있다(S302). 여기서, 솔트는 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함할 수 있으며, 가변 솔트에 관한 설명은 앞서 도 2를 참조하여 상술한 바와 같다. 솔트는 패스워드의 앞 혹은 뒤에 부가될 수 있다.
만일, 본 순서도가 최초 회원 가입 시 패스워드 등록을 위한 실시예에 적용되는 경우, 웹 서버는 사용자가 패스워드 등록을 시도/완료한 시점, 웹 사이트 회원 가입을 시도/완료한 시점 혹은 웹사이트의 회원 가입이 완료되어 최초 로그인/접속한 시점의 접속 정보를 기초로 최근 접속 기록을 생성할 수 있으며, 생성한 최근 접속 기록에 기초하여 가변 솔트 및 해쉬 입력 메시지를 순차적으로 생성할 수 있다. 예를 들어, 사용자가 2019년 9월 17일에 최초 회원 가입을 완료한 경우, 웹 서버는 해당 사용자에 대하여 20190917를 최근 접속/로그인 날짜로 기록할 수 있으며, 가변 솔트를 20190917로 설정할 수 있다.
이와 유사하게, 본 순서도가 회원 가입 후 로그인/접속 시도를 위한 실시예에 적용되는 경우, 웹 서버는 사용자가 입력한 패스워드의 인증이 완료되어 사용자의 접속/로그인을 허용한 시점 또는 웹 사이트에 접속/로그인한 시점의 접속 정보를 기초로 최근 접속 기록을 업데이트할 수 있으며, 업데이트한 최근 접속 기록에 기초하여 가변 솔트 및 해쉬 입력 메시지를 순차적으로 생성할 수 있다.
최근 접속 기록이 생성/업데이트되는 구체적인 시점은 상술한 실시예들에 한정되지 않으며, 웹 서버 관리자에 의해 최근 접속 기록이 업데이트되는 시점이 직접 설정되거나, 일반적으로 최근 접속 기록이 업데이트되는 시점으로 다양하게 설정될 수 있음은 물론이다.
다음으로, 웹 서버는 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득할 수 있다(S303).
마지막으로, 웹 서버는 획득한 패스워드 해쉬 값을 특정 계정의 접속 인증 데이터로서 데이터 베이스에 등록/저장할 수 있다(S304). 이때, 웹 서버는 해당 특정 계쩡의 접속 인증 데이터로서 패스워드 해쉬 값 외에도, 패스워드 해쉬 값을 획득하는 데 사용된 솔트에 관한 정보(예를 들어, 솔트 값, 솔트 종류 및/또는 해쉬 입력 메시지 상에서 패스워드에 대한 솔트의 상대적 위치 등)를 패스워드 해쉬 값에 대응하여 저장할 수 있다.
도 4는 본 발명의 일 실시예에 따라 사용자가 입력한 패스워드의 인증 방법에 관한 순서도이다.
도 4를 참조하면, 웹 서버는 특정 계정의 웹 사이트 접속 인증을 위한 인증 대상 패스워드를 수신할 수 있다(S401). 이때, 접속 인증이 시도된 특정 계정에 관한 정보도 함께 수신할 수 있다.
다음으로, 웹 서버는 특정 계정의 접속 인증 데이터를 데이터 베이스로부터 로드할 수 있다(S402).
다음으로, 웹 서버는 로드한 접속 인증 데이터에 포함되어 있는 솔트를 인증 대상 패스워드에 추가하여 인증 대상 해쉬 입력 메시지를 생성할 수 있다(S403). 특히, 웹 서버는 로드한 접속 인증 데이터에 포함되어 있는 솔트의 위치 정보에 따라 패스워드의 앞 또는 뒤에 솔트를 부가함으로써 인증 대상 해쉬 입력 메시지를 생성할 수 있다.
다음으로, 웹 서버는 인증 대상 해쉬 입력 메시지를 해쉬 함수에 입력하여 인증 대상 패스워드 해쉬 값을 획득할 수 있다(S404).
다음으로, 웹 서버는 인증 대상 패스워드 해쉬 값과 상기 로드한 접속 인증 데이터에 포함되어 있는 패스워드 해쉬 값을 비교하고(S405), 두 해쉬 값이 매칭되는지 여부를 판단할 수 있다(S406).
만일 두 해쉬 값이 매칭되지 않는 경우, 웹 서버는 특정 계정의 접속을 허용하지 않을 수 있다(S408).
반대로, 두 해쉬 값이 매칭되는 경우, 웹 서버는 특정 계정의 접속을 허용할 수 있다(S407). 이때, 웹 서버는 접속 허용 시점의 접속 정보에 따라 최근 접속 기록 및 가변 솔트를 업데이트할 수 있다. 나아가, 웹 서버는 업데이트된 가변 솔트에 기초하여 데이터 베이스에 등록되어 있는 패스워드 해쉬 값을 업데이트할 수 있다. 보다 구체적으로, 웹 서버는 패스워드에 가변 솔트의 업데이트가 반영된 솔트를 추가(또는 솔트 내 가변 솔트 부분을 최근 접속 기록에 따라 업데이트된 가변 솔트로 대체)하여 업데이트된 해쉬 입력 메시지를 생성할 수 있다. 또한, 웹 서버는 업데이트된 해쉬 입력 메시지를 해쉬 함수에 입력하여 업데이트된 패스워드 해쉬 값을 획득할 수 있다. 마지막으로, 웹 서버는 업데이트된 패스워드 해쉬 값을 특정 계정의 접속 인증 데이터로서 데이터 베이스에 재등록할 수 있다.
도 5는 본 발명의 일 실시예에 따른 해쉬 입력 메시지의 다양한 실시예를 예시한 도면이다.
패스워드(101)에 솔트가 부가되어 암호화 보안 레벨이 강화될 수 있으며, 솔트로는 적어도 하나의 가변 솔트(201)가 부가될 수 있음은 앞서 상술한 바와 같다. 가변 솔트(201) 외에도, 패스워드(101)에 다양한 형태의 솔트가 선택적으로 더 부착될 수 있는데, 부착 가능한 솔트의 실시예로 본 도면에 도시한 바와 같은 고정 솔트(301)가 제안될 수 있다.
고정 솔트(301)는 가변 솔트(201)와는 반대로 변하지 않는 고정 데이터를 기초로 생성되는 솔트를 의미한다. 특히, 본 명세서에서 고정 솔트(301)는, 계정별로 고유한 데이터를 기초로 생성될 수 있으며, 예를 들어, 계정의 아이디, 회원 가입 날짜, 회원 가입 시간, 생일, 주소, SNS(Social Network Service) 계정, 이메일 주소, 및/또는 휴대폰 번호에 해당할 수 있다.
즉, 패스워드(101)에는 적어도 하나의 가변 솔트(201-1~201-N) 및/또는 적어도 하나의 고정 솔트(301-1~301-N)가 부착/부가/추가됨으로써 해쉬 입력 메시지(31)가 생성될 수 있으며, 많은 솔트가 부착/부가/추가될수록 보안 레벨은 높아진다. 예를 들어, 패스워드(101)에는 제1 가변 솔트(201-1)로서 최근 접속 날짜, 제2 가변 솔트(201-2)로서 최근 접속 IP, 제3 가변 솔트(201-3)로서 최근까지의 누적 접속 횟수, 제1 고정 솔트(301-1)로서 특정 계정의 ID, 제2 고정 솔트(301-2)로서 회원 가입 날짜가 부가될 수 있다. 특히, 패스워드(101)에 가변 솔트(201)는 필수적으로 부착되나, 고정 솔트(301)는 실시예에 따라 선택적으로 부착될 수 있다.
해쉬 입력 메시지(31) 상에서 패스워드(101), 가변 솔트(201) 및/또는 고정 솔트(301)는 다양한 순서로 나열될 수 있으며, 나열 순서에 따라 최종 패스워드 해쉬 값이 달라지게 된다. 이러한 점에 기초하여, 나열 순서 역시 보안 레벨을 높이기 위한 중요한 암호화 요소로 활용될 수 있는데, 이에 관해서는 도 6 및 7을 참조하여 이하에서 후술한다. 나열 순서에 따라 최종 패스워드 해쉬 값이 달라지므로, 나열 순서에 관한 정보 역시 솔트에 관한 정보로서, 패스워드 해쉬 값과 함께 데이터 베이스에 저장될 수 있다.
도 6은 본 발명의 일 실시예에 따라 후보 해쉬 입력 메시지 리스트를 예시한 도면이다.
패스워드와 솔트의 순서에 따라 최종 패스워드 해쉬 값이 달라지므로, 패스워드와 솔트의 순서가 서로 상이하게 지정된 복수의 후보 해쉬 입력 메시지 포맷들(601-1~601-N)이 사전에 정의/설정될 수 있다.
예를 들어, 패스워드와 제1 내지 제4 가변 솔트를 이용하여 해쉬 입력 메시지가 생성되는 경우, 해쉬 입력 메시지 내에서 패스워드와 제1 내지 제4 가변 솔트의 순서가, 본 도면에 도시한 바와 같이, 서로 상이하게 지정/설정/나열된 복수의 후보 해쉬 입력 메시지 포맷들(601-1~601-N)이 사전에 정의될 수 있다.
이 경우, 정의되는 후보 해쉬 입력 메시지 포맷(601-1~601-N)의 총 개수(N)는 “A!”일 수 있으며, 여기서 A는 해쉬 입력 메시지 상에서 나열되는 대상(즉, 해쉬 입력 메시지 생성에 사용되는 패스워드 및 모든 솔트(예를 들어, 적어도 하나의 가변 솔트 및/또는 적어도 하나의 고정 솔트)의 총 개수에 해당할 수 있다. 예를 들어, 본 도면의 실시예와 같이, 해쉬 입력 메시지 내에서 나열되는 대상이 총 5가지(패스워드와 제1 내지 제4 가변 솔트)인 경우, 정의되는 후보 해쉬 입력 메시지 포맷(601-1~601-N)의 총 개수(N)(다시 말하면, 나열 조합 개수)는 5!=120가지일 수 있다. 이때, 각 후보 해쉬 입력 메시지 포맷들(601-1~601-N)을 식별할 수 있도록, 각 메시지 포맷(601-1~601-N)별로 서로 다른 식별 번호가 할당될 수 있다. 예를 들어, 서로 다른 식별 번호는 ‘0’부터 ‘후보 해쉬 입력 메시지 포맷들(601-1~601-N)의 총 개수(N)-1’까지 범위를 갖는 무부호 정수(unsigned integer)로 각 메시지 포맷에 할당될 수 있다.
웹 서버는 이렇게 사전에 정의되어 있는 후보 해쉬 입력 메시지 포맷들(601-1~601-N) 중 어느 하나를 선택하여 해쉬 입력 메시지를 생성하고, 이를 해쉬 함수에 입력함으로써 최종 패스워드 해쉬 값을 생성할 수 있다. 어떤 후보 해쉬 입력 메시지 포맷(601-1~601-N)을 선택할지에 관한 선택 방법은 다양한 실시예가 존재할 수 있는데, 이 중 하나의 실시예로서 도 7의 실시예를 제안한다.
도 7은 본 발명의 일 실시예에 따른 후보 해쉬 입력 메시지 포맷의 선택 방법에 관한 순서도이다.
도 7을 참조하면, 웹 서버는 우선 사용자로부터 입력받은 패스워드를 숫자화할 수 있다(S701). 이를 위해, 웹 서버는 텍스트를 숫자로 변환하기 위한 다양한 연산자/함수를 사용할 수 있다.
다음으로, 웹 서버는 숫자화된 패스워드를 정의되어 있는 후보 해쉬 입력 메시지 포맷들의 총 개수로 모듈러(modular) 연산(%)을 수행할 수 있다(S702). 이를 식으로 간략히 표현하면 다음과 같다: (숫자화된 패스워드) mod (후보 해쉬 입력 메시지 포맷의 총 개수) == X
다음으로, 웹 서버는 모듈러 연산한 결과 값(X)과 동일한 식별 번호가 할당된 후보 해쉬 입력 메시지 포맷을 최종 해쉬 입력 메시지 포맷으로서 선택할 수 있다(S703).
마지막으로, 웹 서버는 최종 해쉬 입력 메시지 포맷에 따라 해쉬 입력 메시지를 생성할 수 있다(S704). 예를 들어, 모듈러 연산한 결과 값(X)가 ‘0’인 경우, 도 6에서 식별 번호 ‘0’이 할당된 첫 번째 후보 해쉬 입력 메시지 포맷이 선택될 수 있으며, 웹 서버는 해당 메시지 포맷에 맞춰 패스워드 및 최근 접속 기록을 순서대로 삽입함으로써 최종 해쉬 입력 메시지를 생성할 수 있게 된다.
이렇듯 나열 순서 역시 암호화 요소로 활용하는 경우, 소스 코드가 노출되더라도 크래킹 시간이 비약적으로 증가한다는 효과가 발생하게 된다. 보다 상세하게는, 모든 솔트를 이용하여 해쉬 값을 만들 수 있는 조합 케이스는 (솔트의 개수 + 1)! 이며, 평균 약 (전체 케이스의 수/2)만큼 크래킹 시간이 증가하여 패스워드를 더 안전하게 보호할 수 있다. 예를 들어, 솔트의 개수가 10개라면 전체 만들 수 있는 조합은 3628800이며, 평균 약 1814400배만큼 크래킹 시간이 크게 증가하게 되어 보안도가 매우 높아지게 된다. 나아가, 해쉬 값 생성 알고리즘도 간단하므로, 프로세스 오버헤드가 증가하지 않는다.
도 8은 본 발명의 일 실시예에 따라 후보 해쉬 입력 메시지 포맷을 정의한 PHP 코드를 예시한 도면이다.
도 8을 참조하면, 해쉬 입력 메시지 내에서 나열되는 요소를 4가지(패스워드, 최근 접속 기록(제1 가변 솔트), 최근 접속 IP, 최근까지 누적 접속 횟수)로 지정하여 후보 해쉬 입력 메시지 포맷을 정의하였으며, 그 결과 총 24가지(=4!)의 서로 다른 후보 해쉬 입력 메시지 포맷이 정의 가능하다. 각 후보 해쉬 입력 메시지 포맷에는 0부터 23까지의 서로 다른 무부호 정수가 할당될 수 있다.
참고로, PHP(Hypertext Preprocessor)에서 unpack 함수는 string을 다양한 포맷으로 바꾸어주는 함수이다. 함수 unpack에 있는 첫 번째 파라미터인 I는 string을 unsigned integer로 바꾼다는 의미로 해석된다.
도 9는 본 발명의 일 실시예에 따른 패스워드 암호화 장치/서버의 블록도이다.
도 9를 참조하면, 패스워드 암호화 장치/서버는 패스워드 암호화 방법을 수행하기 위한 기능에 따라 패스워드 암호화부(902) 및/또는 데이터 베이스부(903)를 포함할 수 있다. 이러한 유닛들(902, 903)은 적어도 하나의 하드웨어/소프트웨어적인 구성 요소, 회로, 기계적 장치로 구현될 수 있으며, 본 명세서에서 서술된 기능을 수행할 수 있다.
패스워드 암호화부(902)는 패스워드를 수신하고, 수신한 패스워드를 암호화하는 기능을 주로 수행할 수 있다.
패스워드 암호화부(902)는 패스워드를 사용자로부터 직접/간접적으로 수신하기 위한 다양한 수단을 포함할 수 있다. 여기서 직접 수신은 적어도 하나의 입력 모듈을 통해 사용자의 입력을 직접적으로 인식/센싱하는 것을 의미하며, 간접 수신은 외부로부터 사용자 입력을 적어도 하나의 통신 모듈을 통해 수신하는 것을 의미할 수 있다. 따라서, 직접 수신을 위해, 패스워드 암호화부(902)는 적어도 하나의 센서(예를 들어, 터치 센서, 중력(gravity) 센서, 지자기 센서, 모션 센서, 자이로스코프 센서, 가속도 센서, 적외선 센서, 기울임(inclination) 센서, 밝기 센서, 고도 센서, 후각 센서, 온도 센서, 뎁스 센서, 압력 센서, 밴딩 센서, 오디오 센서, 비디오 센서, GPS(Global Positioning System) 센서, 그립 센서)를 포함할 수 있다. 간접 수신을 위해 패스워드 암호화부(902)는 적어도 하나의 통신 프로토콜을 이용하여 외부와 통신을 수행하기 위한 통신 모듈을 포함할 수 있다.
특히, 패스워드 암호화부(902)는 본 명세서에서 제안된 패스워드 암호화 방법/알고리즘을 수행하기 위해 적어도 하나의 프로세서를 포함할 수 있다. 프로세서는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), AP(Application Processor), AP(Application Processor) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 적어도 하나 포함하여 구성될 수 있다. 프로세서는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다.
데이터 베이스부(903)는 저장 공간을 의미하는 것으로, 비디오, 오디오, 사진, 동영상 및/또는 애플리케이션 등의 다양한 디지털 데이터를 저장할 수 있다. 예를 들어, 데이터 베이스부(903)는 플래시 메모리, HDD(Hard Disk Drive), SSD(Solid State Drive), 클라우드 등의 다양한 디지털 데이터 저장 공간을 의미하며, 상기 예시에 한정되는 것은 아니다. 특히, 본 발명의 일 실시예에 따른 데이터 베이스부(903)는 사용자 계정별 접속 인증 데이터를 저장할 수 있다. 접속 인증 데이터란, 각 계정별로 접속을 요청한 사용자가 접속이 정당하게 허용될 수 있는 자인지를 인증하기 위해 사용되는 모든 디지털 데이터를 의미한다. 본 발명에서 접속 인증 데이터의 예시로, 계정, 각 계정별 패스워드 해쉬 값 및/또는 각 패스워드 해쉬 값을 만드는 데 사용된 솔트에 관한 정보 등이 존재한다. 이외에도, 데이터 베이스부(903)는 실시예에 따라 사전에 정의된 후보 해쉬 입력 메시지 포맷들도 저장할 수 있다.
본 발명에 따른 실시예는 다양한 수단, 예를 들어, 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다. 하드웨어에 의한 구현의 경우, 본 발명의 일 실시예는 하나 또는 그 이상의 ASICs(application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 프로세서, 콘트롤러, 마이크로 콘트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
또한, 펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 일 실시예는 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차, 함수 등의 형태로 구현되어, 다양한 컴퓨터 수단을 통하여 판독 가능한 기록매체에 기록될 수 있다. 여기서, 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
아울러, 본 발명에 따른 장치나 단말은 하나 이상의 프로세서로 하여금 앞서 설명한 기능들과 프로세스를 수행하도록 하는 명령에 의하여 구동될 수 있다. 예를 들어 그러한 명령으로는, 예컨대 JavaScript나 ECMAScript 명령 등의 스크립트 명령과 같은 해석되는 명령이나 실행 가능한 코드 혹은 컴퓨터로 판독 가능한 매체에 저장되는 기타의 명령이 포함될 수 있다. 나아가 본 발명에 따른 장치는 서버 팜(Server Farm)과 같이 네트워크에 걸쳐서 분산형으로 구현될 수 있으며, 혹은 단일의 컴퓨터 장치에서 구현될 수도 있다.
또한, 본 발명에 따른 장치에 탑재되고 본 발명에 따른 방법을 실행하는 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 혹은 코드로도 알려져 있음)은 컴파일 되거나 해석된 언어나 선험적 혹은 절차적 언어를 포함하는 프로그래밍 언어의 어떠한 형태로도 작성될 수 있으며, 독립형 프로그램이나 모듈, 컴포넌트, 서브루틴 혹은 컴퓨터 환경에서 사용하기에 적합한 다른 유닛을 포함하여 어떠한 형태로도 전개될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 반드시 대응하는 것은 아니다. 프로그램은 요청된 프로그램에 제공되는 단일 파일 내에, 혹은 다중의 상호 작용하는 파일(예컨대, 하나 이상의 모듈, 하위 프로그램 혹은 코드의 일부를 저장하는 파일) 내에, 혹은 다른 프로그램이나 데이터를 보유하는 파일의 일부(예컨대, 마크업 언어 문서 내에 저장되는 하나 이상의 스크립트) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐서 분산되어 통신 네트워크에 의해 상호 접속된 다중 컴퓨터나 하나의 컴퓨터 상에서 실행되도록 전개될 수 있다.
설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시예들을 병합하여 새로운 실시예를 구현하도록 설계하는 것도 가능하다. 또한, 본 발명은 상술한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상술한 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
또한, 이상에서는 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 명세서는 상술한 특정의 실시예에 한정되지 아니하며, 청구 범위에서 청구하는 요지를 벗어남이 없이 당해 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형 실시들은 본 명세서의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
901: 사용자 입력부
902: 패스워드 암호화부
903: 데이터 베이스부

Claims (12)

  1. 패스워드 암호화 방법에 있어서,
    특정 계정의 접속 인증을 위한 패스워드를 수신하는 단계;
    상기 패스워드에 솔트(salt)를 추가하여 해쉬(Hash) 입력 메시지를 생성하는 단계;
    상기 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득하는 단계;
    상기 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 데이터 베이스에 등록하는 단계;
    상기 특정 계정의 접속 인증을 위한 인증 대상 패스워드를 수신하는 단계;
    상기 특정 계정의 접속 인증 데이터를 상기 데이터 베이스로부터 로드하는 단계;
    상기 로드한 접속 인증 데이터에 포함되어 있는 솔트를 상기 인증 대상 패스워드에 추가하여 인증 대상 해쉬 입력 메시지를 생성하는 단계;
    상기 인증 대상 해쉬 입력 메시지를 상기 해쉬 함수에 입력하여 인증 대상 패스워드 해쉬 값을 획득하는 단계;
    상기 인증 대상 패스워드 해쉬 값과 상기 로드한 접속 인증 데이터에 포함되어 있는 패스워드 해쉬 값을 비교하는 단계;
    상기 두 해쉬 값이 매칭되는 경우, 상기 특정 계정의 접속을 허용하는 단계;
    상기 특정 계정의 접속이 허용된 경우, 허용 시점의 접속 정보에 따라 최근 접속 기록 및 적어도 하나의 가변 솔트를 업데이트하는 단계; 및
    상기 업데이트된 가변 솔트에 기초하여 상기 데이터 베이스에 등록된 상기 패스워드 해쉬 값을 업데이트하는 단계; 를 포함하고,
    상기 솔트는, 상기 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함하고,
    상기 패스워드 해쉬 값을 상기 데이터 베이스에 등록하는 단계는,
    상기 특정 계정의 접속 인증 데이터로서, 상기 패스워드 해쉬 값을 획득하는 데 사용된 솔트에 관한 정보를 상기 패스워드 해쉬 값에 대응하여 저장하는 단계; 를 포함하는, 패스워드 암호화 방법.
  2. 제 1 항에 있어서,
    상기 가변 솔트는,
    상기 특정 계정의 최근 접속 IP(Internet Protocol) 주소, 최근 접속 시간, 최근 접속 날짜, 최근까지 누적된 접속 횟수, 최근 접속 브라우저 또는 최근 접속 OS(Operating System) 종류에 해당하는, 패스워드 암호화 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 데이터 베이스에 등록된 상기 패스워드 해쉬 값을 업데이트하는 단계는,
    상기 패스워드에 상기 가변 솔트의 업데이트가 반영된 솔트를 추가하여 업데이트된 해쉬 입력 메시지를 생성하는 단계;
    상기 업데이트된 해쉬 입력 메시지를 상기 해쉬 함수에 입력하여 업데이트된 패스워드 해쉬 값을 획득하는 단계; 및
    상기 업데이트된 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 상기 데이터 베이스에 재등록하는 단계; 를 포함하는, 패스워드 암호화 방법.
  7. 제 1 항에 있어서,
    상기 솔트는,
    상기 특정 계정에 고유하며, 상기 특정 계정의 접속에 따라 업데이트되지 않는 적어도 하나의 고정 솔트를 선택적으로 더 포함하는, 패스워드 암호화 방법.
  8. 제 7 항에 있어서,
    상기 고정 솔트는,
    상기 특정 계정의 아이디, 회원 가입 날짜, 회원 가입 시간, 생일, 주소, SNS(Social Network Service) 계정, 이메일 주소, 및/또는 휴대폰 번호에 해당하는, 패스워드 암호화 방법.
  9. 제 7 항에 있어서,
    상기 해쉬 입력 메시지 생성에 사용되는 모든 솔트 및 상기 패스워드가 상기 해쉬 입력 메시지 내에서 나열되는 순서가 서로 상이하게 설정된 후보 해쉬 입력 메시지 포맷들이 정의되고, 상기 후보 해쉬 입력 메시지 포맷별로 서로 다른 식별 번호가 할당되는, 패스워드 암호화 방법.
  10. 제 9 항에 있어서,
    상기 해쉬 입력 메시지를 생성하는 단계는,
    상기 패스워드를 숫자화하는 단계;
    상기 숫자화된 패스워드를 상기 후보 해쉬 입력 메시지 포맷들의 총 개수로 모듈러(Modular) 연산하는 단계;
    상기 모듈러 연산한 결과 값과 동일한 식별 번호가 할당된 후보 해쉬 입력 메시지 포맷을 최종 해쉬 입력 메시지 포맷으로서 선택하는 단계; 및
    상기 최종 해쉬 입력 메시지 포맷에 따라 상기 해쉬 입력 메시지를 생성하는 단계; 를 포함하는, 패스워드 암호화 방법.
  11. 제 10 항에 있어서,
    상기 서로 다른 식별 번호는,
    0부터 상기 후보 해쉬 입력 메시지 포맷들의 총 개수-1까지 범위를 갖는 무부호정수(unsigned integer)인, 패스워드 암호화 방법.
  12. 패스워드 암호화 서버에 있어서,
    특정 계정의 접속 인증을 위한 패스워드를 수신하고, 상기 패스워드에 솔트(salt)를 추가하여 해쉬(Hash) 입력 메시지를 생성하고, 상기 해쉬 입력 메시지를 해쉬 함수에 입력하여 결과 값으로서 패스워드 해쉬 값을 획득하는, 패스워드 암호화부; 및
    상기 패스워드 해쉬 값을 상기 특정 계정의 접속 인증 데이터로서 저장하는, 데이터 베이스부; 를 포함하되,
    상기 솔트는, 상기 특정 계정의 최근 접속 기록에 따라 업데이트되는 적어도 하나의 가변 솔트를 포함하고,
    상기 패스워드 암호화부는,
    상기 특정 계정의 접속 인증을 위한 인증 대상 패스워드를 수신하고,
    상기 특정 계정의 접속 인증 데이터를 상기 데이터 베이스로부터 로드하고,
    상기 로드한 접속 인증 데이터에 포함되어 있는 솔트를 상기 인증 대상 패스워드에 추가하여 인증 대상 해쉬 입력 메시지를 생성하고,
    상기 인증 대상 해쉬 입력 메시지를 상기 해쉬 함수에 입력하여 인증 대상 패스워드 해쉬 값을 획득하고,
    상기 인증 대상 패스워드 해쉬 값과 상기 로드한 접속 인증 데이터에 포함되어 있는 패스워드 해쉬 값을 비교하고,
    상기 두 해쉬 값이 매칭되는 경우, 상기 특정 계정의 접속을 허용하고,
    상기 특정 계정의 접속이 허용된 경우, 허용 시점의 접속 정보에 따라 상기 최근 접속 기록 및 상기 적어도 하나의 가변 솔트를 업데이트하고,
    상기 업데이트된 가변 솔트에 기초하여 상기 데이터 베이스에 등록된 상기 패스워드 해쉬 값을 업데이트하고,
    상기 데이터 베이스부는,
    상기 특정 계정의 접속 인증 데이터로서, 상기 패스워드 해쉬 값을 획득하는 데 사용된 솔트에 관한 정보를 상기 패스워드 해쉬 값에 대응하여 저장하는, 패스워드 암호화 서버.
KR1020200062749A 2020-05-26 2020-05-26 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버 KR102350718B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200062749A KR102350718B1 (ko) 2020-05-26 2020-05-26 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200062749A KR102350718B1 (ko) 2020-05-26 2020-05-26 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버

Publications (2)

Publication Number Publication Date
KR20210145925A KR20210145925A (ko) 2021-12-03
KR102350718B1 true KR102350718B1 (ko) 2022-01-13

Family

ID=78866788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200062749A KR102350718B1 (ko) 2020-05-26 2020-05-26 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버

Country Status (1)

Country Link
KR (1) KR102350718B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022007B (zh) * 2022-05-30 2024-03-01 中国银行股份有限公司 数据处理方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099375A1 (en) * 2005-09-09 2011-04-28 Teksecure Labs System and Method for Managing Security Testing
WO2016040250A1 (en) 2014-09-08 2016-03-17 Square, Inc. Mitigating risk of account enumeration
WO2019010101A1 (en) 2017-07-01 2019-01-10 Shape Security, Inc. SECURE DETECTION AND MANAGEMENT OF COMPROMISED IDENTITY SUPPORTERS

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099375A1 (en) * 2005-09-09 2011-04-28 Teksecure Labs System and Method for Managing Security Testing
WO2016040250A1 (en) 2014-09-08 2016-03-17 Square, Inc. Mitigating risk of account enumeration
WO2019010101A1 (en) 2017-07-01 2019-01-10 Shape Security, Inc. SECURE DETECTION AND MANAGEMENT OF COMPROMISED IDENTITY SUPPORTERS

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Alfred J. Menezes 외 2명, Handbook of Applied Cryptography, CRC Press (1996.)*

Also Published As

Publication number Publication date
KR20210145925A (ko) 2021-12-03

Similar Documents

Publication Publication Date Title
EP3500972B1 (en) Protection feature for data stored at storage service
US11741218B2 (en) System and method for improving the security of stored passwords for an organization
EP2731046B1 (en) Client computer for querying a database stored on a server via a network
Genc et al. Examination of a new defense mechanism: Honeywords
US10079855B2 (en) Password breach registry
US20150271177A1 (en) Device-driven user authentication
CN110445769B (zh) 业务系统的访问方法及装置
US10853473B2 (en) Enforcing trusted application settings for shared code libraries
US11321448B1 (en) System and method for improving the security of stored passwords for an organization
KR20140048879A (ko) 안전한 데이터 저장
US11783016B2 (en) Computing system and method for verification of access permissions
KR20190021367A (ko) 패스워드 생성 디바이스 및 패스워드 검증 디바이스
EP3767502B1 (en) Secure storing and processing of data
CN104834840A (zh) 基于映射漂移技术的密码保护方法
RU2724713C1 (ru) Система и способ смены пароля учетной записи при наличии угрозы получения неправомерного доступа к данным пользователя
US10158623B2 (en) Data theft deterrence
KR102350718B1 (ko) 가변 솔트를 활용한 패스워드 암호화 방법, 이를 위한 장치 및 서버
US11636219B2 (en) System, method, and apparatus for enhanced whitelisting
KR101460916B1 (ko) 일회용 비밀 번호를 이용하는 사용자 인증 방법 및 그 장치
CN110717153B (zh) 一种权限验证方法和装置
Asha et al. Preventing sql injection attacks
US20180322305A1 (en) System and method for data theft prevention
Mishra et al. XML-Based Authentication to Handle SQL Injection
EP4310703A1 (en) Controlling access to a trusted computing environment
US20240184863A1 (en) Verification of Access Permissions

Legal Events

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