KR20110019223A - 패스워드 해독 장치 및 그것의 패스워드 해독 방법 - Google Patents
패스워드 해독 장치 및 그것의 패스워드 해독 방법 Download PDFInfo
- Publication number
- KR20110019223A KR20110019223A KR1020090076841A KR20090076841A KR20110019223A KR 20110019223 A KR20110019223 A KR 20110019223A KR 1020090076841 A KR1020090076841 A KR 1020090076841A KR 20090076841 A KR20090076841 A KR 20090076841A KR 20110019223 A KR20110019223 A KR 20110019223A
- Authority
- KR
- South Korea
- Prior art keywords
- password
- graphics processing
- candidate
- host
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2131—Lost password, e.g. recovery of lost or forgotten passwords
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 패스워드 해독 장치에 관한 것이다. 본 발명의 패스워드 해독 장치는 암호화된 문서 파일의 패스워드 검출을 위한 후보 패스워드들을 생성하고, 생성된 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛들로 중복되지 않도록 할당하는 호스트 제어부, 및 할당된 후보 패스워드들을 탐색하여 문서 파일의 패스워드를 검출하면, 패스워드 검출 정보를 출력하는 적어도 두 개의 그래픽 프로세싱 유닛을 포함한다. 호스트 제어부는 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 패스워드 검출 정보를 수신하면, 패스워드 검출 정보를 사용하여 패스워드를 검출함을 특징으로 한다.
문서 파일, 패스워드, 해독
Description
본 발명은 패스워드 해독 장치에 관한 것으로, 패스워드의 해독에 소요되는 시간을 감소하는 패스워드 해독 장치 및 그것의 패스워드 해독 방법에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호 : 2007-S-019-03, 과제명 : 정보투명성 보장형 디지털 포렌식 장치 개발].
컴퓨터 사용자는 텍스트 파일, 이미지 파일 등을 생성하여 배포할 때, 문서 파일, 일예로 PDF 파일로 변환해서 배포한다. 이때, 문서 파일의 내용을 보호하고, 권한이 있는 사용자에게만 문서를 보여주기 위해서 사용자는 패스워드를 입력하여 문서 파일을 암호화할 수 있다. 암호화된 문서 파일을 열람하기 위해서는 사용자는 문서 파일 암호화 시에 설정한 패스워드를 입력하여야 한다. 하지만, 패스워드를 잊어버리거나 기억할 수 없을 때에는 문서 열람이 불가능하다. 또한, 패스워드가 설정된 문서 파일이 수사과정에서 사용될 수 있는데, 이러한 문서 파일 암호화는 수사 과정에서 증거물의 수집을 어렵게 한다.
문서 파일에 설정된 패스워드를 찾기 위해서 사용자는 패스워드 해독 소프트웨어를 사용하거나 패스워드 해독 전용 하드웨어를 사용한다.
패스워드 탐색 소프트웨어를 사용하는 경우, 사용자는 저렴하게 무료로 소프트웨어를 이용할 수 있다. 하지만, 패스워드 탐색에 순차적인 중앙 처리 장치(CPU: Central Processing Unit) 연산을 사용하므로 패스워드의 발견 속도가 느리다. 또한, 패스워드 해독을 위한 전용 하드웨어(일예로, 암호 해독 기능을 갖는 필드 프로그래머블 게이트 어레이(FPGA: Field-Programmable Gate Array) 또는 암호 해독 기능을 갖는 주문형 집적 회로(ASIC: Application-Specific Integrated circuit))를 이용하면 사용자는 가장 고속으로 패스워드를 찾을 수 있다. 하지만, 사용자는 패스워드 탐색을 위한 전용 하드웨어를 추가적으로 구입해야 한다.
본 발명은 상술한 기술적 과제를 해결하기 위해 제안된 것으로, 본 발명의 목적은 패스워드 해독에 소요되는 시간을 감소하는 패스워드 해독 장치, 패스워드 해독 장치 및 그것의 패스워드 해독 방법을 제공한다.
본 발명의 다른 목적은 추가적인 전용 하드웨어를 사용하지 않고도 패스워드 해독에 소요되는 시간을 감소하는 패스워드 해독 장치, 패스워드 해독 장치 및 그것의 패스워드 해독 방법을 제공한다.
본 발명에 따른 패스워드 해독 장치는 암호화된 문서 파일의 패스워드 검출을 위한 후보 패스워드들을 생성하고, 상기 생성된 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛들로 중복되지 않도록 할당하는 호스트 제어부, 및 상기 할당된 후보 패스워드들을 탐색하여 상기 문서 파일의 패스워드를 검출하면, 패스워드 검출 정보를 출력하는 적어도 두 개의 그래픽 프로세싱 유닛을 포함하고, 상기 호스트 제어부는 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 상기 패스워드 검출 정보를 수신하면, 상기 패스워드 검출 정보를 사용하여 상기 패스워드를 검출함을 특징으로 한다.
이 실시예에 있어서, 상기 적어도 두 개의 그래픽 프로세싱 유닛은 각 그래픽 프로세싱 유닛에 할당된 후보 패스워드들로부터 패스워드 탐색을 병렬로 수행함을 특징으로 한다.
이 실시예에 있어서, 상기 패스워드 검출 정보는 상기 적어도 두 개의 그래픽 프로세싱 유닛 각각에 할당된 블록 개수, 블록 내의 쓰레드 개수, 및 패스워드 길이의 곱에 해당하는 후보 패스워드들 중에서 검출된 패스워드의 시작 위치를 나타내는 시작 포인터 정보임을 특징으로 한다.
이 실시예 에 있어서, 상기 호스트는 상기 후보 패스워드들의 문자열의 시작 포인트로부터 패딩 데이터의 시작 지점까지의 패스워드를 검출함을 특징으로 하고, 상기 패딩 데이터는 아스키 코드 값인 '0x28'과 '0xbf'가 연속된 부분부터의 데이터임을 특징으로 한다.
이 실시예에 있어서, 상기 적어도 두 개의 그래픽 프로세싱 유닛은 하나의 그래픽 카드에 포함되거나 서로 다른 그래픽 카드들에 각각 포함됨을 특징으로 한다.
이 실시예에 있어서, 상기 호스트는 상기 패스워드의 검색 범위 할당 시 하기의 수학식을 이용함을 특징으로 한다.
[수학식]
for ((i= TOTAL_DOC_THREAD * gpuNumber);
(i < searchEnd + TOTAL_DOC_THREAD * gpuCount);
(i+ = TOTAL_DOC_THREAD * gpuCount))
TOTAL_DOC_THREAD는 문서 파일의 패스워드 해독을 위한 그래픽 프로세싱 유닛의 블록 개수와 상기 블록 내에 포함된 쓰레드 개수의 곱이고, gpuNumber는 그래픽 프로세싱 유닛의 번호이고, gpuCount는 상기 암호화된 문서 파일의 패스워드 해 독에 사용되는 그래픽 프로세싱 유닛의 개수이고, searchEnd는 패스워드의 검색 범위이다.
이 실시예에 있어서, 상기 그래픽 프로세싱 유닛은 암호화된 문서 파일 해독에 RC4 알고리즘을 사용하는 경우, RC 키 생성 시에 생성된 암호화 키와 RC4 데이터 암호화 결과를 상기 그래픽 프로세싱 유닛 내부의 공유 메모리에 저장함을 특징으로 한다.
이 실시예에 있어서, 상기 적어도 하나의 그래픽 프로세싱 유닛은 상기 할당된 후보 패스워드들을 저장하는 그래픽 프로세싱 메모리, 및 상기 할당된 후보 패스워드들을 탐색하여 패스워드를 검출하고, 상기 검출된 패스워드에 대응되는 패스워드 검출 정보를 생성하는 그래픽 프로세싱 제어부를 포함한다.
이 실시예에 있어서, 상기 호스트는 상기 후보 패스워드들이 저장된 호스트 메모리, 및 상기 저장된 후보 패스워드들을 상기 적어도 두 개의 그래픽 프로세싱 유닛에 복사하고, 상기 적어도 두 개의 그래픽 카드 중 하나로부터 상기 패스워드 검출 정보가 수신되면, 상기 후보 패스워드들로부터 상기 암호화된 문서 파일의 패스워드를 획득하는 호스트 제어부를 포함한다.
이 실시예에 있어서, 상기 호스트 메모리는 패스워드 해독을 위한 패스워드 해독 데이터를 저장함을 특징으로 한다.
이 실시예에 있어서, 상기 호스트 제어부는 상기 패스워드 해독 데이터를 상기 그래픽 프로세싱 메모리 내의 콘스턴트 메모리에 복사함을 특징으로 하고, 상기 패스워드 해독 데이터는 U엔트리(Uentry) 데이터, O엔트리(Oentry) 데이터, ID 엔트리(IDentry) 데이터, P엔트리(Pentry) 데이터, 및 패딩(padding) 데이터 중 적어도 하나를 포함함을 특징으로 한다.
이 실시예에 있어서, 상기 호스트 제어부는 상기 후보 패스워드들을 상기 적어도 두 개의 그래픽 프로세싱 유닛의 개수, 상기 그래픽 프로세싱 유닛의 블록 개수, 및 상기 블록 내 쓰레드 개수의 곱에 해당하는 개수만큼 생성함을 특징으로 한다.
이 실시예에 있어서, 상기 호스트 메모리는 상기 그래픽 프로세싱 유닛의 개수, 상기 블록 개수, 상기 쓰레드 개수, 상기 패스워드의 길이에 해당하는 크기를 가짐을 특징으로 한다.
이 실시예에 있어서, 상기 호스트 제어부는 상기 그래픽 프로세싱 유닛의 개수, 상기 블록 개수, 상기 쓰레드 개수, 및 상기 패스워드 길이의 곱에 해당하는 길이를 갖는 후보 패스워드의 집합을 상기 그래픽 프로세싱 메모리의 레지스터에 상기 패스워드의 길이만큼 분할하여 복사함을 특징으로 한다.
본 발명에 따른 패스워드 해독 방법은 호스트에서, 후보 패스워드들을 생성하는 단계, 상기 호스트에서, 상기 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛으로 할당하는 단계, 상기 적어도 두 개의 그래픽 프로세싱 유닛에서, 상기 할당된 후보 패스워드들에 대응되는 패스워드를 탐색하는 단계, 상기 적어도 두 개의 그래픽 프로세싱 유닛에서, 상기 패스워드 탐색에 의해 암호화된 문서 파일의 패스워드가 검출되면, 패스워드 검출 정보를 발생하는 단계, 및 상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 패스워드 검출 정보가 수신되면, 상기 후보 패스워드들 중에서 패스워드를 검출하는 단계를 포함한다.
이 실시예에 있어서, 상기 패스워드를 탐색하는 단계는 각 그래픽 프로세싱 유닛에 할당된 후보 패스워드들로부터 패스워드 탐색을 병렬로 수행하는 단계를 포함한다.
이 실시예에 있어서, 상기 패스워드 검출 정보는 상기 적어도 두 개의 그래픽 프로세싱 유닛 각각에 할당된 블록 개수, 블록 내의 쓰레드 개수, 및 패스워드 길이의 곱에 해당하는 후보 패스워드들 중에서 검출된 패스워드의 시작 위치를 나타내는 시작 포인터 정보임을 특징으로 한다.
이 실시예에 있어서, 상기 후보 패스워드들 중에서 패스워드를 검출하는 단계는 상기 패스워드에 패딩 데이터가 포함된 경우 상기 후보 패스워드들의 문자열의 시작 포인트로부터 패딩 데이터의 시작 지점까지 패스워드를 검출하는 단계를 포함하고, 상기 패딩 데이터는 아스키 코드 값인 '0x28'과 '0xbf'가 연속된 부분부터의 데이터임을 특징으로 한다.
이 실시예에 있어서, 상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 패스워드 검출 정보가 수신되지 않으면, 상기 패스워드 검출을 위해 상기 후보 패스워드들을 제외한 다음의 후보 패스워드들을 생성하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 내부의 콘스턴트 메모리로 상기 패스워드 탐색을 위해 패스워드 해독 데이터를 복사하는 단계를 포함하고, 상기 패스워드 해독 데이터는 상기 패스워드 해독 데이터는 U엔트리 데이터, O엔트리 데이터, ID엔트리 데이터, P엔트리 데이터, 및 패딩 데이터 중 적어도 하나를 포함함을 특징으로 한다.
본 발명에 의하면, 패스워드 해독 장치는 그래픽 프로세싱 유닛을 이용하여 패스워드를 해독함으로서 패스워드 해독에 소요되는 시간을 감소시킨다. 또한, 패스워드 해독 장치는 그래픽 프로세싱 유닛을 사용함으로서 별도의 추가적인 패스워드 해독을 위한 전용 하드웨어 없이 패스워드 해독에 소요되는 시간을 감소한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
본 발명은 패스워드 해독 장치에 관한 것으로서, 특히 패스워드 해독 속도가 향상된 패스워드 해독 장치, 패스워드 해독 장치 및 그것의 패스워드 해독 방법을 제공한다.
도 1은 본 발명의 실시예에 따른 패스워드 해독 장치의 구조를 도시한 도면이다.
도 1을 참조하면, 패스워드 해독 장치(100)는 호스트(host)(110)와 그래픽 카드(graphic card)(120)를 포함한다. 패스워드 해독 장치(100)는 일예로, 컴퓨터(개인 컴퓨터(PC: Personal computer) 또는 노트북(Notebook)) 등을 포함한다.
호스트(110)는 암호화된 문서 파일의 패스워드(password)를 그래픽 카드(120)에 포함된 그래픽 프로세싱 유닛들(121-12m)을 이용하여 해독할 수 있다. 여기서 패스워드(password)는 문서 파일의 허가된 사용자임을 확인하는데 사용되는 보안 수단이다.
문서 파일은 일예로, PDF(adobe acrobat file, adobe systems에 의해 개발된 컴퓨터 프로그램 파일)'의 확장자를 갖는 문서 파일을 포함할 수 있다. 이 실시예는 'PDF' 파일을 일예로 설명하지만, 'PDF' 파일 이외의 패스워드 설정이 가능한 다른 문서 파일들을 모두 포함할 수 있다.
호스트(110)는 암호화된 타겟 문서 파일의 해독을 위한 패스워드를 그래픽 카드(120)를 이용하여 획득한다. 호스트(110)는 패스워드 해독 연산을 그래픽 카드(120)를 통해 수행함으로서 고속으로 패스워드를 검출할 수 있다.
호스트(110)는 사용자 입력부(111), 호스트 제어부(112), 및 호스트 메모리(113)를 포함한다. 호스트(110)는 그래픽 카드(120)를 포함하거나 그래픽 카드(120)의 접속이 가능하다.
사용자 입력부(111)는 사용자와의 인터페이스를 수행한다. 사용자 입력부(111)는 사용자 입력에 의해 패스워드 해독을 요청하는 데이터를 발생한다.
호스트 제어부(112)는 패스워드 해독을 요청하는 데이터의 발생에 의해 패스워드 해독을 위한 후보 패스워드들을 생성한다. 호스트 제어부(112)는 후보 패스워드(candidate password)를 생성한다. 여기서, 후보 패스워드는 문서 파일의 암호화를 위해 설정된 패스워드들 중 하나이다.
수학식 1은 호스트 제어부(112)에서 최대 n 길이를 갖는 패스워드를 발견하기 위해서 검색하여야 하는 전체 후보 패스워드의 개수를 나타낸다.
수학식 1에서, r은 패스워드로 사용가능한 문자의 개수이다. a는 패스워드의 길이가 1인 문자열의 개수이다. n은 패스워드의 길이이다. 패스워드로 사용가능 한 문자들이 일예로, 영문 대/소문자, 숫자, 특수문자를 포함한다고 가정한다.
호스트 제어부(112)는 그래픽 카드에 포함된 각 그래픽 프로세싱 유닛(121-12m)들에 대해서 한번에 "블록(block) 개수 * 블록 내 쓰레드(thread) 개수 * 그래픽 프로세싱 유닛 개수(m)"만큼 생성한다. 호스트 제어부(120)는 각 그래픽 프로세싱 유닛(121-12m)을 통해서 패스워드를 획득할 때까지 "블록 개수 * 블록 내 쓰레드 개수 * 그래픽 프로세싱 유닛 개수"만큼 증가하면서 후보 패스워드들을 생성한다. 여기서 블록 개수와 쓰레드 개수는 그래픽 프로세싱 유닛들(121-12m)의 성능에 따라서 가변되는 값이다.
호스트 제어부(112)는 생성된 후보 패스워드들을 그래픽 카드(120)의 그래픽 프로세싱 유닛들(121-12m) 각각으로 할당한다. 또한, 호스트 제어부(112)는 암호화된 문서 파일의 패스워드 검출을 위해 암호화된 문서 파일로부터 패스워드 해독 데이터를 추출하여 그래픽 카드(120)로 제공한다. 문서 파일이 'PDF' 파일인 경우, 호스트 제어부(112)는 일예로, Uentry 데이터, Oentry 데이터, IDentry 데이터, 및 Pentry 데이터를 추출한다. 패스워드 해독 데이터는 일예로, Uentry 데이터, Oentry 데이터, IDentry 데이터, 및 Pentry 데이터를 포함한다. 또한, 패스워드 해독 데이터는 미리 설정된 패스워드 길이를 형성하기 위한 패딩 데이터를 추가로 포함한다.
호스트 제어부(112)는 후보 패스워드들의 길이가 미리 결정된 경우, 후보 패스워드들에 패딩 데이터를 처음부터 순차적으로 채워 미리 결정된 길이를 갖도록 생성한다.
호스트 메모리(113)는 호스트 제어부(112)에서 생성된 후보 패스워드들을 저장할 수 있다. 또한 호스트 메모리(113)는 패스워드 해독 데이터를 저장할 수도 있다.
그래픽 카드(120)는 호스트(110)로부터 후보 패스워드들을 할당받는다. 그래픽 카드(120)는 할당받은 후보 패스워드들로부터 암호화된 문서 파일의 패스워드를 검출한다. 그래픽 카드(120)는 그래픽 프로세싱 유닛들(121-12m)을 포함한다.
그래픽 프로세싱 유닛들(121-12m)은 후보 패스워드들로부터 암호화된 문서 파일의 패스워드를 검출한다. 패스워드가 검출된 그래픽 프로세싱 유닛은 검출된 패스워드에 대응되는 패스워드 검출 정보를 생성하여 호스트(100)로 출력한다. 여기서, 그래픽 프로세싱 유닛의 상세 구조는 하기의 도 2를 참조하여 설명하기로 한다.
상술한 바와 같이, 호스트 제어부(112)가 후보 패스워드를 적어도 하나의 그래픽 프로세싱 유닛(예를 들면, 121)을 통해 패스워드를 해독하면, 그래픽 프로세싱 유닛의 병렬 처리 특성을 이용하므로 패스워드 해독을 고속으로 수행할 수 있다. 만약, 호스트 제어부(112)에서 적어도 두 개의 그래픽 프로세싱 유닛(예를 들면, 121-12m)을 패스워드 해독에 이용하면, 패스워드 해독에 소요되는 시간이 하나의 그래픽 프로세싱 유닛(121)을 사용하는 경우보다 더욱 감소한다. 즉, m개의 그래픽 프로세싱 유닛을 이용(예를 들면, 121-12m)하면, 호스트 제어부(112)는 한 개의 그래픽 프로세싱 유닛(121)을 사용하는 경우에 비하여 패스워드 해독 속도가 m배 향상된다.
한편, 호스트 제어부(121)가 각 그래픽 프로세싱 유닛(121-12m)으로 후보 패스워드를 할당한다. 여기서 호스트 제어부(121)의 후보 패스워드 할당 동작은 하기에서 설명된다.
예를 들어, 패스워드의 길이가 32 바이트(byte)인 경우를 가정하기로 한다. 각 그래픽 프로세싱 유닛(121-12m)이 처리할 수 있는 블록의 개수가 6개이고, 하나의 블록이 20개의 쓰레드의 묶음이라 가정한다. 또한, 그래픽 프로세싱 유닛의 개수(m)는 4개라 가정한다. 이때, 호스트 메모리(113)에 한 번에 저장되는 패스워드의 개수는 '블록 개수(6) * 쓰레드 개수(20) * 그래픽 프로세싱 유닛 개수(4)'이고, 호스트 메모리(113)가 필요로 하는 메모리 용량 크기(일예로, 단위는 바이트(byte))는 '블록 개수(6) * 쓰레드 개수(20) * 그래픽 프로세싱 유닛 개수(4) * 패스워드 길이(32)'이다.
호스트 제어부(112)에서 각 그래픽 프로세싱 유닛(121-12m)으로 할당하는 패스워드의 범위는 하기의 수학식 2에 나타내었다.
(i < searchEnd + TOTAL_DOC_THREAD * gpuCount);
(i+ = TOTAL_DOC_THREAD * gpuCount))
여기서, TOTAL_DOC_THREAD는 문서 파일의 패스워드 해독을 위한 '블록 개수 * 쓰레드 개수(하나의 블록 내에 포함된)'이다. gpuCount는 문서 파일의 패스워드 해독에 사용되는 그래픽 프로세싱 유닛의 개수이다. gpuNumber는 그래픽 프로세싱 유닛의 번호이다. searchEnd는 패스워드의 검색 범위이다.
호스트 제어부(112)는 수학식 2를 통해서 그래픽 프로세싱 유닛들에 후보 패스워드의 개수를 TOTAL_DOC_THREAD 만큼 증가하면서 패스워드 검색 범위 내에서 후보 패스워드들을 생성한다.
여기서, gpuNumber는 4, TOTAL_DOC_THREAD는 120(6*20), searchEnd는 1000이라 가정한다. 여기서 문서 파일은 PDF 파일이고, 문서 해독을 위한 패스워드는 '990' 번째의 후보 패스워드라 가정한다.
첫 번째 단계에서, 호스트 제어부(112)는 후보 패스워드들을 생성하여 그래픽 프로세싱 유닛들(121, 122, 123, 124)로 할당할 수 있다. 즉, 호스트 제어부(112)는 '0' 번째 후보 패스워드부터 '119' 번째 후보 패스워드까지 제 1 그래픽 프로세싱 유닛(121)에 할당할 수 있다. 호스트 제어부(112)는 '120' 번째 후보 패스워드부터 '239' 번째 후보 패스워드까지 제 2 그래픽 프로세싱 유닛(122)에 할당할 수 있다. 호스트 제어부(112)는 '240' 번째 후보 패스워드부터 '359' 번째 후보 패스워드까지 제 3 그래픽 프로세싱 유닛(123)에 할당할 수 있다. 호스트 제어부(112)는 '360' 번째 후보 패스워드부터 '479' 번째 후보 패스워드까지 제 4 그래픽 프로세싱 유닛(124)에 할당할 수 있다.
두 번째 단계에서, 패스워드 검출 정보가 첫 번째 단계에서 수신되지 않으면, 호스트 제어부(112)는 그래픽 프로세싱 유닛들(121, 122, 123, 124)로 다음의 후보 패스워드를 생성하여 할당할 수 있다. 즉, 호스트 제어부(112)는 '480' 번째 후보 패스워드부터 '599' 번째 후보 패스워드까지 제 1 그래픽 프로세싱 유닛(121) 에 할당할 수 있다. 호스트 제어부(112)는 '600' 번째 후보 패스워드부터 '719' 번째 후보 패스워드까지 제 2 그래픽 프로세싱 유닛(122)에 할당할 수 있다. 호스트 제어부(112)는 '720' 번째 후보 패스워드부터 '839' 번째 후보 패스워드까지 제 3 그래픽 프로세싱 유닛(123)에 할당할 수 있다. 호스트 제어부(112)는 '840' 번째 후보 패스워드부터 '959' 번째 후보 패스워드까지 제 4 그래픽 프로세싱 유닛(124)에 할당할 수 있다.
세 번째 단계에서, 패스워드 검출 정보가 두 번째 단계에서 수신되지 않으면, 호스트 제어부(112)는 다음의 후보 패스워드들을 생성하여 그래픽 프로세싱 유닛들(121, 122, 123, 124)로 할당할 수 있다. 즉, 호스트 제어부(112)는 '960' 번째 후보 패스워드부터 '1079' 번째 후보 패스워드까지 제 1 그래픽 프로세싱 유닛(121)에 할당할 수 있다. 호스트 제어부(112)는 '1080' 번째 후보 패스워드부터 '1199' 번째 후보 패스워드까지 제 2 그래픽 프로세싱 유닛(122)에 할당할 수 있다. 호스트 제어부(112)는 '1120' 번째 후보 패스워드부터 '1319' 번째 후보 패스워드까지 제 3 그래픽 프로세싱 유닛(123)에 할당할 수 있다. 호스트 제어부(112)는 '1320' 번째 후보 패스워드부터 '1439' 번째 후보 패스워드까지 제 4 그래픽 프로세싱 유닛(124)에 할당할 수 있다.
만약, '990' 번째 후보 패스워드가 암호화된 문서 파일의 패스워드인 경우, 호스트 제어부(112)는 제 1 그래픽 프로세싱 유닛(121)으로부터 패스워드 검출 정보를 획득할 수 있다. 여기서 패스워드 검출 정보는 일예로, '990' 번째 후보 패스워드의 시작 포인트에 대한 정보일 수 있다.
한편, 상기 네 개의 그래픽 프로세싱 유닛은 동시에 동작하는 것이므로 제 1 그래픽 프로세싱 유닛(121), 제 2 그래픽 프로세싱 유닛(122), 제 3 그래픽 프로세싱 유닛(123), 제 4 그래픽 프로세싱 유닛(124) 간의 검색 범위가 서로 바뀔 수 있다.
즉, 세 번째 단계에서 호스트 제어부는 다음과 같은 동작을 수행할 수도 있다.
패스워드 검출 정보가 두 번째 단계에서 수신되지 않으면, 호스트 제어부(112)는 다음의 후보 패스워드들을 생성하여 그래픽 프로세싱 유닛들(121, 122, 123, 124)로 할당할 수 있다.
호스트 제어부(112)는 '1080' 번째 후보 패스워드부터 '1199' 번째 후보 패스워드까지 제 1 그래픽 프로세싱 유닛(121)에 할당할 수 있다. 호스트 제어부(112)는 '1320' 번째의 후보 패스워드로부터 '1439' 번째 후보 패스워드까지 제 2 그래픽 프로세싱 유닛(122)에 할당할 수 있다. 호스트 제어부(112)는 '960' 번째 후보 패스워드부터 '1079' 번째 후보 패스워드까지 제 3 그래픽 프로세싱 유닛(124)에 할당할 수 있다. 호스트 제어부(112)는 '1200' 번째 후보 패스워드부터 '1319' 후보 패스워드까지 제 4 그래픽 프로세싱 유닛(124)에 할당할 수 있다.
만약, '990' 번째 후보 패스워드가 암호화된 문서 파일의 패스워드인 경우, 호스트 제어부(112)는 제 3 그래픽 프로세싱 유닛(121)으로부터 패스워드 검출 정보를 획득할 수 있다. 여기서 패스워드 검출 정보는 일예로, '990' 번째 후보 패스워드의 시작 포인트에 대한 정보일 수 있다.
만약, '990' 번째 후보 패스워드가 암호화된 문서 파일의 패스워드인 경우, 호스트 제어부(112)는 제 3 그래픽 프로세싱 유닛(121)으로부터 패스워드 검출 정보를 획득할 수 있다. 여기서 패스워드 검출 정보는 일예로, '990' 번째 후보 패스워드의 시작 포인트에 대한 정보일 수 있다. 패스워드 검출 정보가 수신되면, 호스트 제어부(112)는 다음의 후보 패스워드들의 생성을 중지한다.
상술한 바와 같이, 호스트 제어부(112)는 그래픽 프로세싱 유닛이 복수 개인 경우, 복수의 그래픽 프로세싱 유닛들로 상기 후보 패스워드들을 중복되지 않도록 분배한다. 또한, 복수의 프로세싱 유닛(121, 122, 123, 124)들에서 분배된 후보 패스워드들을 사용한 패스워드 탐색은 병렬로 수행된다.
이와 같이, 그래픽 카드(120)에 포함된 적어도 두 개의 그래픽 프로세싱 유닛을 사용하여 패스워드를 해독하는 경우, 호스트(110)는 패스워드 해독에 소요되는 시간을 하나의 그래픽 프로세싱 유닛을 사용하는 경우보다도 빠르게 패스워드를 해독할 수 있다.
도 2는 도 1에 도시된 그래픽 프로세싱 유닛의 구조를 도시한 도면이다.
도 2를 참조하면, 제 1 그래픽 프로세싱 유닛(121)은 제 1 그래픽 프로세싱 메모리(131_1)와 제 1 그래픽 프로세싱 제어부(132_1)를 포함한다.
제 1 그래픽 프로세싱 제어부(132_1)는 후보 패스워드들을 수신한다. 또한, 제 1 그래픽 프로세싱 제어부(132_1)는 패스워드 해독 데이터를 수신한다. 여기서 패스워드 해독 데이터는 일예로, Uentry 데이터, Oentry 데이터, IDentry 데이터, Pentry 데이터, 및 패딩 데이터를 포함한다.
제 1 그래픽 프로세싱 제어부(132_1)는 패스워드 검출을 위해서 RC4 알고리즘 또는 MD5 알고리즘 등을 사용할 수 있다.
제 1 그래픽 프로세싱 제어부(132_1)가 RC4 알고리즘을 사용하여 패스워드를 검출하는 경우를 일예로 설명한다.
일예로, RC4 암호화 알고리즘은 평문과 비밀키로부터 유도된 키 스트림(key stream)을 암호화할 평문과 배타적 논리합(XOR: exclusive or) 연산하여 암호문을 생성하는 알고리즘이다.
제 1 그래픽 프로세싱 제어부(132_1)는 RC4 알고리즘에 후보 패스워드, Oentry 데이터, IDentry 데이터, Pentry 데이터를 적용하여 Uentry 데이터를 획득한다.
제 1 그래픽 프로세싱 제어부(132_1)는 암호화된 문서 파일로부터 추출된 Uentry 데이터와 후보 패스워드로부터 획득한 Uentry 데이터가 일치하는지를 판단한다. 제 1 그래픽 프로세싱 제어부(132_1)는 두 개의 Uentry 데이터(암호화된 문서 파일의 Uentry 데이터와 후보 패스워드로부터 획득된 Uentry 데이터)가 일치하면, 해당 후보 패스워드를 패스워드로 검출한다.
제 1 그래픽 프로세싱 제어부(132_1)는 후보 패스워드들을 탐색하여 패스워드를 검출한다. 만약, 제 1 그래픽 프로세싱 제어부(132_1)는 패스워드를 검출하면, 패스워드 검출 정보를 호스트(110)로 송신한다. 여기서 패스워드 검출 정보는 전체 후보 패스워드들(일예로, 블록 개수 * 쓰레드 개수) 중에서 문서 열람을 위해 검출된 패스워드의 위치 정보를 포함한다. 즉, 패스워드 검출 정보는 후보 패 스워드들 중에서 검출된 패스워드의 시작 포인터(후보 패스워드들 중에서 몇 번째에 위치한 후보 패스워드 인지)를 나타내는 정보를 포함할 수 있다.
그래픽 프로세싱 유닛(121)은 내부 그래픽 프로세싱 메모리(131_1)의 자원을 효율적으로 사용하기 위해서 패스워드 검색에 공유(shared) 메모리를 이용한다. 공유 메모리는 일예로, 그래픽 프로세싱 메모리(131_1) 내부의 일부 영역일 수 있다. 그래픽 프로세싱 제어부(132_1)는 RC4 데이터 암호화 전에 RC4 키 생성 단계에서 입력받은 키 버퍼를 이용하여 새로운 암호화키를 생성하는데, 이때 생성된 새로운 암호화 키를 공유 메모리에 저장한다. 그리고 그래픽 프로세싱 제어부(132_1)는 공유 메모리에 저장된 암호화키를 실제 암호화 과정에서 사용한다. 또한, 그래픽 프로세싱 제어부(132_1)는 RC4 암호화 시 평문 입력 데이터를 암호화하여 암호화 결과를 공유 메모리에 저장하여 결과 값을 PDF 패스워드 탐색 메커니즘에 활용하게 한다. 여기서, 공유 메모리는 각 블록마다 공유하는 온-칩(on-chip) 메모리로서 매우 빠른 접근 속도를 갖는다. 즉, RC4를 이용하기 위한 암호화 키 저장과 암호화 결과 저장에 필요한 메모리 자원을 레지스터나 콘스턴트 메모리와 같은 저장공간을 이용하지 않고 공유 메모리(Shared Memory)를 이용하는 방법을 포함한다.
한편, 제 1 그래픽 프로세싱 제어부(132_1)는 호스트 제어부(112)와 호스트 제어 정보(일예로, 패스워드 탐색 시작 또는 패스워드 탐색 종료 등)를 송수신할 수 있다.
도 2에서는 일예로, 제 1 그래픽 프로세싱 유닛(121)을 일예로 설명하였다. 하지만, 제 2 그래픽 프로세싱 유닛(122) 내지 제 m 그래픽 프로세싱 유닛(12m)은 제 1 그래픽 프로세싱 유닛(121)과 유사한 구조를 가질 수 있다.
따라서 제 2 그래픽 프로세싱 유닛(122)은 제 2 그래픽 프로세싱 메모리(131_1)와 제 2 그래픽 프로세싱 제어부(132_1)를 포함하고, 제 m 그래픽 프로세싱 유닛(12m)은 제 m 그래픽 프로세싱 메모리(131_m)와 제 2 그래픽 프로세싱 메모리(132_m)를 포함한다.
도 3은 본 발명의 실시예에 따른 호스트 메모리에 저장된 패스워드 해독 데이터를 그래픽 프로세싱 유닛 내의 그래픽 프로세싱 유닛 내의 콘스턴트 메모리로 복사하는 것을 도시한 도면이다.
도 3을 참조하면, 호스트 제어부(112)의 제어에 의해 호스트 메모리(113)의 패스워드 해독 데이터들은 제 1 그래픽 프로세싱 메모리(131_1), 제 2 그래픽 프로세싱 메모리(131_2), 및 제 m 그래픽 프로세싱 메모리(132_m) 내의 콘스턴트(constant) 메모리들로 복사된다.
각 그래픽 프로세싱 메모리(131_1, 131_2-131_m) 내의 콘스턴트 메모리로 복사된 패스워드 해독 데이터는 일예로, Uentry 데이터, Oentry 데이터, IDentry 데이터, Pentry 데이터, 및 패딩 데이터를 포함한다. 예를 들어, Uentry 데이터는 32바이트로 구성될 수 있다. Oentry 데이터는 32바이트로 구성될 수 있다. IDentry 데이터는 16 바이트로 구성될 수 있다. Pentry 데이터는 4바이트로 구성될 수 있다. 패딩 데이터는 32바이트로 구성될 수 있다.
Uentry 데이터, Oentry 데이터, IDentry 데이터, Pentry 데이터는 문서 파 일의 패스워드 해독을 위해 필요한 데이터이다.
한편, PDF 파일의 패스워드 검출을 위한 후보 패스워드의 길이를 32바이트로 가정한다. 이때, 패딩 데이터는 32바이트 미만의 패스워드를 32바이트의 패스워드로 변환하기 위해서 추가되는 데이터이다.
여기서, 패딩 데이터는 일예로, '0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xD0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a'를 포함할 수 있다.
한편, 본 발명에서 전체 패스워드의 길이는 32바이트 미만으로 설정된다고 가정한다.
도 4는 본 발명의 실시예에 따른 호스트 메모리에 저장된 후보 패스워드들을 그래픽 프로세싱 유닛 내의 레지스터로 복사하는 것을 도시한 도면이다.
도 4를 참조하면, 호스트 제어부(112)의 제어에 의해 호스트 메모리(113)의 후보 패스워드들은 제 1 그래픽 프로세싱 메모리(131_1), 제 2 그래픽 프로세싱 메모리(131_2), 및 제 m 그래픽 프로세싱 메모리(131_m) 내의 레지스터로 각각 복사된다.
그래픽 프로세싱 유닛이 4개 즉, 제 1 그래픽 프로세싱 유닛들(121) 내지 제 4 그래픽 프로세싱 유닛들(124)이 존재하는 경우를 가정하기로 한다. 여기서 그래픽 프로세싱 유닛들(121, 122, 123, 124)은 하나의 그래픽 카드에 포함되거나 적어도 두 개의 카드에 포함될 수 있다.
또한, 각 그래픽 프로세싱 유닛들(121, 122, 123, 124)은 10개의 블록을 처리한다고 가정한다. 또한, 10개의 블록들 각각은 4개의 쓰레드를 포함한다고 가정한다.
호스트 제어부(112)는 '블록 개수(10) * 쓰레드 개수(4) * 그래픽 프로세싱 유닛의 개수(4)'에 해당하는 개수의 후보 패스워드들을 생성할 수 있다. 생성된 후보 패스워드들('후보 패스워드 0' 내지 '후보 패스워드 159')은 호스트 메모리(113)에 저장된다.
호스트 제어부(112)에 의해 호스트 메모리(113)에 저장된 '후보 패스워드 0', '후보 패스워드 40', '후보 패스워드 80', 및 '후보 패스워드 120'는 제 1 그래픽 프로세싱 유닛(121) 내부, 제 2 그래픽 프로세싱 유닛(122) 내부, 제 3 그래픽 프로세싱 유닛(123) 내부, 제 4 그래픽 프로세싱 유닛(124) 내부의 레지스터 0(그래픽 프로세싱 메모리 중 레지스터로 활용되는 저장 공간(131_1, 131_2, 131_3, 131_4) 중 일부)에 저장된다.
호스트 제어부(112)에 의해 호스트 메모리(113)에 저장된 '후보 패스워드 1', '후보 패스워드 41', '후보 패스워드 81', 및 '후보 패스워드 121'은 제 1 그래픽 프로세싱 유닛(121) 내부, 제 2 그래픽 프로세싱 유닛(122) 내부, 제 3 그래픽 프로세싱 유닛(123) 내부, 제 4 그래픽 프로세싱 유닛(124) 내부의 레지스터 1(그래픽 프로세싱 메모리 중 레지스터로 활용되는 저장 공간(131_1, 131_2, 131_3, 131_4) 중 다른 일부)에 저장된다.
호스트 제어부(112)에 의해 호스트 메모리(113)에 저장된 '후보 패스워드 2', '후보 패스워드 42', '후보 패스워드 82', 및 '후보 패스워드 122'는 제 1 그래픽 프로세싱 유닛(121) 내부, 제 2 그래픽 프로세싱 유닛(122) 내부, 제 3 그래픽 프로세싱 유닛(123) 내부, 제 4 그래픽 프로세싱 유닛(124) 내부의 레지스터 2(그래픽 프로세싱 메모리 중 레지스터로 활용되는 저장 공간(131_1, 131_2, 131_3, 131_4) 중 또 다른 일부)에 저장된다.
호스트 제어부(112)에 의해 호스트 메모리(113)에 저장된 '후보 패스워드 3', '후보 패스워드 43', '후보 패스워드 83', 및 '후보 패스워드 123'은 제 1 그래픽 프로세싱 유닛(121) 내부, 제 2 그래픽 프로세싱 유닛(122) 내부, 제 3 그래픽 프로세싱 유닛(123) 내부, 제 4 그래픽 프로세싱 유닛(124) 내부의 레지스터 3(그래픽 프로세싱 메모리 중 레지스터로 활용되는 저장 공간(131_1, 131_2, 131_3, 131_4) 중 또 다른 일부)에 저장된다.
호스트 메모리(113)의 후보 패스워드들은 후보 패스워드의 길이만큼 나누어 각 그래픽 프로세싱 유닛들(121, 122, 123, 124)의 각 레지스터로 분할하여 복사된다.
도 5는 본 발명의 실시예에 따른 호스트에서 후보 패스워드들로부터 패스워드를 검출하는 것을 도시한 도면이다.
도 5를 참조하면, 일반적으로 문서 파일에 설정되는 비밀번호는 아스키 코드(ASCII Code) 16진수 값들 중에서 '0x20'부터 '0x7f'까지의 값들 중에서 결정된다. 일예로, 문서 파일에 설정되는 패스워드를 32바이트로 설정하였다고 가정한다. 만약, 후보 패스워드의 크기가 32 바이트보다 작은 경우에는, 호스트 제어부(112) 는 후보 패스워드에 패딩 데이터를 추가하여 32 바이트 길이의 후보 패스워드를 생성한다.
예를 들어, 그래픽 프로세싱 유닛(일예로, 121)이 PDF 파일의 패스워드를 검출하면, 패스워드 검출 정보를 호스트 제어부(112)로 송신한다. 이때, 패스워드 검출 정보는 그래픽 프로세싱 유닛(121)의 레지스터에 저장되어 있는 후보 패스워드들 중 몇 번째부터가 올바른 패스워드 후보라는 것을 호스트 제어부(112)에 알려주는 정보이다. 그래픽 프로세싱 유닛(121)에 저장된 후보 패스워드들의 개수는 "블록 개수 * 블록 내의 쓰레드 개수"에 해당하는 개수를 갖는다. 또한, 그래픽 프로세싱 유닛(121)은 복수개의 그래픽 프로세싱 유닛들(121 내지 12m) 중 하나이다.
호스트 제어부(112)는 패스워드 검출 정보를 사용하여 호스트 메모리(123)의 후보 패스워드들 중에서 그래픽 프로세싱 유닛(121)에 할당한 후보 패스워드들의 문자열로부터 실제 패스워드를 추출한다. 여기서, 호스트 메모리(123)의 후보 패스워드들은 '그래픽 프로세싱 유닛 개수 * 블록 개수 * 블록 내의 쓰레드 개수 * 패스워드 길이' 의 크기를 갖는다.
결과적으로 호스트 제어부(112)는 그래픽 프로세싱 유닛(121) 내의 레지스터와 동일한 패스워드 문자열을 갖는다. 따라서 호스트 제어부(112)는 패스워드 검출 정보로부터 획득한 패스워드 시작 포인터를 사용하여 실제 패스워드 문자를 추출할 수 있다.
호스트 제어부(112)는 일예로, 하나의 그래픽 프로세싱 유닛(일예로, 121)에게 32 바이트의 연속된 3개의 후보 패스워드들을 할당하고, 이 후 '0x65, 0x74, 0x72, 0x69, 0x37, 0x37, 0x 28, 0xbf, 0x4e, 0x5e, ...'로 구성된 32바이트 패스워드의 후보를 할당하였다고 가정한다.
이때, 그래픽 프로세싱 유닛(121)으로부터 수신된 패스워드 검출 정보가 일예로, 3의 시작 포인터이면, 호스트 제어부(112)는 4 번째에 위치한 후보 패스워드를 검출한다. 즉, 연속된 3개의 후보 패스워드들의 시작점이 일예로, '0', '1', '2'이고, 4 번째 후보 패스워드의 시작점이 '3'인 경우이다. 그러므로 호스트 제어부(112)는 4 번째 후보 패스워드에서 패딩 데이터, 일예로, '0x28'와 '0xbf'가 연속된 시작 지점까지의 패스워드를 검출한다. 즉, 호스트 제어부(112)는 후보 패스워드에서 패딩 데이터를 제거한다. 이때, 호스트 제어부(112)는 아스키 코드 값의 패스워드('0x65, 0x74, 0x72, 0x69, 0x37, 0x37')를 검출한다. 여기서 검출된 패스워드 값은 일예로, 'e', 't', 'r', 'i', '7', '7'이다.
호스트 제어부(112)는 검출된 패스워드를 사용하여 암호화된 파일의 접근 권한을 부여 받는다.
도 6은 본 발명의 실시예에 따른 호스트의 동작을 도시한 순서도이다.
도 6을 참조하면, S110단계에서, 사용자 입력부(111)는 패스워드 해독을 요청하는 데이터를 발생한다.
S120단계에서, 호스트 제어부(112)는 패스워드 해독을 요청하는 데이터에 대응되는 후보 패스워드들을 생성한다. 호스트 제어부(112)는 그래픽 프로세싱 유닛들(121-12m)의 개수, 블록 개수, 쓰레드 개수를 고려하여 전체 후보 패스워드들 중에서 일부의 후보 패스워드들을 생성한다.
S130단계에서, 호스트 제어부(112)는 생성된 일부의 후보 패스워드들을 호스트 메모리(113)에 저장한다.
S140단계에서, 호스트 제어부(112)는 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛으로 분배한다. 호스트 제어부(112)는 블록 개수, 쓰레드 개수, 그래픽 프로세싱 유닛의 개수를 고려하여 후보 패스워드들을 각 그래픽 프로세싱 유닛으로 분배한다. 호스트 제어부(112)는 후보 패스워드들 간에 중복되지 않도록 각 그래픽 프로세싱 유닛으로 후보 패스워드들을 분배한다.
S150단계에서, 호스트 제어부(112)는 분배된 후보 패스워드들을 각 그래픽 프로세싱 유닛들로 송신한다.
S160단계에서, 호스트 제어부(112)는 패스워드 검출 정보가 수신되었는지 확인한다. S160단계의 확인 결과, 패스워드 검출 정보가 수신되지 않은 경우 호스트 제어부(112)는 S170단계로 진행한다.
S170단계에서, 호스트 제어부(112)는 전체 후보 패스워드들 중에서 다음의 후보 패스워드들을 생성하기 위해 후보 패스워드들의 생성 범위를 변경하고 S120단계로 진행한다.
S160단계의 확인 결과, 패스워드 검출 정보가 수신되면, 호스트 제어부(112)는 S180단계로 진행한다.
S180단계에서, 호스트 제어부(112)는 호스트 메모리(113)에 저장된 후보 패스워드들 중에서 패스워드를 검출한다. 일예로, 패스워드 검출 정보는 후보 패스워드들 중에서 검출된 패스워드의 시작 포인터 값이다.
도 7은 본 발명의 실시예에 따른 그래픽 프로세싱 유닛의 동작을 도시한 순서도이다.
도 7을 참조하면, S210단계에서, 그래픽 프로세싱 유닛(121)은 분배된 후보 패스워드들을 수신한다.
S220단계에서, 그래픽 프로세싱 유닛(121)은 분배된 후보 패스워드들을 저장한다.
S230단계에서, 그래픽 프로세싱 유닛(121)은 후보 패스워드들을 탐색하여 패스워드를 검출한다. 후보 패스워드들을 탐색하는 경우, 그래픽 프로세싱 유닛(121)은 암호화된 문서 파일로부터 추출된 제 1 패스워드 탐색 정보와 상기 후보 패스워드들을 사용하여 생성된 제 2 패스워드 탐색 정보를 비교한다. 그래픽 프로세싱 유닛은 제 1 패스워드 탐색 정보와 제 2 패스워드 탐색 정보가 일치하면, 해당 후보 패스워드를 패스워드로 검출한다. 일예로, 패스워드 탐색에 RC4 알고리즘이 사용되는 경우, 제 1 패스워드 탐색 정보와 제 2 패스워드 탐색 정보는 U엔트리 정보가 될 수 있다.
S240단계에서, 그래픽 프로세싱 유닛(121)은 검출된 패스워드에 대응되는 패스워드 검출 정보를 발생하여 호스트(110)로 출력한다.
도 8은 본 발명의 다른 실시예에 따른 패스워드 해독 장치의 구조를 도시한 도면이다.
도 8을 참조하면, 패스워드 해독 장치(200)는 호스트(110)와 복수의 그래픽 카드들(220_1, 220_m)을 포함한다.
그래픽 카드들(220_1, 220_m)은 호스트(110)에 접속된다. 제 1 그래픽 카드(220_1)는 제 1 그래픽 프로세싱 유닛(221)을 포함한다. 제 m 그래픽 카드(220_m)는 제 m 그래픽 프로세싱 유닛(22m)을 포함한다.
도 8의 패스워드 해독 장치는 하나의 그래픽 카드에 하나의 그래픽 프로세싱 유닛이 포함된 경우를 일예로 설명한 것이다. 도 8의 패스워드 해독 장치의 동작은 하나의 그래픽 프로세싱 유닛이 하나의 그래픽 카드에 실장된 점을 제외하고, 도 1의 패스워드 해독 장치의 동작과 유사하다. 따라서 도 2의 패스워드 해독 장치의 상세한 설명은 도 1을 참조하기로 하며, 여기서는 그 상세한 설명을 생략하기로 한다.
한편, 도 1과 도 8에서는 호스트와 그래픽 카드가 구분된 것을 일예로 설명하였으나, 호스트(즉, 호스트 장치)(110) 내에 적어도 하나의 그래픽 카드(120, 220_m)가 포함될 수도 있다.
본 발명에서 패스워드 해독 장치는 패스워드 해독 시 복수개의 그래픽 프로세싱 유닛을 사용하여 패스워드를 검출함으로서 패스워드 해독에 소요되는 시간을 감소한다. 즉, 패스워드 해독 장치는 복수개의 그래픽 프로세싱 유닛을 사용하여 패스워드를 검출하는 경우에는 하나의 그래픽 프로세싱 유닛을 사용하는 경우보다 패스워드 검출에 소요되는 시간이 더욱 감소한다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 실시예에 따른 패스워드 해독 장치의 구조를 도시한 도면,
도 2는 도 1에 도시된 그래픽 프로세싱 유닛의 구조를 도시한 도면,
도 3은 본 발명의 실시예에 따른 호스트 메모리에 저장된 패스워드 해독 데이터를 그래픽 프로세싱 유닛 내의 그래픽 프로세싱 유닛 내의 콘스턴트 메모리로 복사하는 것을 도시한 도면,
도 4는 본 발명의 실시예에 따른 호스트 메모리에 저장된 후보 패스워드들을 그래픽 프로세싱 유닛 내의 레지스터로 복사하는 것을 도시한 도면,
도 5는 본 발명의 실시예에 따른 호스트에서 후보 패스워드들로부터 패스워드를 검출하는 것을 도시한 도면,
도 6은 본 발명의 실시예에 따른 호스트의 동작을 도시한 순서도,
도 7은 본 발명의 실시예에 따른 그래픽 프로세싱 유닛의 동작을 도시한 순서도, 및
도 8은 본 발명의 다른 실시예에 따른 패스워드 해독 장치의 구조를 도시한 도면이다.
*도면의 주요 부분에 대한 부호의 설명*
100, 200: 암호 해독 장치 110, 210: 호스트
120, 220: 그래픽 카드 111, 211: 사용자 입력부
112, 212: 호스트 제어부 113, 213: 호스트 메모리
121, 12m, 221, 22m: 그래픽 프로세싱 유닛
131_1, 132_2, 131_3, 131_4 131_m: 그래픽 프로세싱 메모리
132_1: 그래픽 프로세싱 제어부
Claims (20)
- 암호화된 문서 파일의 패스워드 검출을 위한 후보 패스워드들을 생성하고, 상기 생성된 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛들로 중복되지 않도록 할당하는 호스트 제어부; 및상기 할당된 후보 패스워드들을 탐색하여 상기 문서 파일의 패스워드를 검출하면, 패스워드 검출 정보를 출력하는 적어도 두 개의 그래픽 프로세싱 유닛을 포함하고,상기 호스트 제어부는 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 상기 패스워드 검출 정보를 수신하면, 상기 패스워드 검출 정보를 사용하여 상기 패스워드를 검출함을 특징으로 하는 패스워드 해독 장치.
- 제 1 항에 있어서,상기 적어도 두 개의 그래픽 프로세싱 유닛은 각 그래픽 프로세싱 유닛에 할당된 후보 패스워드들로부터 패스워드 탐색을 병렬로 수행함을 특징으로 하는 패스워드 해독 장치.
- 제 1 항에 있어서,상기 패스워드 검출 정보는 상기 적어도 두 개의 그래픽 프로세싱 유닛 각각에 할당된 블록 개수, 블록 내의 쓰레드 개수, 및 패스워드 길이의 곱에 해당하는 후보 패스워드들 중에서 검출된 패스워드의 시작 위치를 나타내는 시작 포인터 정보임을 특징으로 하는 패스워드 해독 장치.
- 제 3 항에 있어서,상기 호스트는 상기 후보 패스워드들의 문자열의 시작 포인트로부터 패딩 데이터의 시작 지점까지의 패스워드를 검출함을 특징으로 하고,상기 패딩 데이터는 아스키 코드 값인 '0x28'과 '0xbf'가 연속된 부분부터의 데이터임을 특징으로 하는 패스워드 해독 장치.
- 제 1 항에 있어서,상기 적어도 두 개의 그래픽 프로세싱 유닛은 하나의 그래픽 카드에 포함되거나 서로 다른 그래픽 카드들에 각각 포함됨을 특징으로 하는 패스워드 해독 장치.
- 제 1 항에 있어서,상기 호스트는 상기 패스워드의 검색 범위 할당 시 하기의 수학식을 이용함을 특징으로 하는 패스워드 검색 장치.[수학식]for ((i= TOTAL_DOC_THREAD * gpuNumber);(i < searchEnd + TOTAL_DOC_THREAD * gpuCount);(i+ = TOTAL_DOC_THREAD * gpuCount))TOTAL_DOC_THREAD는 문서 파일의 패스워드 해독을 위한 그래픽 프로세싱 유닛의 블록 개수와 상기 블록 내에 포함된 쓰레드 개수의 곱이고, gpuNumber는 그래픽 프로세싱 유닛의 번호이고, gpuCount는 상기 암호화된 문서 파일의 패스워드 해독에 사용되는 그래픽 프로세싱 유닛의 개수이고, searchEnd는 패스워드의 검색 범위임.
- 제 1 항에 있어서,상기 그래픽 프로세싱 유닛은 암호화된 문서 파일 해독에 RC4 알고리즘을 사용하는 경우, RC 키 생성 시에 생성된 암호화 키와 RC4 데이터 암호화 결과를 상기 그래픽 프로세싱 유닛 내부의 공유 메모리에 저장함을 특징으로 하는 패스워드 해독 장치.
- 제 1 항에 있어서,상기 적어도 하나의 그래픽 프로세싱 유닛은상기 할당된 후보 패스워드들을 저장하는 그래픽 프로세싱 메모리; 및상기 할당된 후보 패스워드들을 탐색하여 패스워드를 검출하고, 상기 검출된 패스워드에 대응되는 패스워드 검출 정보를 생성하는 그래픽 프로세싱 제어부를 포함하는 패스워드 해독 장치.
- 제 8 항에 있어서,상기 호스트는상기 후보 패스워드들이 저장된 호스트 메모리; 및상기 저장된 후보 패스워드들을 상기 적어도 두 개의 그래픽 프로세싱 유닛에 복사하고, 상기 적어도 두 개의 그래픽 카드 중 하나로부터 상기 패스워드 검출 정보가 수신되면, 상기 후보 패스워드들로부터 상기 암호화된 문서 파일의 패스워드를 획득하는 호스트 제어부를 포함하는 패스워드 해독 장치.
- 제 9 항에 있어서,상기 호스트 메모리는 패스워드 해독을 위한 패스워드 해독 데이터를 저장함을 특징으로 하는 패스워드 해독 장치.
- 제 10 항에 있어서,상기 호스트 제어부는 상기 패스워드 해독 데이터를 상기 그래픽 프로세싱 메모리 내의 콘스턴트 메모리에 복사함을 특징으로 하고,상기 패스워드 해독 데이터는 U엔트리(Uentry) 데이터, O엔트리(Oentry) 데이터, ID엔트리(IDentry) 데이터, P엔트리(Pentry) 데이터, 및 패딩(padding) 데이터 중 적어도 하나를 포함함을 특징으로 하는 패스워드 해독 장치.
- 제 7 항에 있어서,상기 호스트 제어부는 상기 후보 패스워드들을 상기 적어도 두 개의 그래픽 프로세싱 유닛의 개수, 상기 그래픽 프로세싱 유닛의 블록 개수, 및 상기 블록 내 쓰레드 개수의 곱에 해당하는 개수만큼 생성함을 특징으로 하는 패스워드 해독 장치.
- 제 12 항에 있어서,상기 호스트 메모리는 상기 그래픽 프로세싱 유닛의 개수, 상기 블록 개수, 상기 쓰레드 개수, 상기 패스워드의 길이에 해당하는 크기를 가짐을 특징으로 하는 패스워드 해독 장치.
- 제 12 항에 있어서,상기 호스트 제어부는 상기 그래픽 프로세싱 유닛의 개수, 상기 블록 개수, 상기 쓰레드 개수, 및 상기 패스워드 길이의 곱에 해당하는 길이를 갖는 후보 패스워드의 집합을 상기 그래픽 프로세싱 메모리의 레지스터에 상기 패스워드의 길이만큼 분할하여 복사함을 특징으로 하는 패스워드 해독 장치.
- 호스트에서, 후보 패스워드들을 생성하는 단계;상기 호스트에서, 상기 후보 패스워드들을 적어도 두 개의 그래픽 프로세싱 유닛으로 할당하는 단계;상기 적어도 두 개의 그래픽 프로세싱 유닛에서, 상기 할당된 후보 패스워드 들에 대응되는 패스워드를 탐색하는 단계;상기 적어도 두 개의 그래픽 프로세싱 유닛에서, 상기 패스워드 탐색에 의해 암호화된 문서 파일의 패스워드가 검출되면, 패스워드 검출 정보를 발생하는 단계; 및상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 패스워드 검출 정보가 수신되면, 상기 후보 패스워드들 중에서 패스워드를 검출하는 단계를 포함하는 패스워드 해독 방법.
- 제 15 항에 있어서,상기 패스워드를 탐색하는 단계는각 그래픽 프로세싱 유닛에 할당된 후보 패스워드들로부터 패스워드 탐색을 병렬로 수행하는 단계를 포함하는 패스워드 해독 방법.
- 제 15 항에 있어서,상기 패스워드 검출 정보는 상기 적어도 두 개의 그래픽 프로세싱 유닛 각각에 할당된 블록 개수, 블록 내의 쓰레드 개수, 및 패스워드 길이의 곱에 해당하는 후보 패스워드들 중에서 검출된 패스워드의 시작 위치를 나타내는 시작 포인터 정보임을 특징으로 하는 패스워드 해독 방법.
- 제 17 항에 있어서,상기 후보 패스워드들 중에서 패스워드를 검출하는 단계는상기 패스워드에 패딩 데이터가 포함된 경우 상기 후보 패스워드들의 문자열의 시작 포인트로부터 패딩 데이터의 시작 지점까지 패스워드를 검출하는 단계를 포함하고,상기 패딩 데이터는 아스키 코드 값인 '0x28'과 '0xbf'가 연속된 부분부터의 데이터임을 특징으로 하는 패스워드 해독 방법.
- 제 15 항에 있어서,상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 중 하나로부터 패스워드 검출 정보가 수신되지 않으면, 상기 패스워드 검출을 위해 상기 후보 패스워드들을 제외한 다음의 후보 패스워드들을 생성하는 단계를 더 포함하는 패스워드 해독 방법.
- 제 15 항에 있어서,상기 호스트에서, 상기 적어도 두 개의 그래픽 프로세싱 유닛 내부의 콘스턴트 메모리로 상기 패스워드 탐색을 위해 패스워드 해독 데이터를 복사하는 단계를 포함하고,상기 패스워드 해독 데이터는 상기 패스워드 해독 데이터는 U엔트리(Uentry) 데이터, O엔트리(Oentry) 데이터, ID엔트리(IDentry) 데이터, P엔트리(Pentry) 데이터, 및 패딩(padding) 데이터 중 적어도 하나를 포함함을 특징으로 하는 패스워 드 해독 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090076841A KR101295879B1 (ko) | 2009-08-19 | 2009-08-19 | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 |
US12/615,772 US20110044449A1 (en) | 2009-08-19 | 2009-11-10 | Password deciphering apparatus and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090076841A KR101295879B1 (ko) | 2009-08-19 | 2009-08-19 | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110019223A true KR20110019223A (ko) | 2011-02-25 |
KR101295879B1 KR101295879B1 (ko) | 2013-08-16 |
Family
ID=43605389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090076841A KR101295879B1 (ko) | 2009-08-19 | 2009-08-19 | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110044449A1 (ko) |
KR (1) | KR101295879B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101133207B1 (ko) * | 2011-11-29 | 2012-04-05 | 주식회사 이스턴웨어 | 패스워드 해독 장치 및 방법 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10395065B2 (en) * | 2015-12-28 | 2019-08-27 | International Business Machines Corporation | Password protection under close input observation based on dynamic multi-value keyboard mapping |
EP3842977A4 (en) * | 2018-08-21 | 2022-04-06 | Matsunaga, Chikara | SYSTEM AND PROCEDURES TO SUPPORT THE USE OF AN ITEM |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7278023B1 (en) * | 2000-06-09 | 2007-10-02 | Northrop Grumman Corporation | System and method for distributed network acess and control enabling high availability, security and survivability |
EP1320006A1 (en) * | 2001-12-12 | 2003-06-18 | Canal+ Technologies Société Anonyme | Processing data |
KR100464797B1 (ko) * | 2002-06-21 | 2005-01-13 | 주식회사 마크윈 | 네트워크 키에 의한 전자문서 암호화 및 암호해독 방법 |
US8155314B2 (en) * | 2002-06-24 | 2012-04-10 | Microsoft Corporation | Systems and methods for securing video card output |
EP1456732A1 (en) * | 2002-10-16 | 2004-09-15 | Matsushita Electric Industrial Co., Ltd. | Password recovery system |
US7426642B2 (en) * | 2002-11-14 | 2008-09-16 | International Business Machines Corporation | Integrating legacy application/data access with single sign-on in a distributed computing environment |
US20070079143A1 (en) * | 2005-09-29 | 2007-04-05 | Avaya Technology Corp. | Secure recoverable passwords |
US20080052525A1 (en) * | 2006-08-28 | 2008-02-28 | Tableau, Llc | Password recovery |
US7831836B2 (en) * | 2006-10-04 | 2010-11-09 | Microsoft Corporation | Character position-based password recovery |
US7929707B1 (en) * | 2007-09-06 | 2011-04-19 | Elcomsoft Co. Ltd. | Use of graphics processors as parallel math co-processors for password recovery |
-
2009
- 2009-08-19 KR KR1020090076841A patent/KR101295879B1/ko active IP Right Grant
- 2009-11-10 US US12/615,772 patent/US20110044449A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101133207B1 (ko) * | 2011-11-29 | 2012-04-05 | 주식회사 이스턴웨어 | 패스워드 해독 장치 및 방법 |
WO2013081278A1 (ko) * | 2011-11-29 | 2013-06-06 | 주식회사 이스턴웨어 | 패스워드 해독 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR101295879B1 (ko) | 2013-08-16 |
US20110044449A1 (en) | 2011-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2894810B1 (en) | Searchable Code Processing System and Method | |
US20140223580A1 (en) | Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method | |
EP2960808A1 (en) | Server device, private search program, recording medium, and private search system | |
CN108647262B (zh) | 一种图片管理方法、装置、计算机设备及存储介质 | |
US8887290B1 (en) | Method and system for content protection for a browser based content viewer | |
CN103345609A (zh) | 一种文本加解密方法和加解密设备 | |
US20200218826A1 (en) | Data searching system, data searching method and computer readable medium | |
US7599492B1 (en) | Fast cryptographic key recovery system and method | |
JP2011232834A (ja) | データ分散プログラム、データ復元プログラム、データ分散装置、データ復元装置、データ分散方法、およびデータ復元方法 | |
EP3373504B1 (en) | Encryption device, retrieval device, encryption program, retrieval program, encryption method, and retrieval method | |
KR101295879B1 (ko) | 패스워드 해독 장치 및 그것의 패스워드 해독 방법 | |
CN112532379A (zh) | 一种文件保护方法及装置 | |
JP2012248940A (ja) | データ生成装置、データ生成方法、データ生成プログラム及びデータベースシステム | |
CN114626079A (zh) | 基于用户权限的文件查看方法、装置、设备及存储介质 | |
WO2019184741A1 (zh) | 应用程序信息的存储、处理方法及装置 | |
Karmakar et al. | Shrinkable Cryptographic Technique Using Involutory Function for Image Encryption | |
CN104639313B (zh) | 一种密码算法的检测方法 | |
US20170063527A1 (en) | Symmetric stream cipher | |
JP2007181011A (ja) | データ共有装置 | |
JP6672451B2 (ja) | 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法 | |
CN107070666A (zh) | 一种加解密方法及装置 | |
JP6083348B2 (ja) | プログラム実行方法および復号装置 | |
Kim et al. | Gpu-accelerated password cracking of pdf files | |
JP2015026892A (ja) | 情報処理システム | |
Ghule et al. | Intelligent content-based hybrid cryptography architecture for securing file storage over cloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160726 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170727 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190725 Year of fee payment: 7 |