KR100658990B1 - 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치 - Google Patents

다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치 Download PDF

Info

Publication number
KR100658990B1
KR100658990B1 KR1020050073399A KR20050073399A KR100658990B1 KR 100658990 B1 KR100658990 B1 KR 100658990B1 KR 1020050073399 A KR1020050073399 A KR 1020050073399A KR 20050073399 A KR20050073399 A KR 20050073399A KR 100658990 B1 KR100658990 B1 KR 100658990B1
Authority
KR
South Korea
Prior art keywords
rowid
encryption
session
data
update procedure
Prior art date
Application number
KR1020050073399A
Other languages
English (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 KR1020050073399A priority Critical patent/KR100658990B1/ko
Application granted granted Critical
Publication of KR100658990B1 publication Critical patent/KR100658990B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

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

Abstract

다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치가 개시된다.
본 발명에 따른 일괄 암호화 처리 방법은, 암호화 대상 데이터가 포함된 데이터베이스로부터 ROWID 정보를 획득하는 단계와, 상기 획득된 ROWID 정보를 이용하여 각 세션에서 처리될 분기점 ROWID를 추출하는 단계와, 상기 추출된 분기점 ROWID를 이용하여 각 세션에서 처리될 적어도 하나 이상의 암호화 업데이트 프로시져를 생성하는 단계와, 상기 적어도 하나 이상 생성된 암호화 업데이트 프로시져를 호출하여 상기 각 세션에 대응하는 프로세서에서 상기 암호화 업데이트 프로시져를 동시에 실행하는 단계를 포함한다. 이와 같은 본 발명에 의하면, 단일 세션 작업과 비교할 때 상당한 작업 시간의 성능 향상을 가져올 수 있다.

Description

다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치{Batch encrypting method and apparatus using multi-session}
도 1은 종래 기술에 따라 단일 세션에 의해 암호화 업데이트를 수행하는 방식을 설명하기 위한 참고도,
도 2는 본 발명에 따라 다중 세션을 통한 일괄 암호화를 처리하기 위한 일괄 암호화 처리 장치의 개략적인 블록도,
도 3은 본 발명에 이용되는 ROWID의 일 예,
도 4는 도 2에 도시된 ROWID 저장 테이블에 저장되는 테이블의 일 예,
도 5는 본 발명에 따라 ROWID 분기점을 추출하는 소스 코드의 일 예,
도 6은 본 발명에 따라 생성한 암호화 업데이트 프로시져를 호출하여 일괄 암호화 작업을 처리하는 방식을 설명하기 위한 참고도,
도 7A 내지 도 7D는 도 6에 도시된 각 처리부에서 각각 수행되는 암호화 업데이트 프로시져의 일 예,
도 8은 본 발명에 따라 다중 세션을 통해 일괄 암호화 처리를 수행하는 과정의 흐름도.
본 발명은 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치에 관한 것이다.
컴퓨터 하드웨어 기술의 성장과 초고속 네트워크 망의 급속한 확산은 정보화 구현을 위한 순기능적 요소의 개발을 촉진하고 있다. 그러나 이러한 정보화의 발달이 진행될수록 정보의 도청, 변조, 유출 등의 역기능이 대두되고 있으며 정보화 사회로의 발전을 저해하는 요소가 되고 있다. 이러한 문제 때문에 네트워크, 시스템, OS에 대한 보안 대책이 강구되고 있으며, 이에 대한 제품도 다수 존재하고 있다. 그러나, 정보보호의 최종단계에 존재하는 데이터베이스 내부 중요 데이터에 대한 보호는 다소 소홀했으며 이를 보호하기 위한 제품도 현재 시장에 하나 둘 출시되고 있는 초기 단계이다. 중요 데이터의 보호를 위한 가장 확실하고 완벽한 대책은 데이터를 암호화하여 보호하는 방법이다. 이러한 데이터베이스 내부 중요 데이터에 대한 암호화를 위해 반드시 필요한 부분이 일괄 암호화 작업이다. 대용량 테이블에 대한 일괄 암호화 작업은 모든 데이터에 대해 암호화하여 갱신하는 업데이트 작업을 진행해야 되는 과중한 작업으로 시스템 사양에 따라 상당한 성능 차이가 발생한다. 단일 세션으로 일괄 암호화 작업을 진행할 경우 다중 CPU 시스템에서의 효율적인 CPU 분산 처리가 되지 못하는 점 때문에 성능상 좋지 않는 결과가 초래될 수밖에 없다.
도 1은 종래 기술에 따라 단일 세션에 의해 암호화 업데이트를 수행하는 방식을 설명하기 위한 참고도이다.
도 1을 참조하면, 암호화 업데이트를 수행하는 처리기(100)는 데이터베이스에 들어있는 암호화 업데이트 대상 테이블(100)로부터 특정 컬럼 값을 읽어서 암호화 업데이트 처리 작업(120)을 수행한다. 암호화 업데이트 처리 작업(120)에서는 테이블(100)로부터 각 행의 PASSWORD를 읽어서 암호화 업데이트를 수행하여 암호화된 데이터인 SEC_PASSWORD를 생성하고 이를 테이블(110)에 저장한다.
이와 같이 특정 컬럼 값을 새로운 컬럼에 암호화 업데이트하는 작업이나 새로운 로직 처리를 통한 업데이트 작업은 테이블 사이즈에 따라 상당한 작업 시간이 걸릴 수 있다. 이런 작업 자체가 업데이트에 대해서는 병렬 처리가 되지 않는다는 점과 사용자가 직접 해당 DML(Data Manipulation Language) 문장을 수행하는 방식이 단일 세션에 의한 처리이기 때문입니다. 즉 다시 말하면, 시스템 가용성이 충분한 시스템인 경우에는 적절하게 시스템에서 지원하는 자원을 효율적으로 이용하여야 정상적으로 작업 성능을 높일 수 있는데도 단일 세션으로 처리를 한다면 다중 CPU 중 임의의 하나의 CPU 에서만 작업이 처리되기 때문에 자원 효율성을 떨어뜨리게 된다.
본 발명은 상기와 같은 문제점을 해결하여 사용자가 설정한 수만큼 다중 세션에서 일괄 암호화 작업을 진행하도록 처리하여 일괄 암호화 작업 성능을 개선시킬 수 있는 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치를 제공하는 것을 목적으로 한다.
상기와 같은 과제를 해결하기 위한 본 발명의 하나의 특징은, 다중 세션을 통한 일괄 암호화 처리 방법에 있어서, 암호화 대상 데이터가 포함된 데이터베이스로부터 ROWID 정보를 획득하는 단계와, 상기 획득된 ROWID 정보를 이용하여 각 세션에서 처리될 분기점 ROWID를 추출하는 단계와, 상기 추출된 분기점 ROWID를 이용하여 각 세션에서 처리될 적어도 하나 이상의 암호화 업데이트 프로시져를 생성하는 단계와, 상기 적어도 하나 이상 생성된 암호화 업데이트 프로시져를 호출하여 상기 각 세션에 대응하는 프로세서에서 상기 암호화 업데이트 프로시져를 동시에 실행하는 단계를 포함하는 것이다.
상기 분기점 ROWID 추출 단계에서, 각 세션에서 처리될 ROWID 건수가 소정의 임계치보다 작은 경우에는 단일 세션에 의해 암호화 업데이트 프로시져를 생성하는 것으로 결정하고, 상기 암호화 업데이트 프로시져 생성 단계에서, 단일 암호화 업데이트 프로시져를 생성하는 것이 바람직하다.
상기 암호화 업데이트 프로시져를 처리할 세션의 수에 관한 정보를 사용자로부터 입력받는 단계를 더 포함하는 것이 바람직하다.
상기 암호화 업데이트 프로시져 생성 단계에서 생성되는 암호화 업데이트 프로시져는, 첫 번째 ROWID에 관한 데이터부터 제1분기점 ROWID에 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져, 제1분기점 ROWID 다음의 ROWID에 관한 데이터부터 제2분기점 ROWID 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져, 제2분기점 ROWID 다음의 ROWID에 관한 데이터부터 마지막 ROWID에 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져 중 적어도 하나를 포함하는 것이 바람직하다.
본 발명의 다른 특징은, 다중 세션을 통한 일괄 암호화 처리 장치에 있어서, 암호화 대상 데이터가 포함된 데이터베이스로부터 ROWID 정보를 획득하고, 상기 획득된 ROWID 정보를 이용하여 각 세션에서 처리될 분기점 ROWID를 추출하는 ROWID 저장 테이블 관리부와, 상기 추출된 분기점 ROWID를 이용하여 각 세션에서 처리될 적어도 하나 이상의 암호화 업데이트 프로시져를 생성하고, 호출하는 암호화 업데이트 프로시져 생성부를 포함하는 메인 처리부와, 상기 각 세션에 대응하는 프로세서에서 상기 암호화 업데이트 프로시져를 동시에 실행하는 암호화 업데이트 처리부를 포함하는 것이다.
이제, 첨부된 도면들을 참조하여 본 발명을 상세히 설명한다.
도 2는 본 발명에 따라 다중 세션을 통한 일괄 암호화를 처리하기 위한 일괄 암호화 처리 장치(200)의 개략적인 블록도를 나타낸다.
도 2를 참조하면, 본 발명에 따른 일괄 암호화 처리 장치(200)는 메인 처리부(210)와, 사용자 인터페이스(220)와, 데이터 저장부(230)와, 메모리(240)와, 암호화 업데이트 처리부(250)를 포함한다.
메인 처리부(210)는 일괄 암호화 처리를 수행할 세션 수를 설정하고, 암호화 업데이트 대상 업데이트 테이블로부터 ROWID를 추출하여 각 세션에서 처리할 ROWID 건수 데이터를 정의함으로써 암호화 업데이트 프로시져들을 생성한다.
메인 처리부(210)는 세션 수 설정부(211), ROWID 저장 테이블 관리부(212), 암호화 업데이트 프로시져 생성부(213)를 포함한다.
세션 수 설정부(211)는 사용자 인터페이스(220)를 통해서 세션 수에 관한 정보를 수신하고 이를 세션 수로서 설정하여 설정된 세션 수에 관한 정보를 ROWID 저장 테이블 관리부(212) 및 암호화 업데이트 프로시져 생성부(213)로 제공한다. 사용자 인터페이스(211)는 사용자에게 세션 수를 선택하도록 안내하는 출력 화면과 상기 출력 화면을 보고 사용자가 희망하는 세션 수를 입력할 수 있도록 하는 입력 수단을 포함한다.
ROWID 저장 테이블 관리부(212)는 데이터 저장부(230)에 저장되어 있는 암호화 업데이트 대상 테이블(231)로부터 ROWID를 추출하여 추출된 ROWID에 관한 정보를 ROWID 저장 테이블(232)에 저장한다. 물론 이때 ROWID 저장 테이블(232)이 데이터 저장부(230)에 존재하지 않는 경우에는 ROWID 정보를 저장할 수 있는 ROWID 저장 테이블(232)을 새로 생성하고 나서 ROWID 정보를 ROWID 저장 테이블(232)에 저장한다.
ROWID를 구체적으로 설명한다.
ROWID는 ORACLE에서 인덱스(INDEX)를 생성하기 위하여 내부적으로 사용하는 의사 컬럼(PSEUDOCOLUMN)으로서 사용자가 임으로 변경하거나 삭제할 수 없고, 단지 테이블의 한 컬럼처럼 참조만 가능하며 데이타베이스에 값이 저장되지는 않는다.
ROWID는 물리적인 어드레스를 가지고 있기 때문에 단일 블록 액세스(SINGLE BLOCK ACCESS)로 찾고자 하는 ROW를 찾을 수 있어 물리적인 ROWID는 주어진 테이블에 가장 빠른 액세스 방법을 제공하게 된다.
도 3은 본 발명에 이용되는 ROWID의 일 예를 나타낸다. 오라클에서의 ROWID 는 18 바이트 문자열 형태의 값으로, 바이트 사이즈에 따라 각각의 의미가 존재한다. 도 3을 참조하면, 처음 6자리(310)는 데이터베이스 세그먼트를 식별하기 위한 데이터 오브젝트 번호를 나타낸다. 두 번째 3자리(320)는 상대적 파일 번호를 나타내고, 세 번째 6자리(330)는 ROW를 포함하는 데이터 블록의 블록 번호를 나타내고, 마지막 3자리(340)는 블록내의 행 번호를 나타낸다.
ROWID 저장 테이블 관리부(212)는 암호화 업데이트 대상 테이블(231)에 들어있는 이러한 ROWID 중 처음 15바이트 즉, 데이터 오브젝트 번호(310), 상대적 파일 번호(320), 블록 번호(330)를 잘라내어, 이러한 15바이트까지의 ROWID값을 ROWID 저장 테이블(232)에 저장한다.
도 4는 도 2에 도시된 ROWID 저장 테이블(232)의 일 예를 나타낸다. ROWID 저장 테이블(232)에 데이터의 저장은 분석함수를 이용하여 데이터를 추출하여 수행될 수 있다. 분석 함수(ANALYTIC FUNCTION)란 것은, RISQL, SQL 확장, 지능화된 SQL에 활용하기 위해 오라클 8.1.6 이상 버전부터 지원하고 있는 기능으로서, 이동 평균 계산, 랭킹, 선도/지체 비교와 같은 기본적인 비즈니스 지능적 계산을 수행하기 위해서는 제공되는 새로운 함수들을 말한다.
도 4를 참조하면, 테이블(232)에는 테이블(232)을 식별하기 위한 테이블 이름(TABLE_NAME)이 존재하고, 테이블(232)에는 총 ROWID 개수를 나타내는 TOTAL_CNT(410), 최대 ROWID 블록값을 나타내는 MAX_BLOCK(420), 최소 ROWID 블록값을 나타내는 MIN_BLOCK(430), 블록 정보(440)가 저장된다.
TOTAL_CNT(410)는 이 테이블에 저장된 ROWID 건수의 총 개수를 나타내고, MAX_BLOCK(420)은 말 그대로 이 테이블에 저장된 ROWID 블록값들중에서 가장 큰 ROWID 블록값을 나타내고, MIN_BLOCK(430)은 이 테이블에 저장된 ROWID 블록값들중에서 가장 작은 ROWID 블록값을 나타낸다.
블록 정보(440)는 이 테이블에 저장되는 모든 ROWID 블록에 관한 정보를 말한다. 각 ROWID 블록에 대해서, ROWID 블록값을 나타내는 BLOCK_ID와 이 ROWID 블록에 들어있는 ROWID의 개수를 나타내는 BLOCK_CNT가 저장된다.
다시 도 3을 참조하면, 총 18 바이트의 ROWID 중에서 처음 15 바이트의 ROWID 값에 의해 블록이 식별되고, 총 18 바이트의 ROWID 값은 각 블록내의 개별 행에 들어있는 ROWID값을 나타내므로, 블록을 식별하는 정보로는 15 바이트의 ROWID 값으로 충분하다. 따라서, 도 4를 참조하면, 각 ROWID 블록값은 ROWID 전체 값중 처음 15 바이트를 저장한다.
도 4에 도시된 블록 ID 정보(440)에는 총 N개의 블록에 대한 정보가 들어있다. 즉, 첫 번째 블록 정보(441)로는 BLOCK_ID_1과 BLOCK_CNT_1이, 두 번째 블록 정보(442)로는 BLOCK_ID_2와 BLOCK_CNT_2가, 세 번째 블록 정보(443)로는 BLOCK_ID_3과 BLOCK_CNT_3이, 마지막 N 번째 블록 정보(444)로는 BLOCK_ID_N과 BLOCK_CNT_N이 저장되어 있다.
이와 같이 ROWID 저장 테이블 관리부(212)는 ROWID 저장 테이블(232)을 만든 다음, 이 테이블(232)에 들어있는 정보로부터 분기점 LOWID를 추출한다.
이와 같이 ROWID 저장 테이블(232)에 필요한 ROWID 정보가 모두 저장되고 나면 ROWID 저장 테이블 관리부(212)는 소정의 프로그램을 이용하여 ROWID 저장 테이 블(232)에 들어있는 ROWID 정보를 가지고 각 세션에서 수행될 데이터를 구분하기 위한 분기점 ROWID를 추출한다.
도 5는 본 발명에 따라 테이블(232)에 들어있는 정보를 이용하여 분기점 ROWID를 추출하기 위한 소스 코드의 일 예이다. 도 5에 도시된 소스 코드에서는 배열변수인 V_BLOCK_POINT(i) 변수에 원하는 세션 수 만큼의 ROWID 정보를 추출하여 저장을 한다. 만약 세션 수를 3개를 지정했다면 V_BLOCK_POINT(1)에 첫 번째 분기점 ROWID 값을 저장하고 V_BLOCK_POINT(2)에 두 번째 분기점 ROWID 값이 저장이 될 것입니다. 추출 대상 ROWID는 지정된 세션 수 보다 하나 작게 될 것이다.
도 5에 도시된 소스 코드에 사용된 변수를 간략하게 설명하면 다음과 같다.
V_TOTAL_CNT은 전체 테이블의 ROWID 건수,
V_SPLIT_CNT ; 전체 ROWID 건수에서 세션 수를 나눈 값, 즉 세션당 처리 ROWID 건수,
V_BLOCK_CNT ; ROWID 블록값 증가 변수,
V_IDX ; 순서 지정 변수,
V_BLOCK_ID ; 세션 분기점이 되는 ROWID 값,
V_BLOCK_POINT ; 세션 분기점이 되는 모든 ROWID 값을 저장할 배열 변수,
V_MAX_POINT ; 지정된 세션 수 보다 하나 작은 값을 나타낸다.
도 5를 참조하면, 섹션(510)은 생성된 테이블(232)로부터 정보를 얻어오는 부분이고, 섹션(520)은 소정의 변수를 정의하는 부분이며, 섹션(530)은 소정의 조건을 만족하면 해당하는 ROWID 값을 추출하는 IF절 부분이다. 도 5에 도시된 소소 코드에 대해 좀더 구체적으로 설명한다.
섹션(510)에서는, ROWID 저장 테이블(232)에 저장된 BLOCK_ID, BLOCK_CNT, TOTAL_CNT, MAX_BLOCK, MIN_BLOCK을 읽어온다.
섹션(520)에서는, V_TOTAL_CNT 라는 변수에, 읽어온 TOTAL_CNT 값을 저장하고, V_SPLIT_CNT라는 변수에는, V_TOTAL_CNT 값을 I_SESSION_NUM 값으로 나눈 정수값을 저장하고, V_BLOCK_CNT라는 변수에는, BLOCK_CNT의 값을 차례대로 누적한다. 예를 들어, 첫 번째 블록의 BLOCK_CNT가 30이고, 두 번째 블록의 BLOCK_CNT가 50인 경우, 처음 초기화된 V_BLOCK_CNT에는 0이 담겨지지만, 다음 V_BLOCK_CNT에는 30이 담겨지고, 그 다음 V_BLOCK_CNT에는 80이 담겨지게 된다.
섹션(530)에서는, 이렇게 누적된 V_BLOCK_CNT가 V_SPLIT_CNT 보다 크거나 같게 되는지를 체크하고(531), 조건을 만족하는 경우에는 IF 절 이하를 수행한다.
즉, 인덱스값인 V_IDX를 1씩 증가시키고 SQLSTMT로 시작하는 동적인 구문인 6행을 실행하는데, 6행으로 구성된 동적인 구문의 의미는 "ROWID 저장 테이블(232)로부터 ROWID의 처음 15 바이트가 BLOCK_ID인 블록에서 첫 번째 또는 임의의 ROWID 값을 하나 선택하라"는 의미이다.
이와 같이 선택된 ROWID 값은 EXECUTE 문장에 의해 V_BLOCK_ID에 저장된다(532).
다음, 선택한 ROWID 값을 분기점 ROWID 배열 변수에 저장하기 위해 V_BLOCK_POINT(V_IDX)라는 배열 변수에 V_BLOCK_ID를 저장하고, 다음 분기점을 찾기 위해 V_BLOCK_CNT는 0으로 초기화하고, V_IDX가 V_MAX_POINT와 같으면 즉, 분기 점 ROWID를 모두 찾았으면 실행을 종료한다(533).
예를 들어, V_TOTAL_CNT에 100만이 저장되어 있고, I_SESSION_NUM이 5라면, 하나의 세션에서 수행될 ROWID 처리 건수를 나타내는 변수인 V_SPLIT_CNT에는 20만이 저장된다. 그리고, V_BLOCK_CNT 의 값이 누적되어 20만이 된 경우에 이 V_BLOCK_CNT의 값은 V_SPLIT_CNT의 값과 같으므로 IF 절 이하를 수행하게 되고, IF 절 이하에서는 V_BLOCK_CNT의 값이 누적되어 20만이 되었을 때 해당 BLOCK_ID를 가지는 블록에서 첫 번째 ROWID 나 임의의 ROWID가 선택되게 된다.
ROWID 저장 테이블 관리부(212)가 이와 같은 방법으로 분기점 ROWID를 추출하면 이와 같이 추출된 분기점 ROWID 정보를 암호화 업데이트 프로시져 생성부(213)로 제공한다.
암호화 업데이트 프로시져 생성부(213)는 수신된 분기점 ROWID 정보를 이용하여 각 세션에서 처리될 암호화 업데이트 프로시져를 생성하여 이를 메모리(240)에 저장한다. 메모리(240)에는 예를 들어, 첫 번째 ROWID에 관한 데이터부터 첫 번째 분기점 ROWID에 관한 데이터까지 암호화 업데이트 처리를 하는 암호화 업데이트 프로시져 #1, 첫 번째 분기점 ROWID에 관한 데이터의 다음 데이터부터 두 번째 분기점 ROWID에 관한 데이터까지 암호화 업데이트 처리를 하는 암호화 업데이트 프로시져 #2, 두 번째 분기점 ROWID에 관한 데이터의 다음 데이터부터 세 번째 분기점 ROWID에 관한 데이터까지 암호화 업데이트 처리를 하는 암호화 업데이트 프로시져 #3, ... N-1번째 분기점 ROWID에 관한 데이터의 다음 데이터부터 마지막 데이터까지 암호화 업데이트 처리를 하는 암호화 업데이트 프로시져 #N이 저장되어 있음 이 표시되어 있다.
한편, 암호화 업데이트 프로시져 생성부(213)는 세션당 처리될 ROWID의 건수의 값이 소정의 임계치보다 작은 경우에는, 이를 다중 세션에 의해 처리하기 보다는 단일 세션에 의해 처리하는 것이 더 효율적이라고 판단하여 단일 세션에 의해 수행되는 암호화 업데이트 프로시져를 생성하도록 구현될 수도 있다. 즉, 모든 테이블에 적용하기 보다는 기가 바이트 또는 테라바이트 사이즈를 가지는 대용량 테이블에 적용을 하는 것이 더 효율적일 수 있다. 왜냐하면 사이즈가 작은 테이블에 적용하기 위해 하나로 처리되는 UPDATE 구문 대신에 다중 세션의 처리를 위해 추가적인 처리 루틴이 들어간다면 단일 세션의 처리보다 훨씬 비효율적일 것이기 때문이다.
암호화 업데이트 프로시져 생성부(213)는 각 세션에서 처리할 암호화 업데이트 프로시져를 모두 생성하고 저장한 다음, 이들 프로시져를 호출한다.
그러면, 암호화 업데이트 처리부(250)의 각 암호화 업데이트 처리 유닛들은 자신에게 할당된 암호화 업데이트 프로시져를 메모리로부터 읽어와서 동시에 실행한다. 즉, 암호화 업데이트 처리부 #1(251)은 메모리(240)에 저장된 암호화 업데이트 프로시져 #1을 읽어와서 암호화 업데이트 프로시져 #1을 실행하고, 암호화 업데이트 처리부 #2(252)는 메모리(240)에 저장된 암호화 업데이트 프로시져 #2를 읽어와서 암호화 업데이트 프로시져 #2를 실행하고, 암호화 업데이트 처리부 #3(253)은 메모리(240)에 저장된 암호화 업데이트 프로시져 #3을 읽어와서 암호화 업데이트 프로시져 #3을 실행하고, 암호화 업데이트 처리부 #N(254)은 메모리(240)에 저 장된 암호화 업데이트 프로시져 #N을 읽어와서 암호화 업데이트 프로시져 #N을 실행하고,
도 6은 본 발명에 따라 생성한 암호화 업데이트 프로시져를 호출하여 일괄 암호화 작업을 처리하는 방식을 설명하기 위한 참고도를 나타내고, 도 7A 내지 도 7D는 도 6에 도시된 각 처리부에서 각각 수행되는 암호화 업데이트 프로시져의 일 예를 나타낸다.
도 6을 참조하면 총 4개의 CPU 또는 컴퓨터(251-254)가 있어서 전체 암호화 대상 테이블을 4개의 조각으로 분할하여 CPU(251)는 첫 번째 조각을, CPU(252)는 두 번째 조각을, CPU(253)은 세 번째 조각을, CPU(254)는 네 번째 조각에 대해 암호화 업데이트 처리를 수행한다.
도 7A를 참조하면, CPU(251)는 ROWID가 "AAAGOuAABAAALR8AAC"인 데이터까지 암호화 업데이트를 수행하고, CPU(252)는 ROWID가 "AAAGOuAABAAALR8AAC" 보다 큰 데이터부터 ROWID가 "AAAGOuAABAAALm3AAA"인 데이터까지 암호화 업데이트를 수행하고, CPU(253)은 ROWID가 "AAAGOuAABAAALm3AAA" 보다 큰 데이터부터 ROWID가 "AAAGOuAABAAAM2IAAC"인 데이터까지 암호화 업데이트를 수행하고, CPU(254)는 ROWID가 "AAAGOuAABAAAM2IAAC" 보다 큰 데이터에 대해 암호화 업데이트를 수행함을 나타낸다.
도 8은 본 발명에 따라 다중 세션을 통해 일괄 암호화 처리를 수행하는 과정의 흐름도를 나타낸다.
도 8을 참조하면, 먼저, 사용자가 직접 수행할 일괄 암호화 작업을 동시에 수행할 세션 수를 결정한다(810).
다음, 블록당 차지하고 있는 ROWID 수 정보를 저장할 ROWID 저장 테이블이 존재하는지 체크하고(820), 만약 존재하지 않는다면 새롭게 ROWID 저장 테이블을 생성한다(830).
다음, 미리 제공된 함수를 실행하여 ROWID 블록값(1부터 15바이트 ROWID 정보), ROWID 블록당 위치하고 있는 건수와 총 ROW 수, 최소 ROWID 블록값, 최대 ROWID 블록값 정보 등을 미리 생성해 놓은 테이블에 저장한다(840). 제공된 함수 내부에는 분석함수를 이용하여 값을 추출하는 모듈이 내장되어 있다.
다음, 각 세션에서 처리할 암호화 업데이트 문장을 만들어 내기 위해 분기점이 되는 ROWID 값을 추출한다(850). 예를 들어, 총 ROW 건수가 120만건이고 세션수가 4개라면 균등하게 분리할 경우 한 세션당 처리할 ROW 수는 30만건이 될 것이다. 첫 번째 ROWID 부터 30만건씩 증가한 지점의 ROWID가 분기점이 되는 ROWID로 총 3개를 추출하면 된다.
만약 한 세션당 처리할 대상 ROWID 건수가 소정의 임계치보다 작은 경우에는 단일 세션에서 처리하도록 하나의 암호화 업데이트 프로시저를 생성한다(880). 상기 소정의 임계치는 다중 세션보다 단일 세션에서 처리하는 것이 더 유리할 수 있는 ROWID 수를 말한다.
그리고, 한 세션당 처리할 대상 ROWID 건수가 소정의 임계치보다 크거나 같은 경우에는 미리 계산되어진 분기점 ROWID를 이용하여 각 세션에서 처리할 암호화 업데이트 프로시저를 세션 수 만큼 생성한다(870).
그리고나서, 이렇게 생성된 암호화 업데이트 프로시저를 호출하여 일괄 암호화 작업을 처리한다(890).
이상 설명한 바와 같은 다중 세션을 통한 일괄 암호화 업데이트 처리 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 다중 세션을 통한 일괄 암호화 업데이트 처리 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으 로 해석되어야 할 것이다.
이상 설명한 바와 같은 다중 세션을 통한 일괄 암호화 업데이트 작업은 기존 단일 세션과 비교할 경우 약 5배에서 10배 정도의 작업 시간 성능 향상을 기대할 수 있다. 대용량 테이블에 암호화를 적용할 경우 초기 일괄 암호화 작업 시간은 고스란히 시스템 다운타임에 속하므로 서비스 중단이라는 불가피한 선택을 할 수 밖에 없으며 서비스 중단을 최소한 시키려는 작업은 끊임없이 진행되어 오고 있지만, 본 발명에 따르면 암호화 솔루션 도입의 걸림돌로 작용할 수 있는 서비스 다운타임을 최소화 시킬 수 있으므로 네트워크 단부터 시작된 보안을 데이터베이스 서버 영역까지 확대시킬 수 있게 된다.

Claims (8)

  1. 다중 세션을 통한 일괄 암호화 처리 방법에 있어서,
    암호화 대상 데이터가 포함된 데이터베이스로부터 ROWID 정보를 획득하는 단계와,
    상기 획득된 ROWID 정보를 이용하여 각 세션에서 처리될 분기점 ROWID를 추출하는 단계와,
    상기 추출된 분기점 ROWID를 이용하여 각 세션에서 처리될 적어도 하나 이상의 암호화 업데이트 프로시져를 생성하는 단계와,
    상기 적어도 하나 이상 생성된 암호화 업데이트 프로시져를 호출하여 상기 각 세션에 대응하는 프로세서에서 상기 암호화 업데이트 프로시져를 동시에 실행하는 단계를 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 방법.
  2. 제1항에 있어서,
    상기 분기점 ROWID 추출 단계에서, 각 세션에서 처리될 ROWID 건수가 소정의 임계치보다 작은 경우에는 단일 세션에 의해 암호화 업데이트 프로시져를 생성하는 것으로 결정하고,
    상기 암호화 업데이트 프로시져 생성 단계에서, 단일 암호화 업데이트 프로시져를 생성하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 방법.
  3. 제1항에 있어서,
    암호화 업데이트 프로시져를 처리할 세션의 수에 관한 정보를 사용자로부터 입력받는 단계를 더 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 방법.
  4. 제1항에 있어서,
    상기 암호화 업데이트 프로시져 생성 단계에서 생성되는 암호화 업데이트 프로시져는, 첫 번째 ROWID에 관한 데이터부터 제1분기점 ROWID에 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져, 제1분기점 ROWID 다음의 ROWID에 관한 데이터부터 제2분기점 ROWID 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져, 제2분기점 ROWID 다음의 ROWID에 관한 데이터부터 마지막 ROWID에 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져 중 적어도 하나를 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 방법.
  5. 다중 세션을 통한 일괄 암호화 처리 장치에 있어서,
    암호화 대상 데이터가 포함된 데이터베이스로부터 ROWID 정보를 획득하고, 상기 획득된 ROWID 정보를 이용하여 각 세션에서 처리될 분기점 ROWID를 추출하는 ROWID 저장 테이블 관리부와, 상기 추출된 분기점 ROWID를 이용하여 각 세션에서 처리될 적어도 하나 이상의 암호화 업데이트 프로시져를 생성하고, 호출하는 암호화 업데이트 프로시져 생성부를 포함하는 메인 처리부와,
    상기 각 세션에 대응하는 프로세서에서 상기 암호화 업데이트 프로시져를 동시에 실행하는 암호화 업데이트 처리부를 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 장치.
  6. 제5항에 있어서,
    ROWID 저장 테이블 관리부가, 각 세션에서 처리될 ROWID 건수가 소정의 임계치보다 작은 것으로 판단하여는 단일 세션에 의해 암호화 업데이트 프로시져를 생성하는 것으로 결정한 경우에,
    상기 암호화 업데이트 프로시져 생성부는, 단일 암호화 업데이트 프로시져를 생성하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 장치.
  7. 제5항에 있어서,
    상기 메인 처리부는,
    암호화 업데이트 프로시져를 처리할 세션의 수에 관한 정보를 사용자로부터 입력받는 세션 수 설정부를 더 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 장치.
  8. 제5항에 있어서,
    상기 암호화 업데이트 프로시져 생성부가 생성하는 암호화 업데이트 프로시져는, 첫 번째 ROWID에 관한 데이터부터 제1분기점 ROWID에 관한 데이터까지 암호 화 업데이트 처리를 수행하는 프로시져, 제1분기점 ROWID 다음의 ROWID에 관한 데이터부터 제2분기점 ROWID 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져, 제2분기점 ROWID 다음의 ROWID에 관한 데이터부터 마지막 ROWID에 관한 데이터까지 암호화 업데이트 처리를 수행하는 프로시져 중 적어도 하나를 포함하는 것을 특징으로 하는 다중 세션을 통한 일괄 암호화 처리 장치.
KR1020050073399A 2005-08-10 2005-08-10 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치 KR100658990B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050073399A KR100658990B1 (ko) 2005-08-10 2005-08-10 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050073399A KR100658990B1 (ko) 2005-08-10 2005-08-10 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR100658990B1 true KR100658990B1 (ko) 2006-12-21

Family

ID=37814757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050073399A KR100658990B1 (ko) 2005-08-10 2005-08-10 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100658990B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030081348A (ko) * 2000-12-13 2003-10-17 인피네온 테크놀로지스 아게 암호화 프로세서
KR20030083326A (ko) * 2002-04-20 2003-10-30 엘지전자 주식회사 암호화 방법
KR20050022623A (ko) * 2003-08-29 2005-03-08 삼성전자주식회사 자체 오류 감지 기능을 강화한 상호 의존적 병렬 연산방식의 하드웨어 암호화 장치 및 그 하드웨어 암호화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030081348A (ko) * 2000-12-13 2003-10-17 인피네온 테크놀로지스 아게 암호화 프로세서
KR20030083326A (ko) * 2002-04-20 2003-10-30 엘지전자 주식회사 암호화 방법
KR20050022623A (ko) * 2003-08-29 2005-03-08 삼성전자주식회사 자체 오류 감지 기능을 강화한 상호 의존적 병렬 연산방식의 하드웨어 암호화 장치 및 그 하드웨어 암호화 방법

Similar Documents

Publication Publication Date Title
US20200411138A1 (en) Compressing, storing and searching sequence data
US10936744B1 (en) Mathematical method for performing homomorphic operations
US11709948B1 (en) Systems and methods for generation of secure indexes for cryptographically-secure queries
US9548866B2 (en) Deletion of content in digital storage systems
US20220277099A1 (en) Encrypting data records and processing encrypted records without exposing plaintext
US10346633B2 (en) Secure database searching
CN110825363B (zh) 智能合约获取方法、装置、电子设备及存储介质
CN103119594A (zh) 可检索密码处理系统
EP2778953A1 (en) Encoded-search database device, method for adding and deleting data for encoded search, and addition/deletion program
KR20200143197A (ko) 블록체인을 기반으로 데이터의 분산 암호화 관리를 가능하게 하는 데이터 관리 장치 및 그 동작 방법
GB2523761A (en) Generation of analysis reports using trusted and public distributed file systems
US20190036679A1 (en) Encryption device, encryption method, computer readable medium, and storage device
Li et al. Juxtapp and dstruct: Detection of similarity among android applications
WO2017202370A1 (zh) 软件静态数据的加密方法及系统
CN113076562A (zh) 基于gcm加密模式的数据库加密字段模糊检索方法
JP5991155B2 (ja) 検索処理方法、データ生成方法及び情報処理装置
JP6672451B2 (ja) 暗号化検索インデックスマージサーバ、暗号化検索インデックスマージシステム、及び暗号化検索インデックスマージ方法
KR100658990B1 (ko) 다중 세션을 통한 일괄 암호화 처리를 하는 방법 및 장치
KR101977128B1 (ko) 장문 텍스트열에 대한 고정 길이 암호화 장치 및 방법
CN112181974B (zh) 标识信息分配方法、系统及存储设备
CN113407558A (zh) 一种基于区块链世界状态的交易数据更新方法、存储介质及系统
JP6319694B2 (ja) データキャッシュ方法、ノード装置及びプログラム
WO2024109211A1 (zh) 数据处理方法及系统、电子设备和计算机可读存储介质
CN114003932A (zh) 字符串字面量的处理方法、装置、电子设备和存储介质
Ho et al. Speed up querying encrypted data on outsourced database

Legal Events

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

Payment date: 20121212

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131212

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141212

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151210

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161209

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171212

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181212

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20191212

Year of fee payment: 14