KR100346411B1 - 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR100346411B1
KR100346411B1 KR20000049884A KR20000049884A KR100346411B1 KR 100346411 B1 KR100346411 B1 KR 100346411B1 KR 20000049884 A KR20000049884 A KR 20000049884A KR 20000049884 A KR20000049884 A KR 20000049884A KR 100346411 B1 KR100346411 B1 KR 100346411B1
Authority
KR
South Korea
Prior art keywords
block
file
byte
data
file pointer
Prior art date
Application number
KR20000049884A
Other languages
English (en)
Other versions
KR20020016701A (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 KR20000049884A priority Critical patent/KR100346411B1/ko
Priority to AU2001236166A priority patent/AU2001236166A1/en
Priority to PCT/KR2001/000259 priority patent/WO2002019592A2/en
Publication of KR20020016701A publication Critical patent/KR20020016701A/ko
Application granted granted Critical
Publication of KR100346411B1 publication Critical patent/KR100346411B1/ko

Links

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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

본 발명은 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법, 이를 이용한 파일포인터 이동방법, 및 이들을 프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체에 대한 것이다. 본 발명에 따르면, 유닉스 계열 OS(Operating System)의 사용자 프로세스가 파일을 기억장치(디스크, 디스켓, CD-ROM 등)에 쓰고(write)자 할 때 OS의 커널모드에서 사용자의 의도와는 상관없이 파일을 자동적으로 블록 암호화하여 저장하고, 또한 이러한 파일을 읽고(read)자 할 때도 커널모드에서 전체 데이터 또는 필요한 만큼만의 부분 데이터를 자동으로 블록 복호화한다. 또한, 본 발명에 따라 암호화된 파일내에서 파일포인터를 이동시킬 때에는, 본 발명에 따라 자동으로 블록 복호화를 수행하면서 파일포인터 이동량을 산출한 후 이를 기초로 파일포인터를 이동시킨다. 본 발명에 따른 기록매체는, 상기한 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법, 및 이를 이용한 파일포인터 이동방법을 프로그램화하여 컴퓨터로 읽을 수 있도록 소정의 기록매체에 수록한 것이다.

Description

커널모드에서 파일을 자동으로 암호화, 복호화하는 방법, 이를 이용한 파일포인터 이동방법, 및 이들을 프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체{Automatic Encryption and Decrytion Method of File and Moving Method of File Pointer Using Thereof, and Computer Readable Recording Medium Having Thereon Programmed Automatic Encryption and Decrytion Method of File and Moving Method of File Pointer Using Thereof}
본 발명은 유닉스 계열 OS(Operating System)에서의 파일 보안 방법에 대한 것으로, 보다 상세하게는 사용자 프로세스가 데이터를 기억장치에 쓰고(write)자 할 때 OS의 커널모드(Kernel mode)에서 자동적으로 데이터를 암호화하여 저장하고, 암호화된 데이터를 읽고(read)자 할 때도 커널모드에서 전체 또는 필요한 만큼의 데이터를 자동으로 복호화하는 방법과, 이에 기초한 파일포인터의 이동방법, 및 이들을 프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
최근 들어, 컴퓨터의 기억장치, 예컨대 보조 기억장치에 저장된 비밀 수준의 정보들이 통신망 혹은 저장매체를 통해 불법적으로 탈취되거나 소유자의 실수에 의하여 분실, 누출되는 등의 보안문제가 심각해지고 있다.
종래 OS에서의 데이터에 대한 암호화 및 복호화는, 사용자 모드에서 암호화 응용 프로그램을 이용하여 사용자가 선택적으로 파일을 지정한 후, 암호화 및 복호화 키를 입력하여, 파일 단위로 일괄적으로 암호화하고 복호화하는 방식을 사용하였다.
그러나, 이러한 방식에서의 문제점으로는 다음과 같은 점을 들 수 있다.
첫째, 비밀 수준의 파일 작성 시 사용자의 실수 혹은 고의로 암호화를 하지 못하는 경우가 발생될 수 있다.
둘째, 문서작성 프로그램, 회계처리 프로그램, 기타 응용 프로그램에서 파일을 읽거나 변경하는 등의 처리를 하는 경우에 불가피하게 파일 단위로 전체를 복호화한 후, 저장하여 처리할 수밖에 없기 때문에, 비밀 수준의 파일이 평문 형태로보조기억 장치에 저장되어 존치되는 경우가 많았다.
셋째, 처리 속도의 측면에서 커널모드에서의 암호화 및 복호화에 비하여 늦다.
넷째, 암호화 및 복호화를 위한 키 관리를 위한 별도의 키 관리 방법이 제공되어야 한다.
결론적으로, 사용자 모드에서의 암호화 및 복호화는 사용자에게 번거로움을 주며, OS의 비효율성과 비밀 수준의 파일 처리에 있어 보안상의 취약성을 내재하고 있다.
따라서, 본 발명이 이루고자 하는 기술적 과제는, 유닉스 계열의 OS에서 사용자 프로세스가 파일을 쓰고자 할 때 OS의 커널모드에서 자동적으로 파일을 암호화하여 저장하고, 암호화된 파일을 읽고자 할 때는 커널모드에서 파일 전체 또는 필요한 크기만큼의 데이터를 자동으로 복호화할 수 있는 방법을 제공하는 것이다.
본 발명이 이루고자 하는 다른 기술적 과제는, 보안 등급을 가지는 파일은 사용자의 실수로 인한 암호화 처리의 누락됨이 없이, 원천적으로 사용자의 암호화 지정과 무관하게 자동적이며 강제적으로 커널 내에 존재하는 시스템 보안 관리자의키에 의해 암호화 및 복호화를 수행할 수 있는 방법을 제공함에 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 문서작성 프로그램, 회계처리 프로그램 등에서 요구하는 파일 내용의 부분적 암호화 및 복호화가 가능하여 전체 파일 단위의 복호화가 불필요한 개선된 암호화 및 복호화 방법을 제공하는 것이다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 파일의 암호화 및 복호화 시 사용자가 암호화 및 복호화 키를 부여하는 방식이 아닌, 시스템에 이식된 키를 사용하는 방식으로 파일 암호화 및 복호화의 고속 처리를 달성하는 것이다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 본 발명에서 제공되는 파일 복호화 방법을 이용한 변경된 파일포인터 이동 시스템 호출 방법을 제공하는 것이다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 본 발명에서 제공되는 방법들을 프로그램화하여 이를 수록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것이다.
도1은 본 발명이 적용되는 유닉스 계열 OS의 커널에 대한 파일 시스템을 개략적으로 도시한 구성도이다.
도2a는 본 발명에 따른 커널모드의 쓰기 시스템 호출(sys_write) 과정을 개략적으로 나타낸 흐름도이다.
도2b는 본 발명에 따라 암호화된 48 바이트의 파일을 복호화한 예를 도시한 것이다.
도2c는 본 발명에 따라 40 바이트를 암호화하여 메모리에 구성한 연결리스트 예를 도시한 것이다.
도2d는 현재 파일포인터가 제1블록의 13번째 바이트 자리에 있을 때 본 발명에 따라 40 바이트 쓰기 작업을 할 경우를 도시한 것이다.
도3a는 본 발명에 따른 커널모드의 읽기 시스템 호출(sys_read) 과정을 개략적으로 나타낸 흐름도이다.
도3b는 본 발명에 따라 암호화된 48 바이트의 파일을 복호화하여 도시한 것이다.
도3c는 현재 파일포인터가 제1블록의 13번째 바이트 자리에 있을 때 본 발명에 따라 20 바이트 읽기 요청이 있을 경우 유효 데이터를 표시한 것이다.
도3d는 본 발명에 따라 20 바이트를 복호화하여 메모리에 구성한 연결리스트를 도시한 것이다.
도3e는 사용자 프로세스로 복귀될 버퍼의 내용을 도시한 것이다.
도3f는 읽기 시스템 호출이 일어난 후부터 본 발명에 따라 이루어진 파일포인터 이동의 예를 도시한 것이다.
도4a는 본 발명에 따른 커널모드의 파일포인터 이동 시스템 호출(sys_lseek) 과정을 개략적으로 나타낸 흐름도이다.
도4b는 +offset의 경우 본 발명에 따른 파일포인터 이동 예를 도시한 것이다.
도4c는 -offset의 경우 본 발명에 따른 파일포인터 이동 예를 도시한 것이다.
도4d는 ±offset의 경우 본 발명에 따라 파일포인터를 이동하면서 블록 단위 읽기와 복호화를 한 후 메모리에 구성한 연결리스트의 예를 도시한 것이다.
상기 기술적 과제를 달성하기 위한 본 발명에 따른 커널모드에서 파일을 자동으로 암호화하는 방법은, 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 데이터를 유닉스 계열 OS의 커널모드에서 자동으로 암호화하는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함한다.
먼저, (a) 시스템에 로그인 한 사용자의 프로세스가 커널로 버퍼에 저장된 제2바이트 만큼의 데이터를 기억장치에 쓰라는 쓰기 시스템 호출을 한다. 이어서, (b) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출한다. 그런 다음, (c) 상기 (b)단계에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 소정의 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성한다. 그리고 나서, (d) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓴다.
본 발명에 있어서, 상기 (c)단계를 진행하기 전에 현재 파일포인터의 위치가 블록의 처음인지를 검사하고 그 결과에 따라 파일포인터의 위치를 블록의 처음으로 이동시키는 단계를 더 포함할 수 있다.
본 발명에 있어서, 상기 제2영역은 상기 제1영역에 수록된 유효 데이터수를 수록하기 위해 사용되는 영역으로, 상기 블록 내의 소정 영역일 수 있다. 예를 들어, 상기 제2영역은 상기 블록의 첫 번째 바이트 자리 또는 마지막 바이트 자리일 수 있다.
본 발명에 있어서, 상기 (b)단계의 암호화될 블록 수는, 상기 제1영역을 구성하는 바이트 수로 상기 제2바이트를 나누고 그 정수 몫에 1을 더하는 방식으로 산출될 수 있다.
본 발명에 있어서, 상기 (d)단계를 진행한 이후에, 암호화된 파일의 i-node의 예약된 필드에 할당된 보안 등급 필드에 암호화 마킹을 수행하는 단계를 더 포함할 수 있다.
본 발명에 있어서, 상기 (c)단계에서 사용되는 암호화 알고리즘은 블록 암호화 알고리즘일 수 있다. 상기 블록 암호화 알고리즘에서 사용되는 암호화키는 커널을 컴파일하여 생성할 때 커널 이미지에 이식된 키일 수 있다. 상기 암호화키는 사용자로 하여금 키 생성을 위한 고유 문자열을 정하게 하고, 상기 고유 문자열을 소정의 암호화 알고리즘을 이용하여 소정의 비트로 암호화한 씨드(seed) 암호화키일 수 있다. 상기 씨드 암호화키는 쓰기 시스템 호출이 있을 때마다, 파일마다 i-node에 가지는 파일 고유 정보를 암호화키로 하여 재 암호화된 다음, 상기 (c)단계의 블록 암호화 알고리즘에서 암호화키로 사용될 수 있다.
본 발명에 있어서, 상기 (a) 단계를 진행하기 전에, 사용자가 유닉스 시스템에 로그인할 때 보안 등급 정보를 포함하는 사용자 정보를 입력하게 하고 사용자를 시스템에서 인증하는 단계; 및 상기한 인증이 완료되면 사용자 프로세스의 태스크 구조체에 할당된 소정 비트수의 보안 등급 필드에 사용자의 보안 등급 정보를 수록하는 단계를 더 포함할 수 있다.
본 발명에 있어서, 상기 (b) 단계를 진행하기 전에, 상기 태스크 구조체의 보안 등급 필드에 보안 등급 정보가 수록되어 있는지를 확인하여 쓰기 요청된 데이터를 암호화해야 할 대상으로 결정하는 단계를 더 포함할 수 있다. 그리고, 상기 (d)단계를 진행한 후에, 상기 데이터가 암호화되어 저장된 파일의 i-node의 예약 필드에 할당된 보안 등급 필드에 프로세스의 태스크 구조체에 수록된 사용자의 보안 등급을 복사하여 수록하는 단계를 더 포함할 수 있다.
상기 다른 기술적 과제를 달성하기 위한 본 발명에 따른 커널모드에서의 파일 자동 복호화 방법은, 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트 만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.
먼저, 시스템에 로그인 한 사용자의 프로세스가 커널로 상기 블록 암호화된 파일에서 현재 파일포인터를 기준으로 제2바이트 만큼을 읽어 버퍼에 저장하라는 읽기 시스템 호출을 한다. 그런 다음, 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정한다. 이어서, 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속한다. 그리고 나서, 메모리에 구성된 상기 연결리스트를 상기 버퍼에 복사한다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 파일포인터 이동 방법은, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.
먼저, 시스템에 로그인 한 사용자의 프로세스가 상기 블록 암호화된 파일 내의 소정 바이트 자리로부터 제2바이트만큼 파일포인터를 양의 방향으로 이동시키라는 파일포인터 이동 시스템 호출을 한다. 그런 다음, 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정한다. 이어서, 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킨다. 그리고 나서, 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속한다. 그 이후에, 메모리에 구성된 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킨다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 파일포인터 이동방법은 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.
먼저, 시스템에 로그인 한 사용자의 프로세스가 상기 블록 암호화된 파일 내의 소정 바이트 자리로부터 제2바이트만큼 파일포인터를 음의 방향으로 이동시키라는 파일포인터 이동 시스템 호출을 한다. 그런 다음, 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정한다. 그리고 나서, 조정된 상기 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킨다. 이어서, 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속한다. 그 이후에, 메모리에 구성된 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킨다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 유효 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트 만큼의 데이터를 유닉스계열 OS의 커널모드에서 자동으로 암호화할 수 있도록 하는 프로그램이 수록된 기록매체로, (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트 만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출할 수 있게 하는 프로그램 모듈; (b) 상기 (a) 프로그램 모듈에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 블록 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성할 수 있게 하는 프로그램 모듈; (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓸 수 있도록 하는 프로그램 모듈을 포함할 수 있다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화할 수 있는 프로그램이 수록된 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정할 수 있도록 하는 프로그램 모듈; (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (c) 상기 (b) 프로그램 모듈을 통하여 얻은 연결리스트를 상기 버퍼에 복사할 수 있게 하는 프로그램 모듈을 포함할 수 있다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈; (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈; (c) 상기 (b)프로그램 모듈의 수행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함할 수 있다.
상기 또 다른 기술적 과제를 달성하기 위한 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 영역으로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈; (b) 상기 (b)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈; (c) 상기 (b)프로그램 모듈의 수행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함할 수 있다.
이하에서는 보안이 필요한 파일을 위주로 본 발명에 따른 커널모드에서의 파일 자동 암호화 및 복호화 방법과, 이를 이용한 파일포인터 이동 방법에 대한 바람직한 실시예를 첨부한 도면을 참조하여 상세하게 설명한다. 그러나, 이하에서 설명되는 본 발명의 바람직한 실시예는 본 발명의 기술적 범위를 한정하려는 것은 아니며 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 명확하고 용이하게 설명하려고 하는 것이다. 특히, 본 발명은 보안 등급이 부여된 파일 뿐만 아니라, 일반 파일에 대해서도 적용가능하다. 이러한 경우, 사용자가 시스템 로그인 시 자신의 보안 등급을 입력하는 단계, 사용자가 입력한 보안 등급에 대한 인증 단계; 사용자 프로세스의 보안 등급을 검사하는 단계; 파일의 i-node에 보안 등급이 수록되어 있는지 검사하는 단계 등 시스템 사용자가 보안 등급을 가지고 있기 때문에 파생되는 단계들은 생략 가능하다. 도면 상에서 동일한 도면부호는 동일한 요소를 지칭한다.
도1은 유닉스 계열의 OS에서 기억 장치에 데이터를 쓰고 읽는 과정과, 포인터를 이동시키는 과정을 설명하기 위해, 유닉스 OS의 구성요소를 파일 시스템을 중심으로 하여 개략적으로 도시한 것이다.
도1을 참조하면, 일반 사용자 응용 프로그램의 프로세스(10)가 사용자 모드에서 파일을 새로 작성하거나 기존에 존재하는 파일에 대하여 데이터를 수정하고자 할 경우에는, 유닉스 계열 OS의 시스템 호출인 쓰기 호출(예컨대, sys_read:20), 읽기 호출(예컨대, sys_write:30), 포인터 이동 호출(예컨대, sys_lseek:40)이 시스템 라이브러리를 경유하여 가상파일 시스템(Virtual File System(VFS): 50)으로 지원되는 ext2(60), msdos(70), minix(80), proc(100) 등과 같은 파일 시스템(Ⅰ)을 통해 수행되게 된다. 여기에서, 프로세스(10)라고 함은 기억 장치(100) 내의 파일에 대하여 읽기, 쓰기를 행하는 모든 문서작성 프로그램, 파일 처리 프로그램, 회계 처리 프로그램 등을 통칭한다. 상기한 시스템 호출들(20, 30 및 40)은 커널모드를 구성하는 파일 시스템(Ⅰ) 내의 버퍼 캐쉬(110)와, 장치 드라이버(120)를 통해 기억 장치(100), 예컨대 하드 디스크, 디스켓 또는 CD-ROM에 데이터를 쓰거나, 읽거나, 포인터의 위치를 이동시키게 된다.
본 발명에서는 보안이 필요한 데이터를 기억장치에 쓰거나 읽을 때 블록 암호화 알고리즘을 이용하여 상기한 3개의 시스템 호출 수행 과정을 커널모드에서 변경(이에 대해서는 후술하기로 함)함으로써, 데이터에 대한 암호화 또는 복호화 수행여부를 사용자가 실질적으로 느끼지 못하게 자동적이며 강제적으로 데이터를 암호화하고 복호화하게 된다.
상기한 블록 암호화 알고리즘으로는 SEED, DES, 3-DES 등과 같은 대칭키 블록 암호화 알고리즘이 사용될 수도 있고, RSA와 같은 비대칭키 블록 암호화 알고리즘이 사용될 수도 있다. 본 발명의 실시 예에서는 SEED 대칭키 블록 암호화 알고리즘이 채용되며, 암호화키의 비트수는 128이다.
한편, 블록 암호화 알고리즘을 이용하여 본 발명에 따라 데이터를 암호화하고 복호화하기 위해서는 소정의 키가 필요한데, 본 발명의 바람직한 실시예에서는 커널을 컴파일하여 생성(generation)할 때 커널 이미지에 키를 이식시켜 놓고 이를 이용하는 방식을 채용한다. 구체적으로, 시스템 보안 관리자는 유닉스 계열 OS의 사용자마다 서로 다른 고유의 키를 생성하기 위해, 사용자로 하여금 고유의 키 생성용 문자열을 정하게 한다. 그런 다음, 상기한 키 생성용 문자열을 소정의 비트수, 예컨대 128 비트의 키를 생성할 수 있는 해쉬(Hash) 알고리즘과 같은 암호화 알고리즘, 예컨대 MD5(Message Digest 5)를 이용하여 128비트의 씨드 암호화키를 생성한다. 그런 다음, 상기 씨드 암호화키를 유닉스 시스템의 커널을 컴파일할 때 커널 이미지 내에 이식시킨다. 이처럼, 씨드 암호화키를 커널 이미지에 이식시켜 놓으면, 시스템 부팅시 커널 이미지를 로딩할 때마다 씨드 암호화키도 함께 로딩되어 커널 내에 상주하게 된다. 이 때, 씨드 암호화키는 스마트 카드에 수록한 다음, 커널을 컴파일하여 생성할 때 스마트 카드를 이용하여 시스템에 입력하는 방식을 채용하는 것이 바람직하다.
본 발명에서는 유닉스 OS의 커널 이미지 내에 이식된 씨드 암호화키를 보안등급의 파일을 커널 레벨에서 자동으로 암호화하고 복호화할 때 사용하는데, 이에 대해서는 본 발명의 바람직한 실시예를 설명하면서 이후에 상세하게 설명하기로 한다.
이하에서는 커널모드에서 보안이 필요한 데이터를 사용자의 의사와는 상관없이 자동으로 암호화하고 복호화하는 방법과 암호화된 파일 내에서 지정된 수만큼 포인터를 이동시키는 방법을 순차적으로 설명하기로 한다. 그런데, 이하에서 설명되는 실시예에서 블록 암호화 알고리즘을 이용하여 데이터를 처리함에 있어서는 블록의 크기를 16바이트로 한정하여 설명한다. 하지만, 블록의 크기가 16바이트에 한정되지 않는다는 것은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 당연하다. 예를 들어, 암호화 또는 복호화가 시도되는 블록의 크기는 필요에 따라 8바이트로 설정할 수도 있다.
<커널모드에서 데이터를 자동으로 블록 암호화하여 기억장치에 저장하는 방법>
도2a는 본 발명의 기술적 사상이 적용된 유닉스 계열 OS에서 쓰기 시스템 호출(예컨대, sys_write:S1단계)이 있을 때, 커널모드에서 일어나는 일련의 과정을 보여주는 흐름도이다. 여기에서, sys_write(S1단계)는 사용자 모드의 프로세스가 커널에 쓰기 기능 서비스를 요청할 때 사용되는 커널 함수로 쓰기 시스템 호출로 통칭하기로 한다.
도2a를 참조하면, 사용자 프로세스에서 write, fwrite, fprintf, putw 등의 라이브러리 함수를 통하여 쓰기 시스템 호출을 하게 되면 커널은 사용자의 프로세스가 요청한 작업을 수행하게 된다. 예를 들어, write(fd, buf, 40)는 버퍼(Buffer)에 기억되어 있는 데이터의 40 바이트 만큼을 파일 디스크립터 fd로 지정하는 파일에 쓰기를 실행하라는 예이다. 상기와 같은 쓰기 시스템 호출이 있으면, 먼저 파일 정보를 얻기 위해 파일 디스크립터를 이용하여 파일의 i-node를 구하고, i-node를 연산하여 시스템 호출이 쓰기 모드인지, 쓰고자하는 기억 장치는 무엇인지, 기억 장치의 파일 시스템은 무엇을 사용하는지 등을 판단한다.
그런 다음, 기억장치에 쓰여질 데이터가 암호화 대상인지의 여부를 결정(S2단계)하게 된다. 본 발명에 따라 수정된 쓰기 시스템 호출의 수행에서는, 쓰고자 하는 데이터가 암호화 대상(S2단계)인지의 여부를 판단할 때 사용자의 선택적 의지에 의존하는 것이 아니라 사용자 프로세스가 보안등급을 가지고 있느냐의 여부에 따라 커널모드에서 강제적으로 결정된다. 이를 위해 본 발명에서는 사용자 프로세스의 태스크 구조체에 소정 비트수를 가진 보안 등급 필드를 추가로 할당한다. 그런 다음, 상기 보안 등급 필드에 사용자의 보안 등급을 소정의 방법으로 수록하고, 데이터의 암호화 여부를 판단할 때에는 상기 보안 등급 필드에 보안 등급이 수록되어 있는 지의 여부에 따라 커널모드에서 강제적으로 통제할 수 있도록 한다. 예를 들어, 사용자 프로세스의 태스크 구조체에 32비트 크기를 가진 보안 등급 필드를 추가로 할당하고 이 중 일부, 예컨대 8비트 만큼을 보안 등급 수록부로 설정하면 총 256개 만큼의 보안 등급을 수록할 수 있다. 보안 등급 필드에 사용자 프로세스의 보안 등급을 수록하기 위한 방법으로는, 시스템 로그인 시 보안 등급을 포함하는 사용자 정보를 직접 입력 방식 또는 스마트 카드와 같은 간접 입력 방식을 통해 사용자로부터 입력받는 방법을 들 수 있다. 사용자로부터 입력받은 보안 등급 정보는 시스템 내에 미리 마련된 보안 등급 데이터베이스에 기초한 인증 단계에서 인증된 후, 사용자 프로세스의 태스크 구조체에 할당된 보안 등급 필드에 수록되게 된다.
상기한 바와 같이, 보안 등급 수록부를 1비트 이상 설정하면 보안 등급을 2개 이상 수록할 수 있다. 하지만, 커널모드에서 데이터가 암호화되어야 하는 지에 대한 여부는 보안 등급의 종류와는 상관없이 보안 등급의 존부에 따라 판단되게 된다.
구체적으로, 쓰기 요청을 한 프로세스의 태스크 구조체에 할당되어 있는 보안등급 필드를 비트 연산하여 프로세스의 보안 등급을 구한다. 만약, 쓰기 요청을 한 프로세스의 보안 등급이 없으면 쓰기 요청된 데이터를 일반 데이터로 분류하여 현재의 파일포인터를 기준으로 쓰고자 하는 부분을 락킹(locking)한다. 그런 다음, 사용자 프로세스로부터 전달된 버퍼의 내용을 요구한 수 만큼 파일 디스크립터 fd로 지정하는 파일에 쓴다(S3단계). 그리고 나서, 시스템 호출에서 리턴(return)하면 사용자 프로세스로 복귀(S4단계)한다. 만약, 상기한 보안 등급 필드를 비트 연산한 결과, 쓰기 요청을 한 프로세스의 보안등급이 존재하면 본 발명에 따른 블록 암호화 루틴으로 분기하게 되는데, 분기 이후의 과정은 아래와 같다.
본 발명에 따른 데이터 암호화 방법에서는, 블록 암호화 알고리즘을 이용하여 데이터를 커널모드에서 블록 단위로 자동으로 암호화하기 때문에 현재의 파일포인터가 블록의 시작점에 위치하는지를 점검(S5단계)해야 한다. 블록 암호화에 있어서, 블록의 기본 단위가 16바이트인 경우에 점검 방법은 파일포인터의 현재 위치에 해당하는 바이트 수를 16으로 나눠 그 나머지가 있으면 블록의 시작점이 아닌 것으로 판단한다. 만약, 파일포인터의 현재 위치가 블록의 시작점이 아닌 것으로 판단되면 블록의 시작점으로 파일포인터를 이동(S6단계)시킨다. 그런 다음, 파일포인터의 이동거리를 스택 변수에 저장한다.
한편, 커널모드에서 블록 단위로 데이터를 자동으로 암호화함에 있어서는, 블록 내의 특정 바이트 영역에 블록에 수록된 유효 데이터 수를 기록하여 두었다가 복호화시 이를 활용하는 것이 바람직하다. 따라서, 본 발명에 따른 바람직한 실시예에서는 블록의 기본 단위를 16바이트로 하고, 마지막 바이트를 유효 데이터 수에 대한 정보 기록 영역으로 설정한다. 물론, 이러한 경우 블록의 첫 번째 바이트, 또는 첫 번째 바이트와 열 여섯 번째 바이트 사이의 어느 바이트라도 유효 데이터 수 기록 영역으로 설정될 수 있다.
도2b는 사용자 프로세스로부터의 쓰기 시스템 호출에 의해 데이터가 쓰여질 파일을 설명의 편의를 위해 복호화(본 발명에 따른 커널모드에서의 데이터 자동 복호화 방법에 의함. 이에 대해서는 후술하기로 함)하여 표시한 것이다. 제1블록(A), 제2블록(B) 및 제3블록(C)의 16번째 바이트 자리를 보면 각 블록의 유효 데이터 수인 15, 7 및 11이 각각 수록되어 있다. 제2블록(B)의 8-15번째 바이트 자리; 제3블록(C)의 12-15번째 바이트 자리는 null로써, 사용자 프로세스로부터 쓰기 시스템 호출이 있다고 하더라도 데이터가 수록되지 않는 영역이다. 다시 말해, 제2블록(B) 및 제3블록(C)의 유효 데이터 수가 각각 7 및 11이므로, 이들 수를 초과하는 데이터의 수록은 제2블록(B) 및 제3블록(C)에서 허용되지 않는다.
상기한 도2a와 도2b를 참조하여 본 발명에 따른 커널모드에서의 데이터 자동 암호화 방법을 보다 상세하게 설명하면, 사용자 프로세스로부터의 쓰기 시스템 호출이 된 시점에서 현재의 파일포인터가 제1블록(A)의 13번째 바이트 자리(12가 수록되어 있음)의 위치에 있다면 파일포인터를 1번째 바이트 자리(0이 수록되어 있음)로 그 위치로 조정하고 이동거리 12를 스택 변수에 저장한다(S6단계). 본 발명에 있어서는, 쓰기 요청된 데이터가 16바이트씩 블록으로 암호화되기 때문에 블록별 유효 데이터 수를 기록할 16번째 바이트 자리를 감안하여 사용자 프로세스로부터 전달된 카운트(count)를 기초로 15 이내의 유효 데이터 수를 가진 블록의 수를 구한다(S7단계). 예를 들어, 사용자 프로세스로부터 40 바이트 쓰기 시스템 호출이 있고 파일포인터가 제1블록(A)의 13번째 바이트 자리에 있는 경우, 메모리에 형성되는 연결리스트(Linked List), 예컨대 이중 연결 리스트(Doubly Linked List)는 유효 데이터 수가 15인 제1블록(A;13-15번째 바이트 자리에만 데이터가 추가됨); 유효 데이터 수가 7인 제2블록(B); 유효 데이터수가 11인 제3블록(C); 유효 데이터 수가 15인 제4블록(미도시); 유효 데이터 수가 4인 제5블록(미도시)으로 그 블록 구조가 형성되므로 암호화될 블록의 수는 5가 되고, 기억장치의 파일에 쓰여질 때에는 16, 16, 16, 16, 16 바이트로 블록 암호화되어 저장된다. 만약, 새로 생성되는 파일의 경우엔 메모리에 형성되는 연결리스트는 15, 15, 10 바이트로 그 블록구조가 형성되므로 암호화될 블록의 수는 3이 되고, 디스크의 파일에 쓰여질 때에는 16, 16, 16바이트로 블록 암호화된다.
데이터의 블록 암호화시 사용되는 암호화키는 전술한 바 있는 씨드 암호화키 자체가 될 수 있다. 하지만, 본 발명에서는 파일에 대한 보안을 더욱 강화하기 위해 상기한 씨드 암호화키를 바탕으로 암호화 대상 파일마다 서로 다른 고유의 암호화키를 다시 생성하여 사용한다. 이를 위해, 보안등급이 부여된 파일에 데이터를암호화하여 쓸 때에는 각 파일의 i-node를 참조하여 각 파일마다 유일한 값을 가지는 데이터, 예컨대 파일 최초 생성 시간 또는 파일마다 주어지는 파일의 고유 번호 등을 추출한다. 그런 다음, i-node에서 추출된 데이터를 사용하여 상기한 씨드 암호화키를 소정의 암호화 알고리즘, 예컨대 SEED 암호화 알고리즘을 이용하여 다시 한번 암호화함으로써 파일별 암호화키를 소정의 비트수, 예컨대 128비트로 다시 생성한다. 예를 들어, 사용자 패스워드, 사용자 비밀번호 등의 사용자 정보와 파일 번호 등의 파일 고유 정보를 포함하는 소정 바이트, 예컨대 16바이트 크기의 데이터를 형성하고 이를 사용하여 파일마다 씨드 암호화키를 재 암호화할 수 있다. 그리고 나서, 파일별 암호화키를 본 발명에 따라 블록별로 데이터를 암호화할 때 키로 사용하게 된다. 이처럼 보안등급이 부여된 개별 파일마다 서로 다른 암호화키를 사용하게 되면 보안을 더욱 강화시킬 수 있다.
상기와 같이 암호화될 블록 수를 산출(S7단계)한 다음, 사용자 프로세스로부터 전달받은 버퍼의 내용을 각 블록의 유효 데이터 수만큼을 복사 및 암호화하면서 각 블록에 대한 연결리스트를 메모리에 구성(S8단계)한다. 이 때, 각 블록에 대한 암호화는 시스템 부팅시 커널에 로딩된 암호화 알고리즘을 통하여 이루어지게 되며, 이를 위해 커널을 컴파일하여 생성할 때 암호화 알고리즘도 커널에 적재될 수 있도록 할 수 있다. 암호화 알고리즘의 커널 적재는 본 발명이 속한 기술분야에서 통상의 지식을 가진 자가 용이하게 그 수단을 강구할 수 있다. 상기한 S8단계를 거쳐 구성되는 연결리스트의 최종 모습이 도2c와 같으며, 그 구성과정은 아래와 같다.
구체적으로 도2a 및 도2c를 참조하면, 먼저, 메모리에 연결리스트를 한 블록씩 구성(ⓐ->ⓑ->ⓒ->...->ⓝ)하면서 바이트 수를 누적하고(S8단계) 누적 바이트 수가 사용자 프로세스로부터 요청된 카운트보다 작은지 확인하고 작다면 S8단계를 반복한다. 예를 들어, S7단계에서 구한 블록 수보다 누적된 블록수가 작으면(S9단계 참조), 도2c에 도시된 것과 같은 연결리스트 ⓐⓑⓒ...ⓝ을 얻을 때까지 S8단계를 반복한다. 도2b와 같은 파일의 데이터 구조에서 사용자 프로세스로부터 40바이트의 쓰기 시스템 요청이 있을 때 데이터 부분을 평문 상태로 표현하자면 도2d와 같고, 도2d에서 음영으로 처리된 부분은 실제로 데이터가 덮여 쓰여지거나 새롭게 추가된 영역에 해당한다. 그리고, 각 블록의 16번째 바이트 자리는 각 블록의 유효 데이터 수가 기록되는 영역이다.
S8단계와 S9단계를 거치면서 메모리에 도2c에 도시된 것과 같은 연결리스트가 구성이 된 이후에, 메모리에 연결리스트가 존재하는지 확인(S10단계)하는 단계가 진행된다. 즉, S8단계와 S9단계의 작업 결과에서 첫 연결리스트가 나타내는 포인터 값이 null인지를 비교(S10단계)한다. S10단계에서의 비교값이 null이 아니라면, 메모리에 구성된 연결리스트 ⓐⓑⓒ...ⓝ을 16바이트씩 순차적으로 기억장치에 쓰면서(S12단계) 누적된 쓰기 바이트수가 사용자 프로세스로부터 요청된 카운트보다 작은지 판단(S13단계)한다. S13단계에서의 비교값이 null이 아닐 때까지 S12단계를 계속한다. S13단계에서의 비교값이 null이 되면 파일의 i-node중 사용하지 않는 예약 필드에 사용자 프로세스의 보안 등급을 복사하여 넣는다. 이를 위해, 소정 비트, 예컨대 32비트의 크기를 가진 보안 등급 필드가 상기 i-node의 예약 필드에추가로 할당되고, 상기한 보안 등급 필드에 사용자 프로세스의 보안 등급이 복제된다. 상기 보안 등급 필드에는 소정 비트수, 예컨대 1비트의 암호화 플래그인 MSB(Most Significant Bit)가 할당되어 있고, 기억장치에 연결리스트를 쓰는 작업이 종료(S12단계 및 S13단계)되면 상기 MSB에 1을 비트 OR 연산하여 암호화된 파일임을 표시(S14단계)할 수 있다. S14단계가 진행된 이후에는 할당된 모든 자원이 해제되고 호출한 사용자 프로세스로 복귀(S15단계)한다.
<본 발명에 따른 자동 암호화 방법에 의해 기억장치에 저장되어 있는 파일을 커널모드에서 자동으로 블록 복호화하는 방법>
도3a는 본 발명의 기술적 사상이 적용된 유닉스 계열 OS에서 읽기 시스템 호출(예컨대, sys_read:S16단계)이 있을 때, 커널모드에서 일어나는 일련의 과정을 보여주는 흐름도이다. 여기에서, sys_read(S16단계)는 사용자 모드의 프로세스가 커널에 읽기 기능 서비스를 요청할 때 사용되는 커널 함수로 읽기 시스템 호출로 통칭하기로 한다. 한편, 이하에서 설명되는 커널모드에서의 자동 복호화 방법은 도2a 내지 도2d를 참조하여 설명한 본 발명에 따른 커널모드에서의 자동 암호화 방법에 의해 암호화되어 기억장치에 저장된 파일에 대해 적용되는 것이다.
도3a를 참조하면, 사용자 프로세스에서 read, fread, fscanf, getw, getc등의 시스템 라이브러리 함수를 통하여 읽기 시스템 호출을 하게 되면 커널은 사용자의 프로세스가 요청한 작업을 수행한다. 예를 들어, read(fd, buf, 20)는 20 바이트만큼을 파일 디스크립터 fd가 지정하는 파일로부터 읽어서 버퍼에 기억시키라는 읽기 실행 예이다. 본 발명에 따른 커널모드에서의 자동 복호화 방법에서는, 읽고자 하는 파일이 암호화된 파일인지의 여부를 판단(S17단계)하기 위해, 전달된 파일 디스크립터 fd를 이용하여 파일의 i-node를 구하고 그 i-node가 가지고 있는 보안 등급 필드의 MSB를 1로 비트 AND 연산한다.
상기한 S17단계를 통하여 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일이 아니라고 판단되면, 상기 파일을 일반 문서로 분류한다. 그런 다음, 현재의 파일포인터를 기준으로 읽고자 하는 부분을 락킹하고 요청된 카운트만큼 기억장치에서 읽은 후, 그 내용을 사용자 프로세스로부터 전달된 버퍼에 저장(S18단계)한다. 시스템 호출에서 리턴하면, 사용자 프로세스로 복귀(S19단계)한다.
상기 S17단계를 통하여 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일로 판단되면, 본 발명에 따른 복호화 루틴으로 분기한다. 본 발명에 따른 커널모드에서의 자동 복호화 방법에 있어서는, 복호화 대상 데이터가 도2a 내지 도2d를 참조하여 설명한 블록 암호화 방법에 의해 암호화되어 있으므로 복호화시에도 블록 단위로 복호화가 이루어지게 된다. 또한, 16바이트씩의 블록을 암호화의 기본 단위로 삼은 경우, 본 발명에 따른 커널모드에서의 자동 복호화 방법에서도 16바이트씩의 블록을 복호화의 기본 단위로 삼게 된다.
따라서, 암호화된 파일 전체 또는 파일 내의 일부 데이터만을 선택적으로 복호화하기 위해서는 현재의 파일포인터가 블록의 시작점에 위치하는지를 점검(S20단계)해야 한다. 그 점검 방법은 파일포인터의 현재 위치에 해당하는 바이트 수를 한 블록을 이루는 기본 바이트 수인 16으로 나눠 그 나머지가 있으면 블록의 시작점이 아닌 것으로 판단한다. 만약, S20단계에서 현재 위치에 해당하는 바이트 수를 16으로 나눈 결과 그 나머지가 존재하게 되면 블록의 시작점으로 파일포인터를 이동(S21단계)시킨다. 그런 다음, 블록 시작점까지 파일포인터가 이동한 거리를 스택 변수에 저장한다.
도3b는 복호화의 대상이 되는 파일을 설명의 편의를 위해 복호화하여 미리 표시한 것으로, 본 발명에 따른 자동 복호화 방법의 실시예에서는 사용자 프로세스로부터 20바이트의 읽기 시스템 호출이 있고 현재의 파일포인터가 제1블록(A)의 13번째 바이트 자리에 있다는 가정하에 제1블록(A)의 13-15번째 바이트 영역; 제2블록(B)의 1-7번째 바이트 영역; 제3블록(C)의 1-10번째 바이트 영역에 저장된 데이터를 복호화하는 일련의 과정을 예시한다.
구체적으로 도3a 및 도3b를 참조하면, 먼저 현재의 파일포인터의 위치가 제1블록(A)의 시작 위치가 아니므로, 파일포인터의 위치를 블록의 시작위치(1번째 바이트 자리로, 0이 수록되어 있음)로 이동시키고 그 이동거리인 12를 스택 변수에 저장한다. 그런 다음, 각 블록을 순차적으로 읽어서 복호화(S22단계)한 후, 16번째 바이트를 참조(S22단계)하여 각 블록의 유효한 데이터를 메모리에 연결리스트로 구성(S22단계)하여 저장하고 동시에 유효한 데이터 수를 누적(S22단계)시킨다. 이 때, 각 블록을 복호화하기 위해서 사용하는 복호화키는 SEED와 같은 대칭키 암호화 알고리즘을 이용하여 복호화 대상 데이터의 암호화가 시도될 때 사용되었던 키이다.
도3c는 도3b에 도시된 것과 같은 데이터 구조를 가진 파일을 사용자 모드의 프로세스로부터 20바이트 읽기 시스템호출이 있을 때 순차적으로 블록 단위 읽기와복호화를 한 후 유효한 데이터에 대하여 음영 표시를 한 것이다. 도3c를 참조하면, 제1블록(A)의 13-15번째 바이트 영역; 제2블록(B)의 1-7바이트 영역; 제3블록(C)의 1-10바이트 영역만이 선택적으로 복호화된다는 것을 확인할 수 있다.
도3d는 각 블록별로 순차적인 복호화가 이루어지면서 메모리에 구성되는 연결리스트를 도시한 것으로서, 그 구성과정은 다음과 같다. 먼저, 제1블록(A)을 복호화한 다음, 16번째 바이트 영역을 참조하여 바이트 수를 누적해가면서 연결리스트 ⓐ를 메모리에 구성한다. 누적된 바이트 수가 사용자 프로세스로부터 요청된 카운트보다 작으면 상기와 같은 연결리스트 구성 작업을 제2, 제3...블록에 대해서도 계속하게 되면 도3d에 도시된 것과 같은 연결리스트 ⓐⓑⓒ를 메모리에 구성할 수 있다.
이어서, S22단계와 S23단계의 진행으로 얻은 각 블록에 대한 연결리스트에서 첫 연결리스트가 나타내는 포인터 값이 null인지를 비교(S24단계)한다. S24단계에서의 비교 값이 null이 아니라면, 메모리에 구성된 연결리스트 ⓐⓑⓒ의 유효한 데이터를 사용자의 프로세스로부터 전달받은 버퍼에 순차적으로 복사한다(S26, S27). 각 연결리스트의 유효한 데이터를 사용자 프로세스로부터 전달된 버퍼에 복사하는 작업은, 버퍼에 복사된 데이터의 수가 사용자 프로세스가 요청한 카운트 수와 같아질 때까지 계속(S27단계)된다. S26단계와 S27단계를 통하여 연결리스트의 유효 데이터를 버퍼에 복사하는 작업을 완료한 이후에는, 파일포인터의 위치를 조정(S28단계)하고 사용자 프로세스로 복귀하는데, 이 때 버퍼의 내용은 도3e와 같게 된다. 한편, S24단계에서의 비교 값이 null이라면 사용자 프로세스로 복귀(S25단계)한다.
도3f는 S20단계부터 이루어진 작업에서 파일포인터가 이동하는 순서를 원문자를 사용하여 순차적으로 도시하고 있다. 구체적으로, 사용자 프로세스로부터 파일 디스크립터 fd가 지정하는 파일로부터 20바이트 만큼을 읽어 버퍼에 저장하라는 시스템 호출 있을 때 파일포인터는 제1블록(A)의 13번째 바이트 영역(①참조)에 위치하고 있다. 그런데, 파일포인터가 블록의 처음 위치에 있지 않으므로 파일포인터를 블록의 처음위치(②참조)로 이동시킨다. 제1블록(A)을 읽고(파일포인터가 제2블록의 처음위치(③)로 자동이동) 이를 복호화한 후, 16번째 바이트 자리의 유효 데이터 수를 참조하여 제1블록(A)에 해당하는 연결리스트(도3d의 ⓐ참조)를 메모리에 구성한다. 이어서, 제2블록(B)을 읽고(파일포인터가 제3블록의 처음위치(④)로 자동이동) 이를 복호화한 후, 16번째 바이트 자리의 유효 데이터 수를 참조하여 제2블록(B)에 해당하는 연결리스트(도3d의 ⓑ참조)를 메모리에 구성한다. 연결리스트의 유효 데이터의 누적수(10)가 사용자 프로세스로부터 요청된 카운트(20)보다 작으므로, 제3블록(C)에 대한 복호화 과정이 계속된다. 상기한 바와 마찬가지로, 제3블록(C)을 읽고(파일포인터가 제4블록의 처음위치(⑤)로 자동이동) 이를 복호화한 후, 16번째 바이트 자리의 유효 데이터 수를 참조하여 제3블록(C)에 해당하는 연결리스트(도3d의 ⓒ참조)를 구성한다. 연결리스트 ⓐ와 ⓑ가 구성되고 나면 누적된 유효 데이터 수가 10이므로, 제3블록(C)의 13개 데이터 중 10개의 데이터만이 연결리스트 ⓒ를 구성하는데 사용되게 된다. 연결리스트를 ⓒ를 구성한 이후에는 다시 제3블록의 11번째 바이트 영역(⑥)으로 파일포인터를 이동시킨다. 마지막으로, 커널은 모든 할당된 자원을 해제하고 사용자 프로세서로 복귀(S29단계)한다.
이하에서는 본 발명에 의해 데이터가 커널모드에서 자동으로 암호화되고 복호화됨에 따라 파일포인터를 소정 바이트 만큼 이동시키는 파일포인터 이동 시스템 호출 과정이 본 발명에 따라 어떠한 방식으로 변형되어 수행되는가를 도4a 내지 도4d를 참조하여 설명한다.
도4a는 본 발명에 따라 수정된 커널모드의 파일포인터 이동 시스템 호출(sys_lseek;S30단계) 과정을 나타낸 흐름도이다. 여기에서, sys_lseek(S30단계)는 사용자 모드의 프로세스가 커널에 파일포인터 이동 서비스를 요청할 때 사용되는 시스템 호출 함수를 통칭한다.
도4a를 참조하면, 사용자 프로세스에서 fseek, lseek 등의 시스템 라이브러리 함수를 통하여 시스템 호출을 하게 되면, 커널은 사용자의 프로세스가 요청한 작업을 수행한다. 예를 들어, lseek(fd, offset, origin)는 파일 디스크립터 fd가 지정하는 파일의 원래 파일포인터 위치인 origin으로부터 offset에 해당하는 바이트 수 만큼 파일포인터를 이동시키라는 커널 함수이다.
본 발명에 따라 수정된 파일포인터이동 시스템 호출에서는 읽고자 하는 파일이 암호화된 파일인지의 여부(S31단계)는 전달된 파일 디스크립터를 이용하여 파일의 i-node를 구하고 그 i-node가 가지고 있는 보안 등급 필드의 MSB를 1로 비트 AND 연산함으로써 판단할 수 있다.
S31단계에서 판단해 본 결과, 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일이 아니면, 상기 파일을 일반 문서로 분류한다. 그런 다음, 사용자 프로세스로부터 받은 origin을 기준으로 offset만큼 파일포인터를 이동(S32단계)시킨다.그리고 나서, 시스템 호출에서 리턴하면, 사용자 프로세스로 복귀(S33단계)한다.
S31단계에서 판단해 본 결과, 파일 디스크립터 fd가 지정하는 파일이 본 발명에 따라 자동 암호화된 파일이면, origin에 의한 파일포인터 조정 단계(S34단계)를 거치게 된다. 예를 들어, 사용자 프로세스로부터 전달된 origin이 2이면 파일의 끝으로, 0이면 파일의 처음으로 파일포인터의 위치를 조정하고, origin이 1이면 파일포인터의 현재 위치를 유지한다. 한편, 본 발명의 실시예에 따라 자동 암호화된 파일은 블록 단위로 읽어서 각 블록의 16번째 바이트 자리를 참조해야 각 블록에 대한 유효한 데이터 수를 알 수 있는 특성이 있다. 따라서, 본 발명에 따라 암호화된 파일을 읽기 위한 준비 단계로 S34단계에서 조정된 파일포인터가 파일의 끝인 것으로 판단되면 파일포인터의 위치를 블록의 싸이즈만큼 음의 방향으로 이동시킨다. 예를 들어, 블록의 크기가 16바이트인 경우 파일포인터의 위치를 음의 방향으로 16바이트만큼 이동시킨다.
이어서, 파일크기를 16으로 나누어 그 나머지의 존재 유무를 조사함으로써 파일이 정상적으로 암호화되어 있는지에 대해 점검(S35단계)한다. S35단계에서 나머지가 산출되지 않으면, 각 블록의 마지막 바이트 자리에 해당 블록의 유효한 데이터 수가 기록되어 있다는 점을 감안하여 각 블록을 순차적으로 읽어 이를 복호화한 후 16번째 바이트 영역을 참조해서 유효한 데이터를 메모리에 연결리스트로 구성하여 저장하고 유효한 데이터 수를 누적시킨다(S37단계). 이 때, 상기 복호화는 도3a 내지 도3d를 참조하여 설명한 본 발명에 따른 커널모드에서의 파일 자동 복호화 방법에 대한 바람직한 실시예를 참조할 수 있다. 물론, S35단계에서 나머지가산출되면 파일이 본 발명에 따라 정상적으로 암호화되어 있지 않으므로 사용자 프로세스로 복귀(S36단계)한다.
한편, S37단계를 진행함에 있어서는, 사용자 프로세스로부터 전달받은 offset에 따라 각 블록을 읽는 방법이 다르게 된다. 상기 offset이 양의 숫자라면 16 바이트 씩 각 블록을 읽고 복호화하면 되지만, 음의 숫자라면 16 바이트를 읽고 32 바이트의 마이너스 포인터 조정이 필요하다. 이에 대해서는, +offset의 경우 파일포인터의 이동 예를 보여주는 도4b와, -offset의 경우 파일포인터의 이동 예를 보여주는 도4c를 참조하면 보다 명확해진다.
도4b를 참조하면, 파일포인터가 제1블록(A)의 ① 위치에 있을 때 사용자 프로세스가 +20 바이트 만큼 파일포인터를 이동시키라는 요청을 하게 되면, 먼저 파일포인터를 제1블록(A)의 ②위치로 이동시킨다. 그런 다음, 제1블록(A)을 읽고(파일포인터가 ③의 위치로 자동 이동) 이를 복호화한 후 유효 데이터수를 누적하면서 메모리에 연결리스트를 구성하는 과정; 제2블록을 읽고(파일포인터가 ④의 위치로 자동이동) 이를 복호화한 후 유효 데이터 수를 누적하면서 메모리에 연결리스트를 구성하는 과정; 제3블록을 읽고(파일포인터가 ⑤의 위치로 자동이동) 이를 복호화한 후 유효 데이터수를 누적하면서 메모리에 연결리스트를 구성하는 과정을 반복하게 된다. 이러한 과정은 누적된 유효 데이터에 대한 카운트수가 offset(20)보다 작으면 계속 반복된다. 따라서, 제3블록에 대한 연결리스트는 11번째 바이트(제1블록(A)의 데이터수 3 + 제2블록의 데이터 수 7 = 10)까지의 데이터에 대한 연결리스트가 메모리에 구성되면 S37단계는 종료된다.
도4c를 참조하면, 파일포인터가 제3블록(C)의 ①의 위치에 있을 때 20 바이트를 파일 앞쪽으로 옮기는 요청이 있다면, 먼저 파일포인터의 위치를 제3블록(C)의 ② 위치로 이동시킨다. 그런 다음, 제3블록(C)을 읽고(파일포인터가 제4블록(D)의 ③ 위치로 자동이동) 이를 복호화한 후 유효 데이터 수(10)를 누적하면서 메모리에 연결리스트를 구성하는 과정; 파일포인터의 위치를 제2블록(B)의 ④ 위치로 이동(-32 바이트 파일포인터 위치 조정)시킨 후 제2블록(B)을 읽고(파일포인터가 제3블록(C)의 ⑤ 위치로 자동 이동) 이를 복호화한 후 유효 데이터 수(7)를 누적하면서 메모리에 연결리스트를 구성하는 과정; 파일포인터의 위치를 제1블록(A)의 ⑥ 위치로 이동(-32 바이트 파일포인터 위치 조정)시킨 후 제1블록(A)을 읽고(파일포인터가 제2블록(B)의 ⑦의 위치로 자동이동) 이를 복호화한 후 유효 데이터 수(3)를 누적하면서 메모리에 연결리스트를 구성하는 과정을 반복하게 된다.
도4d는 위와 같은 방법으로 블록 단위 읽기와 복호화를 한 후 메모리에 구성될 연결리스트의 일 예를 보여준다.
도4a 및 도4d를 참조하면, 메모리에 연결리스트를 한 블록씩 구성을 하면서 유효한 바이트 수를 누적하고 이 수가 사용자 프로세스로부터 요청된 offset보다 작다면, 위의 과정(S37단계)을 반복 작업하여 ⓐⓑ...ⓝ을 구성한다(S37단계). S37단계 및 S38단계의 작업 결과에서 첫 연결리스트가 나타내는 포인터의 값이 NULL인지를 비교한다(S39단계). 이 때, S39의 비교 값이 NULL이라면 사용자 프로세스로 복귀한다(S40단계). S39단계의 비교 값이 null이 아니라면, 메모리에 구성된 연결리스트의 노드를 조합하면서 카운트를 누적 계산(S41단계)하되, 누적된 카운트가offset 보다 작은 지를 판단(S42단계)하여 그 값이 null이 될 때가지 S41단계를 반복한다. 그런 다음, 16바이트로 암호화된 블록들에서 유효한 데이터가 수록된 영역을 제외한 나머지 부분까지 고려하여 파일포인터가 이동할 실제 offset을 구한다. 도4b에 도시된 파일포인터 이동 예의 경우, 파일포인터 이동 시스템 호출에 의해 +20바이트 만큼 파일포인터를 이동시키라는 요청이 있게 되면, 파일포인터는 제1블록(A)의 13번째 바이트 자리(①참조)에서 제3블록(C)의 11번째 바이트 자리(⑥참조)로 이동한다. 하지만, 실제 파일포인터가 이동하는 실제 offset은 제2블록(B)의 null영역인 8-15번째 바이트 자리도 가만해야 하므로, 파일포인터가 이동하는 실제 offset은 +28바이트가 되는 것이다. S43단계에서 구한 실제 offset이 null 이면 사용자 프로세스로 복귀(S44단계)하고, S43단계에서 구한 실제 offset이 null이 아니면 실제 offset만큼 파일포인터를 이동(S45단계)시킨다. S45단계를 진행한 이후에 할당된 자원을 해제하고 사용자 프로세스로 복귀(S46단계)한다.
상기에서 상세하게 설명한 본 발명에 따른 커널모드에서의 파일 자동 암호화, 복호화 방법과, 이를 이용한 파일포인터 이동 방법은 프로그램화되어 컴퓨터로 읽을 수 있는 기록매체에 수록될 수 있다. 이 때, 도2a, 도3a 및 도4a에 도시된 흐름도는 본 발명에 따른 방법들을 프로그램화할 때 알고리즘으로 사용될 수 있다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자가 상기한 도면들에 게시된 흐름도와 관련 설명을 인식하면 본 발명에 따른 방법들을 용이하게 프로그램화할 수 있음은 물론이다.
이상에서는 본 발명에 따른 바람직한 실시예를 첨부한 도면을 첨부하여 상세하게 설명하였다. 하지만, 본 발명에 따른 기술적 사상은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에 의하여 다양한 변형이나 개량이 가능함은 물론이다.
본 발명의 일 측면에 따르면, 커널모드에서 연결리스트를 사용하여 사용자 프로세스가 요구하는 필요한 부분적 데이터만을 암호화 또는 복호화하기 때문에 종래의 사용자 모드에서의 파일 암호화 및 복호화 방법보다 처리 속도가 향상된다.
본 발명의 다른 측면에 따르면, 데이터의 암호화 및 복호화가 사용자 응용 프로그램의 주소 공간과는 엄격히 분리된 상태로 커널모드에서 수행되며, 보안등급을 보유한 사용자가 데이터의 암호화를 선택하는 방식이 아닌, 커널모드에서의 강제적 암호화에 의해 데이터가 기억장치에 저장되므로, 기억장치가 제3자에 의거 불법적으로 탈취 당하더라도 보안이 담보된다.
본 발명의 또 다른 측면에 따르면 암호화 키의 관리가 시스템 보안 관리자에 의해 관리되므로 일반 사용자의 키 관리가 간편해 진다.

Claims (18)

  1. 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트만큼의 데이터를 유닉스 계열 OS(Operation System)의 커널모드(Kernel Mode)에서 자동으로 암호화하는 방법에 대한 것으로,
    (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출하는 단계;
    (b) 상기 (a)단계에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 소정의 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성하는 단계; 및
    (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓰는 단계를 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  2. 제1항에 있어서,상기 (b)단계를 진행하기 전에,
    현재 파일포인터의 위치가 블록의 처음인지를 검사하고 그 결과에 따라 파일포인터의 위치를 블록의 처음으로 이동시키는 단계를 더 포함하는 것을 특징으로하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  3. 제1항에 있어서,
    상기 제2영역은 상기 제1영역에 수록된 유효 데이터 수를 표시하기 위하여 사용하는 영역으로, 상기 블록 내의 소정 위치에 할당되는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  4. 제1항에 있어서, 상기 (a)단계의 암호화될 블록 수는,
    상기 제1영역을 구성하는 바이트 수로 상기 제2바이트를 나누고 그 정수 몫에 1을 더하는 방식으로 산출하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  5. 제1항에 있어서, 상기 (c)단계를 진행한 이후에,
    암호화된 파일의 i-node의 예약된 필드 중 미리 할당된 보안 등급 필드 내에 암호화 마킹을 수행하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  6. 제1항에 있어서, 상기 (b)단계에서 사용되는 암호화 알고리즘은 블록 암호화 알고리즘인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  7. 제6항에 있어서, 블록 암호화 알고리즘에서 이용되는 암호화키는 커널을 컴파일하여 생성할 때 커널 이미지에 이식된 키인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  8. 제7항에 있어서,
    상기 암호화키는, 사용자로 하여금 키 생성을 위한 고유 문자열을 정하게 하고 상기 고유 문자열을 소정의 암호화 알고리즘을 이용하여 생성한 소정 비트의 씨드 암호화키인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  9. 제8항에 있어서,
    상기 씨드 암호화키는 쓰기 시스템 호출이 있을 때마다, 파일마다 i-node에 가지는 파일 고유 정보를 암호화키로 하여 재 암호화된 다음, 상기 (b)단계의 블록 암호화 알고리즘에서 암호화키로 사용되는 것을 특징으로 커널모드에서 파일을 자동으로 암호화하는 방법.
  10. 제1항에 있어서, 상기 (a) 단계를 진행하기 전에,
    (a1) 사용자가 유닉스 시스템에 로그인할 때 보안 등급 정보를 포함하는 사용자 정보를 입력하게 하고 사용자를 시스템에서 인증하는 단계;
    (b1) 상기한 (a)단계에서의 인증이 완료되면 사용자 프로세스의 태스크 구조체에 할당된 소정 비트수의 보안 등급 필드에 사용자의 보안 등급 정보를 수록하는 단계; 및
    (c1) 상기 태스크 구조체의 보안 등급 필드에 보안 등급 정보가 수록되어 있는지를 확인하여 쓰기 요청된 데이터를 암호화해야 할 대상으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  11. 제10항에 있어서, 상기 (c1)단계를 진행한 후에,
    상기 데이터가 암호화되어 저장된 파일의 i-node의 예약 필드에 할당된 보안 등급 필드에 프로세스의 태스크 구조체에 수록된 사용자의 보안 등급을 복사하여 수록하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.
  12. 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록별로 데이터가 암호화되어 있는 파일에서 제2바이트 만큼의 데이터를 읽어 버퍼에 저장하라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하는 방법에 대한 것으로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정하는 단계;
    (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속하는 단계; 및
    (c) 상기 (b)단계를 통하여 얻은 연결리스트를 상기 버퍼에 복사하는 단계를 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 복호화하는 방법.
  13. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정하는 단계;
    (b) 상기 (a)단계를 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시키는 단계;
    (c) 상기 (b)단계의 진행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속하는 단계; 및
    (d) 상기 (c)단계를 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시키는 단계를 포함하는 것을 특징으로 하는 커널모드에서 암호화된 파일을 자동 복호화하면서 파일포인터를 이동시키는 방법.
  14. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정하는 단계;
    (b) 상기 (a)단계를 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시키는 단계;
    (c) 상기 (b)단계의 진행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속하는 단계; 및
    (d) 상기 (c)단계를 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시키는 단계를 포함하는 것을 특징으로 하는 커널모드에서 암호화된 파일을 자동 복호화하면서 파일포인터를 이동시키는 방법.
  15. 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트 만큼의 데이터를 유닉스 계열 OS의 커널모드에서 자동으로 암호화할 수 있도록 하는 프로그램이 수록된 기록매체로,
    (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트 만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출할 수 있게 하는 프로그램 모듈;
    (b) 상기 (a)프로그램 모듈을 통하여 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 블록 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성할 수 있게 하는 프로그램 모듈; 및
    (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓸 수 있도록 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  16. 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화할 수 있는 프로그램이 수록된 기록매체로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정할 수 있도록 하는 프로그램 모듈;
    (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및
    (c) 상기 (b)프로그램 모듈을 통하여 얻은 연결리스트를 상기 버퍼에 복사할 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  17. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 컴퓨터 읽을 수 있는 기록매체로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈;
    (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈;
    (c) 상기 (b)프로그램 모듈이 수행된 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및
    (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
  18. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 영역으로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 기록매체로,
    상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,
    (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈;
    (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈;
    (c) 상기 (b)프로그램 모듈이 수행된 이후에 파일포인터가 위치한 블록부터차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및
    (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.
KR20000049884A 2000-08-26 2000-08-26 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체 KR100346411B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20000049884A KR100346411B1 (ko) 2000-08-26 2000-08-26 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체
AU2001236166A AU2001236166A1 (en) 2000-08-26 2001-02-21 Method of automatically encrypting and decrypting file in kernel mode, method of moving file pointer using the same, and computer readable recording medium on which programs of above methods are recorded
PCT/KR2001/000259 WO2002019592A2 (en) 2000-08-26 2001-02-21 Method of automatically encrypting and decrypting file in kernel mode, method of moving file pointer using the same, and computer readable recording medium on which programs of above methods are recorded

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20000049884A KR100346411B1 (ko) 2000-08-26 2000-08-26 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체

Publications (2)

Publication Number Publication Date
KR20020016701A KR20020016701A (ko) 2002-03-06
KR100346411B1 true KR100346411B1 (ko) 2002-08-01

Family

ID=19685423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20000049884A KR100346411B1 (ko) 2000-08-26 2000-08-26 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체

Country Status (3)

Country Link
KR (1) KR100346411B1 (ko)
AU (1) AU2001236166A1 (ko)
WO (1) WO2002019592A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101166051B1 (ko) 2010-12-17 2012-07-19 고려대학교 산학협력단 힙 공격 방어를 위한 동적 메모리 관리 시스템 및 그 관리 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2496664C (en) 2002-08-23 2015-02-17 Exit-Cube, Inc. Encrypting operating system
DE102004009065A1 (de) * 2004-02-23 2005-09-08 Stefan Kistner Verfahren zur Verhinderung des Verlustes der Vertraulichkeit von Daten auf oder mit wechselbaren Speichermedien (Datenträgern)
KR100580204B1 (ko) * 2004-10-06 2006-05-16 삼성전자주식회사 데이터 저장 장치 및 방법
KR100748434B1 (ko) * 2004-11-29 2007-08-10 주식회사 안철수연구소 실시간 복호화 기능을 이용한 파일 데이터 보호 방법 및장치
KR100561218B1 (ko) * 2004-12-24 2006-03-15 주식회사 잉카인터넷 외부 저장장치를 통한 정보 유출 방지시스템 및 그 방법
US8219823B2 (en) 2005-03-04 2012-07-10 Carter Ernst B System for and method of managing access to a system using combinations of user information
KR100768501B1 (ko) * 2005-04-08 2007-10-18 (주)인테고소프트 디지털저작권이 보호된 디지털콘텐츠 전자상거래시스템 및방법과 이를 실행시키기 위한 프로그램을 기록한 기록매체
KR100906149B1 (ko) * 2006-12-05 2009-07-03 한국전자통신연구원 데이터 판독 방법 및 기록 방법
KR100951378B1 (ko) * 2007-12-26 2010-04-08 주식회사 안철수연구소 은폐 파일 검출 시스템 및 그 방법
CN103582889B (zh) * 2011-06-06 2015-11-25 株式会社索思未来 内容数据再生方法及缩略图图像生成方法
KR101895453B1 (ko) 2011-11-09 2018-10-25 삼성전자주식회사 이기종 컴퓨팅 환경에서 보안 강화 방법 및 장치
US8793506B2 (en) * 2012-08-31 2014-07-29 Intel Corporation Mechanism for facilitating encryption-free integrity protection of storage data at computing systems
JP2016103048A (ja) * 2014-11-27 2016-06-02 日本ユニシス株式会社 秘密分散システムおよび秘密分散機能付きストレージコントローラ
CN113987557A (zh) * 2021-12-24 2022-01-28 亿次网联(杭州)科技有限公司 一种文件加密处理方法、***、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908861A (en) * 1987-08-28 1990-03-13 International Business Machines Corporation Data authentication using modification detection codes based on a public one way encryption function
US5584023A (en) * 1993-12-27 1996-12-10 Hsu; Mike S. C. Computer system including a transparent and secure file transform mechanism
US6070198A (en) * 1995-10-19 2000-05-30 Hewlett-Packard Company Encryption with a streams-based protocol stack

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771354A (en) * 1993-11-04 1998-06-23 Crawford; Christopher M. Internet online backup system provides remote storage for customers using IDs and passwords which were interactively established when signing up for backup services
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4908861A (en) * 1987-08-28 1990-03-13 International Business Machines Corporation Data authentication using modification detection codes based on a public one way encryption function
US5584023A (en) * 1993-12-27 1996-12-10 Hsu; Mike S. C. Computer system including a transparent and secure file transform mechanism
US6070198A (en) * 1995-10-19 2000-05-30 Hewlett-Packard Company Encryption with a streams-based protocol stack

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101166051B1 (ko) 2010-12-17 2012-07-19 고려대학교 산학협력단 힙 공격 방어를 위한 동적 메모리 관리 시스템 및 그 관리 방법

Also Published As

Publication number Publication date
AU2001236166A8 (en) 2008-04-24
WO2002019592A3 (en) 2008-03-06
KR20020016701A (ko) 2002-03-06
AU2001236166A1 (en) 2002-03-13
WO2002019592A2 (en) 2002-03-07

Similar Documents

Publication Publication Date Title
KR100346411B1 (ko) 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체
US7398353B2 (en) Semiconductor memory card access apparatus, a computer-readable recording medium, an initialization method, and a semiconductor memory card
US8010790B2 (en) Block-level storage device with content security
EP1451664B1 (en) Systems, methods and devices for secure computing
JP5175856B2 (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
US7721114B2 (en) Method for using shared library in tamper resistant microprocessor
US6249866B1 (en) Encrypting file system and method
US7631185B2 (en) File editing system and shared file editing system with file content secrecy, file version management, and asynchronous editing
US8572372B2 (en) Method for selectively enabling access to file systems of mobile terminals
KR101405720B1 (ko) 암호화 속성을 이용하는 가속 크립토그래피
JP2001027964A (ja) データの保存方法およびシステム並びにデータ保存処理用記録媒体
US8983072B2 (en) Portable data carrier featuring secure data processing
JP2004126639A (ja) データ管理システム、データ管理方法及びプログラム
CN110113151B (zh) 一种对elf格式程序的非侵入式实时加解密方法
CN111143879A (zh) 一种Android平台SD卡文件保护方法、终端设备及存储介质
KR100859651B1 (ko) 가변크기 데이터 저장을 위한 데이터구조를 기록한기록매체, 가변크기 데이터 저장방법, 및 가변크기 데이터저장방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한컴퓨터로 읽을 수 있는 기록매체
US20030053631A1 (en) Method for securely managing information in database
JPH025158A (ja) 拡張icカード及びそのアクセス法
KR20230086559A (ko) 다중 보안 스토리지 시스템 및 이의 동작 방법
JP2005109869A (ja) 暗号鍵管理方法
Gemplus et al. Interoperability Specification for ICCs and Personal Computer Systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130715

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140714

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150714

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee