KR101472493B1 - 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법 - Google Patents

지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법 Download PDF

Info

Publication number
KR101472493B1
KR101472493B1 KR1020120064409A KR20120064409A KR101472493B1 KR 101472493 B1 KR101472493 B1 KR 101472493B1 KR 1020120064409 A KR1020120064409 A KR 1020120064409A KR 20120064409 A KR20120064409 A KR 20120064409A KR 101472493 B1 KR101472493 B1 KR 101472493B1
Authority
KR
South Korea
Prior art keywords
gpu
chain
cpu
rainbow
false alarm
Prior art date
Application number
KR1020120064409A
Other languages
English (en)
Other versions
KR20130141193A (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 KR1020120064409A priority Critical patent/KR101472493B1/ko
Publication of KR20130141193A publication Critical patent/KR20130141193A/ko
Application granted granted Critical
Publication of KR101472493B1 publication Critical patent/KR101472493B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Retry When Errors Occur (AREA)

Abstract

본 발명은 GPU를 이용한 Rainbow 방법 고속 구현 시스템 및 그 방법에 대한 것으로서, 보다 상세하게는 time-memory tradeoff 방법인 rainbow 방법을 CUDA를 이용하여 구현한 기법과, GPU-CPU 이종의 시스템 상에 GPU를 이용한 Rainbow 방법의 고속 구현 시스템 및 그 방법에 관한 것이다.
본 발명은 병렬 컴퓨팅 아키텍처(CUDA)를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때 warp 직렬화 문제를 해결하기 위하여, 온라인체인 생성 작업은 GPU가 처리하고, 오경보 확인 작업은 CPU가 처리하는 데 있어, 상기 GPU와 CPU의 부하조절 (load balancing)과 CPU가 처리해야하는 오경보 확인 작업을 줄여주기 위해, 체크 포인트를 이용하여 분석하며, 상기 체크 포인트는 상기 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치의 정보를 미리 저장해두고, 경보가 발생했을 때 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있는 것을 특징으로 한다.

Description

지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법{High-Speed Implementations system of Rainbow Method on GPU and the method thereof}
본 발명은 GPU를 이용한 Rainbow 방법 고속 구현 시스템 및 그 방법에 대한 것으로서, 보다 상세하게는 time-memory tradeoff 방법인 rainbow 방법을 CUDA를 이용하여 구현한 기법과, GPU-CPU 이종의 시스템 상에 GPU를 이용한 Rainbow 방법의 고속 구현 시스템 및 그 방법에 관한 것이다.
일반적으로 GPU (Graphics Processing Unit)는 CPU에 비해 훨씬 우수한 연산능력을 가지고 있다. GPU는 작은 프로세서의 배열로 되어 있기 때문에 특히 병렬 연산에서 탁월한 성능을 보여준다.
그래서 최근에는 GPU가 그래픽 작업뿐만 아니라 수학 및 과학 분야의 빠른 연산을 위해서도 많이 활용되고 있다.
이러한 GPU를 GPGPU (General-Purpose computing on Graphics Processing Units) 라고 하며, GPGPU의 개념은 2006년 Nvidia사의 CUDA (Compute Unified Device Architecture) 에 의해 처음으로 도입되었다 . CUDA 라이브러리를 이용하면 손쉽게 GPU 프로그래밍이 가능하다.
또한 최근에 CUDA를 이용한 암호 알고리즘의 구현에 대해서 많이 연구되고 있다. 2007년에 Manavski가 CUDA를 이용하여 AES 암호를 고속 구현 하였다 .
2008년 Tzeng과 Wei가 컴퓨터 그래픽의 화이트 노이즈를 만들기 위해 MD5를 고속 구현 하였고 , Yeom과 Cho가 ARIA 블록 암호를 CUDA를 이용하여 구현한 논문을 발표하였다 . 그리고 Li et. al.은 PDF파일 암호화에 사용되는 MD5-RC4 암호를 CUDA를 이용하여 고속 구현하였다 .
또한 일방향 함수(one-way function)는 암호에서의 기본적인 도구이며, 이 함수의 역을 구하는 것은 어려운 문제이다. 일방향 함수의 역을 구하기 위한 3가지 일반적인 접근법이 있다. 가장 기본적인 방법은 전수 조사를 통해서 주어진 암호문에 대해서 모든 가능한 키를 사용해서 복호를 해보는 방법이다. 하지만 이는 많은 시간을 필요로 한다. 또 다른 방법은 알려진 평문에 대한 모든 가능한 키와 암호문 쌍을 미리 계산하여 하나의 표에 저장해두는 방법이 있다. 이 공격 방법은 빠르게 수행되지만, 모든 키와 암호문 쌍을 저장해야 하므로 방대한 양의 메모리가 필요하다. TMTO (Time-Memory Trade-Off) 는 위의 두 가지 기본적인 방법들의 절충으로서 시간과 메모리의 상반 관계에 의한 공격 방법이다.
1980년 Hellman이 처음 TMTO 알고리즘을 제안하였다. Babbage 와 Golic 은 여러 데이터를 사용하면 TMTO를 스트림 암호에 더 효과적으로 적용할 수 있음을 보였다. Rivest는 DP (Distinguished Point) 방법을 제안하여 테이블을 검색하는 시간을 줄이는 방법을 제안하였다. 2003년에 Oechslin이 Hellman의 테이블을 변형하여 새로운 TMTO 알고리즘인 rainbow 방법을 제안하였다. 이 방법은 Hellman에 비해서 온라인 (Online) 시간이 절반으로 줄어든다. 현재까지 rainbow 방법이 가장 빠른 TMTO 알고리즘으로 알려져 있다. 그 외에도 TMTO에 대한 다양한 연구가 진행되고 있다.
그러나 상술한 종래 발명들은 warp 직렬화 문제와, 상기 GPU와 CPU의 부하조절 (load balancing)과 CPU가 처리해야하는 오경보 확인 작업에 문제가 발생하였다.
상술한 문제점을 해결하기 위하여 본 발명은 CUDA를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때의 문제점인 warp 직렬화 문제를 해결하고, 체크 포인트 기술을 이용하여 "오경보 확인" 작업량을 줄이며, 최적의 사용을 위한 시스템 및 방법을 제공하는 데 목적이 있다.
본 발명은 병렬 컴퓨팅 아키텍처(CUDA)를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때 warp 직렬화 문제를 해결하기 위하여, 온라인체인 생성 작업은 GPU가 처리하고, 오경보 확인 작업은 CPU가 처리한다.
상기 GPU와 CPU의 부하조절(load balancing)과 CPU가 처리해야하는 오경보 확인 작업을 줄여주기 위해, 체크 포인트를 이용하여 분석한다.
상기 체크 포인트를 이용하여 분석하는 경우, 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치 정보를 미리 저장해두고 경보가 발생했을 때 상기 특정 위치 정보를 이용하면 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있다.
상기 warp 직렬화를 해결하기 위해 온라인 체인을 형성하고 EP에서 찾는 부분(A)과 오경보 여부를 확인하는 부분(B)을 나눈 후, 상기 GPU에서 각 스레드는 자신에게 할당된 온라인 체인을 만들어 상기 EP에서 찾고, 만약 경보가 발생하면, 해당 체인의 번호와 온라인 체인의 길이를 호스트 PC의 메모리에 복사하고 상기 CPU는 복사된 값을 읽어서 오경보 여부를 확인한다.
본 발명은 호스트에 테이블 카피가 이루어지고, 온라인 체인을 생성하는 단계와, 테이블을 구성하는 체인들의 위치 정보를 미리 저장하는 단계와, 경보가 발생했을 때 오경보인지 아닌지를 시작점부터 상기 체인을 만들어보기 전에 미리 판단하는 단계를 포함하여 구성된다.
본 발명은 병렬 컴퓨팅 아키텍처(CUDA)를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때 warp 직렬화 문제를 해결하기 위하여, 온라인체인 생성 작업은 상기 GPU가 처리하는 단계와 오경보 확인 작업은 CPU가 처리하는 단계를 더 포함하여 구성된다.
상기 GPU와 CPU의 부하조절(load balancing)과 CPU가 처리해야하는 오경보 확인 작업을 줄여주기 위해, 체크 포인트를 이용하여 분석하는 단계를 더 포함하여 구성된다.
상기 테이블을 구성하는 체인들의 위치 정보를 미리 저장하는 단계는, 상기 체크 포인트를 이용하여 분석하는 경우, 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치 정보를 미리 저장하는 단계와, 경보가 발생했을 때 상기 특정 위치 정보를 이용하면 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단하는 단계를 더 포함하여 구성된다.
상기 warp 직렬화를 해결하기 위해 온라인 체인을 형성하고 EP에서 찾는 부분(A)과 오경보 여부를 확인하는 부분(B)을 나누는 단계와, 상기 GPU에서 각 스레드는 자신에게 할당된 온라인 체인을 만들어 상기 EP에서 찾고, 만약 경보가 발생하면, 해당 체인의 번호와 온라인 체인의 길이를 호스트 PC의 메모리에 복사하고 상기 CPU는 복사된 값을 읽어서 오경보 여부를 확인하는 단계를 더 포함하여 구성된다.
본 발명에 따르면 먼저 호스트에 테이블 카피가 이루어지고, 온라인 체인을 생성하며, 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치의 정보를 미리 저장해두고, 경보가 발생했을 때 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있다.
본 발명은 체크 포인트 기술을 이용하여 오경보 확인 작업량을 줄이며, 최적의 사용을 위해 이 기법을 또한 분석한다.
본 발명에 따르면 CUDA를 이용하여 rainbow 방법을 구현하거나, 다른 TMTO 알고리즘 (Hellman, DP) 에도 동일하게 적용할 수 있다.
본 발명에 따르면 TMTO 중 가장 빠르다고 알려져 있는 rainbow 방법을 GPU를 이용하여 효율적으로 구현할 수 있다.
도1은 본 발명에 따른 지피유를 이용한 레인보우 방법 고속 구현 시스템과 방법을 개략적으로 보여주는 도면.
도2는 본 발명에 따른 레인보우 테이블을 보여주는 도면.
도3은 테이블의 한 체인과 온라인 체인이
Figure 112012047805157-pat00001
Figure 112012047805157-pat00002
사이에서 merge가 발생할 때 오경보 확률은
Figure 112012047805157-pat00003
인 것을 보여주는 도면.
도4는 1-bit 체크 포인트 사용 전후의 시간 (단위: t 2 ) 과 최적의 체크 포인트 위치. 체크 포인트의 위치는 테이블의 오른쪽 끝으로부터의 비율을 나타내는 도면.
이하 본 발명의 실시를 위한 구체적인 내용을 도면을 참고하여 자세히 설명한다.
본 발명은 기본적인 방법의 구현부터 시작하여 문제점을 분석하고, 이를 토대로 성능을 최적화할 수 있는 방법들을 제안하였다. 그리고 실제 rainbow 테이블을 만들어 실험해봄으로써 제안된 구현 방법들의 성능을 확인하였다.
도1에서 보는 바와 같이 CUDA를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때의 문제점인 warp 직렬화 문제를 해결하기 위해서 Rainbow 방법을 크게 두 개의 작업, 즉, 온라인체인 생성 과 오경보 확인으로 나눈다.
그리고 온라인체인 생성 작업은 GPU가 처리하고, 오경보 확인 작업은 CPU가 처리한다.
그리고 GPU와 CPU의 부하조절(load balancing)을 위해서는 CPU가 처리해야하는 오경보 확인 작업을 줄여줄 필요가 있다. 본 발명은 체크 포인트 기술을 이용하여 오경보 확인 작업량을 줄이며, 최적의 사용을 위해 이 기법을 또한 분석한다.
즉 본 발명에 따르면 먼저 호스트에 테이블 카피가 이루어지고, 온라인 체인을 생성하며, 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치의 정보를 미리 저장해두고, 경보가 발생했을 때 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있다.
도2에서 보는 바와 같이 본 발명에 따른 레이보우(Rainbow) 방법은 아래와 같이 진행된다.
1. Rainbow 방법
먼저 함수
Figure 112012047805157-pat00004
를 키
Figure 112012047805157-pat00005
에서
Figure 112012047805157-pat00006
로 가는 일방향 함수라고 하자. 여기서
Figure 112012047805157-pat00007
는 다시 축약 함수
Figure 112012047805157-pat00008
에 대입되어 키 공간상의 한 점으로 사상된다.
Figure 112012047805157-pat00009
즉,
Figure 112012047805157-pat00010
는 키 공간에서 키 공간으로 사상되는 함수이며 랜덤함수라고 가정할 수 있다.
사전 계산 단계
Rainbow 방법은 크게 사전 계산(precomputation) 단계와 온라인 (Online) 단계로 구성된다. 사전 계산 단계에서 공격자는 도2와 같이 다음과 같은
Figure 112012047805157-pat00011
길이의 체인을 충분히 많이 생성한다. (체인의 수를
Figure 112012047805157-pat00012
이라 하자.)
Figure 112012047805157-pat00013
그리고 이 체인의 중간에 있는 점들은 버리고 시작점 (SP)과 끝점 (EP) 인
Figure 112012047805157-pat00014
만 저장한다. 그리고 끝점을 기준으로 전체를 정렬한다.
Figure 112012047805157-pat00015
번째 시작점을
Figure 112012047805157-pat00016
,
Figure 112012047805157-pat00017
번째 끝점을
Figure 112012047805157-pat00018
라고 하자.
온라인 단계
온라인 단계에서는 키
Figure 112012047805157-pat00019
의 암호문
Figure 112012047805157-pat00020
가 주어졌을 때
Figure 112012047805157-pat00021
를 찾는다. 이를 위해 먼저 길이가 1인 온라인 체인을 만든다.
Figure 112012047805157-pat00022
그리고 이 값
Figure 112012047805157-pat00023
이 미리 만들어놓은 테이블의 끝점들 중 있는지 찾는다.
만약
Figure 112012047805157-pat00024
이 어떤 끝점
Figure 112012047805157-pat00025
와 일치한다면 경보(alarm)가 발생했다고 하며, 이는
Figure 112012047805157-pat00026
가 도2에서
Figure 112012047805157-pat00027
바로 왼쪽에 위치하거나
Figure 112012047805157-pat00028
가 다른 원상 (preimage) 을 가짐을 의미한다.
후자의 경우를 오경보 (false alarm) 라고 한다. 그러므로 시작점
Figure 112012047805157-pat00029
로부터
Figure 112012047805157-pat00030
의 바로 왼쪽 위치의 키 값을 계산하여 오경보 여부를 판단한다.
만약
Figure 112012047805157-pat00031
이거나 오경보가 발생했다면 길이 2인 온라인 체인인
Figure 112012047805157-pat00032
을 계산하여 위의 과정을 반복한다.
위 과정은 키
Figure 112012047805157-pat00033
를 찾거나 모든
Figure 112012047805157-pat00034
개의 온라인 체인을 생성할 때까지 반복된다.
예를 들어,
Figure 112012047805157-pat00035
번째에는
Figure 112012047805157-pat00036
을 계산하고 오경보 여부를 확인한다. 최악의 경우 온라인 체인을 만드는 시간은
Figure 112012047805157-pat00037
이다.
2. CUDA를 이용한 Rainbow 방법 구현
구현 설명에 앞서 실험에 사용된 테이블에 대해 먼저 설명한다. 일방향 함수는 SHA1 해쉬를 이용하였고, 키 공간의 크기는
Figure 112012047805157-pat00038
이다.
Figure 112012047805157-pat00039
,
Figure 112012047805157-pat00040
인 70% 성공확률의 1.2 GB rainbow 테이블을 생성하였다.
Naive 구현
Rainbow 방법을 병렬적으로 수행할 수 있는 가장 기본적인 방법은 각각의 스레드가 병렬적으로 각각의 온라인 체인을 생성하는 것이다. 즉,
Figure 112012047805157-pat00041
번째 스레드가 길이
Figure 112012047805157-pat00042
인 온라인 체인을 생성하여
Figure 112012047805157-pat00043
번째 열의 원소의 오경보 (false alarm) 여부를 확인할 수 있도록 구현 가능하다.
즉 SM 하나 당 896개의 스레드, 즉, 총
Figure 112012047805157-pat00044
개의 스레드를 생성하였다. 그러므로 처음에는 길이가 1∼14,336인 온라인 체인을 생성하고 오경보 여부를 확인한다. 어떤 SM이 작업을 마치면 그 다음 길이의 896개의 온라인 체인을 할당받는다.
이하 상술한 구현방법을 Naive GPU라고 부른다. Naive GPU의 부분별 실행시간은 [표 1]과 같다. (Intel i7 2.8GHz quad-core CPU와 GTX580 1.544GHz 512-core GPU를 이용하였고, 운영체제는 윈도우7 (64비트) 이다.)
온라인 체인+EP 찾기

오경보 여부 확인
13 초 245 초 258 초
warp 직렬화 문제
보통 오경보 여부를 확인하기 위해 만드는 체인 길이의 총합은 온라인 체인 길이의 총합 보다 짧다.
보통 전체 시간의 절반 정도 또는 그 이하이다. 하지만 상기 [표 1]의 실험결과에 의하면 오경보 여부를 확인하는 시간이 온라인 체인을 만드는 시간에 비해 약 19배 가량 많이 나온다. 이는 warp 직렬화 때문이다. 하나의 warp 내의 32개의 스레드 중 일부만 경보 (alarm) 가 발생하므로 일부 스레드들만 오경보 여부를 확인하는 과정을 거친다. 그러므로 이 때 나머지 스레드들은 오경보 여부를 확인하는 일부 스레드들이 끝나길 기다린다.
GPU+CPU
이 문제 (warp 직렬화) 를 해결하기 위해 본 발명은 온라인 체인을 만들고 EP에서 찾는 부분 (A) 과 오경보 여부를 확인하는 부분 (B) 을 나눈다. (A)는 GPU에서 처리하고, (B)는 CPU에서 처리한다. GPU에서 각 스레드는 자신에게 할당된 온라인 체인을 만들고 EP에서 찾는다. 그리고 만약 경보가 발생하면, 해당 체인의 번호와 온라인 체인의 길이를 호스트 PC의 메모리에 복사한다. 그리고 CPU는 복사된 값을 읽어서 오경보 여부를 확인한다. 오경보 여부를 확인하는 부분을 CPU로 넘김으로써 GPU에서 발생했던 warp 직렬화를 제거할 수 있다. 이하 이 방법을 GPU+CPU라고 부르겠다.
부하조절 문제
GPU+CPU의 실행시간은 아래 [표 2]와 같다. 온라인 체인을 생성하고 그 값을 테이블의 끝점에서 찾는 작업을 하는 GPU는 13초 만에 끝나지만, 오경보 여부를 확인하는 CPU는 102초가 소요되었다. GPU가 처리해야할 작업량이 CPU가 처리해야할 양보다 많지만, GPU의 연산능력이 CPU에 비해 훨씬 좋기 때문에 이런 현상이 발생한다. 그러므로 GPU+CPU 방법의 효율적인 병렬구현을 위해서는 부하 조절 (load balancing) 이 필수적이다.
온라인 체인+EP 찾기 (GPU) 오경보 여부 확인 (CPU)
13 초 102 초 102 초
체크 포인트를 통한 부하조절
본 발명은 GPU와 CPU의 부하 조절을 위해서 체크 포인트 를 이용한다. 체크 포인트를 이용하면 오경보를 줄여서 CPU가 처리해야 할 작업의 양을 줄일 수 있다. 많은 체크 포인트를 이용할수록 작업양은 더 많이 줄어든다.
3. 체크 포인트
본 발명에 따른 체크 포인트 를 이용하면 오경보 여부를 확인하는 부분의 시간을 줄일 수 있다. 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치의 정보를 미리 저장해둔다. 그리고 경보가 발생했을 때 이 정보를 이용하면 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있다. 보통 특정 위치의 키의 최하위 비트를 저장한다.
" J. Hong. The cost of false alarms in hellman and rainbow tradeoffs. Des. Codes Cryptography, 57(3):293-327, 2010."의 체크 포인트 분석 결과에 의하면, 본 발명의 일실시예에 따른 실험에 사용된 테이블에 하나의 1-bit 체크 포인트를 사용하면 오경보 여부를 확인하는 시간을 약 21% 향상시킬 수 있다. 이 장에서는 여러 개의 1-bit 체크 포인트를 사용할 경우, 성능 향상 효과와 체크 포인트의 최적의 위치를 분석한다.
Notation
Rainbow 테이블의
Figure 112012047805157-pat00045
번째 열에 있는 키들의 집합을
Figure 112012047805157-pat00046
라고 하자. 그리고
Figure 112012047805157-pat00047
개의 1-bit 체크 포인트의 위치를
Figure 112012047805157-pat00048
라고 하자. (
Figure 112012047805157-pat00049
)
Figure 112012047805157-pat00050
는 체크 포인트가 rainbow 테이블의
Figure 112012047805157-pat00051
번째 열에 위치함을 의미한다.
우선
Figure 112012047805157-pat00052
Figure 112012047805157-pat00053
번째 iteration (
Figure 112012047805157-pat00054
길이의 온라인체인 생성)에서는 체크 포인트로 오경보를 걸러낼 수 없다. 그러므로
Figure 112012047805157-pat00055
Figure 112012047805157-pat00056
번째 iteration에서 경보가 발생했다고 가정하자. 이는 본 발명이 찾고자하는 key
Figure 112012047805157-pat00057
Figure 112012047805157-pat00058
에 속함을 의미한다. 여기서
Figure 112012047805157-pat00059
Figure 112012047805157-pat00060
Figure 112012047805157-pat00061
에 대한 원상들의 집합이다. 그리고 다음 수학식4가 참이다.
Figure 112012047805157-pat00062
여기서
Figure 112012047805157-pat00063
Figure 112012047805157-pat00064
의 색인
Figure 112012047805157-pat00065
를 표시하지 않은 것이고, 어떤
Figure 112012047805157-pat00066
에 대해서도 위의 식은 만족함을 의미한다.
또한 도3에서 보는 바와 같이 테이블의 한 체인과 온라인 체인이
Figure 112012047805157-pat00067
Figure 112012047805157-pat00068
사이에서 merge가 발생함. 이 때 오경보 확률은
Figure 112012047805157-pat00069
이다.
체크 포인트 사용할 때 오경보 확률
만약
Figure 112012047805157-pat00070
이면,
Figure 112012047805157-pat00071
값을 찾을 수 있다. 만약
Figure 112012047805157-pat00072
이면, 이는
Figure 112012047805157-pat00073
번째 열 이전에 온라인체인이 rainbow 테이블의 한 체인과 merge가 발생했음을 의미하므로 오경보가 발생한다.
만약
Figure 112012047805157-pat00074
을 만족하는
Figure 112012047805157-pat00075
에 대해
Figure 112012047805157-pat00076
이면, 온라인체인이 rainbow 테이블의 한 체인과
Figure 112012047805157-pat00077
Figure 112012047805157-pat00078
사이에서 merge가 발생했음을 의미한다.
그러므로
Figure 112012047805157-pat00079
개의 1-bit 체크 포인트에 의해
Figure 112012047805157-pat00080
의 확률로 오경보가 발생한다. 마지막으로
Figure 112012047805157-pat00081
이면
Figure 112012047805157-pat00082
의 확률로 오경보가 발생한다.
체크 포인트 사용으로 인한 성능향상
Figure 112012047805157-pat00083
Figure 112012047805157-pat00084
라고 두자. 그리고
Figure 112012047805157-pat00085
Figure 112012047805157-pat00086
,
Figure 112012047805157-pat00087
Figure 112012047805157-pat00088
라고 두자.
이때
Figure 112012047805157-pat00089
Figure 112012047805157-pat00090
번째 iteration에서 체크 포인트 사용 후 오경보 수의 기댓값은 아래 수학식5이다.
Figure 112012047805157-pat00091
그리고 체크 포인트 사용 전 오경보 수의 기댓값은 아래 수학식6이다.
Figure 112012047805157-pat00092
그러므로
Figure 112012047805157-pat00093
번째 iteration에서 체크 포인트 사용으로 줄어드는 오경보 수의 기대값은 [수학식6]-[수학식5]이다. 이를 정리하면 아래 수학식7이 된다.
Figure 112012047805157-pat00094
" J. Hong. The cost of false alarms in hellman and rainbow tradeoffs. Des. Codes Cryptography, 57(3):293-327, 2010."의 Proposition 4와 Proposition 5에 의하면
Figure 112012047805157-pat00095
,
Figure 112012047805157-pat00096
이 성립하므로 이를 위 식에 대입하면 아래 수학식8이 된다.
Figure 112012047805157-pat00097
이를 함수
Figure 112012047805157-pat00098
라고 두면
Figure 112012047805157-pat00099
위치의 체크 포인트 사용으로 줄어드는 시간은 아래 수학식9가 된다.
Figure 112012047805157-pat00100
단,
Figure 112012047805157-pat00101
.
Figure 112012047805157-pat00102
는 rainbow 테이블의
Figure 112012047805157-pat00103
번째 열의 서로 다른 키의 수이고,
Figure 112012047805157-pat00104
이다.
분석결과 표
키 공간의 크기가
Figure 112012047805157-pat00105
이고
Figure 112012047805157-pat00106
,
Figure 112012047805157-pat00107
일 때, 체크 포인트의 수에 따른 오경보 여부 확인 시간의 성능향상과 체크 포인트의 위치는 도4와 같다.
본 발명은 22개의 체크 포인트를 이용하였다. 키 공간의 크기가
Figure 112012047805157-pat00108
이므로 하나의 끝점을 저장하는데 42비트가 필요하다.
본 발명은 64비트 정수형인 int64_t의 배열을 이용하여 42비트인 끝점들을 저장하였다. 그리고 빈 공간으로 남은 상위 22비트에 22개의 1-bit 체크 포인트를 저장하였다. 그러므로 체크 포인트 저장을 위해 추가되는 메모리는 없다. 분석결과에 따르면 약 84%의 성능향상이 예상된다. 체크 포인트들의 위치는 0.0416, 0.0633, 0.0855, 0.1083, 0.1316, 0.1556, 0.1802, 0.2056, 0.2318, 0.2589, 0.2870, 0.3162, 0.3465, 0.3783, 0.4117, 0.4470, 0.4845, 0.5247, 0.5684, 0.6168, 0.6718, 0.7381이다.
4. 실험결과
도5에서 보는 바와 같이 CPU를 이용한 실험결과 (CPU) 와 이 논문에서 제시한 3가지의 GPU 구현방법의 실험결과를 보여준다. CPU의 경우도 Naive GPU와 같이
Figure 112012047805157-pat00109
번째 스레드가 길이
Figure 112012047805157-pat00110
인 온라인체인을 생성하도록 구현하였으며, i7 quad-core CPU를 이용하였다. 임의로 선택한 50개의 키에 대한 SHA1 해쉬값을 이용하여 실험을 하였다. 무늬가 없는 검은 막대는 50번 시행한 전체 실험의 평균시간을 나타내며, 무늬가 있는 막대는 실패하는 경우의 시간에 대해서만 평균을 낸 값이다.
GPU+CPU는 CPU보다 약 2.8배 빠른 성능을 보이며, 체크 포인트를 이용하여 부하조절을 한 GPU+CPU with 체크 포인트는 CPU보다 15.8배 빠르다. 그리고 GPU+CPU with 체크 포인트는 GPU+CPU에 비해 5.75배 빠른데, 이는 22개 체크 포인트 사용 시 약 6.25배 (84%) 성능향상의 예상 치와 거의 일치한다.
본 발명은 컴퓨터 시스템에 저장된 사용자 패스워드의 해쉬 값만을 이용하여 사용자의 패스워드를 빠른 시간 내에 찾을 수 있는 방법을 제공하여 Stream 암호나 Block 암호의 키를 알아내기 위한 해킹에도 이용될 수 있다.

Claims (9)

  1. 병렬 컴퓨팅 아키텍처(CUDA)를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때 warp 직렬화 문제를 해결하기 위하여, 온라인체인 생성 작업은 GPU가 처리하고, 오경보 확인 작업은 CPU가 처리하는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 시스템.
  2. 제1항에 있어서,
    상기 GPU와 CPU의 부하조절(load balancing)과 CPU가 처리해야하는 오경보 확인 작업을 줄여주기 위해, 체크 포인트를 이용하여 분석하는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 시스템.
  3. 제2항에 있어서,
    상기 체크 포인트를 이용하여 분석하는 경우,
    테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치 정보를 미리 저장해두고 경보가 발생했을 때 상기 특정 위치 정보를 이용하면 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단할 수 있는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 시스템.
  4. 제1항에 있어서,
    상기 warp 직렬화를 해결하기 위해 온라인 체인을 형성하고 EP에서 찾는 부분과 오경보 여부를 확인하는 부분을 나눈 후, 상기 GPU에서 각 스레드는 자신에게 할당된 온라인 체인을 만들어 상기 EP에서 찾고, 만약 경보가 발생하면, 해당 체인의 번호와 온라인 체인의 길이를 호스트 PC의 메모리에 복사하고 상기 CPU는 복사된 값을 읽어서 오경보 여부를 확인하는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 시스템.
  5. 호스트에 테이블 카피가 이루어지고, 온라인 체인을 생성하는 단계와;
    테이블을 구성하는 체인들의 위치 정보를 미리 저장하는 단계와;
    경보가 발생했을 때 오경보인지 아닌지를 시작점부터 상기 체인을 만들어보기 전에 미리 판단하는 단계;
    를 포함하여 구성되는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 방법.
  6. 제5항에 있어서,
    병렬 컴퓨팅 아키텍처(CUDA)를 이용하여 GPU 상에서 Rainbow 방법을 구현하였을 때 warp 직렬화 문제를 해결하기 위하여, 온라인체인 생성 작업은 상기 GPU가 처리하는 단계와;
    오경보 확인 작업은 CPU가 처리하는 단계;
    를 더 포함하여 구성되는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 방법.
  7. 제5항에 있어서,
    GPU와 CPU의 부하조절(load balancing)과 CPU가 처리해야하는 오경보 확인 작업을 줄여주기 위해, 체크 포인트를 이용하여 분석하는 단계;
    를 더 포함하여 구성되는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 방법.
  8. 제5항에 있어서,
    상기 테이블을 구성하는 체인들의 위치 정보를 미리 저장하는 단계는,
    체크 포인트를 이용하여 분석하는 경우, 테이블을 구성하는 체인들의 시작점과 끝점뿐만 아니라 특정 위치 정보를 미리 저장하는 단계와;
    경보가 발생했을 때 상기 특정 위치 정보를 이용하면 오경보인지 아닌지를 시작점부터 체인을 만들어보기 전에 미리 판단하는 단계;
    를 더 포함하여 구성되는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 방법.
  9. 제5항에 있어서,
    warp 직렬화를 해결하기 위해 온라인 체인을 형성하고 EP에서 찾는 부분과 오경보 여부를 확인하는 부분을 나누는 단계와;
    GPU에서 각 스레드는 자신에게 할당된 온라인 체인을 만들어 상기 EP에서 찾고, 만약 경보가 발생하면, 해당 체인의 번호와 온라인 체인의 길이를 호스트 PC의 메모리에 복사하고 CPU는 복사된 값을 읽어서 오경보 여부를 확인하는 단계;
    를 더 포함하여 구성되는 것을 특징으로 하는 지피유를 이용한 레인보우 방법 고속 구현 방법.
KR1020120064409A 2012-06-15 2012-06-15 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법 KR101472493B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120064409A KR101472493B1 (ko) 2012-06-15 2012-06-15 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120064409A KR101472493B1 (ko) 2012-06-15 2012-06-15 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20130141193A KR20130141193A (ko) 2013-12-26
KR101472493B1 true KR101472493B1 (ko) 2014-12-12

Family

ID=49985388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120064409A KR101472493B1 (ko) 2012-06-15 2012-06-15 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR101472493B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102112929B1 (ko) * 2018-10-30 2020-05-19 한국과학기술원 Gpu 코드 메모리에 적용할 수 있는 cuda 메모리 페이지 스캔 및 cuda 함수 위치 탐색 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090129355A (ko) * 2008-06-11 2009-12-16 인텔 코오퍼레이션 성능 할당 방법 및 장치
US20100257538A1 (en) * 2009-04-03 2010-10-07 Microsoft Corporation Parallel programming and execution systems and techniques

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090129355A (ko) * 2008-06-11 2009-12-16 인텔 코오퍼레이션 성능 할당 방법 및 장치
US20100257538A1 (en) * 2009-04-03 2010-10-07 Microsoft Corporation Parallel programming and execution systems and techniques

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
High performance password cracking by implementing rainbow tables on nVidia graphics cards (Iowa State University) 2008 *

Also Published As

Publication number Publication date
KR20130141193A (ko) 2013-12-26

Similar Documents

Publication Publication Date Title
US8935539B2 (en) System and method for revising boolean and arithmetic operations
US7058813B2 (en) Method for watermarking computer programs
US7787629B1 (en) Use of graphics processors as parallel math co-processors for password recovery
WO2013191719A1 (en) Fingerprinting executable code
Andrade et al. Lyra2: Efficient password hashing with high security against time-memory trade-offs
US8886949B2 (en) Information processing apparatus and method therefor
Abdulla et al. Algorithmic improvements in regular model checking
Lee et al. SABER-GPU: A response-based cryptography algorithm for SABER on the GPU
CN1592190A (zh) 硬件加密引擎和加密方法
KR101472493B1 (ko) 지피유를 이용한 레인보우 방법 고속 구현 시스템 및 그 방법
JPWO2015166701A1 (ja) 暗号化方法、プログラム、および、システム
Kim et al. High‐speed parallel implementations of the rainbow method based on perfect tables in a heterogeneous system
Dobrovolsky et al. Development of a hash algorithm based on cellular automata and chaos theory
Rani et al. Adapting mapreduce for efficient watermarking of large relational dataset
Nguyen et al. Cryptanalysis of MD5 on GPU Cluster
JP7396373B2 (ja) 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
Huang et al. Some weak points of one fast cryptographic checksum algorithm and its improvement
CN113434148A (zh) 防解密客户端开发编译方法、装置、电子设备及存储介质
Hanling et al. Poster: Proofs of retrievability with low server storage
Alomari et al. Implementation of a parallel XTS encryption mode of operation
Sahni A review on cryptographic hashing algorithms for message authentication
Burak Parallelization of a block cipher based on chaotic neural networks
Kim et al. Gpu-accelerated password cracking of pdf files
Martins et al. Arithmetical improvement of the round-off for cryptosystems in high-dimensional lattices
Wang et al. Analysis of multiple checkpoints in non-perfect and perfect rainbow tradeoff revisited

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180124

Year of fee payment: 4