KR20190091606A - Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법 - Google Patents

Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법 Download PDF

Info

Publication number
KR20190091606A
KR20190091606A KR1020180010365A KR20180010365A KR20190091606A KR 20190091606 A KR20190091606 A KR 20190091606A KR 1020180010365 A KR1020180010365 A KR 1020180010365A KR 20180010365 A KR20180010365 A KR 20180010365A KR 20190091606 A KR20190091606 A KR 20190091606A
Authority
KR
South Korea
Prior art keywords
file
data
gpu
encryption
block
Prior art date
Application number
KR1020180010365A
Other languages
English (en)
Other versions
KR102090374B1 (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 KR1020180010365A priority Critical patent/KR102090374B1/ko
Publication of KR20190091606A publication Critical patent/KR20190091606A/ko
Application granted granted Critical
Publication of KR102090374B1 publication Critical patent/KR102090374B1/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2113Multi-level security, e.g. mandatory access control

Landscapes

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

Abstract

GPU를 이용한 파일 시스템 레벨 암호화 장치를 개시한다.
적어도 하나의 애플리케이션으로부터 파일에 대한 읽기 또는 쓰기 요청을 수신하는 입출력요청 수신부; 상기 쓰기 요청을 수신한 상기 입출력요청 수신부로부터 파일에 대한 데이터 버퍼를 기 설정된 크기의 암호화 데이터 블럭으로 분할하거나, 상기 읽기 요청을 수신하고 저장장치로부터 암호화되어 저장된 파일 읽어 들인 데이터 버퍼를 기 설정된 크기의 복호화 데이터 블럭으로 분할하는 적어도 하나의 파일블럭 분배부; 상기 암호화 데이터 블럭에 대응하여 상기 암호화 데이터 블럭을 암호화하는 적어도 하나의 암호화부; 상기 복호화 데이터 블럭에 대응하여 상기 복호화 데이터 블럭을 복호화하는 적어도 하나의 복호화부; 및 상기 암호화부가 실행되는 쓰레드를 생성하거나 상기 복호화부가 실행되는 적어도 하나의 쓰레드를 생성하고, 생성된 쓰레드에 CPU 또는 GPU를 할당하는 쓰레드 관리부를 포함하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치를 제공한다.

Description

GPU를 이용한 파일 시스템 레벨 암호화 장치 및 방법{The Method and Apparatus for File System Level Encryption Using GPU}
본 실시예는 GPU를 이용한 파일 시스템 레벨 암호화 장치 및 그 방법에 관한 것이다.
이하에 기술되는 내용은 단순히 본 실시예와 관련되는 배경 정보만을 제공할 뿐 종래기술을 구성하는 것이 아니다.
빅데이터(Big Data), 인공지능(Artificial Intelligence), 모바일 커머스(Mobile Commerce), 자율주행 자동차(Autonomous Vehicle) 등 IT 환경이 더욱 우리 생활과 밀접하게 다가오고 있다. IT 환경이 생활에 밀접하게 접목됨에 따라 이와 관련된 보안의 중요성이 점점 더 커지고 있으며, 보안 위협을 보다 효율적으로 방어하기 위한 솔루션(Solution)의 필요성도 증가하고 있다.
최근 개인정보의 보호를 강화하기 위하여 금융기관을 비롯한 민감한 개인정보를 수집, 처리, 저장하는 기관에서는 개인정보가 암호화되어 저장되도록 하는 법률이 제정되고 있는 등 개인정보 보호가 더욱 강화되고 있다. 이러한 경향에 맞추어 OS(Operating System, 운영체제)의 파일 시스템(File System)이나 DBMS(Database Management System)에서 입력되는 정보를 암호화하여 저장하고, 읽을 때는 자동적으로 복호화하여 읽어 들이는 시스템이 개발되어 보급되고 있다.
그러나 위와 같은 파일 시스템에서 입출력되는 전체의 데이터 또는 지정된 일부의 데이터에 대하여 자동적으로 암호화하거나 복호화하는 경우에 종래의 시스템에서는 파일 시스템의 입출력 성능에 큰 부하를 발생시킬 수 있는 문제가 있고, 이러한 문제를 해결할 수 있는 방안이 필요하다.
특히 개인정보 중 텍스트 위주의 단순한 정보의 경우에는 암호화 처리를 제한적으로 수행할 수 있으나, 이미지, 동영상, 음성과 같은 멀티미디어 데이터나 설계도면, 녹취록, 로그와 같이 비정형 데이터가 빅데이터로(Big Data) 처리되어야 하는 경우에는 암호화 처리가 어렵고 랜섬웨어(Ransomware)와 같은 악성코드로부터 보호하기 어렵다는 문제가 있다.
본 실시예는 파일 데이터의 입출력 시에 자동적으로 암호화하거나 복호화하는 파일 시스템의 성능을 향상시키는 방법 및 그 장치를 제공하는데 주된 목적이 있다. 더욱 상세하게는 파일 시스템에서 GPU(Graphics Processing Unit)를 이용하여 암호화 또는 복호화를 병렬로 처리할 수 있는 방법 및 장치를 제공한다.
본 실시예의 일 측면에 의하면, 적어도 하나의 애플리케이션으로부터 파일에 대한 읽기 또는 쓰기 요청을 수신하는 입출력요청 수신부; 상기 쓰기 요청을 수신한 상기 입출력요청 수신부로부터 파일에 대한 데이터 버퍼를 기 설정된 크기의 암호화 데이터 블럭으로 분할하거나, 상기 읽기 요청을 수신하고 저장장치로부터 암호화되어 저장된 파일 읽어 들인 데이터 버퍼를 기 설정된 크기의 복호화 데이터 블럭으로 분할하는 적어도 하나의 파일블럭 분배부; 상기 암호화 데이터 블럭에 대응하여 상기 암호화 데이터 블럭을 암호화하는 적어도 하나의 암호화부; 상기 복호화 데이터 블럭에 대응하여 상기 복호화 데이터 블럭을 복호화하는 적어도 하나의 복호화부; 및 상기 암호화부가 실행되는 쓰레드를 생성하거나 상기 복호화부가 실행되는 적어도 하나의 쓰레드를 생성하고, 생성된 쓰레드에 CPU 또는 GPU를 할당하는 쓰레드 관리부를 포함하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치를 제공한다.
본 실시예의 일 측면에 의하면, GPU를 이용한 파일 시스템 레벨 암호화 방법에 있어서, 적어도 하나의 애플리케이션으로부터 파일에 대한 쓰기 또는 읽기 요청을 수신하는 과정; 상기 요청에 대한 파일블럭 분배부를 생성하고, 상기 파일블럭 분배부는 상기 파일을 기 설정된 크기의 암호화 데이터 블럭 또는 복호화 데이터 블럭으로 분할하는 과정; 상기 암호화 데이터 블럭 또는 복호화 데이터 블럭의 수에 대응하는 쓰레드를 생성하는 과정; 상기 쓰레드에 CPU 또는 GPU를 할당하는 과정; 상기 쓰레드에 GPU가 할당되는 경우 상기 암호화 데이터 블럭 또는 복호화 데이터 블럭을 GPU로 전송하는 과정; 및 상기 쓰레드가 CPU 또는 GPU를 이용하여 암호화 또는 복호화를 수행하는 과정을 포함하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명의 실시예에 의하면, 파일 시스템에서 파일 데이터를 저장장치에 '쓰기'(Write) 또는 출력(Output)하는 경우에 암호화(Encoding, Encryption)와 '읽기'(Read) 또는 입력(Input) 하는 경우에 복호화(Decoding, Decryption)가 컴퓨터(Computer) 시스템의 CPU(Central Processing Unit)만으로 수행될 경우에 운영체제(Operating System)의 파일 시스템(File System)의 입출력 성능에 큰 부담이 될 수 있으나, CPU 뿐만 아니라 GPU(Graphics Processing Unit)를 함께 이용하여 병렬로 암호화 또는 복호화를 한다면 파일 시스템의 입출력 성능을 개선할 수 있는 효과가 있다. 일반적인 컴퓨터 시스템의 경우, CPU의 수는 제한되어 있어 CPU가 동시에 처리할 수 있는 일의 수는 CPU의 수에 제한될 수밖에 없다.
파일 시스템은 컴퓨터 시스템에서 실행되는 다수의 애플리케이션의 입출력 요청 및 운영체제 커널(Kernel)에서 발생하는 입출력 요청에 대하여, 입출력 요청을 받아 지정된 저장 장치에서 데이터를 읽기 또는 쓰기 연산을 수행하고 그 결과는 돌려주어야 한다. 따라서 한 개 내지 수 개의 제한된 CPU를 포함하고 있는 컴퓨터 시스템의 경우, 다수의 애플리케이션에 의해 동시에 요구되는 입출력 요청을 순차적으로 처리하거나 일부 제한된 방법으로 병렬처리할 수밖에 없다.
최근 CPU에도 암호화 및 복호화를 하드웨어적으로 처리할 수 있는 기능을 탑재하는 경우도 있으나 파일 시스템을 통한 전체 입출력을 처리하기에는 부족하다. GPU는 CPU와 달리 병렬처리를 위하여 수천 내지 수만 개의 코어(Core)를 포함하고 있어 파일 시스템에서 요청하는 파일이 입출력에 대하여 병렬적인 처리가 가능하다. 본 발명의 실시예에 의하면, CPU와 GPU를 동시에 활용하여 파일의 입출력 시 파일 데이터를 암호화하거나 복호화하기에 뛰어난 성능을 제공할 수 있다.
도 1은 컴퓨터 시스템에서 애플리케이션이 파일 시스템을 통해 파일을 입출력하는 과정을 개략적으로 나타내는 블럭 구성도와 파일 입출력 시 파일의 암호화 및 복호화를 처리하는 연산장치의 예이다.
도2a 내지 도2b는 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨 암호화 장치를 개략적으로 나타내는 블럭 구성도이다.
도 3은 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨의 암호화 장치가 암호화 과정을 나타내는 순서도이다.
도 4는 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨의 암호화 장치가 복호화 과정을 나타내는 순서도이다.
이하, 본 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로, 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 컴퓨터 시스템에서 애플리케이션이 파일 시스템을 통해 파일을 입출력하는 과정을 개략적으로 나타내는 블럭 구성도와 파일 입출력 시 파일의 암호화 및 복호화를 처리하는 연산장치의 예이다.
도 1(a)는 컴퓨터 시스템에서 실행 중인 애플리케이션(100)이 운영체제(Operating System)의 구성요소 중 파일 시스템(File System, 200)에 특정한 파일의 읽기(Read, Input) 또는 쓰기(Write, Output)를 요청하면 파일 시스템(200)은 하드디스크, 이동식디스크 또는 네트워크 디스크를 포함하는 저장장치(300) 중 어느 하나로부터 암호화된 파일을 읽어 복호화하여 애플리케이션(100)에 전달하거나 파일을 암호화하여 저장장치(200)에 저장한다. 애플리케이션(100)은 파일 시스템(200)을 통하여 일반적인 파일의 입출력을 요청하지만, 파일 시스템(200)은 읽기 요청에 대하여 저장장치(300)로부터 암호화된 파일을 읽어 복호화(Decryption)한 후 이를 애플리케이션(100)에 전달하고, 쓰기 요청에 대하여 암호화되지 않은 일반적인 파일을 암호화(Encryption)하여 저장장치(300)에 저장한다.
최근 개인정보가 포함된 데이터의 보호뿐 아니라 이미지, 동영상, 음악을 포함하는 멀티미디어 파일, 설계도, 녹취록, 로그 파일 등을 포함하는 비정형 데이터에 대해서도 정보보호의 필요성이 커지고 있어, 앞서 설명한 파일 시스템(200) 레벨(Level)에서 입출력되는 데이터를 암호화하여 저장하거나 암호화되어 저장된 파일을 복호화하여 애플리케이션(100)에 전달하는 기술의 필요성이 증가되고 있다. 이는 애플리케이션(100) 입장에서 파일의 암호화 및 복호화에 대한 부담을 줄이면서 데이터를 안전하게 암호화된 상태로 보관할 수 있다는 장점이 있다. 그러나 컴퓨터 시스템의 리소스(Resource)는 제한되어 있고 특히 암호화를 담당하는 CPU(Central Processing Unit)의 성능은 제한되어 있어 다수의 애플리케이션(100)이 동시에 파일의 입출력을 요청할 경우 CPU에서 병목현상(Bottle Neck)이 발생할 수밖에 없다.
도 1 (b)는 파일 시스템(200)의 암호화 시에 발생할 수 있는 CPU(410)의 병목 현상을 해결하기 위하여 GPU(420, Graphic Processing Unit)을 CPU처럼 활용할 수 있는 연산장치를 나타내는 도면이다. 최근의 CPU는 여러 개의 코어(Core)를 하나의 CPU에 직접시키는 멀티 코어 프로세서의 형태로 발전되고 있다. 그러나 CPU가 멀티 코어를 구성되어 있다고 하더라도 동시에 처리할 수 있는 일(Job)은 그 코어 수에 제한될 수밖에 없다. 이에 반해 GPU는 주로 그래픽 처리에 적합하도록 설계되어 있으나 그래픽을 처리하지 않는 동안에는 유효자원으로 활용될 수 있어 CPU를 보완하여 컴퓨터 시스템의 성능을 개선할 수 있는 중요한 자원이 될 수 있다. GPU가 정수 연산, 플로팅 포인트(Floating Point) 연산을 비롯한 각종 수학함수 연산에 적합하고 이는 암호화 및 복호화 계산에도 적합하여 이를 활용한다면 파일 시스템(200) 레벨의 암호화 시에 성능의 개선할 수 있는 효과를 기대할 수 있다.
도2a 내지 도2b는 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨 암호화 장치를 개략적으로 나타내는 블럭 구성도이다.
GPU를 이용한 파일 시스템(200) 레벨 암호화 장치는 입출력요청 수신부(210), 적어도 하나의 파일블럭 분배부(220), 쓰레드(Thread) 관리부(230), 적어도 하나의 암호화부(240), 적어도 하나의 복호화부(250) 및 저장장치 연결부(260)를 포함한다. 다만, GPU를 이용한 파일 시스템(200) 레벨 암호화 장치의 구성요소는 이에 한정되는 것은 아니며 다양한 구성요소를 더 포함할 수 있다.
GPU를 이용한 파일 시스템(200) 레벨 암호화 장치는 컴퓨터 시스템에 구비된 저장장치(130), 외장하드, 이동형 저장장치 또는 네트워크로 연결된 다른 컴퓨터 시스템(100)의 저장장치(130)이거나 전용 저장장치에 저장된 파일을 운영체제(Operating System)의 파일 시스템(200) 또는 파일 시스템과 긴밀하게 연계되어 파일을 암호화 또는 복호화하는 것으로 파일 시스템(200)의 일부로서 커널모드에서 실행될 수 있고, 경우에 따라서는 커널모드(Kernel Mode)에서 사용자모드(User Mode)로 전환되어 실행되는 것도 가능할 것이다.
본 실시예에 따른 CPU(410)와 GPU(420)는 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등 다양한 장치를 의미한다. 적어도 일 실시예에 따르면, CPU(410)와 GPU(420)는 명세서에 기재된 동작과 기능을 하나 이상 선택적으로 수행하도록 프로그램될 수 있다. 적어도 일 실시예에 따르면, CPU(410)와 GPU(420)는 전체 또는 부분적으로 특정한 구성의 주문형반도체(Application Specific Integrated Circuit: ASIC) 등의 하드웨어로써 구현될 수 있다.
운영체제의 파일시스템(200)은 일반적인 컴퓨터 시스템에서 사용되는 윈도우즈(Windows), OS X, Linux, Unix 뿐만 아니라 IOS, 안드로이드를 포함하는 스마트 폰용 운영체제 및 임베디드(Embedded)용 운영체제를 포함하는 다양한 형태 중 어느 하나이다.
한편 파일 시스템(200)은 저장장치(300)로부터 파일을 읽기(Read) 또는 저장장치(300)에 파일을 쓰기(Write) 연산을 할 경우 파일 시스템(200) 또는 저장장치(300)에서 정한 기 설정된 일정한 크기의 블럭(Block)의 단위에 의해 이루어진다. 즉 읽기 또는 쓰기를 위한 데이터의 크기가 블럭의 크기보다 작더라도 블럭의 크기에 의해 데이터의 읽기 또는 쓰기가 이루어지고, 읽기 또는 쓰기를 위한 데이터의 크기가 블럭의 크기보다 크다면 복수의 블럭으로 분할되어 입출력이 이루어진다.
입출력요청 수신부(210)는 애플리케이션(100)이 파일을 열고(Open), 파일에 대한 읽기 또는 쓰기를 요청하는 경우, 해당 파일에 대한 입출력 요청을 수신한다. 읽기 요청은 지정된 파일에 관한 정보와 파일을 읽기 위한 버퍼(Buffer)의 메인 메모리(Main Memory) 상의 주소(Address) 정보를 함께 보내어 GPU를 이용한 파일 시스템(200) 레벨 암호화 장치가 암호화되어 있는 파일을 저장장치(300)에서 읽어 이를 복호화하고 버퍼에 저장하여 애플리케이션(100)으로 전달한다.
쓰기 요청은 애플리케이션(100)이 저장장치(300)에 저장할 파일에 대한 정보와 저장할 데이터에 대한 메인 메모리 상의 버퍼 주소 정보를 파일 시스템(200) 상의 입출력 요청 수신부(210)에 전달하고, GPU를 이용한 파일 시스템(200) 레벨 암호화 장치가 버퍼의 데이터를 암호화하여 저장장치(300)에 저장한다.
파일블럭 분배부(220)는 입출력요청 수신부(210)가 전달받은 파일의 쓰기 데이터 버퍼를 기 설정된 파일블럭의 단위로 분할한다. 파일 시스템(200)은 저장장치(300)의 종류, 운영체제의 특성에 따라 입출력을 위한 데이터 블럭의 크기를 달리한다. 바람직하게는 파일블럭 분배부(220)가 분할하는 데이터 블럭의 크기는 운영체제에서 정하고 있는 데이터 블럭의 크기와 일치하는 것이지만, 반드시 이와 동일할 필요는 없다. 파일블럭 분배부(220)는 운영체제의 파일 입출력 블럭 단위보다 작은 16바이트 단위로 파일을 분배할 수 있다.
입출력요청 수신부(210)는 운영체제 내에서 병렬적으로 실행 중인 애플리케이션(100)으로부터 적어도 하나의 파일에 대한 입출력 요청을 수신한다. 입출력요청 수신부(210)는 각 애플리케이션(100)의 각 파일별 입출력 요청을 구분하여 관리할 수 있다. 이를 위하여 입출력요청 수신부(210)는 입출력 요청에 대응하는 각각의 파일블럭 분배부(220)를 쓰레드(Thread)의 형태로 생성할 수 있다. 그러나 파일블럭 분배부(220)가 반드시 파일 또는 애플리케이션(100) 별로 관리되어야 하는 것은 아니다. 파일블럭 분배부(220)는 애플리케이션(100) 별로 입출력하는 파일을 관리하고 파일 시스템(200)의 성능을 높이기 위하여 별개의 쓰레드로 관리되는 것이 바람직하다. 이런 경우 운영체제 전체적 파일의 입출력을 요청하는 애플리케이션(100)의 수에 따라 적어도 하나의 파일블럭 분배부(220)가 생성되어야 한다.
쓰레드 관리부(230)는 파일블럭 분배부(220)가 입출력 요청된 파일의 암호화 또는 복호화를 위하여 파일을 기 설정된 크기의 데이터 블럭 단위로 분할하고 이를 쓰레드 관리부(230)에 전달한다. 쓰레드 관리부(230)는 CPU의 성능과 처리되고 있는 일의 정도 및 GPU의 성능과 처리되고 있는 일의 정도에 근거하여 쓰레드(Thread)를 생성하고 각 생성된 쓰레드에 CPU 또는 GPU를 할당하여 암호화 또는 복호화 연산이 수행되도록 한다.
쓰레드 관리부(230)는 파일블럭 분배부(220)가 분할한 데이터 블럭의 수에 대응되는 수의 쓰레드를 생성한다. 본 실시예에 따른 GPU를 이용한 파일 시스템 레벨 암호화 장치의 쓰레드 관리부(230)는 CPU에 구비된 코어의 수, GPU에 구비된 코어의 수에 따라 근거하여 쓰레드를 할당할 수 있다.
본 실시예에 따른 쓰레드 관리부(230)는 CPU가 뛰어난 연산능력을 가지고 있다고 판단하는 경우 CPU에 구비된 코어의 수보다 더 많은 쓰레드가 처리될 수 있도록 쓰레드를 할당할 수 있다. 본 실시예에 따른 쓰레드 관리부(230)는 CPU와 메인 메모리, GPU와 메인 메모리 사이 버스(BUS)의 데이터 전송속도에 따라 쓰레드의 할당을 제어할 수 있다. 본 실시예에 따른 쓰레드 관리부(230)는 GPU의 연산능력에 따라 쓰레드의 할당을 제어할 수 있다.
본 실시예에 따른 쓰레드 관리부(230)는 GPU와 메인 메모리 사이의 버스(BUS)로 데이터가 전송되는 경우, 데이터 전송이 빈번해질수록 그 성능이 저하될 수 있어 이러한 데이터 전송이 최소화될 수 있도록 할 수 있다. 쓰레드 관리부(230)는 GPU로 파일 데이터를 전송하기 위한 데이터의 크기를 설정해 둘 수 있고, 기 설정된 전송 데이터 크기까지 데이터가 저장되거나 전송될 파일의 전체 크기가 기 설정된 전송 데이터 크기보다 작아 경우에 GPU로 데이터를 전송하여 데이터를 암호화하거나 복호화할 수 있다.
다시 말해 암호화를 위한 쓰레드 관리부(230)는 메인 메모리에서 GPU로 데이터 전송에 따른 성능저하를 최소화하기 위하여 운영체제의 파일 입출력을 위한 데이터 블럭과 동일하거나 이보다 큰 데이터 블럭의 단위를 사용할 수 있다. 운영체제에서 사용하는 파일의 입출력을 위한 데이터 블럭의 크기가 작아 빈번하게 GPU로 데이터 전송이 발생되는 것을 방지하기 위하여 쓰레드 관리부(230)는 기 설정된 데이터 블럭의 크기 단위에 따라 GPU로 데이터를 전송하도록 할 수 있으며, 암호화를 위한 쓰레드의 수는 GPU로 전송을 위한 데이터 블럭의 크기에 따라 그 수가 결정되어 각 쓰레드가 생성될 수 있다.
암호화부(240)는 쓰레드 관리부(230)에 의해 생성된 쓰레드에 CPU(410) 또는 GPU(420)가 할당되면 파일블럭 분배부(220)에 의해 분할된 데이터 블럭의 암호화를 수행한다. 암호화부(240)는 암호화하고자 하는 데이터 블럭의 수만큼 쓰레드로 생성되어 CPU 또는 GPU에서 병렬적으로 각각의 쓰레드에 할당된 데이터 블럭의 암호화를 처리한다. 각 암호화부(240)가 처리하는 암호화에 입력되는 암호화 키(Key)는 동일한 것이 바람직하나 반드시 이에 한정될 필요는 없다. 각 암호화부(240)가 독자적인 암호화 키로 각각의 데이터 블럭을 암호화하는 것도 가능하다.
본 실시예에 의한 파일블럭 분배부(220)가 분배한 데이터 블럭의 크기는 운영체제가 입출력하는 데이터 블럭의 크기와 일치할 수 있지만, 반드시 일치할 필요는 없다. 본 실시예의 의한 암호화부(240)는 16바이트(Bytes) 단위로 암호화할 수 있고, 512바이트, 1024바이트, 2048바이트를 포함하는 운영체제의 파일 입출력 블럭 중 어느 하나에 의해 암호화될 수 있다. 하나의 쓰레드 관리부(230)가 생성한 각 암호화부(240)가 암호화하는 데이터 블럭의 크기가 모두 동일할 필요는 없고, 하나 이상의 데이터 블럭 단위로 암호화하는 것이 가능하다.
쓰레드 관리부(230)에 의해 생성된 쓰레드가 실행하는 암호화부(240)는 데이터 암호화를 완료하면 애플리케이션(100)이 저장하고자 하는 데이터에 대응하는 위치에 암호화된 데이터를 저장한다. 쓰레드 관리부(230)는 모든 쓰레드가 암호화를 완료하는 경우, 암호화된 파일이 저장장치(300)에 저장될 수 있도록 운영체제에 신호(Signal)를 전송할 수 있다.
본 실시예에 의한 암호화부(240)는 암호화하는 데이터 블럭에 저장된 데이터의 크기는 암호화 단위의 블럭 크기와 동일할 수 있지만 이보다 작을 수도 있다. 암호화부(240)에서 암호화하고자 하는 데이터의 크기가 암호화 단위의 블럭 크기보다 작은 경우에는 나머지 영역의 데이터는 기 설정된 값(Value)으로 나머지 데이터 영역을 채워(Padding) 암호화할 수 있다. 또한 이러한 암호화 데이터 블럭에 대해서는 블럭 단위의 암호화 방법이 아닌 바이트 단위의 암호화를 하는 것이 가능하다. 즉 본 실시예에 의한 암호화부(240)는 암호화 단위의 블럭 크기와 실제 암호화할 데이터 크기가 일치하는지 여부에 근거하여 암호화 단위의 블럭 크기와 실제 암호화할 데이터의 크기가 일치하는 경우에는 암호화 단위의 블럭 크기로 암호화하고, 실제 암호화할 데이터 크기가 작다면 바이트 단위의 암호화를 수행할 수 있다. 암호화부(240)는 이와 같이 암호화하는 데이터 블럭의 크기에 관한 정보를 암호화정보 관리부에 저장관리하고 아래에서 설명하는 복호화부(250)에서 데이터를 복호화할 때 참조하여 데이터를 복호화할 수 있다. 암호화정보 관리부는 파일 데이터의 크기, 암호화 키, 암호화 블럭의 수, 각 암호화 블럭에 대한 암호화 알고리즘 중 적어도 하나를 포함한다.
복호화부(250)는 애플리케이션(100)이 저장장치(300)로부터 특정한 파일에 대한 읽기 요청을 하는 경우, 저장장치(300)에 암호화되어 저장된 파일을 읽어 파일블럭 분배부(220)가 암호화된 파일을 기 설정된 데이터 블럭 단위로 분할하고, 쓰레드 관리부(230)에 전달하면, 쓰레드 관리부(230)는 각 데이터 블럭에 대응하는 복호화부(250)를 위한 쓰레드를 생성하고 CPU 또는 GPU를 할당한다. 복호화 과정의 흐름은 암호화 과정의 역의 과정에 해당한다. 다시 말해 복호화 과정은 암호화 과정에서 암호화의 역의 과정으로 저장장치(300)에 암호화되어 저장되어 있는 파일 데이터를 읽고, 이를 복호화하여 애플리케이션(100)에 전달한다.
복호화부(250)는 암호화부(240)와 마찬가지로 쓰레드 관리부(230)에 의해 생성된 쓰레드가 할당되고, 쓰레드의 수는 읽어온 파일의 크기와 암호화를 위한 데이터 블럭의 크기에 의해 그 수가 결정된다. 본 실시예에 의한 복호화부(250)는 암호화를 위한 데이터 단위 블럭의 크기에 따라 복호화되지만, 암호화되어 저장된 데이터 블럭에 포함된 실제 데이터의 크기가 암호화를 위한 데이터 단위 블럭보다 작은 경우에는 데이터가 암호화된 방법에 따라 복호화된다. 이와 같은 경우 실제 데이터가 저장된 영역이 아닌 영역에 대하여 기 설정된 값으로 채워져 있는 경우 블럭 단위로 복호화할 수 있고, 바이트 단위로 암호화가 된 경우에는 바이트 단위로 복호화할 수 있다.
복호화부(250)는 파일이 암호화된 방법, 파일의 크기를 포함하는 암호화에 관한 정보를 보관하는 암호화정보 관리부를 참조하여 이를 복호화할 수 있다. 각 쓰레드로 실행되는 복호화부(250)가 복호화를 완료한 경우, 암호화된 파일의 위치에 대응하는 위치에 복호화된 데이터를 저장한다. 쓰레드 관리부(230)는 모든 쓰레드가 복호화를 완료하는 경우 운영체제가 이를 애플리케이션(100)에 전달할 수 있도록 신호(Signal)를 전달할 수 있다.
복호화를 위한 쓰레드 관리부(230)는 메인 메모리에서 GPU로 데이터 전송에 따른 성능저하를 최소화하기 위하여 운영체제의 파일 입출력을 위한 데이터 블럭과 동일하거나 이보다 큰 데이터 블럭의 단위를 사용할 수 있다. 운영체제에서 사용하는 파일의 입출력을 위한 데이터 블럭의 크기가 작아 빈번하게 GPU로 데이터 전송이 발생되는 것을 방지하기 위하여 쓰레드 관리부(230)는 기 설정된 데이터 블럭의 크기 단위에 따라 GPU로 데이터를 전송하도록 할 수 있으며, 복호화를 위한 쓰레드의 수는 GPU로 전송을 위한 데이터 블럭의 크기에 따라 그 수가 결정되어 각 쓰레드가 생성될 수 있다.
저장장치 연결부(260) 쓰레드 관리부(230)에 의해 쓰레드로 실행되는 암호화부(240)부가 암호화를 모두 완료한 경우 암호화된 파일 데이터를 저장장치(300)에 저장될 수 있도록 암호화된 파일 데이터를 디바이스 드라이버(Device Driver)하여 저장장치(300)에 전달할 수 있다. 또한 애플리케이션(100)이 파일에 대한 읽기를 요청하는 경우 암호화된 파일 데이터를 저장장치(300)로부터 읽어 이를 파일블럭 분배부(220)에 전달할 수 있다.
도 3은 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨의 암호화 장치가 암호화 과정을 나타내는 순서도이다.
애플리케이션(100)은 파일 시스템(200)에 특정한 파일에 대한 쓰기 요청을 하고, 이때 애플리케이션(100)은 저장장치(300)에 저장할 파일의 데이터를 메인 메모리 상의 버퍼에 저장하여 전달한다. 파일 시스템(200)에서 GPU를 이용한 파일 시스템 레벨 암호화 장치에 포함된 입출력요청 수신부(210)는 애플리케이션(100)의 파일 쓰기 요청을 수신하고(S310), 파일 데이터가 저장된 버퍼의 주소 정보를 파일블럭 분배부(220)에 전달한다. 입출력요청 수신부(210)는 적어도 하나의 애플리케이션이 파일의 쓰기를 요청할 수 있고, 파일 쓰기에 대한 각각의 요청에 대하여 파일블럭 분배부(220)가 생성되고, 암호화를 위한 데이터 블럭의 단위로 파일을 분할한다(S320). 다만, 파일블럭 분배부(220)는 암호화를 위한 데이터 블럭 단위로 파일을 분할하는 경우, 이를 물리적으로 다른 주소에 분할하여 저장할 수도 있지만 주소와 크기 정보를 이용한 논리적인 분할도 가능하다.
쓰레드 관리부(230)는 파일블럭 분배부(220)가 분할한 암호화할 데이터 블럭들이 병렬로 처리될 수 있도록 하기 위한 암호화부(240)가 실행되는 암호화 쓰레드를 생성한다. 이때 쓰레드 관리부(230)는 CPU와 GPU의 각각의 부하와 성능, GPU로 데이터 전송이 전체적인 성능에 미치는 영향에 근거하여 생성된 암호화 쓰레드에 CPU 또는 GPU를 할당하고(S330), 암호화 쓰레드는 자신에게 할당된 CPU 또는 GPU에서 암호화 연산을 수행하여 자신에게 할당된 파일블럭을 암호화한다(S340).
암호화할 데이터 블럭의 크기는 파일 시스템(200)에서 사용하는 파일의 입출력 데이터 블럭의 크기와 동일할 수 있으나 반드시 그럴 필요는 없고, GPU로 데이터를 전송하는 횟수가 전체적인 시스템에 영향을 줄 수 있으므로, 빈번한 GPU로 데이터 전송을 방지하기 위하여 일정한 크기의 GPU 데이터 블럭 크기를 정할 수 있다.
암호화 쓰레드가 자신에게 할당된 암호화 파일블럭을 암호화하여, 생성된 모든 암호화 쓰레드가 자신의 암호화를 완료하면 저장장치 연결부(260)는 암호화 쓰레드로부터 암호화된 데이터 블럭을 전달받고 각 데이터 블럭의 위치가 암호화 전 데이터 블럭의 위치에 대응하도록 저장장치 저장할 수 있다(S350).
도 4는 본 발명의 실시예에 따른 GPU를 이용한 파일 시스템 레벨의 암호화 장치가 복호화 과정을 나타내는 순서도이다.
GPU를 이용한 파일 시스템 레벨 암호화 장치의 입출력요청 수신부는 적어도 하나의 애플리케이션(100)으로부터 특정한 파일에 대한 읽기 요청을 수신하고(S410), 입력요청부 수신부(210)는 적어도 하나의 애플리케이션(100)이 파일 읽기를 시도하는 경우 저장장치 연결부(260)로부터 암호화된 파일을 읽어 이를 메인 메모리에 저장하고 애플리케이션(100)별로 파일블럭 분배부(220)를 생성하고 읽기 요청된 파일을 복호화할 데이터 블럭의 단위로 분배한다(S420). 이때 복호화할 데이터 블럭의 크기는 파일 시스템(200)에서 사용하는 파일의 입출력 데이터 블럭의 크기와 동일할 수 있으나 반드시 그럴 필요는 없고, GPU로 데이터를 전송하는 횟수가 전체적인 시스템에 영향을 줄 수 있으므로, 빈번한 GPU로 데이터 전송을 방지하기 위하여 일정한 크기의 GPU 데이터 블럭 크기를 정할 수 있다.
쓰레드 관리부(230)는 파일블럭 분배부(220)가 분배한 파일블럭을 병렬처리할 수 있도록 복호화 쓰레드를 생성한다. 이때 쓰레드 관리부(230)는 CPU와 GPU의 부하에 근거하여 복호화 쓰레드를 CPU와 GPU에 할당한다(S430). 복호화 쓰레드는 자신에게 할당된 CPU 또는 GPU에서 자신에게 할당된 파일 블럭의 복호화를 수행한다(S440). 복호화 쓰레드가 데이터 블록을 복호화한 후 저장장치 연결부(260)는 복호화 쓰레드로부터 복호화된 데이터 블록을 전달받고 각 블럭의 위치가 복호화 전 파일 블럭의 위치에 대응하도록 하여 저장장치(S450)에 저장한다. 이때 쓰레드 관리부(230)는 복호화 쓰레드가 모두 자신의 일을 마치는지 확인하고 파일에 대한 복호화가 완료된 경우엔 운영체제에 신호를 보낼 수 있고, 복호화된 데이터를 저장장치 연결부(260)에 전달할 수 있다.
이상의 설명은 본 실시예의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 실시예들은 본 실시예의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 실시예의 기술 사상의 범위가 한정되는 것은 아니다. 본 실시예의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 실시예의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 애플리케이션 200 파일 시스템
300 저장장치 400 연산장치
210 입출력요청 수신부 220 파일블럭 분배부
230 쓰레드관리부 240 암호화부
250 복호화부 260 저장장치 연결부

Claims (8)

  1. 적어도 하나의 애플리케이션으로부터 파일에 대한 읽기 또는 쓰기 요청을 수신하는 입출력요청 수신부;
    상기 쓰기 요청을 수신한 상기 입출력요청 수신부로부터 파일에 대한 데이터 버퍼를 기 설정된 크기의 암호화 데이터 블럭으로 분할하거나, 상기 읽기 요청을 수신하고 저장장치로부터 암호화되어 저장된 파일 읽어 들인 데이터 버퍼를 기 설정된 크기의 복호화 데이터 블럭으로 분할하는 적어도 하나의 파일블럭 분배부;
    상기 암호화 데이터 블럭에 대응하여 상기 암호화 데이터 블럭을 암호화하는 적어도 하나의 암호화부;
    상기 복호화 데이터 블럭에 대응하여 상기 복호화 데이터 블럭을 복호화하는 적어도 하나의 복호화부; 및
    상기 암호화부가 실행되는 쓰레드를 생성하거나 상기 복호화부가 실행되는 적어도 하나의 쓰레드를 생성하고, 생성된 쓰레드에 CPU 또는 GPU를 할당하는 쓰레드 관리부
    를 포함하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  2. 제 1 항에 있어서,
    상기 파일블럭 분배부는 파일 시스템의 입출력 데이터 블럭 단위로 파일의 데이터를 전달받고, 메인 메모리에서 암호화 또는 복호화를 위하여 GPU로 데이터를 전송하는 횟수를 줄이기 위하여 상기 입출력 데이터 블럭 단위로다 더 큰 기 설정된 크기의 상기 암호화 데이터 블럭 또는 상기 복호화 데이터 블럭 단위로 파일의 데이터를 전송하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  3. 제 1 항에 있어서,
    상기 암호화부는 상기 암호화 데이터 블럭 중 암호화될 데이터의 크기가 상기 블럭의 크기보다 작은 경우, 상기 암호화될 데이터를 바이트 단위로 암호화하고,
    상기 복호화부는 상기 복호화 데이터 블럭 중 복호화될 데이터의 크기가 상기 블럭의 크기보다 작은 경우, 상기 복호화될 데이터를 바이트 단위로 복호화 하는 것
    을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  4. 제 1 항에 있어서,
    상기 쓰레드 관리부는 CPU와 GPU의 코어의 수에 근거하여 생성된 쓰레드에 CPU 또는 GPU를 할당하는 것을 특징으로 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  5. 제 1 항에 있어서,
    상기 암호화부는 상기 암호화 데이터 블럭 중 암호화될 데이터의 크기가 상기 블럭의 크기보다 작은 경우, 상기 암호화 데이터 블럭에서 상기 암호화될 데이터를 제외한 영역은 기 설정된 값으로 패팅하고 암호화하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  6. 제 1 항에 있어서,
    상기 쓰레드 관리부는 상기 쓰레드로 실행되는 적어도 하나의 암호화부가 암호화를 모두 완료하면 상기 암호화 데이터 블럭을 저장장치에 저장하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  7. 제 1 항에 있어서,
    상기 쓰레드 관리부는 상기 쓰레드로 실행되는 적어도 하나의 복호화부가 복호화를 모두 완료하면 상기 복호화 데이터 블럭을 상기 애플리케이션에 전달하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 장치.
  8. GPU를 이용한 파일 시스템 레벨 암호화 방법에 있어서,
    적어도 하나의 애플리케이션으로부터 파일에 대한 쓰기 또는 읽기 요청을 수신하는 과정;
    상기 요청에 대한 파일블럭 분배부를 생성하고, 상기 파일블럭 분배부는 상기 파일을 기 설정된 크기의 암호화 데이터 블럭 또는 복호화 데이터 블럭으로 분할하는 과정;
    상기 암호화 데이터 블럭 또는 복호화 데이터 블럭의 수에 대응하는 쓰레드를 생성하는 과정;
    상기 쓰레드에 CPU 또는 GPU를 할당하는 과정;
    상기 쓰레드에 GPU가 할당되는 경우 상기 암호화 데이터 블럭 또는 복호화 데이터 블럭을 GPU로 전송하는 과정; 및
    상기 쓰레드가 CPU 또는 GPU를 이용하여 암호화 또는 복호화를 수행하는 과정
    을 포함하는 것을 특징으로 하는 GPU를 이용한 파일 시스템 레벨 암호화 방법.

KR1020180010365A 2018-01-29 2018-01-29 Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법 KR102090374B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180010365A KR102090374B1 (ko) 2018-01-29 2018-01-29 Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180010365A KR102090374B1 (ko) 2018-01-29 2018-01-29 Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20190091606A true KR20190091606A (ko) 2019-08-07
KR102090374B1 KR102090374B1 (ko) 2020-03-17

Family

ID=67621622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180010365A KR102090374B1 (ko) 2018-01-29 2018-01-29 Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102090374B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090009300A (ko) * 2006-05-03 2009-01-22 데이터 로보틱스 인코포레이티드 파일 시스템 인식 블록 저장 시스템, 장치 및 방법
KR20100098009A (ko) * 2009-02-27 2010-09-06 한국전자통신연구원 그래픽 프로세서를 활용한 des 고속 병렬 처리 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090009300A (ko) * 2006-05-03 2009-01-22 데이터 로보틱스 인코포레이티드 파일 시스템 인식 블록 저장 시스템, 장치 및 방법
KR20100098009A (ko) * 2009-02-27 2010-09-06 한국전자통신연구원 그래픽 프로세서를 활용한 des 고속 병렬 처리 시스템

Also Published As

Publication number Publication date
KR102090374B1 (ko) 2020-03-17

Similar Documents

Publication Publication Date Title
US20230110230A1 (en) Technologies for secure i/o with memory encryption engines
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
KR101742364B1 (ko) 저장 디바이스와 호스트 사이에서의 데이터 전달의 보호를 위한 저장 제어기 버스 인터페이스의 사용
US11789614B2 (en) Performance allocation among users for accessing non-volatile memory devices
US9342465B1 (en) Encrypting data in a flash-based contents-addressable block device
US8954753B2 (en) Encrypting data in volatile memory
US20240069955A1 (en) Technologies for memory replay prevention using compressive encryption
KR102176612B1 (ko) 보안 서브시스템
KR102223819B1 (ko) 자기 암호화 드라이브를 위한 가상 밴드 집중
CN109144406B (zh) 分布式存储系统中元数据存储方法、系统及存储介质
US10846441B2 (en) Computer system
GB2578410A (en) Computer system software/firmware and a processor unit with a security module
CN111949372B (zh) 一种虚拟机迁移方法、通用处理器及电子设备
CN107153587B (zh) 利用数据缩减在高性能直接附接非易失性存储器上进行有效跨设备冗余实现
US11048644B1 (en) Memory mapping in an access device for non-volatile memory
KR20080029687A (ko) 암호화 기능이 내장된 메모리를 이용한 고속 대용량의암호화 장치 및 그 구현 방법
KR102090374B1 (ko) Gpu를 이용한 파일 시스템 레벨 암호화 장치 및 방법
US8010802B2 (en) Cryptographic device having session memory bus
US9838199B2 (en) Initialization vectors generation from encryption/decryption
CN111290830B (zh) 一种虚拟机迁移方法、处理器及电子设备
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
US20140325242A1 (en) Encrypt data of storage device
US20220123930A1 (en) Process object re-keying during process creation in cryptographic computing
US20240129282A1 (en) Systems, methods, and apparatus for protection for device data transfers
US20240129305A1 (en) Systems, methods, and apparatus for namespace identification for devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant