+

KR100346411B1 - 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 - Google Patents

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 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
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR20000049884A
Other languages
Korean (ko)
Other versions
KR20020016701A (en
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/en
Priority to AU2001236166A priority patent/AU2001236166A1/en
Priority to PCT/KR2001/000259 priority patent/WO2002019592A2/en
Publication of KR20020016701A publication Critical patent/KR20020016701A/en
Application granted granted Critical
Publication of KR100346411B1 publication Critical patent/KR100346411B1/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)자 할 때도 커널모드에서 전체 데이터 또는 필요한 만큼만의 부분 데이터를 자동으로 블록 복호화한다. 또한, 본 발명에 따라 암호화된 파일내에서 파일포인터를 이동시킬 때에는, 본 발명에 따라 자동으로 블록 복호화를 수행하면서 파일포인터 이동량을 산출한 후 이를 기초로 파일포인터를 이동시킨다. 본 발명에 따른 기록매체는, 상기한 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법, 및 이를 이용한 파일포인터 이동방법을 프로그램화하여 컴퓨터로 읽을 수 있도록 소정의 기록매체에 수록한 것이다.The present invention relates to a method of automatically encrypting and decrypting a file in kernel mode, a method of moving a file pointer using the same, and a computer-readable recording medium having recorded thereon a program. According to the present invention, when a user process of a Unix-based operating system (OS) attempts to write a file to a storage device (disk, diskette, CD-ROM, etc.) regardless of the user's intention in the kernel mode of the OS Automatically block-encrypts and stores files, and also automatically decodes all data or only partial data as needed in kernel mode when reading these files. In addition, when the file pointer is moved in the file encrypted according to the present invention, the file pointer movement amount is calculated based on the calculated amount of file pointer movement while automatically performing block decryption according to the present invention. The recording medium according to the present invention includes a method of automatically encrypting and decrypting a file in the kernel mode, and a method of moving a file pointer using the same, and recording the same on a predetermined recording medium so as to be read by a computer.

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}Automatic Encryption and Decryption 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)자 할 때도 커널모드에서 전체 또는 필요한 만큼의 데이터를 자동으로 복호화하는 방법과, 이에 기초한 파일포인터의 이동방법, 및 이들을 프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.The present invention relates to a file security method in a Unix-like operating system (OS), and more particularly, when a user process writes data to a storage device, the data is automatically transferred in a kernel mode of the OS. To store and encrypt encrypted data, and to automatically decrypt all or as much data as necessary in kernel mode, to move file pointers based on them, and to program them. The present invention relates to a recording medium which can be read by.

최근 들어, 컴퓨터의 기억장치, 예컨대 보조 기억장치에 저장된 비밀 수준의 정보들이 통신망 혹은 저장매체를 통해 불법적으로 탈취되거나 소유자의 실수에 의하여 분실, 누출되는 등의 보안문제가 심각해지고 있다.Recently, security problems such as secret level information stored in computer storage devices, such as auxiliary storage devices, are illegally hijacked through a communication network or a storage medium, or lost or leaked by an owner's mistake.

종래 OS에서의 데이터에 대한 암호화 및 복호화는, 사용자 모드에서 암호화 응용 프로그램을 이용하여 사용자가 선택적으로 파일을 지정한 후, 암호화 및 복호화 키를 입력하여, 파일 단위로 일괄적으로 암호화하고 복호화하는 방식을 사용하였다.The encryption and decryption of data in the conventional OS is a method of selectively encrypting and decrypting data in units of files by inputting an encryption and decryption key after a user selectively specifies a file using an encryption application program in a user mode. Used.

그러나, 이러한 방식에서의 문제점으로는 다음과 같은 점을 들 수 있다.However, the problem in this manner is as follows.

첫째, 비밀 수준의 파일 작성 시 사용자의 실수 혹은 고의로 암호화를 하지 못하는 경우가 발생될 수 있다.First, when a secret file is created, a user's mistake or intentional encryption may occur.

둘째, 문서작성 프로그램, 회계처리 프로그램, 기타 응용 프로그램에서 파일을 읽거나 변경하는 등의 처리를 하는 경우에 불가피하게 파일 단위로 전체를 복호화한 후, 저장하여 처리할 수밖에 없기 때문에, 비밀 수준의 파일이 평문 형태로보조기억 장치에 저장되어 존치되는 경우가 많았다.Second, in case of reading or modifying a file in a document writing program, accounting processing program or other application program, it is inevitable to decrypt the whole file and store and process it. This form of plain text was often stored and maintained in an auxiliary memory device.

셋째, 처리 속도의 측면에서 커널모드에서의 암호화 및 복호화에 비하여 늦다.Third, in terms of processing speed, it is slower than encryption and decryption in kernel mode.

넷째, 암호화 및 복호화를 위한 키 관리를 위한 별도의 키 관리 방법이 제공되어야 한다.Fourth, a separate key management method for key management for encryption and decryption should be provided.

결론적으로, 사용자 모드에서의 암호화 및 복호화는 사용자에게 번거로움을 주며, OS의 비효율성과 비밀 수준의 파일 처리에 있어 보안상의 취약성을 내재하고 있다.In conclusion, encryption and decryption in the user mode are cumbersome for the user, and inherent in security inefficiencies of the OS inefficiency and the secret level file processing.

따라서, 본 발명이 이루고자 하는 기술적 과제는, 유닉스 계열의 OS에서 사용자 프로세스가 파일을 쓰고자 할 때 OS의 커널모드에서 자동적으로 파일을 암호화하여 저장하고, 암호화된 파일을 읽고자 할 때는 커널모드에서 파일 전체 또는 필요한 크기만큼의 데이터를 자동으로 복호화할 수 있는 방법을 제공하는 것이다.Therefore, the technical problem to be achieved by the present invention is to automatically encrypt and store a file in the kernel mode of the OS when a user process tries to write a file in a Unix-like OS, and in kernel mode to read the encrypted file. It is to provide a method to automatically decrypt the entire file or the required size of data.

본 발명이 이루고자 하는 다른 기술적 과제는, 보안 등급을 가지는 파일은 사용자의 실수로 인한 암호화 처리의 누락됨이 없이, 원천적으로 사용자의 암호화 지정과 무관하게 자동적이며 강제적으로 커널 내에 존재하는 시스템 보안 관리자의키에 의해 암호화 및 복호화를 수행할 수 있는 방법을 제공함에 있다.Another technical problem to be solved by the present invention is that a file having a security level is automatically and compulsorily existing in the kernel automatically and compulsorily regardless of the user's encryption specification without missing the encryption process due to a user's mistake. The present invention provides a method for performing encryption and decryption by a key.

본 발명이 이루고자 하는 또 다른 기술적 과제는, 문서작성 프로그램, 회계처리 프로그램 등에서 요구하는 파일 내용의 부분적 암호화 및 복호화가 가능하여 전체 파일 단위의 복호화가 불필요한 개선된 암호화 및 복호화 방법을 제공하는 것이다.Another technical problem to be solved by the present invention is to provide an improved encryption and decryption method capable of partial encryption and decryption of file contents required by a document creation program, an accounting program, and the like, which does not require decryption of the entire file unit.

본 발명이 이루고자 하는 또 다른 기술적 과제는, 파일의 암호화 및 복호화 시 사용자가 암호화 및 복호화 키를 부여하는 방식이 아닌, 시스템에 이식된 키를 사용하는 방식으로 파일 암호화 및 복호화의 고속 처리를 달성하는 것이다.Another technical problem to be solved by the present invention is to achieve a high-speed processing of file encryption and decryption by using a key implanted in a system, rather than by a user granting an encryption and decryption key when encrypting and decrypting a file. will be.

본 발명이 이루고자 하는 또 다른 기술적 과제는, 본 발명에서 제공되는 파일 복호화 방법을 이용한 변경된 파일포인터 이동 시스템 호출 방법을 제공하는 것이다.Another technical problem to be achieved by the present invention is to provide a modified file pointer movement system calling method using the file decryption method provided in the present invention.

본 발명이 이루고자 하는 또 다른 기술적 과제는, 본 발명에서 제공되는 방법들을 프로그램화하여 이를 수록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것이다.Another object of the present invention is to provide a computer-readable recording medium in which the methods provided by the present invention are programmed and recorded.

도1은 본 발명이 적용되는 유닉스 계열 OS의 커널에 대한 파일 시스템을 개략적으로 도시한 구성도이다.1 is a block diagram schematically illustrating a file system for a kernel of a UNIX-based OS to which the present invention is applied.

도2a는 본 발명에 따른 커널모드의 쓰기 시스템 호출(sys_write) 과정을 개략적으로 나타낸 흐름도이다.2A is a flowchart schematically illustrating a kernel system write system call (sys_write) process according to the present invention.

도2b는 본 발명에 따라 암호화된 48 바이트의 파일을 복호화한 예를 도시한 것이다.2B shows an example of decrypting a file of 48 bytes encrypted according to the present invention.

도2c는 본 발명에 따라 40 바이트를 암호화하여 메모리에 구성한 연결리스트 예를 도시한 것이다.Fig. 2C shows an example of a connection list in which 40 bytes are encrypted and constructed in a memory according to the present invention.

도2d는 현재 파일포인터가 제1블록의 13번째 바이트 자리에 있을 때 본 발명에 따라 40 바이트 쓰기 작업을 할 경우를 도시한 것이다.FIG. 2D illustrates a case of performing a 40-byte write operation according to the present invention when the current file pointer is in the 13th byte position of the first block.

도3a는 본 발명에 따른 커널모드의 읽기 시스템 호출(sys_read) 과정을 개략적으로 나타낸 흐름도이다.3A is a flowchart schematically illustrating a kernel system read system call (sys_read) process according to the present invention.

도3b는 본 발명에 따라 암호화된 48 바이트의 파일을 복호화하여 도시한 것이다.Figure 3B shows a decrypted 48-byte file encrypted in accordance with the present invention.

도3c는 현재 파일포인터가 제1블록의 13번째 바이트 자리에 있을 때 본 발명에 따라 20 바이트 읽기 요청이 있을 경우 유효 데이터를 표시한 것이다.3c shows valid data when there is a 20 byte read request according to the present invention when the current file pointer is in the 13 th byte position of the first block.

도3d는 본 발명에 따라 20 바이트를 복호화하여 메모리에 구성한 연결리스트를 도시한 것이다.Figure 3d shows a concatenated list constructed in memory by decoding 20 bytes according to the present invention.

도3e는 사용자 프로세스로 복귀될 버퍼의 내용을 도시한 것이다.Figure 3e shows the contents of the buffer to be returned to the user process.

도3f는 읽기 시스템 호출이 일어난 후부터 본 발명에 따라 이루어진 파일포인터 이동의 예를 도시한 것이다.Figure 3f shows an example of file pointer movement made in accordance with the present invention after a read system call has taken place.

도4a는 본 발명에 따른 커널모드의 파일포인터 이동 시스템 호출(sys_lseek) 과정을 개략적으로 나타낸 흐름도이다.4A is a flowchart schematically illustrating a process of calling a file pointer movement system in a kernel mode (sys_lseek) according to the present invention.

도4b는 +offset의 경우 본 발명에 따른 파일포인터 이동 예를 도시한 것이다.4B illustrates an example of moving the file pointer according to the present invention in the case of + offset.

도4c는 -offset의 경우 본 발명에 따른 파일포인터 이동 예를 도시한 것이다.Figure 4c shows an example of moving the file pointer according to the present invention in the case of -offset.

도4d는 ±offset의 경우 본 발명에 따라 파일포인터를 이동하면서 블록 단위 읽기와 복호화를 한 후 메모리에 구성한 연결리스트의 예를 도시한 것이다.4D illustrates an example of a connection list configured in a memory after reading and decoding in units of blocks while moving a file pointer in the case of ± offset.

상기 기술적 과제를 달성하기 위한 본 발명에 따른 커널모드에서 파일을 자동으로 암호화하는 방법은, 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 데이터를 유닉스 계열 OS의 커널모드에서 자동으로 암호화하는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함한다.A method for automatically encrypting a file in kernel mode according to the present invention for achieving the above technical problem includes a first area in which data is actually stored and a second area in which the number of data contained in the first area is stored. A method of automatically encrypting data newly requested from a user process in a kernel unit of a 1 byte size in kernel mode of a Unix-like OS, and includes the following steps.

먼저, (a) 시스템에 로그인 한 사용자의 프로세스가 커널로 버퍼에 저장된 제2바이트 만큼의 데이터를 기억장치에 쓰라는 쓰기 시스템 호출을 한다. 이어서, (b) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출한다. 그런 다음, (c) 상기 (b)단계에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 소정의 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성한다. 그리고 나서, (d) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓴다.First, (a) the process of the user logging into the system makes a write system call to the kernel to write the second byte of data stored in the buffer to storage. Subsequently, (b) the number of blocks necessary for encrypting the data of the second byte is calculated in consideration of the second byte and the number of bytes constituting the first region. Then, (c) for each of the blocks calculated in step (b), copy the data requested for writing in the first area into the buffer as needed, and the number of data contained in the first area in the second area. Next, the data stored in the first area and the second area is encrypted by the first byte unit using a predetermined encryption algorithm, and a connection list of the corresponding block is constructed in the memory. Then, (d) write a connection list for each block configured in the memory to the storage device.

본 발명에 있어서, 상기 (c)단계를 진행하기 전에 현재 파일포인터의 위치가 블록의 처음인지를 검사하고 그 결과에 따라 파일포인터의 위치를 블록의 처음으로 이동시키는 단계를 더 포함할 수 있다.In the present invention, before proceeding with the step (c), the method may further include checking whether the position of the current file pointer is the beginning of the block and moving the position of the file pointer to the beginning of the block according to the result.

본 발명에 있어서, 상기 제2영역은 상기 제1영역에 수록된 유효 데이터수를 수록하기 위해 사용되는 영역으로, 상기 블록 내의 소정 영역일 수 있다. 예를 들어, 상기 제2영역은 상기 블록의 첫 번째 바이트 자리 또는 마지막 바이트 자리일 수 있다.In the present invention, the second area is an area used for recording the number of valid data recorded in the first area, and may be a predetermined area in the block. For example, the second region may be the first byte position or the last byte position of the block.

본 발명에 있어서, 상기 (b)단계의 암호화될 블록 수는, 상기 제1영역을 구성하는 바이트 수로 상기 제2바이트를 나누고 그 정수 몫에 1을 더하는 방식으로 산출될 수 있다.In the present invention, the number of blocks to be encrypted in the step (b) may be calculated by dividing the second byte by the number of bytes constituting the first area and adding 1 to the integer quotient.

본 발명에 있어서, 상기 (d)단계를 진행한 이후에, 암호화된 파일의 i-node의 예약된 필드에 할당된 보안 등급 필드에 암호화 마킹을 수행하는 단계를 더 포함할 수 있다.In the present invention, after the step (d), the method may further include performing an encryption marking on the security level field assigned to the reserved field of the i-node of the encrypted file.

본 발명에 있어서, 상기 (c)단계에서 사용되는 암호화 알고리즘은 블록 암호화 알고리즘일 수 있다. 상기 블록 암호화 알고리즘에서 사용되는 암호화키는 커널을 컴파일하여 생성할 때 커널 이미지에 이식된 키일 수 있다. 상기 암호화키는 사용자로 하여금 키 생성을 위한 고유 문자열을 정하게 하고, 상기 고유 문자열을 소정의 암호화 알고리즘을 이용하여 소정의 비트로 암호화한 씨드(seed) 암호화키일 수 있다. 상기 씨드 암호화키는 쓰기 시스템 호출이 있을 때마다, 파일마다 i-node에 가지는 파일 고유 정보를 암호화키로 하여 재 암호화된 다음, 상기 (c)단계의 블록 암호화 알고리즘에서 암호화키로 사용될 수 있다.In the present invention, the encryption algorithm used in step (c) may be a block encryption algorithm. The encryption key used in the block encryption algorithm may be a key transplanted into a kernel image when the kernel is compiled and generated. The encryption key may be a seed encryption key that allows a user to define a unique string for key generation, and encrypts the unique string with a predetermined bit using a predetermined encryption algorithm. The seed encryption key may be used as an encryption key in the block encryption algorithm of step (c) whenever the write system call is re-encrypted using the file-specific information included in the i-node as an encryption key for each file.

본 발명에 있어서, 상기 (a) 단계를 진행하기 전에, 사용자가 유닉스 시스템에 로그인할 때 보안 등급 정보를 포함하는 사용자 정보를 입력하게 하고 사용자를 시스템에서 인증하는 단계; 및 상기한 인증이 완료되면 사용자 프로세스의 태스크 구조체에 할당된 소정 비트수의 보안 등급 필드에 사용자의 보안 등급 정보를 수록하는 단계를 더 포함할 수 있다.In the present invention, before proceeding to the step (a), allowing a user to input user information including security level information when the user logs in to the Unix system and authenticating the user in the system; And when the authentication is completed, recording security level information of the user in a security level field of a predetermined number of bits allocated to the task structure of the user process.

본 발명에 있어서, 상기 (b) 단계를 진행하기 전에, 상기 태스크 구조체의 보안 등급 필드에 보안 등급 정보가 수록되어 있는지를 확인하여 쓰기 요청된 데이터를 암호화해야 할 대상으로 결정하는 단계를 더 포함할 수 있다. 그리고, 상기 (d)단계를 진행한 후에, 상기 데이터가 암호화되어 저장된 파일의 i-node의 예약 필드에 할당된 보안 등급 필드에 프로세스의 태스크 구조체에 수록된 사용자의 보안 등급을 복사하여 수록하는 단계를 더 포함할 수 있다.In the present invention, before proceeding to the step (b), further comprising the step of determining whether the security level information is included in the security level field of the task structure to determine whether the write request data to be encrypted; Can be. After the step (d), the step of copying and storing the security level of the user included in the task structure of the process into the security level field allocated to the reserved field of the i-node of the file in which the data is encrypted and stored. It may further include.

상기 다른 기술적 과제를 달성하기 위한 본 발명에 따른 커널모드에서의 파일 자동 복호화 방법은, 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트 만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.In the kernel mode decryption method according to the present invention for achieving the above another technical problem, by using a block encryption algorithm, as much as the second byte of data in the file is encrypted data for each block having a size of the first byte When there is a system call to read, the method is to automatically decode the data block by block in the kernel mode of the Unix-like OS, and may include the following steps. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted.

먼저, 시스템에 로그인 한 사용자의 프로세스가 커널로 상기 블록 암호화된 파일에서 현재 파일포인터를 기준으로 제2바이트 만큼을 읽어 버퍼에 저장하라는 읽기 시스템 호출을 한다. 그런 다음, 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정한다. 이어서, 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속한다. 그리고 나서, 메모리에 구성된 상기 연결리스트를 상기 버퍼에 복사한다.First, a process of a user logged in to the system makes a read system call to read a second byte of the block encrypted file based on the current file pointer and store it in a buffer. The file pointer is then repositioned to the beginning of the block relative to the read system call. Subsequently copying the block to memory from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in the memory with reference to the number of valid data contained in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte read requested. . Then, copy the connection list configured in the memory into the buffer.

상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 파일포인터 이동 방법은, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.In accordance with another aspect of the present invention, there is provided a method of moving a file pointer, wherein a file pointer is moved from a predetermined byte position in a file in which data is encrypted for each block having a size of a first byte by a block encryption algorithm. When the user process the system call command to move the second byte in the direction of, the file pointer is moved while automatically decoding the data block by block in the kernel mode of the Unix-like OS. It may include. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted.

먼저, 시스템에 로그인 한 사용자의 프로세스가 상기 블록 암호화된 파일 내의 소정 바이트 자리로부터 제2바이트만큼 파일포인터를 양의 방향으로 이동시키라는 파일포인터 이동 시스템 호출을 한다. 그런 다음, 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정한다. 이어서, 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킨다. 그리고 나서, 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속한다. 그 이후에, 메모리에 구성된 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킨다.First, a process of a user logged into the system makes a file pointer move system call to move the file pointer in a positive direction by a second byte from a predetermined byte position in the block encrypted file. Then, the position of the current file pointer is adjusted to the predetermined byte position. Then, it is checked whether the position of the adjusted file pointer is the first position of the block, and accordingly, the position of the file pointer is moved to the beginning of the block. Then copy the block into memory from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in the memory with reference to the number of valid data contained in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte. After that, the number of bytes that the file pointer should actually move is calculated by using the connection list configured in the memory, and the file pointer is actually moved based on the calculated result.

상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 파일포인터 이동방법은 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로, 다음과 같은 단계들의 진행을 포함할 수 있다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다.According to another aspect of the present invention, there is provided a method of moving a file pointer, in which a file pointer is negative from a predetermined byte position in a file in which data is encrypted for each block having a size of a first byte by a block encryption algorithm. When the user process the system call command to move the second byte in the direction, the file pointer is moved while automatically decoding the data block by block in the kernel mode of the Unix-like OS. It may include. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted.

먼저, 시스템에 로그인 한 사용자의 프로세스가 상기 블록 암호화된 파일 내의 소정 바이트 자리로부터 제2바이트만큼 파일포인터를 음의 방향으로 이동시키라는 파일포인터 이동 시스템 호출을 한다. 그런 다음, 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정한다. 그리고 나서, 조정된 상기 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킨다. 이어서, 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속한다. 그 이후에, 메모리에 구성된 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킨다.First, a process of a user logged into the system makes a file pointer move system call to move the file pointer in the negative direction by a second byte from a predetermined byte position in the block encrypted file. Then, the position of the current file pointer is adjusted to the predetermined byte position. Then, it checks whether the adjusted position of the file pointer is the first position of the block, and moves the position of the file pointer to the beginning of the block according to the result. Then copy the block to memory in order from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a concatenation list structure in a memory with reference to the number of valid data contained in the second region of the decoded block; And moving the position of the file pointer by -2 times the block size until the number of valid data accumulated in the linked list coincides with the second byte. After that, the number of bytes that the file pointer should actually move is calculated by using the connection list configured in the memory, and the file pointer is actually moved based on the calculated result.

상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 유효 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트 만큼의 데이터를 유닉스계열 OS의 커널모드에서 자동으로 암호화할 수 있도록 하는 프로그램이 수록된 기록매체로, (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트 만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출할 수 있게 하는 프로그램 모듈; (b) 상기 (a) 프로그램 모듈에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 블록 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성할 수 있게 하는 프로그램 모듈; (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓸 수 있도록 하는 프로그램 모듈을 포함할 수 있다.According to another aspect of the present invention, there is provided a computer-readable recording medium including a first area in which data is actually stored and a second area in which the number of valid data contained in the first area is stored. A recording medium containing a program for automatically encrypting, in a kernel mode of a Unix-like OS, data of a second byte newly requested to be written from a user process in a block unit of a first byte size. A program module configured to calculate a number of blocks necessary for encrypting data equal to the second byte in consideration of bytes and number of bytes constituting the first region; (b) For each of the blocks calculated by the program module, copy the data requested for writing in the first area as necessary in the buffer transferred from the user process, and store the data in the first area in the second area. A program module for storing the number of data, and then encrypting the data contained in the first area and the second area by the first byte unit using a block encryption algorithm and configuring a connection list of the corresponding block in a memory; (c) a program module for writing a connection list for each block configured in the memory to a storage device.

상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화할 수 있는 프로그램이 수록된 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정할 수 있도록 하는 프로그램 모듈; (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (c) 상기 (b) 프로그램 모듈을 통하여 얻은 연결리스트를 상기 버퍼에 복사할 수 있게 하는 프로그램 모듈을 포함할 수 있다.According to another aspect of the present invention, a computer-readable recording medium according to the present invention uses a block encryption algorithm for data of a second byte in a file in which data is encrypted for each block having a size of a first byte. This is a recording medium that contains a program that can automatically decode data block by block in the kernel mode of Unix-like operating systems when there is a system call to read. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted. The recording medium may include: (a) a program module for adjusting the position of the file pointer with respect to the beginning of the block based on when the read system call is made; (b) copying the block to memory from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in the memory with reference to the number of valid data stored in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte read requested. Program modules; (c) a program module for copying the connection list obtained through the program module (b) to the buffer.

상기 또 다른 기술적 과제를 달성하기 위한 본 발명에 따른 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈; (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈; (c) 상기 (b)프로그램 모듈의 수행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함할 수 있다.According to another aspect of the present invention, a computer-readable recording medium includes a file from a predetermined byte position in a file in which data is encrypted for each block having a size of a first byte by a block encryption algorithm. When a user process executes a system call command to move the pointer by the second byte in the positive direction, the program contains a program that allows the file pointer to be moved while automatically decoding the data block by block in the kernel mode of the Unix-like OS. Readable recording medium. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted. The recording medium may include: (a) a program module for adjusting a position of a current file pointer to the predetermined byte position; (b) a program module for checking whether the position of the file pointer adjusted through the program module is the first position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) copying the block into memory from the block in which the file pointer is located after the execution of the program module; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in a memory with reference to the number of valid data stored in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte. module; (d) a program module for calculating the number of bytes that the file pointer should actually move using the connection list obtained through the program module (c), and allowing the file pointer to actually move based on the calculated result. Can be.

상기 또 다른 기술적 과제를 달성하기 위한 컴퓨터로 읽을 수 있는 기록매체는, 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 영역으로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 기록매체이다. 여기에서, 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함한다. 상기한 기록매체는, (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈; (b) 상기 (b)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈; (c) 상기 (b)프로그램 모듈의 수행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함할 수 있다.A computer-readable recording medium for achieving the another technical problem is to record a file pointer from a predetermined byte area in a file in which data is encrypted for each block having a size of a first byte by a block encryption algorithm. When a user process executes a system call command for shifting a second byte in the direction, the program includes a program that enables a file pointer to be moved while automatically decoding data block by block in the kernel mode of a Unix-like OS. Here, the block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted. The recording medium may include: (a) a program module for adjusting a position of a current file pointer to the predetermined byte position; (b) a program module for checking whether the position of the file pointer adjusted through the program module is the initial position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) copying the block into memory from the block in which the file pointer is located after the execution of the program module; Block decryption using an encryption key used to encrypt the file; And a concatenation list structure in a memory with reference to the number of valid data contained in the second region of the decoded block; And a program module for moving the position of the file pointer by -2 times the block size until the number of valid data accumulated in the linked list matches the second byte. (d) a program module for calculating the number of bytes that the file pointer should actually move using the connection list obtained through the program module (c), and allowing the file pointer to actually move based on the calculated result. Can be.

이하에서는 보안이 필요한 파일을 위주로 본 발명에 따른 커널모드에서의 파일 자동 암호화 및 복호화 방법과, 이를 이용한 파일포인터 이동 방법에 대한 바람직한 실시예를 첨부한 도면을 참조하여 상세하게 설명한다. 그러나, 이하에서 설명되는 본 발명의 바람직한 실시예는 본 발명의 기술적 범위를 한정하려는 것은 아니며 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 명확하고 용이하게 설명하려고 하는 것이다. 특히, 본 발명은 보안 등급이 부여된 파일 뿐만 아니라, 일반 파일에 대해서도 적용가능하다. 이러한 경우, 사용자가 시스템 로그인 시 자신의 보안 등급을 입력하는 단계, 사용자가 입력한 보안 등급에 대한 인증 단계; 사용자 프로세스의 보안 등급을 검사하는 단계; 파일의 i-node에 보안 등급이 수록되어 있는지 검사하는 단계 등 시스템 사용자가 보안 등급을 가지고 있기 때문에 파생되는 단계들은 생략 가능하다. 도면 상에서 동일한 도면부호는 동일한 요소를 지칭한다.Hereinafter, a method for automatically encrypting and decrypting a file in kernel mode and a method of moving a file pointer using the same will be described in detail with reference to the accompanying drawings. However, the preferred embodiments of the present invention described below are not intended to limit the technical scope of the present invention, but are intended to more clearly and easily describe the present invention to those skilled in the art. In particular, the present invention is applicable to general files as well as files to which a security level has been granted. In this case, the user inputs his security level when logging in to the system, and authenticating the security level entered by the user; Checking the security level of the user process; Derived steps can be omitted because the system user has the security level, such as checking whether the file contains i-nodes. Like reference numerals in the drawings refer to like elements.

도1은 유닉스 계열의 OS에서 기억 장치에 데이터를 쓰고 읽는 과정과, 포인터를 이동시키는 과정을 설명하기 위해, 유닉스 OS의 구성요소를 파일 시스템을 중심으로 하여 개략적으로 도시한 것이다.FIG. 1 schematically illustrates the components of a Unix OS centered on a file system in order to explain a process of writing and reading data to and from a memory device and moving a pointer in a Unix-like 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에 데이터를 쓰거나, 읽거나, 포인터의 위치를 이동시키게 된다.Referring to FIG. 1, when a process 10 of a general user application wants to create a new file or modify data in an existing file in a user mode, a write call (for example, a system call of a UNIX-based OS) is performed. , sys_read: 20, read calls (e.g., sys_write: 30), pointer move calls (e.g., sys_lseek: 40) are supported by the ext2 (virtual file system (VFS): 50) via the system library. 60), through the file system (I) such as msdos (70), minix (80), proc (100). Here, the process 10 refers to all document creation programs, file processing programs, accounting processing programs, and the like that read and write files in the storage device 100. The system calls 20, 30, and 40 are executed by the buffer cache 110 in the file system I constituting the kernel mode, and the storage device 100, such as a hard disk, diskette or This will write data to the CD-ROM, read it, or move the pointer.

본 발명에서는 보안이 필요한 데이터를 기억장치에 쓰거나 읽을 때 블록 암호화 알고리즘을 이용하여 상기한 3개의 시스템 호출 수행 과정을 커널모드에서 변경(이에 대해서는 후술하기로 함)함으로써, 데이터에 대한 암호화 또는 복호화 수행여부를 사용자가 실질적으로 느끼지 못하게 자동적이며 강제적으로 데이터를 암호화하고 복호화하게 된다.In the present invention, when writing or reading data requiring security to a storage device, the above three system call execution processes are changed in kernel mode using a block encryption algorithm (to be described later), thereby encrypting or decrypting data. Automatically and forcibly encrypts and decrypts data so that users do not actually feel it.

상기한 블록 암호화 알고리즘으로는 SEED, DES, 3-DES 등과 같은 대칭키 블록 암호화 알고리즘이 사용될 수도 있고, RSA와 같은 비대칭키 블록 암호화 알고리즘이 사용될 수도 있다. 본 발명의 실시 예에서는 SEED 대칭키 블록 암호화 알고리즘이 채용되며, 암호화키의 비트수는 128이다.As the block encryption algorithm, a symmetric key block encryption algorithm such as SEED, DES, or 3-DES may be used, or an asymmetric key block encryption algorithm such as RSA may be used. In an embodiment of the present invention, the SEED symmetric key block encryption algorithm is employed, and the number of bits of the encryption key is 128.

한편, 블록 암호화 알고리즘을 이용하여 본 발명에 따라 데이터를 암호화하고 복호화하기 위해서는 소정의 키가 필요한데, 본 발명의 바람직한 실시예에서는 커널을 컴파일하여 생성(generation)할 때 커널 이미지에 키를 이식시켜 놓고 이를 이용하는 방식을 채용한다. 구체적으로, 시스템 보안 관리자는 유닉스 계열 OS의 사용자마다 서로 다른 고유의 키를 생성하기 위해, 사용자로 하여금 고유의 키 생성용 문자열을 정하게 한다. 그런 다음, 상기한 키 생성용 문자열을 소정의 비트수, 예컨대 128 비트의 키를 생성할 수 있는 해쉬(Hash) 알고리즘과 같은 암호화 알고리즘, 예컨대 MD5(Message Digest 5)를 이용하여 128비트의 씨드 암호화키를 생성한다. 그런 다음, 상기 씨드 암호화키를 유닉스 시스템의 커널을 컴파일할 때 커널 이미지 내에 이식시킨다. 이처럼, 씨드 암호화키를 커널 이미지에 이식시켜 놓으면, 시스템 부팅시 커널 이미지를 로딩할 때마다 씨드 암호화키도 함께 로딩되어 커널 내에 상주하게 된다. 이 때, 씨드 암호화키는 스마트 카드에 수록한 다음, 커널을 컴파일하여 생성할 때 스마트 카드를 이용하여 시스템에 입력하는 방식을 채용하는 것이 바람직하다.Meanwhile, in order to encrypt and decrypt data according to the present invention using a block encryption algorithm, a predetermined key is required. In a preferred embodiment of the present invention, a key is inserted into a kernel image when the kernel is compiled and generated. Adopt a method of using this. Specifically, the system security manager allows a user to define a unique key generation string in order to generate a unique key that is different for each user of the Unix-like OS. The key generation string is then encrypted using a cryptographic algorithm such as a hash algorithm capable of generating a predetermined number of bits, for example, a 128-bit key, for example, 128 bit seed encryption using MD5 (Message Digest 5). Create a key. The seed encryption key is then ported into a kernel image when compiling the kernel of a Unix system. In this way, if the seed encryption key is ported to the kernel image, the seed encryption key is loaded and resides in the kernel whenever the kernel image is loaded at system boot. In this case, the seed encryption key may be stored in the smart card, and then a method of inputting the seed encryption key into the system using the smart card when compiling and generating the kernel may be adopted.

본 발명에서는 유닉스 OS의 커널 이미지 내에 이식된 씨드 암호화키를 보안등급의 파일을 커널 레벨에서 자동으로 암호화하고 복호화할 때 사용하는데, 이에 대해서는 본 발명의 바람직한 실시예를 설명하면서 이후에 상세하게 설명하기로 한다.In the present invention, a seed encryption key implanted in a kernel image of a Unix OS is used to automatically encrypt and decrypt a security level file at the kernel level. This will be described in detail later with reference to a preferred embodiment of the present invention. Shall be.

이하에서는 커널모드에서 보안이 필요한 데이터를 사용자의 의사와는 상관없이 자동으로 암호화하고 복호화하는 방법과 암호화된 파일 내에서 지정된 수만큼 포인터를 이동시키는 방법을 순차적으로 설명하기로 한다. 그런데, 이하에서 설명되는 실시예에서 블록 암호화 알고리즘을 이용하여 데이터를 처리함에 있어서는 블록의 크기를 16바이트로 한정하여 설명한다. 하지만, 블록의 크기가 16바이트에 한정되지 않는다는 것은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 당연하다. 예를 들어, 암호화 또는 복호화가 시도되는 블록의 크기는 필요에 따라 8바이트로 설정할 수도 있다.Hereinafter, a method of automatically encrypting and decrypting data requiring security in kernel mode regardless of a user's intention, and a method of moving pointers by a specified number in an encrypted file will be described sequentially. However, in the embodiments described below, the block size is limited to 16 bytes when processing data using the block encryption algorithm. However, it is natural to those skilled in the art that the block size is not limited to 16 bytes. For example, the size of a block to be encrypted or decrypted may be set to 8 bytes as necessary.

<커널모드에서 데이터를 자동으로 블록 암호화하여 기억장치에 저장하는 방법><How to automatically encrypt data in the kernel mode and save it to the storage device>

도2a는 본 발명의 기술적 사상이 적용된 유닉스 계열 OS에서 쓰기 시스템 호출(예컨대, sys_write:S1단계)이 있을 때, 커널모드에서 일어나는 일련의 과정을 보여주는 흐름도이다. 여기에서, sys_write(S1단계)는 사용자 모드의 프로세스가 커널에 쓰기 기능 서비스를 요청할 때 사용되는 커널 함수로 쓰기 시스템 호출로 통칭하기로 한다.FIG. 2A is a flowchart illustrating a series of processes occurring in kernel mode when there is a write system call (eg, sys_write: S1) in a UNIX-based OS to which the inventive concept is applied. Here, sys_write (step S1) is a kernel function used when a user mode process requests a write function service from the kernel.

도2a를 참조하면, 사용자 프로세스에서 write, fwrite, fprintf, putw 등의 라이브러리 함수를 통하여 쓰기 시스템 호출을 하게 되면 커널은 사용자의 프로세스가 요청한 작업을 수행하게 된다. 예를 들어, write(fd, buf, 40)는 버퍼(Buffer)에 기억되어 있는 데이터의 40 바이트 만큼을 파일 디스크립터 fd로 지정하는 파일에 쓰기를 실행하라는 예이다. 상기와 같은 쓰기 시스템 호출이 있으면, 먼저 파일 정보를 얻기 위해 파일 디스크립터를 이용하여 파일의 i-node를 구하고, i-node를 연산하여 시스템 호출이 쓰기 모드인지, 쓰고자하는 기억 장치는 무엇인지, 기억 장치의 파일 시스템은 무엇을 사용하는지 등을 판단한다.Referring to FIG. 2A, when a write system call is made through a library function such as write, fwrite, fprintf, and putw in a user process, the kernel performs a task requested by the user process. For example, write (fd, buf, 40) is an example of writing to a file which specifies as many as 40 bytes of data stored in the buffer as the file descriptor fd. If there is a write system call as described above, first obtain an i-node of the file using a file descriptor to obtain file information, and calculate the i-node to determine whether the system call is in write mode or what storage device to write to. The file system of the storage device determines what to use.

그런 다음, 기억장치에 쓰여질 데이터가 암호화 대상인지의 여부를 결정(S2단계)하게 된다. 본 발명에 따라 수정된 쓰기 시스템 호출의 수행에서는, 쓰고자 하는 데이터가 암호화 대상(S2단계)인지의 여부를 판단할 때 사용자의 선택적 의지에 의존하는 것이 아니라 사용자 프로세스가 보안등급을 가지고 있느냐의 여부에 따라 커널모드에서 강제적으로 결정된다. 이를 위해 본 발명에서는 사용자 프로세스의 태스크 구조체에 소정 비트수를 가진 보안 등급 필드를 추가로 할당한다. 그런 다음, 상기 보안 등급 필드에 사용자의 보안 등급을 소정의 방법으로 수록하고, 데이터의 암호화 여부를 판단할 때에는 상기 보안 등급 필드에 보안 등급이 수록되어 있는 지의 여부에 따라 커널모드에서 강제적으로 통제할 수 있도록 한다. 예를 들어, 사용자 프로세스의 태스크 구조체에 32비트 크기를 가진 보안 등급 필드를 추가로 할당하고 이 중 일부, 예컨대 8비트 만큼을 보안 등급 수록부로 설정하면 총 256개 만큼의 보안 등급을 수록할 수 있다. 보안 등급 필드에 사용자 프로세스의 보안 등급을 수록하기 위한 방법으로는, 시스템 로그인 시 보안 등급을 포함하는 사용자 정보를 직접 입력 방식 또는 스마트 카드와 같은 간접 입력 방식을 통해 사용자로부터 입력받는 방법을 들 수 있다. 사용자로부터 입력받은 보안 등급 정보는 시스템 내에 미리 마련된 보안 등급 데이터베이스에 기초한 인증 단계에서 인증된 후, 사용자 프로세스의 태스크 구조체에 할당된 보안 등급 필드에 수록되게 된다.Then, it is determined whether or not the data to be written to the storage device is the encryption target (step S2). In the execution of the modified write system call according to the present invention, whether or not the user process has a security level rather than relying on the user's selective will when determining whether the data to be written is an encryption target (step S2). This is enforced in kernel mode. To this end, the present invention further allocates a security level field having a predetermined number of bits to the task structure of the user process. Then, the security level of the user is recorded in the security level field in a predetermined manner, and when determining whether to encrypt the data, the security level is forcibly controlled in kernel mode depending on whether the security level is included in the security level field. To be able. For example, if you assign an additional 32-bit security level field to the task structure of a user process, and set some of them, for example, 8 bits, as the security level payer, a total of 256 security levels can be included. . As a method for recording the security level of the user process in the security level field, a method of receiving user information including the security level at the system login may be input from the user through a direct input method or an indirect input method such as a smart card. . The security level information received from the user is authenticated in the authentication step based on the security level database prepared in the system, and then is stored in the security level field assigned to the task structure of the user process.

상기한 바와 같이, 보안 등급 수록부를 1비트 이상 설정하면 보안 등급을 2개 이상 수록할 수 있다. 하지만, 커널모드에서 데이터가 암호화되어야 하는 지에 대한 여부는 보안 등급의 종류와는 상관없이 보안 등급의 존부에 따라 판단되게 된다.As described above, two or more security levels can be recorded by setting one or more bits. However, whether or not data should be encrypted in kernel mode is determined according to the security level regardless of the security level.

구체적으로, 쓰기 요청을 한 프로세스의 태스크 구조체에 할당되어 있는 보안등급 필드를 비트 연산하여 프로세스의 보안 등급을 구한다. 만약, 쓰기 요청을 한 프로세스의 보안 등급이 없으면 쓰기 요청된 데이터를 일반 데이터로 분류하여 현재의 파일포인터를 기준으로 쓰고자 하는 부분을 락킹(locking)한다. 그런 다음, 사용자 프로세스로부터 전달된 버퍼의 내용을 요구한 수 만큼 파일 디스크립터 fd로 지정하는 파일에 쓴다(S3단계). 그리고 나서, 시스템 호출에서 리턴(return)하면 사용자 프로세스로 복귀(S4단계)한다. 만약, 상기한 보안 등급 필드를 비트 연산한 결과, 쓰기 요청을 한 프로세스의 보안등급이 존재하면 본 발명에 따른 블록 암호화 루틴으로 분기하게 되는데, 분기 이후의 과정은 아래와 같다.In detail, the security level of the process is obtained by bitwise computing the security level field allocated to the task structure of the process that has made the write request. If there is no security level of the process that made the write request, the write request data is classified as general data and the part to be written based on the current file pointer is locked. Then, the contents of the buffer passed from the user process are written to the file designated by the file descriptor fd as many times as required (step S3). Then, returning from the system call returns to the user process (step S4). If, as a result of bitwise operation of the security level field, if there is a security level of the process that made the write request, the process branches to the block encryption routine according to the present invention.

본 발명에 따른 데이터 암호화 방법에서는, 블록 암호화 알고리즘을 이용하여 데이터를 커널모드에서 블록 단위로 자동으로 암호화하기 때문에 현재의 파일포인터가 블록의 시작점에 위치하는지를 점검(S5단계)해야 한다. 블록 암호화에 있어서, 블록의 기본 단위가 16바이트인 경우에 점검 방법은 파일포인터의 현재 위치에 해당하는 바이트 수를 16으로 나눠 그 나머지가 있으면 블록의 시작점이 아닌 것으로 판단한다. 만약, 파일포인터의 현재 위치가 블록의 시작점이 아닌 것으로 판단되면 블록의 시작점으로 파일포인터를 이동(S6단계)시킨다. 그런 다음, 파일포인터의 이동거리를 스택 변수에 저장한다.In the data encryption method according to the present invention, since the data is automatically encrypted in units of blocks in the kernel mode using a block encryption algorithm, it is necessary to check whether the current file pointer is located at the start of the block (step S5). In block encryption, when the basic unit of the block is 16 bytes, the checking method divides the number of bytes corresponding to the current position of the file pointer by 16, and determines that the remainder is not the starting point of the block. If it is determined that the current position of the file pointer is not the start point of the block, the file pointer is moved to the start point of the block (step S6). Then, we store the file pointer's movement distance in a stack variable.

한편, 커널모드에서 블록 단위로 데이터를 자동으로 암호화함에 있어서는, 블록 내의 특정 바이트 영역에 블록에 수록된 유효 데이터 수를 기록하여 두었다가 복호화시 이를 활용하는 것이 바람직하다. 따라서, 본 발명에 따른 바람직한 실시예에서는 블록의 기본 단위를 16바이트로 하고, 마지막 바이트를 유효 데이터 수에 대한 정보 기록 영역으로 설정한다. 물론, 이러한 경우 블록의 첫 번째 바이트, 또는 첫 번째 바이트와 열 여섯 번째 바이트 사이의 어느 바이트라도 유효 데이터 수 기록 영역으로 설정될 수 있다.Meanwhile, in automatically encrypting data in units of blocks in kernel mode, it is preferable to record the number of valid data contained in a block in a specific byte area of the block and use the same when decrypting the data. Therefore, in the preferred embodiment according to the present invention, the basic unit of the block is 16 bytes, and the last byte is set as the information recording area for the number of valid data. Of course, in this case, the first byte of the block, or any byte between the first byte and the sixteenth byte, can be set as the effective data number recording area.

도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)에서 허용되지 않는다.FIG. 2B shows a file in which data is to be written by a write system call from a user process for decryption (by automatic data decoding method in kernel mode according to the present invention. This will be described later). . Looking at the 16th byte positions of the first block (A), the second block (B), and the third block (C), 15, 7, and 11, which are valid data numbers of each block, are stored. The 8-15th byte position of the second block B; The 12th through 15th byte positions of the third block C are null, which is an area where no data is stored even if there is a write system call from the user process. In other words, since the valid data numbers of the second block (B) and the third block (C) are 7 and 11, respectively, the recording of data exceeding these numbers is allowed in the second block (B) and the third block (C). It doesn't work.

상기한 도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바이트로 블록 암호화된다.2A and 2B, a method of automatically encrypting data in kernel mode according to an embodiment of the present invention will be described in detail. At the time when a write system call from a user process is made, the current file pointer is assigned to the first block A. FIG. If the position is at the 13th byte position (12 is stored) of the), the file pointer is adjusted to the 1st byte position (0 is stored), and the moving distance 12 is stored in the stack variable (step S6). . In the present invention, since write-requested data is encrypted in blocks of 16 bytes, valid data of 15 or less based on a count transferred from a user process in consideration of the 16th byte position to record the number of valid data for each block. Obtain the number of blocks having a number (step S7). For example, if there is a 40 byte write system call from a user process and the file pointer is in the 13th byte position of the first block (A), a linked list formed in memory, for example, a doubly linked list. List) is a first block of valid data number 15 (A; data is added only to the 13-15th byte position); A second block B of seven valid data numbers; A third block C of which the valid data number is 11; A fourth block (not shown) having a valid data number of 15; Since the block structure is formed of a fifth block having an effective number of four (4), the number of blocks to be encrypted becomes five, and when the file is written to the storage device, the block is encrypted by 16, 16, 16, 16, 16 bytes. Stored. In the case of a newly created file, the linked list is 15, 15, or 10 bytes in the memory, and the block structure is formed. Therefore, the number of blocks to be encrypted becomes 3, and 16, 16, 16 when the file is written to the disk. Block encrypted in bytes.

데이터의 블록 암호화시 사용되는 암호화키는 전술한 바 있는 씨드 암호화키 자체가 될 수 있다. 하지만, 본 발명에서는 파일에 대한 보안을 더욱 강화하기 위해 상기한 씨드 암호화키를 바탕으로 암호화 대상 파일마다 서로 다른 고유의 암호화키를 다시 생성하여 사용한다. 이를 위해, 보안등급이 부여된 파일에 데이터를암호화하여 쓸 때에는 각 파일의 i-node를 참조하여 각 파일마다 유일한 값을 가지는 데이터, 예컨대 파일 최초 생성 시간 또는 파일마다 주어지는 파일의 고유 번호 등을 추출한다. 그런 다음, i-node에서 추출된 데이터를 사용하여 상기한 씨드 암호화키를 소정의 암호화 알고리즘, 예컨대 SEED 암호화 알고리즘을 이용하여 다시 한번 암호화함으로써 파일별 암호화키를 소정의 비트수, 예컨대 128비트로 다시 생성한다. 예를 들어, 사용자 패스워드, 사용자 비밀번호 등의 사용자 정보와 파일 번호 등의 파일 고유 정보를 포함하는 소정 바이트, 예컨대 16바이트 크기의 데이터를 형성하고 이를 사용하여 파일마다 씨드 암호화키를 재 암호화할 수 있다. 그리고 나서, 파일별 암호화키를 본 발명에 따라 블록별로 데이터를 암호화할 때 키로 사용하게 된다. 이처럼 보안등급이 부여된 개별 파일마다 서로 다른 암호화키를 사용하게 되면 보안을 더욱 강화시킬 수 있다.The encryption key used for block encryption of data may be the seed encryption key described above. However, in the present invention, in order to further strengthen the security of the file, a different unique encryption key is generated for each file to be encrypted based on the seed encryption key. To do this, when encrypting and writing data to a file with a security level, the data having a unique value for each file is extracted by referring to the i-node of each file, for example, the time at which the file is first created or the unique number of the file given to each file do. Then, using the data extracted from the i-node, the seed encryption key is once again encrypted using a predetermined encryption algorithm, for example, a SEED encryption algorithm, thereby regenerating the encryption key for each file to a predetermined number of bits, for example, 128 bits. do. For example, a predetermined byte, for example, 16 bytes of data including user information such as a user password, a user password, and file unique information such as a file number, may be formed and used to re-encrypt the seed encryption key for each file. . Then, the encryption key for each file is used as a key when encrypting data for each block according to the present invention. If you use different encryption key for each file with security level, you can enhance security.

상기와 같이 암호화될 블록 수를 산출(S7단계)한 다음, 사용자 프로세스로부터 전달받은 버퍼의 내용을 각 블록의 유효 데이터 수만큼을 복사 및 암호화하면서 각 블록에 대한 연결리스트를 메모리에 구성(S8단계)한다. 이 때, 각 블록에 대한 암호화는 시스템 부팅시 커널에 로딩된 암호화 알고리즘을 통하여 이루어지게 되며, 이를 위해 커널을 컴파일하여 생성할 때 암호화 알고리즘도 커널에 적재될 수 있도록 할 수 있다. 암호화 알고리즘의 커널 적재는 본 발명이 속한 기술분야에서 통상의 지식을 가진 자가 용이하게 그 수단을 강구할 수 있다. 상기한 S8단계를 거쳐 구성되는 연결리스트의 최종 모습이 도2c와 같으며, 그 구성과정은 아래와 같다.After calculating the number of blocks to be encrypted as described above (step S7), copying and encrypting the contents of the buffer received from the user process by the number of valid data of each block, and configuring a connection list for each block in the memory (step S8). )do. At this time, the encryption for each block is made through an encryption algorithm loaded into the kernel at system boot, and for this purpose, the encryption algorithm can be loaded into the kernel when the kernel is compiled and generated. Kernel loading of cryptographic algorithms can be easily taken by those skilled in the art. The final appearance of the connection list configured through the step S8 is shown in Figure 2c, the configuration process is as follows.

구체적으로 도2a 및 도2c를 참조하면, 먼저, 메모리에 연결리스트를 한 블록씩 구성(ⓐ->ⓑ->ⓒ->...->ⓝ)하면서 바이트 수를 누적하고(S8단계) 누적 바이트 수가 사용자 프로세스로부터 요청된 카운트보다 작은지 확인하고 작다면 S8단계를 반복한다. 예를 들어, S7단계에서 구한 블록 수보다 누적된 블록수가 작으면(S9단계 참조), 도2c에 도시된 것과 같은 연결리스트 ⓐⓑⓒ...ⓝ을 얻을 때까지 S8단계를 반복한다. 도2b와 같은 파일의 데이터 구조에서 사용자 프로세스로부터 40바이트의 쓰기 시스템 요청이 있을 때 데이터 부분을 평문 상태로 표현하자면 도2d와 같고, 도2d에서 음영으로 처리된 부분은 실제로 데이터가 덮여 쓰여지거나 새롭게 추가된 영역에 해당한다. 그리고, 각 블록의 16번째 바이트 자리는 각 블록의 유효 데이터 수가 기록되는 영역이다.Specifically, referring to FIGS. 2A and 2C, first, the number of bytes is accumulated while accumulating the linked list one block in memory (ⓐ-> ⓑ-> ⓒ-> ...-> ⓝ) and accumulating the number of bytes (step S8). Check that the number of bytes is less than the count requested from the user process, and repeat step S8 if small. For example, if the accumulated number of blocks is smaller than the number of blocks obtained in step S7 (see step S9), step S8 is repeated until a linked list ⓐⓑⓒ ... ⓝ as shown in FIG. 2C is obtained. In the data structure of a file such as FIG. 2B, when a 40-byte write system request is received from a user process, the data portion is represented in plain text as in FIG. 2D, and the shaded portion in FIG. 2D is actually overwritten or newly written. Corresponds to the added area. The 16th byte position of each block is an area in which the effective data number of each block is recorded.

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단계)한다.After the connection list as shown in FIG. 2C is configured in the memory through steps S8 and S9, a step of checking whether a connection list exists in the memory (step S10) is performed. That is, it is compared whether the pointer value indicated by the first linked list is null in operation results of steps S8 and S9 (step S10). If the comparison value in step S10 is not null, the connection list ⓐⓑⓒ ... ⓝ configured in memory is sequentially written to the storage device by 16 bytes (step S12), and the accumulated write bytes are smaller than the count requested from the user process. (Step S13). Step S12 is continued until the comparison value at step S13 is not null. If the comparison value in step S13 is null, the security level of the user process is copied to an unused reserved field of the i-node of the file. For this purpose, a security level field having a size of a predetermined bit, for example 32 bits, is additionally allocated to the reservation field of the i-node, and the security level of the user process is duplicated in the security level field. In the security level field, a MSB (Most Significant Bit), which is a predetermined number of bits, for example, an encryption flag of 1 bit, is assigned, and when the operation of writing the connection list to the storage device is terminated (steps S12 and S13), 1 is assigned to the MSB. A bit OR operation may indicate that the file is encrypted (step S14). After the step S14 proceeds, all allocated resources are released and return to the calling user process (step S15).

<본 발명에 따른 자동 암호화 방법에 의해 기억장치에 저장되어 있는 파일을 커널모드에서 자동으로 블록 복호화하는 방법><Method of Automatic Block Decryption in Kernel Mode for Files Stored in Storage Device by Automatic Encryption Method According to the Present Invention>

도3a는 본 발명의 기술적 사상이 적용된 유닉스 계열 OS에서 읽기 시스템 호출(예컨대, sys_read:S16단계)이 있을 때, 커널모드에서 일어나는 일련의 과정을 보여주는 흐름도이다. 여기에서, sys_read(S16단계)는 사용자 모드의 프로세스가 커널에 읽기 기능 서비스를 요청할 때 사용되는 커널 함수로 읽기 시스템 호출로 통칭하기로 한다. 한편, 이하에서 설명되는 커널모드에서의 자동 복호화 방법은 도2a 내지 도2d를 참조하여 설명한 본 발명에 따른 커널모드에서의 자동 암호화 방법에 의해 암호화되어 기억장치에 저장된 파일에 대해 적용되는 것이다.FIG. 3A is a flowchart illustrating a series of processes occurring in kernel mode when there is a read system call (for example, sys_read: S16) in a UNIX-based OS to which the inventive concept is applied. In this case, sys_read (step S16) is a kernel function used when a user mode process requests a read function service from the kernel, which is collectively referred to as a read system call. Meanwhile, the automatic decryption method in the kernel mode described below is applied to a file encrypted by the automatic encryption method in the kernel mode according to the present invention described with reference to FIGS. 2A to 2D and stored in a storage device.

도3a를 참조하면, 사용자 프로세스에서 read, fread, fscanf, getw, getc등의 시스템 라이브러리 함수를 통하여 읽기 시스템 호출을 하게 되면 커널은 사용자의 프로세스가 요청한 작업을 수행한다. 예를 들어, read(fd, buf, 20)는 20 바이트만큼을 파일 디스크립터 fd가 지정하는 파일로부터 읽어서 버퍼에 기억시키라는 읽기 실행 예이다. 본 발명에 따른 커널모드에서의 자동 복호화 방법에서는, 읽고자 하는 파일이 암호화된 파일인지의 여부를 판단(S17단계)하기 위해, 전달된 파일 디스크립터 fd를 이용하여 파일의 i-node를 구하고 그 i-node가 가지고 있는 보안 등급 필드의 MSB를 1로 비트 AND 연산한다.Referring to FIG. 3A, when a read system call is made through a system library function such as read, fread, fscanf, getw, or getc in a user process, the kernel performs a task requested by the user process. For example, read (fd, buf, 20) is a read execution example that reads 20 bytes from the file specified by the file descriptor fd and stores them in the buffer. In the automatic decryption method in the kernel mode according to the present invention, in order to determine whether a file to be read is an encrypted file (step S17), an i-node of a file is obtained using the delivered file descriptor fd, and the i Bitwise AND the MSB of the security level field owned by -node.

상기한 S17단계를 통하여 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일이 아니라고 판단되면, 상기 파일을 일반 문서로 분류한다. 그런 다음, 현재의 파일포인터를 기준으로 읽고자 하는 부분을 락킹하고 요청된 카운트만큼 기억장치에서 읽은 후, 그 내용을 사용자 프로세스로부터 전달된 버퍼에 저장(S18단계)한다. 시스템 호출에서 리턴하면, 사용자 프로세스로 복귀(S19단계)한다.If it is determined in step S17 that the file designated by the file descriptor fd is not an encrypted file, the file is classified as a general document. Then, the part to be read based on the current file pointer is locked and read as much as the requested count from the storage device, and the contents are stored in the buffer transmitted from the user process (step S18). When returning from the system call, the process returns to the user process (step S19).

상기 S17단계를 통하여 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일로 판단되면, 본 발명에 따른 복호화 루틴으로 분기한다. 본 발명에 따른 커널모드에서의 자동 복호화 방법에 있어서는, 복호화 대상 데이터가 도2a 내지 도2d를 참조하여 설명한 블록 암호화 방법에 의해 암호화되어 있으므로 복호화시에도 블록 단위로 복호화가 이루어지게 된다. 또한, 16바이트씩의 블록을 암호화의 기본 단위로 삼은 경우, 본 발명에 따른 커널모드에서의 자동 복호화 방법에서도 16바이트씩의 블록을 복호화의 기본 단위로 삼게 된다.If it is determined in step S17 that the file designated by the file descriptor fd is an encrypted file, the process branches to the decryption routine according to the present invention. In the automatic decryption method in the kernel mode according to the present invention, since the decryption target data is encrypted by the block encryption method described with reference to FIGS. 2A to 2D, decryption is performed on a block basis even when decryption. In addition, when 16-byte blocks are used as the basic unit of encryption, the automatic decryption method in the kernel mode according to the present invention uses 16-byte blocks as the basic unit of decryption.

따라서, 암호화된 파일 전체 또는 파일 내의 일부 데이터만을 선택적으로 복호화하기 위해서는 현재의 파일포인터가 블록의 시작점에 위치하는지를 점검(S20단계)해야 한다. 그 점검 방법은 파일포인터의 현재 위치에 해당하는 바이트 수를 한 블록을 이루는 기본 바이트 수인 16으로 나눠 그 나머지가 있으면 블록의 시작점이 아닌 것으로 판단한다. 만약, S20단계에서 현재 위치에 해당하는 바이트 수를 16으로 나눈 결과 그 나머지가 존재하게 되면 블록의 시작점으로 파일포인터를 이동(S21단계)시킨다. 그런 다음, 블록 시작점까지 파일포인터가 이동한 거리를 스택 변수에 저장한다.Therefore, in order to selectively decrypt the entire encrypted file or only some data in the file, it is necessary to check whether the current file pointer is located at the start of the block (step S20). The checking method divides the number of bytes corresponding to the current position of the file pointer by 16, which is the basic number of bytes forming a block, and determines that the rest is not the starting point of the block. If, in step S20, the number of bytes corresponding to the current position is divided by 16 and the remainder exists, the file pointer is moved to the start of the block (step S21). It then stores the distance the file pointer travels to the start of the block in a stack variable.

도3b는 복호화의 대상이 되는 파일을 설명의 편의를 위해 복호화하여 미리 표시한 것으로, 본 발명에 따른 자동 복호화 방법의 실시예에서는 사용자 프로세스로부터 20바이트의 읽기 시스템 호출이 있고 현재의 파일포인터가 제1블록(A)의 13번째 바이트 자리에 있다는 가정하에 제1블록(A)의 13-15번째 바이트 영역; 제2블록(B)의 1-7번째 바이트 영역; 제3블록(C)의 1-10번째 바이트 영역에 저장된 데이터를 복호화하는 일련의 과정을 예시한다.3B shows a file to be decrypted in advance for convenience of explanation. In the embodiment of the automatic decryption method according to the present invention, 20 bytes of a read system call is received from a user process and the current file pointer is deleted. The 13-15th byte area of the first block A, assuming that it is in the 13th byte position of one block A; 1-7th byte area of 2nd block B; A series of processes of decoding data stored in the 1-10th byte region of the third block C is illustrated.

구체적으로 도3a 및 도3b를 참조하면, 먼저 현재의 파일포인터의 위치가 제1블록(A)의 시작 위치가 아니므로, 파일포인터의 위치를 블록의 시작위치(1번째 바이트 자리로, 0이 수록되어 있음)로 이동시키고 그 이동거리인 12를 스택 변수에 저장한다. 그런 다음, 각 블록을 순차적으로 읽어서 복호화(S22단계)한 후, 16번째 바이트를 참조(S22단계)하여 각 블록의 유효한 데이터를 메모리에 연결리스트로 구성(S22단계)하여 저장하고 동시에 유효한 데이터 수를 누적(S22단계)시킨다. 이 때, 각 블록을 복호화하기 위해서 사용하는 복호화키는 SEED와 같은 대칭키 암호화 알고리즘을 이용하여 복호화 대상 데이터의 암호화가 시도될 때 사용되었던 키이다.Specifically, referring to FIGS. 3A and 3B, since the position of the current file pointer is not the start position of the first block A, the position of the file pointer is set to the start position of the block (1 byte position, 0 being 0). Stored in the stack variable). After reading and decoding each block sequentially (step S22), the 16th byte is referenced (step S22), and the valid data of each block is organized into a linked list in memory (step S22) and stored, and the number of valid data at the same time. Accumulate (step S22). At this time, the decryption key used to decrypt each block is a key used when encryption of the decryption target data is attempted using a symmetric key encryption algorithm such as SEED.

도3c는 도3b에 도시된 것과 같은 데이터 구조를 가진 파일을 사용자 모드의 프로세스로부터 20바이트 읽기 시스템호출이 있을 때 순차적으로 블록 단위 읽기와복호화를 한 후 유효한 데이터에 대하여 음영 표시를 한 것이다. 도3c를 참조하면, 제1블록(A)의 13-15번째 바이트 영역; 제2블록(B)의 1-7바이트 영역; 제3블록(C)의 1-10바이트 영역만이 선택적으로 복호화된다는 것을 확인할 수 있다.FIG. 3C shows a file having a data structure as shown in FIG. 3B, reads and decodes sequentially in block-by-block when there is a 20-byte read system call from a user mode process, and shades the valid data. Referring to Figure 3c, the 13-15th byte area of the first block (A); A 1-7 byte area of the second block B; It can be seen that only the 1-10 byte region of the third block C is selectively decoded.

도3d는 각 블록별로 순차적인 복호화가 이루어지면서 메모리에 구성되는 연결리스트를 도시한 것으로서, 그 구성과정은 다음과 같다. 먼저, 제1블록(A)을 복호화한 다음, 16번째 바이트 영역을 참조하여 바이트 수를 누적해가면서 연결리스트 ⓐ를 메모리에 구성한다. 누적된 바이트 수가 사용자 프로세스로부터 요청된 카운트보다 작으면 상기와 같은 연결리스트 구성 작업을 제2, 제3...블록에 대해서도 계속하게 되면 도3d에 도시된 것과 같은 연결리스트 ⓐⓑⓒ를 메모리에 구성할 수 있다.3D illustrates a connection list configured in a memory while sequential decoding is performed for each block, and the configuration process is as follows. First, after decoding the first block A, the linked list ⓐ is formed in the memory while accumulating the number of bytes by referring to the 16th byte area. If the accumulated number of bytes is smaller than the count requested from the user process, the above connection list construction operation is continued for the second and third blocks, and the connection list ⓐⓑⓒ as shown in FIG. 3D is stored in the memory. Can be configured.

이어서, S22단계와 S23단계의 진행으로 얻은 각 블록에 대한 연결리스트에서 첫 연결리스트가 나타내는 포인터 값이 null인지를 비교(S24단계)한다. S24단계에서의 비교 값이 null이 아니라면, 메모리에 구성된 연결리스트 ⓐⓑⓒ의 유효한 데이터를 사용자의 프로세스로부터 전달받은 버퍼에 순차적으로 복사한다(S26, S27). 각 연결리스트의 유효한 데이터를 사용자 프로세스로부터 전달된 버퍼에 복사하는 작업은, 버퍼에 복사된 데이터의 수가 사용자 프로세스가 요청한 카운트 수와 같아질 때까지 계속(S27단계)된다. S26단계와 S27단계를 통하여 연결리스트의 유효 데이터를 버퍼에 복사하는 작업을 완료한 이후에는, 파일포인터의 위치를 조정(S28단계)하고 사용자 프로세스로 복귀하는데, 이 때 버퍼의 내용은 도3e와 같게 된다. 한편, S24단계에서의 비교 값이 null이라면 사용자 프로세스로 복귀(S25단계)한다.Subsequently, it is compared whether the pointer value indicated by the first linked list is null in the linked list for each block obtained by the steps S22 and S23 (step S24). If the comparison value in step S24 is not null, valid data of the connection list ⓐⓑⓒ configured in the memory is sequentially copied to the buffer received from the user's process (S26 and S27). Copying the valid data of each connection list to the buffer delivered from the user process continues until the number of data copied into the buffer is equal to the number of counts requested by the user process (step S27). After completing the operation of copying the valid data of the connection list to the buffer through the steps S26 and S27, the position of the file pointer is adjusted (step S28) and the contents of the buffer are returned to the user process. Becomes the same. On the other hand, if the comparison value in step S24 is null, the process returns to the user process (step 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단계)한다.FIG. 3f sequentially shows the order in which the file pointer moves in the operation made in step S20 using original characters. Specifically, when there is a system call to read 20 bytes from the file designated by the file descriptor fd from the user process and store it in the buffer, the file pointer is located in the 13th byte area (see?) Of the first block (A). However, since the file pointer is not at the beginning of the block, the file pointer is moved to the beginning of the block (see 2). After reading the first block A (the file pointer automatically moves to the first position (③) of the second block) and decoding it, the first block A corresponds to the first block A by referring to the number of valid data of the 16th byte. A linked list (see ⓐ in FIG. 3D) is constructed in memory. Subsequently, after reading the second block B (the file pointer automatically moves to the first position (④) of the third block), the second block B is decoded, and then decoded into the second block B with reference to the number of valid data of the 16th byte. A corresponding connection list (see ⓑ in FIG. 3D) is constructed in the memory. Since the cumulative number 10 of valid data of the connection list is smaller than the count 20 requested from the user process, the decoding process for the third block C is continued. As described above, after reading the third block C (the file pointer automatically moves to the first position (⑤) of the fourth block), after decoding it, the third block ( A connection list corresponding to C) (see ⓒ in FIG. 3D) is constructed. After the connection lists ⓐ and ⓑ are configured, since the accumulated valid data number is 10, only 10 data among the 13 data of the third block C are used to form the connection list ⓒ. After constructing the connection list ©, the file pointer is moved to the 11th byte area (⑥) of the third block again. Finally, the kernel releases all allocated resources and returns to the user processor (step S29).

이하에서는 본 발명에 의해 데이터가 커널모드에서 자동으로 암호화되고 복호화됨에 따라 파일포인터를 소정 바이트 만큼 이동시키는 파일포인터 이동 시스템 호출 과정이 본 발명에 따라 어떠한 방식으로 변형되어 수행되는가를 도4a 내지 도4d를 참조하여 설명한다.Hereinafter, the method of calling the file pointer moving system for moving the file pointer by a predetermined byte as the data is automatically encrypted and decrypted in the kernel mode according to the present invention will be described. It demonstrates with reference to.

도4a는 본 발명에 따라 수정된 커널모드의 파일포인터 이동 시스템 호출(sys_lseek;S30단계) 과정을 나타낸 흐름도이다. 여기에서, sys_lseek(S30단계)는 사용자 모드의 프로세스가 커널에 파일포인터 이동 서비스를 요청할 때 사용되는 시스템 호출 함수를 통칭한다.4A is a flowchart illustrating a process of calling a file pointer moving system in a kernel mode (sys_lseek; step S30) modified according to the present invention. Here, sys_lseek (step S30) collectively refers to a system call function used when a user mode process requests a file pointer movement service from the kernel.

도4a를 참조하면, 사용자 프로세스에서 fseek, lseek 등의 시스템 라이브러리 함수를 통하여 시스템 호출을 하게 되면, 커널은 사용자의 프로세스가 요청한 작업을 수행한다. 예를 들어, lseek(fd, offset, origin)는 파일 디스크립터 fd가 지정하는 파일의 원래 파일포인터 위치인 origin으로부터 offset에 해당하는 바이트 수 만큼 파일포인터를 이동시키라는 커널 함수이다.Referring to FIG. 4A, when a system call is made through a system library function such as fseek or lseek in a user process, the kernel performs a task requested by the user process. For example, lseek (fd, offset, origin) is a kernel function that moves the file pointer by the number of bytes corresponding to the offset from the original file pointer location of the file specified by the file descriptor fd.

본 발명에 따라 수정된 파일포인터이동 시스템 호출에서는 읽고자 하는 파일이 암호화된 파일인지의 여부(S31단계)는 전달된 파일 디스크립터를 이용하여 파일의 i-node를 구하고 그 i-node가 가지고 있는 보안 등급 필드의 MSB를 1로 비트 AND 연산함으로써 판단할 수 있다.In the modified file pointer movement system call according to the present invention, whether or not the file to be read is an encrypted file (step S31) is obtained by using the passed file descriptor to obtain an i-node of the file, and the security that the i-node has. It can be determined by bitwise ANDing the MSB of the rank field to one.

S31단계에서 판단해 본 결과, 파일 디스크립터 fd가 지정하는 파일이 암호화된 파일이 아니면, 상기 파일을 일반 문서로 분류한다. 그런 다음, 사용자 프로세스로부터 받은 origin을 기준으로 offset만큼 파일포인터를 이동(S32단계)시킨다.그리고 나서, 시스템 호출에서 리턴하면, 사용자 프로세스로 복귀(S33단계)한다.As a result of the determination in step S31, if the file specified by the file descriptor fd is not an encrypted file, the file is classified as a general document. Then, the file pointer is moved by offset based on the origin received from the user process (step S32). Then, when the system call returns, the process returns to the user process (step S33).

S31단계에서 판단해 본 결과, 파일 디스크립터 fd가 지정하는 파일이 본 발명에 따라 자동 암호화된 파일이면, origin에 의한 파일포인터 조정 단계(S34단계)를 거치게 된다. 예를 들어, 사용자 프로세스로부터 전달된 origin이 2이면 파일의 끝으로, 0이면 파일의 처음으로 파일포인터의 위치를 조정하고, origin이 1이면 파일포인터의 현재 위치를 유지한다. 한편, 본 발명의 실시예에 따라 자동 암호화된 파일은 블록 단위로 읽어서 각 블록의 16번째 바이트 자리를 참조해야 각 블록에 대한 유효한 데이터 수를 알 수 있는 특성이 있다. 따라서, 본 발명에 따라 암호화된 파일을 읽기 위한 준비 단계로 S34단계에서 조정된 파일포인터가 파일의 끝인 것으로 판단되면 파일포인터의 위치를 블록의 싸이즈만큼 음의 방향으로 이동시킨다. 예를 들어, 블록의 크기가 16바이트인 경우 파일포인터의 위치를 음의 방향으로 16바이트만큼 이동시킨다.As a result of the determination in step S31, if the file designated by the file descriptor fd is a file automatically encrypted according to the present invention, the file pointer adjustment step of origin is performed (step S34). For example, if the origin passed from the user process is 2, then the end of the file is adjusted; if 0, the file pointer is repositioned to the beginning of the file; if origin is 1, the file pointer is maintained. On the other hand, according to an embodiment of the present invention, the file automatically encrypted has a characteristic of knowing the number of valid data for each block only by reading the 16th byte position of each block by reading in units of blocks. Therefore, when it is determined that the file pointer adjusted in step S34 is the end of the file in preparation for reading the encrypted file according to the present invention, the position of the file pointer is moved in the negative direction by the size of the block. For example, if the block size is 16 bytes, the file pointer is moved by 16 bytes in the negative direction.

이어서, 파일크기를 16으로 나누어 그 나머지의 존재 유무를 조사함으로써 파일이 정상적으로 암호화되어 있는지에 대해 점검(S35단계)한다. S35단계에서 나머지가 산출되지 않으면, 각 블록의 마지막 바이트 자리에 해당 블록의 유효한 데이터 수가 기록되어 있다는 점을 감안하여 각 블록을 순차적으로 읽어 이를 복호화한 후 16번째 바이트 영역을 참조해서 유효한 데이터를 메모리에 연결리스트로 구성하여 저장하고 유효한 데이터 수를 누적시킨다(S37단계). 이 때, 상기 복호화는 도3a 내지 도3d를 참조하여 설명한 본 발명에 따른 커널모드에서의 파일 자동 복호화 방법에 대한 바람직한 실시예를 참조할 수 있다. 물론, S35단계에서 나머지가산출되면 파일이 본 발명에 따라 정상적으로 암호화되어 있지 않으므로 사용자 프로세스로 복귀(S36단계)한다.Subsequently, by checking the existence of the remainder by dividing the file size by 16, it is checked whether the file is normally encrypted (step S35). If the remainder is not calculated in step S35, in consideration of the fact that the number of valid data of the block is recorded in the last byte position of each block, each block is read sequentially and decoded, and then the valid data is stored in reference to the 16th byte area. Configure and store as a linked list in the accumulative number of valid data (step S37). In this case, the decryption may refer to a preferred embodiment of the automatic file decryption method in the kernel mode according to the present invention described with reference to FIGS. 3A to 3D. Of course, if the rest is calculated in step S35, since the file is not normally encrypted according to the present invention, the process returns to the user process (step S36).

한편, S37단계를 진행함에 있어서는, 사용자 프로세스로부터 전달받은 offset에 따라 각 블록을 읽는 방법이 다르게 된다. 상기 offset이 양의 숫자라면 16 바이트 씩 각 블록을 읽고 복호화하면 되지만, 음의 숫자라면 16 바이트를 읽고 32 바이트의 마이너스 포인터 조정이 필요하다. 이에 대해서는, +offset의 경우 파일포인터의 이동 예를 보여주는 도4b와, -offset의 경우 파일포인터의 이동 예를 보여주는 도4c를 참조하면 보다 명확해진다.On the other hand, in the step S37, the method of reading each block is different depending on the offset received from the user process. If the offset is a positive number, each block may be read and decoded by 16 bytes. However, if the offset is a negative number, 16 bytes are read and a 32-byte negative pointer adjustment is required. This will be clearer with reference to FIG. 4B showing an example of moving the file pointer in the case of + offset, and FIG. 4C illustrating an example of moving the file pointer in the case of -offset.

도4b를 참조하면, 파일포인터가 제1블록(A)의 ① 위치에 있을 때 사용자 프로세스가 +20 바이트 만큼 파일포인터를 이동시키라는 요청을 하게 되면, 먼저 파일포인터를 제1블록(A)의 ②위치로 이동시킨다. 그런 다음, 제1블록(A)을 읽고(파일포인터가 ③의 위치로 자동 이동) 이를 복호화한 후 유효 데이터수를 누적하면서 메모리에 연결리스트를 구성하는 과정; 제2블록을 읽고(파일포인터가 ④의 위치로 자동이동) 이를 복호화한 후 유효 데이터 수를 누적하면서 메모리에 연결리스트를 구성하는 과정; 제3블록을 읽고(파일포인터가 ⑤의 위치로 자동이동) 이를 복호화한 후 유효 데이터수를 누적하면서 메모리에 연결리스트를 구성하는 과정을 반복하게 된다. 이러한 과정은 누적된 유효 데이터에 대한 카운트수가 offset(20)보다 작으면 계속 반복된다. 따라서, 제3블록에 대한 연결리스트는 11번째 바이트(제1블록(A)의 데이터수 3 + 제2블록의 데이터 수 7 = 10)까지의 데이터에 대한 연결리스트가 메모리에 구성되면 S37단계는 종료된다.Referring to FIG. 4B, when the user process requests to move the file pointer by +20 bytes when the file pointer is at the position ① of the first block A, the file pointer is first moved to the first block A. ② Move to the position. Then, reading the first block A (the file pointer automatically moves to the position of ③), decrypting it, and then building a linked list in memory while accumulating the number of valid data; Reading the second block (the file pointer automatically moves to the position of ④), decoding the same, and constructing a linked list in memory while accumulating the number of valid data; After reading the third block (the file pointer automatically moves to the position ⑤), the decoding process is repeated, and the process of constructing a linked list in memory while accumulating the number of valid data is repeated. This process is repeated if the number of counts for the accumulated valid data is smaller than the offset (20). Therefore, when the connection list for the third block is configured in the memory, the connection list for data up to the 11th byte (the number of data of the first block A + the number of data of the second block 7 = 10 = 10) is configured in the memory. It ends.

도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)를 누적하면서 메모리에 연결리스트를 구성하는 과정을 반복하게 된다.Referring to FIG. 4C, if there is a request to move 20 bytes to the front of the file when the file pointer is at the position ① of the third block C, the position of the file pointer is first moved to the position ② of the third block C. Let's do it. Thereafter, reading the third block C (the file pointer automatically moves to the position ③ of the fourth block D), decoding the same, and constructing a connection list in memory while accumulating the number of valid data 10; Move the position of the file pointer to the position ④ of the second block B (adjust the position of the -32 byte file pointer), then read the second block B (the file pointer automatically moves to the position ⑤ of the third block C). Moving) configuring a connection list in a memory while accumulating the number of valid data (7) after decrypting it; Move the position of the file pointer to the position ⑥ of the first block A (-32 byte file pointer position adjustment), and then read the first block A (the file pointer moves to the position ⑦ of the second block B). Automatic movement) After decoding the data, the process of constructing the connection list in the memory is repeated while accumulating the number of valid data (3).

도4d는 위와 같은 방법으로 블록 단위 읽기와 복호화를 한 후 메모리에 구성될 연결리스트의 일 예를 보여준다.4D illustrates an example of a connection list to be configured in a memory after reading and decoding in units of blocks in the above-described manner.

도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단계)한다.4A and 4D, if the number of valid bytes is accumulated while configuring the connection list one block in the memory, and if the number is smaller than the offset requested from the user process, the above process (step S37) is repeatedly performed. Ⓑ Configure the ⓝ (step S37). In operation S37 and operation S38, the value of the pointer indicated by the first connection list is compared with NULL (operation S39). At this time, if the comparison value of S39 is NULL, the process returns to the user process (step S40). If the comparison value in step S39 is not null, the cumulative count is calculated by combining the nodes of the connection list configured in the memory (step S41), and it is determined whether the accumulated count is smaller than the offset (step S42), and the value becomes null. Repeat step S41. Then, the actual offset to which the file pointer is to be moved is calculated by considering the remaining portions of the blocks encrypted with 16 bytes except for the region containing valid data. In the case of the file pointer movement example shown in Fig. 4B, if a request for moving the file pointer by +20 bytes is requested by the file pointer movement system call, the file pointer is referred to as the 13th byte position (① of the first block A). ) Moves to the eleventh byte position (see ⑥) of the third block (C). However, since the actual offset to which the actual file pointer moves must also be at the 8-15th byte position, which is the null region of the second block B, the actual offset to which the file pointer moves is +28 bytes. If the actual offset obtained in step S43 is null, the process returns to the user process (step S44). If the actual offset obtained in step S43 is not null, the file pointer is moved by the actual offset (step S45). After proceeding to step S45, the allocated resources are released and the process returns to the user process (step S46).

상기에서 상세하게 설명한 본 발명에 따른 커널모드에서의 파일 자동 암호화, 복호화 방법과, 이를 이용한 파일포인터 이동 방법은 프로그램화되어 컴퓨터로 읽을 수 있는 기록매체에 수록될 수 있다. 이 때, 도2a, 도3a 및 도4a에 도시된 흐름도는 본 발명에 따른 방법들을 프로그램화할 때 알고리즘으로 사용될 수 있다. 본 발명이 속한 기술분야에서 통상의 지식을 가진 자가 상기한 도면들에 게시된 흐름도와 관련 설명을 인식하면 본 발명에 따른 방법들을 용이하게 프로그램화할 수 있음은 물론이다.A method of automatically encrypting and decrypting a file in the kernel mode and a method of moving a file pointer using the same in the kernel mode according to the present invention described above may be programmed and stored in a computer-readable recording medium. At this time, the flowcharts shown in Figs. 2A, 3A and 4A can be used as an algorithm when programming the methods according to the present invention. Those skilled in the art can easily program the methods according to the present invention if they recognize the flow diagrams and related descriptions posted in the above figures.

이상에서는 본 발명에 따른 바람직한 실시예를 첨부한 도면을 첨부하여 상세하게 설명하였다. 하지만, 본 발명에 따른 기술적 사상은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에 의하여 다양한 변형이나 개량이 가능함은 물론이다.In the above described with reference to the accompanying drawings, preferred embodiments of the present invention in detail. However, the technical idea according to the present invention can be variously modified or improved by those of ordinary skill in the art.

본 발명의 일 측면에 따르면, 커널모드에서 연결리스트를 사용하여 사용자 프로세스가 요구하는 필요한 부분적 데이터만을 암호화 또는 복호화하기 때문에 종래의 사용자 모드에서의 파일 암호화 및 복호화 방법보다 처리 속도가 향상된다.According to an aspect of the present invention, since only the partial data required by the user process is encrypted or decrypted using the connection list in kernel mode, the processing speed is improved compared to the conventional method of encrypting and decrypting the file in the user mode.

본 발명의 다른 측면에 따르면, 데이터의 암호화 및 복호화가 사용자 응용 프로그램의 주소 공간과는 엄격히 분리된 상태로 커널모드에서 수행되며, 보안등급을 보유한 사용자가 데이터의 암호화를 선택하는 방식이 아닌, 커널모드에서의 강제적 암호화에 의해 데이터가 기억장치에 저장되므로, 기억장치가 제3자에 의거 불법적으로 탈취 당하더라도 보안이 담보된다.According to another aspect of the present invention, the encryption and decryption of the data is performed in kernel mode in a strictly separated state from the address space of the user application, and the kernel having a security level selects the encryption of the data. Since data is stored in the storage device by forced encryption in the mode, security is ensured even if the storage device is illegally taken over by a third party.

본 발명의 또 다른 측면에 따르면 암호화 키의 관리가 시스템 보안 관리자에 의해 관리되므로 일반 사용자의 키 관리가 간편해 진다.According to another aspect of the present invention, the management of the encryption key is managed by the system security manager, thereby simplifying the key management of the general user.

Claims (18)

데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트만큼의 데이터를 유닉스 계열 OS(Operation System)의 커널모드(Kernel Mode)에서 자동으로 암호화하는 방법에 대한 것으로,In the unit of a 1-byte size block including a first area where data is actually recorded and a second area where the number of data contained in the first area is stored, the second byte of newly requested data from the user process is stored. The automatic encryption method in the kernel mode of the Unix-like operating system (OS), (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출하는 단계;(a) calculating the number of blocks necessary for encrypting the data of the second byte in consideration of the second byte and the number of bytes constituting the first region; (b) 상기 (a)단계에서 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 소정의 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성하는 단계; 및(b) For each block calculated in step (a), copy write-required data in the first area as necessary in the buffer transferred from the user process, and store data in the first area in the second area. Encrypting the data contained in the first area and the second area by the first byte unit using a predetermined encryption algorithm and constructing a connection list of the corresponding block in a memory; And (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓰는 단계를 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.and (c) writing a connection list for each block configured in the memory to a storage device. 제1항에 있어서,상기 (b)단계를 진행하기 전에,According to claim 1, Before proceeding to step (b), 현재 파일포인터의 위치가 블록의 처음인지를 검사하고 그 결과에 따라 파일포인터의 위치를 블록의 처음으로 이동시키는 단계를 더 포함하는 것을 특징으로하는 커널모드에서 파일을 자동으로 암호화하는 방법.Checking whether the current file pointer is at the beginning of the block and moving the location of the file pointer to the beginning of the block according to the result. 제1항에 있어서,The method of claim 1, 상기 제2영역은 상기 제1영역에 수록된 유효 데이터 수를 표시하기 위하여 사용하는 영역으로, 상기 블록 내의 소정 위치에 할당되는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.And the second area is an area used for displaying the number of valid data contained in the first area, and is allocated to a predetermined position in the block. 제1항에 있어서, 상기 (a)단계의 암호화될 블록 수는,According to claim 1, wherein the number of blocks to be encrypted in step (a), 상기 제1영역을 구성하는 바이트 수로 상기 제2바이트를 나누고 그 정수 몫에 1을 더하는 방식으로 산출하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.And dividing the second byte by the number of bytes constituting the first region and adding 1 to the quotient of the integer. 제1항에 있어서, 상기 (c)단계를 진행한 이후에,According to claim 1, After the step (c), 암호화된 파일의 i-node의 예약된 필드 중 미리 할당된 보안 등급 필드 내에 암호화 마킹을 수행하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.And performing an encryption marking in a pre-allocated security level field of the reserved fields of the i-node of the encrypted file. 제1항에 있어서, 상기 (b)단계에서 사용되는 암호화 알고리즘은 블록 암호화 알고리즘인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.The method of claim 1, wherein the encryption algorithm used in step (b) is a block encryption algorithm. 제6항에 있어서, 블록 암호화 알고리즘에서 이용되는 암호화키는 커널을 컴파일하여 생성할 때 커널 이미지에 이식된 키인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.7. The method of claim 6, wherein the encryption key used in the block encryption algorithm is a key that is ported to a kernel image when the kernel is compiled and generated. 제7항에 있어서,The method of claim 7, wherein 상기 암호화키는, 사용자로 하여금 키 생성을 위한 고유 문자열을 정하게 하고 상기 고유 문자열을 소정의 암호화 알고리즘을 이용하여 생성한 소정 비트의 씨드 암호화키인 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.The encryption key is a seed encryption key of a predetermined bit generated by the user by specifying a unique string for generating a key and using the predetermined encryption algorithm. Way. 제8항에 있어서,The method of claim 8, 상기 씨드 암호화키는 쓰기 시스템 호출이 있을 때마다, 파일마다 i-node에 가지는 파일 고유 정보를 암호화키로 하여 재 암호화된 다음, 상기 (b)단계의 블록 암호화 알고리즘에서 암호화키로 사용되는 것을 특징으로 커널모드에서 파일을 자동으로 암호화하는 방법.The seed encryption key is re-encrypted by using the file-specific information of the i-node for each file as an encryption key whenever there is a write system call, and then used as an encryption key in the block encryption algorithm of step (b). How to automatically encrypt files in mode. 제1항에 있어서, 상기 (a) 단계를 진행하기 전에,According to claim 1, Before proceeding to step (a), (a1) 사용자가 유닉스 시스템에 로그인할 때 보안 등급 정보를 포함하는 사용자 정보를 입력하게 하고 사용자를 시스템에서 인증하는 단계;(a1) allowing a user to input user information, including security level information, when the user logs in to a Unix system and authenticating the user in the system; (b1) 상기한 (a)단계에서의 인증이 완료되면 사용자 프로세스의 태스크 구조체에 할당된 소정 비트수의 보안 등급 필드에 사용자의 보안 등급 정보를 수록하는 단계; 및(b1) recording the security level information of the user in the security level field of a predetermined number of bits allocated to the task structure of the user process when the authentication in step (a) is completed; And (c1) 상기 태스크 구조체의 보안 등급 필드에 보안 등급 정보가 수록되어 있는지를 확인하여 쓰기 요청된 데이터를 암호화해야 할 대상으로 결정하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.(c1) checking whether the security level information is included in the security level field of the task structure, and determining that the write requested data is a target to be encrypted, automatically encrypting the file in the kernel mode. How to. 제10항에 있어서, 상기 (c1)단계를 진행한 후에,The method of claim 10, wherein after the step (c1), 상기 데이터가 암호화되어 저장된 파일의 i-node의 예약 필드에 할당된 보안 등급 필드에 프로세스의 태스크 구조체에 수록된 사용자의 보안 등급을 복사하여 수록하는 단계를 더 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 암호화하는 방법.Copying the security level of the user included in the task structure of the process to the security level field assigned to the reserved field of the i-node of the file in which the data is encrypted and storing the file in kernel mode. How to encrypt automatically. 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록별로 데이터가 암호화되어 있는 파일에서 제2바이트 만큼의 데이터를 읽어 버퍼에 저장하라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하는 방법에 대한 것으로,Blocks data in the kernel mode of Unix-like operating systems when there is a system call to read a second byte of data from a file encrypted with a block of 1 byte size and store it in a buffer using a block encryption algorithm. About automatic decoding 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정하는 단계;(a) adjusting the position of the file pointer relative to the time of the read system call to the beginning of the block; (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속하는 단계; 및(b) copying the block to memory from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in the memory with reference to the number of valid data stored in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte read requested. step; And (c) 상기 (b)단계를 통하여 얻은 연결리스트를 상기 버퍼에 복사하는 단계를 포함하는 것을 특징으로 하는 커널모드에서 파일을 자동으로 복호화하는 방법.and (c) copying the connection list obtained through the step (b) to the buffer. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로,When a user process executes a system call command to move the file pointer by a second byte in a positive direction from a predetermined byte position in a file in which data is encrypted for each block having a size of 1 byte by a block encryption algorithm. , A method of moving a file pointer while automatically decrypting data block by block in the kernel mode of a Unix-like OS. 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정하는 단계;(a) adjusting a position of a current file pointer to the predetermined byte position; (b) 상기 (a)단계를 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시키는 단계;(b) checking whether the position of the file pointer adjusted through step (a) is the initial position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) 상기 (b)단계의 진행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속하는 단계; 및(c) copying the block to the memory in order from the block in which the file pointer is located after the step (b); Block decryption using an encryption key used to encrypt the file; And continuing the link list construction process in the memory with reference to the number of valid data contained in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte. And (d) 상기 (c)단계를 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시키는 단계를 포함하는 것을 특징으로 하는 커널모드에서 암호화된 파일을 자동 복호화하면서 파일포인터를 이동시키는 방법.(d) calculating a number of bytes that the file pointer should actually move using the connection list obtained through step (c), and actually moving the file pointer based on the calculated result. A method of moving a file pointer while automatically decrypting an encrypted file in mode. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시키는 방법에 대한 것으로,When the user process executes a system call command to move the file pointer by a second byte in the negative direction from a predetermined byte position in a file in which data is encrypted for each block having a size of 1 byte by the block encryption algorithm. , A method of moving a file pointer while automatically decrypting data block by block in the kernel mode of a Unix-like OS. 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정하는 단계;(a) adjusting a position of a current file pointer to the predetermined byte position; (b) 상기 (a)단계를 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시키는 단계;(b) checking whether the position of the file pointer adjusted through step (a) is the initial position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) 상기 (b)단계의 진행 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속하는 단계; 및(c) copying the block to the memory in order from the block in which the file pointer is located after the step (b); Block decryption using an encryption key used to encrypt the file; And a concatenation list structure in a memory with reference to the number of valid data contained in the second region of the decoded block; And moving the position of the file pointer by -2 times the block size until the number of valid data accumulated in the linked list coincides with the second byte. And (d) 상기 (c)단계를 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시키는 단계를 포함하는 것을 특징으로 하는 커널모드에서 암호화된 파일을 자동 복호화하면서 파일포인터를 이동시키는 방법.(d) calculating a number of bytes that the file pointer should actually move using the connection list obtained through step (c), and actually moving the file pointer based on the calculated result. A method of moving a file pointer while automatically decrypting an encrypted file in mode. 데이터가 실제로 수록되는 제1영역과 상기 제1영역에 수록되는 데이터의 수가 수록되는 제2영역을 포함하는 제1바이트 크기의 블록 단위로, 사용자 프로세스로부터 새로 쓰기 요청된 제2바이트 만큼의 데이터를 유닉스 계열 OS의 커널모드에서 자동으로 암호화할 수 있도록 하는 프로그램이 수록된 기록매체로,A second byte of a block size of a first byte including a first area in which data is actually recorded and a second area in which the number of data contained in the first area is stored. A recording medium that contains a program that can automatically encrypt in kernel mode of Unix-like OS. (a) 상기 제2바이트와 상기 제1영역을 구성하는 바이트 수를 고려하여 상기 제2바이트 만큼의 데이터를 암호화하기 위해 필요한 블록의 수를 산출할 수 있게 하는 프로그램 모듈;(a) a program module configured to calculate a number of blocks necessary for encrypting data of the second byte in consideration of the second byte and the number of bytes constituting the first region; (b) 상기 (a)프로그램 모듈을 통하여 산출된 블록 각각에 대하여, 상기 제1영역에는 쓰기 요청된 데이터를 사용자 프로세스로부터 전달된 버퍼에서 필요한 만큼 복사해 넣고, 상기 제2영역에는 제1영역에 수록된 데이터의 수를 수록한 다음, 블록 암호화 알고리즘을 이용하여 제1영역 및 제2영역에 수록된 데이터를 상기 제1바이트 단위로 암호화하고 해당 블록의 연결리스트를 메모리에 구성할 수 있게 하는 프로그램 모듈; 및(b) For each block calculated through the program module (a), write-write data is copied into the first area as necessary in the buffer transferred from the user process, and the second area is copied to the first area. A program module for storing the number of recorded data, and encrypting the data recorded in the first and second regions in units of the first byte using a block encryption algorithm and configuring a connection list of the corresponding block in a memory; And (c) 상기 메모리에 구성된 각 블록에 대한 연결리스트를 기억장치에 쓸 수 있도록 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.and (c) a program including a program module for writing a connection list for each block configured in the memory to a storage device. 블록 암호화 알고리즘을 이용하여 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서 제2바이트만큼의 데이터를 읽으라는 시스템 호출이 있을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화할 수 있는 프로그램이 수록된 기록매체로,When there is a system call to read the second byte of data from the file whose data is encrypted for each block having the size of 1 byte by using the block encryption algorithm, the data is automatically decrypted block by block in the kernel mode of the Unix-like OS. A recording medium that contains a program that can be 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 상기 읽기 시스템 호출이 있을 때를 기준으로 한 파일포인터의 위치를 블록의 처음으로 조정할 수 있도록 하는 프로그램 모듈;(a) a program module for adjusting the position of the file pointer relative to the time when the read system call is made to the beginning of the block; (b) 상기 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 읽기 요구된 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및(b) copying the block to memory from the block in which the file pointer is located; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in the memory with reference to the number of valid data stored in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte read requested. Program modules; And (c) 상기 (b)프로그램 모듈을 통하여 얻은 연결리스트를 상기 버퍼에 복사할 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.and (c) a program comprising a program module for copying the connection list obtained through the program module into the buffer. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 자리로부터 파일포인터를 양의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 컴퓨터 읽을 수 있는 기록매체로,When a user process executes a system call command to move the file pointer by a second byte in a positive direction from a predetermined byte position in a file in which data is encrypted for each block having a size of 1 byte by a block encryption algorithm. Is a computer-readable recording medium containing a program that can move a file pointer while automatically decoding data block by block in the kernel mode of a Unix-like OS. 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈;(a) a program module for adjusting a position of a current file pointer to the predetermined byte position; (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈;(b) a program module for checking whether the position of the file pointer adjusted through the program module is the first position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) 상기 (b)프로그램 모듈이 수행된 이후에 파일포인터가 위치한 블록부터 차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를참조로 한 메모리에서의 연결리스트 구성과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및(c) copying the block to the memory in order from the block in which the file pointer is located after the (b) program module is executed; Block decryption using an encryption key used to encrypt the file; And a process of constructing a linked list in a memory with reference to the number of valid data stored in the second area of the decoded block until the number of valid data accumulated in the linked list matches the second byte. module; And (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.(c) a program module for calculating the number of bytes that the file pointer should actually move using the connection list obtained through the program module (c), and allowing the file pointer to actually move based on the calculated result. A computer-readable recording medium comprising a program. 블록 암호화 알고리즘에 의해 제1바이트의 크기를 가진 블록 별로 데이터가 암호화되어 있는 파일에서, 소정의 바이트 영역으로부터 파일포인터를 음의 방향으로 제2바이트만큼 이동시키라는 시스템 호출 명령을 사용자 프로세스가 했을 때, 유닉스 계열 OS의 커널모드에서 데이터를 블록별로 자동 복호화하면서 파일포인터를 이동시킬 수 있게 하는 프로그램이 수록된 기록매체로,When a user process executes a system call command to move a file pointer by a second byte in a negative direction from a predetermined byte area in a file in which data is encrypted for each block having a size of 1 byte by a block encryption algorithm. Is a recording medium that contains a program that can move a file pointer while automatically decoding data block by block in the kernel mode of a Unix-like OS. 상기 블록은 암호화된 데이터가 수록되어 있는 제1영역과 상기 블록에 수록된 유효 데이터 수가 암호화되어 수록되어 있는 제2영역을 포함하고,The block includes a first area in which encrypted data is stored and a second area in which the number of valid data contained in the block is encrypted; (a) 현재 파일포인터의 위치를 상기 소정 바이트 자리로 조정할 수 있게 하는 프로그램 모듈;(a) a program module for adjusting a position of a current file pointer to the predetermined byte position; (b) 상기 (a)프로그램 모듈을 통하여 조정된 파일포인터의 위치가 해당 블록의 처음위치인지를 검사하여 그 결과에 따라 파일포인터의 위치를 해당 블록의 처음으로 이동시킬 수 있게 하는 프로그램 모듈;(b) a program module for checking whether the position of the file pointer adjusted through the program module is the first position of the block, and moving the position of the file pointer to the beginning of the block according to the result; (c) 상기 (b)프로그램 모듈이 수행된 이후에 파일포인터가 위치한 블록부터차례로, 블록을 메모리로 복사; 상기 파일을 암호화할 때 사용했던 암호화키를 이용한 블록 복호화; 및 복호화된 블록의 상기한 제2영역에 수록된 유효 데이터 수를 참조로 한 메모리에서의 연결리스트 구성; 및 파일포인터의 위치를 블록 사이즈의 -2배만큼 이동시키는 과정을, 연결리스트에 누적된 유효 데이터 수가 상기 제2바이트와 일치할 때까지 계속할 수 있게 하는 프로그램 모듈; 및(c) copying the block into the memory, in sequence from the block in which the file pointer is located after the (b) program module is executed; Block decryption using an encryption key used to encrypt the file; And a concatenation list structure in a memory with reference to the number of valid data contained in the second region of the decoded block; And a program module for moving the position of the file pointer by -2 times the block size until the number of valid data accumulated in the linked list matches the second byte. And (d) 상기 (c)프로그램 모듈을 통하여 얻은 연결리스트를 이용하여 파일포인터가 실제로 이동하여야 하는 바이트 수를 산출하고, 산출된 결과를 바탕으로 파일포인터를 실제로 이동시킬 수 있게 하는 프로그램 모듈을 포함하는 프로그램이 수록된 것을 특징으로 하는 컴퓨터로 읽을 수 있는 기록매체.(c) a program module for calculating the number of bytes that the file pointer should actually move using the connection list obtained through the program module (c), and allowing the file pointer to actually move based on the calculated result. A computer-readable recording medium comprising a program.
KR20000049884A 2000-08-26 2000-08-26 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 Expired - Fee Related KR100346411B1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20000049884A KR100346411B1 (en) 2000-08-26 2000-08-26 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
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 (en) 2000-08-26 2000-08-26 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

Publications (2)

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

Family

ID=19685423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20000049884A Expired - Fee Related KR100346411B1 (en) 2000-08-26 2000-08-26 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

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101166051B1 (en) 2010-12-17 2012-07-19 고려대학교 산학협력단 Dynamic memory management system and the management methods for defense against heap attacks

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7810133B2 (en) 2002-08-23 2010-10-05 Exit-Cube, Inc. Encrypting operating system
DE102004009065A1 (en) * 2004-02-23 2005-09-08 Stefan Kistner Method for preventing the loss of confidentiality of data on or with removable storage media (data carriers)
KR100580204B1 (en) * 2004-10-06 2006-05-16 삼성전자주식회사 Apparatus and Method for storing data
KR100748434B1 (en) * 2004-11-29 2007-08-10 주식회사 안철수연구소 Method and device for protecting file data by using real time decryption technics
KR100561218B1 (en) * 2004-12-24 2006-03-15 주식회사 잉카인터넷 Information leakage prevention system through external storage device and method
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 (en) * 2005-04-08 2007-10-18 (주)인테고소프트 Digital contents electronic commerce system and method for protecting digital copyrights and recording media recording program for executing them
KR100906149B1 (en) * 2006-12-05 2009-07-03 한국전자통신연구원 Data Reading Method and Data Writing Method in it
KR100951378B1 (en) * 2007-12-26 2010-04-08 주식회사 안철수연구소 Hidden file detection system and method
CN103582889B (en) * 2011-06-06 2015-11-25 株式会社索思未来 Content-data renovation process and thumbnail image generation method
KR101895453B1 (en) 2011-11-09 2018-10-25 삼성전자주식회사 Apparatus and method for guarantee security in heterogeneous computing environment
US8793506B2 (en) * 2012-08-31 2014-07-29 Intel Corporation Mechanism for facilitating encryption-free integrity protection of storage data at computing systems
JP2016103048A (en) * 2014-11-27 2016-06-02 日本ユニシス株式会社 Secret dispersion system and storage controller with secrete dispersion function
CN114372277B (en) * 2021-12-15 2024-11-19 厦门市美亚柏科信息股份有限公司 A TrueCrypt decryption key extraction method, terminal device and storage medium
CN113987557A (en) * 2021-12-24 2022-01-28 亿次网联(杭州)科技有限公司 File encryption processing method and system, electronic equipment and storage medium

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 (en) 2010-12-17 2012-07-19 고려대학교 산학협력단 Dynamic memory management system and the management methods for defense against heap attacks

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100346411B1 (en) 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
US6829676B2 (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 (en) Protection and method of flash memory block in secure device system
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
KR101405720B1 (en) Accelerated cryptography with an encryption attribute
CN1795471B (en) Security key generation method
US8983072B2 (en) Portable data carrier featuring secure data processing
JP2001027964A (en) Data storing method, system therefor and recording medium for data storage processing
JP2004126639A (en) Data management system, data management method and program
CN110113151B (en) Non-invasive real-time encryption and decryption method for ELF format program
US8572372B2 (en) Method for selectively enabling access to file systems of mobile terminals
CN111143879A (en) Android platform SD card file protection method, terminal device and storage medium
CN112134879B (en) An authorization method based on blockchain smart contracts
KR20230086559A (en) Multi secure storage system and method of thereof
JP2005109869A (en) Method for managing encryption key
Gemplus et al. Interoperability Specification for ICCs and Personal Computer Systems

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R14-asn-PN2301

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 8

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 9

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 10

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 11

FPAY Annual fee payment

Payment date: 20130715

Year of fee payment: 12

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 12

FPAY Annual fee payment

Payment date: 20140714

Year of fee payment: 13

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 13

FPAY Annual fee payment

Payment date: 20150714

Year of fee payment: 14

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 14

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20160716

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20160716

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载