기술분야별 분류
생활필수품
차량 / 처리조작
화학 / 바이오 / 야금
섬유 / 지류
건축 / 구조물
기계 / 무기 / 조명
물리학 / 정보저장
전기 / 전자 / 통신
상표 / 디자인

물리학 / 정보저장

응용 프로그램의 암호화 데이터베이스 자동 연동 방법

초창기의 컴퓨터에서는 운영체제가 제공하는 파일 시스템을 이용하여 데이터를 단순히 저장하고 읽기만 했지만, 점차 그러한 데이터를 효율적으로 관리하거나 접근하기 위해서는 응용프로그래머가 직접 파일 시스템 상에 필요한 응용프로그램을 개발해야 하는 필요성이 대두되었다.

 

하지만 사용자의 필요 및 요구에 따라서 응용 프로그램은 계속적으로 변경되어져야 하고, 심지어는 처음부터 다시 개발이 되어야 했다. 1960년대부터는 소개된 데이터베이스란 용어는 응용시스템들이 공유하기 위해 통합되고 저장된 운영 데이터의 집합을 의미한다. 그리고 이러한 데이터 베이스를 관리하기 위한 시스템인 데이터베이스 관리 시스템(DBMS; Database Management System)이 도입되기 시작하였다.

 

데이터베이스 관리 시스템이란 다수의 컴퓨터 사용자들이 데이터베이스 안에 데이터를 기록하거나 접근할 수 있게 해주는 프로그램으로서 통상적으로 약어인 DBMS라는 용어를 더욱 많이 사용한다.

 

목적은 데이터베이스 내의 정보를 검색하거나, 데이터베이스에 정보를 저장하기 편리하고 효율적인 환경을 제공하는데에 있다. 데이터베이스 관리 시스템은 운영체제 및 통신 관리 시스템과 함께 컴퓨터의 3대 기간 소프트웨어로 자리잡고 있다.

 

기능은 1) 축적된 자료구조의 정의, 2) 자료구조에 따른 자료의 축적, 3) 데이터베이스 언어에 의한 자료 검색및 갱신, 4) 복수 사용자로부터 자료처리의 동시실행제어, 5) 갱신 중에 이상이 발생했을 때 갱신 이전의 상태 로 복귀, 6) 정보의 기밀보호 등이다. 일반적 형태의 DBMS는 관계형 데이터베이스 관리 시스템(RelationalDBMS)인데, RDBMS의 표준화된 사용자 및 프로그램 인터페이스를 SQL(Structured Query Language)이라고 한다.

 

관계형 DBMS로는 오러클(Oracle), 사이베이스(Sybase), 인포믹스(Infomix)등이 대표적이다.

SQL은 구조화 질의어라고도 하는데, 데이터 정의어(DDL)와 데이터 조작어([DML)를 포함한 데이터베이스용 질의언어(query language)의 일종이다. 초기에는 IBM의 관계형 데이터베이스인 시스템에서만 사용되었으나 지금은다른 데이터베이스에서도 널리 사용되고 있다.

 

응용 프로그램이 운영체제나 데이터베이스 관리 시스템과 같은 시스템 프로그램과 통신할 때에는 특정언어 및 메시지 형식을 사용하는데, 일반적으로 데이터 베이스를 이용하는 응용 프로그램을 개발할 때에는 데이터 베이스 데이터 쿼리부분을 응용 프로그램과 분리된 라이브러리인 응용 프로그램 인터페이스(API; Application Programming Interface)를 사용한다. API는 프로그램 내에서 실행을 위해 특정 서브루틴에 연결을 제공하는 함수를 호출하는 것으로 구현되고, 실질적으로 응용프로그램을 이용할 때에도 이미 구현되어 있는 API를 이용하는 것이 가장 효율적이다.

 

특히 , Java 환경에서 데이터베이스를 사용하는 응용 프로그램 개발 시 API application 계층과 분리하여 개발하면, 데이터베이스 처리관련 코드를 application과 분리할 수 있어 프로그램 개발자 간 업무의 전문성과 효율성을 증대시킬 수 있으며, application code 변경으로 인한 데이터 베이스 코드의 변경을 최소화할 수 있다.

 

자바 데이터 베이스 커넥티버티(JDBC; Java Database connectivity)는 자바 프로그램 내에서 데이터 베이스 질의문 즉, SQL을 실행하기 위한 자바 API의 일종이다. 이는 데이터베이스 및 애플리케이션의 개발자들을 위한 표준 API를 제공하고 순수 자바 API만으로도 데이터베이스 응용업무를 만들게 해준다. 또한, 응용업무를 자바로 작성한다면 보유한 기종이나 소프트웨어에 따라 다르게 작성하지 않아도 되기 때문에 자바와 JDBC의 결합은 하나의 프로그램이 어디에서나 동작할 수 있게 해준다. 자바는 사용하기에 견고하고 안전하고 쉽고 이해하기 쉬우며 데이터베이스 응용업무를 만드는데 있어서 최적의 언어라 할 수 있고, 단지 필요한 것은 다양한 데이터 베이스에 연결하는 방법인데, JDBC는 이러한 것을 위한 도구이다.

 

최근에는 보안을 위해 데이터베이스 내의 데이터를 암호화하는 제품들을 이용하고 있고, 이를 위한 유저 응용 프로그램들은 암호화 방식에 맞는 암호화/복호화 함수를 통해 작업이 수행되어야 한다. 이를 위해 데이터 암호화/복호화 API를 사용하고, 상기 데이터 암호화/복호화 API, 암호화/복호화 대상이 되는 테이블/컬럼 등에 대한 정보를 저장하고 관리하는 Policy Daemon과의 통신을 수행하게 된다.

 

다만, 이러한 종래의 API 방식의 데이터베이스 암호화 제품은 데이터베이스 내의 데이터를 암호화하기 위해서 적절한 암/복호화 함수를 명시적으로 호출하여 받은 암호화 결과값을 가지고 데이터베이스 관리 시스템에 저장하여 사용하고 있기 때문에, 데이터베이스 암호화 제품을 적용하기 위해서는 개별적으로 응용 프로그램의 소스코드를 모두 수정해야 한다는 문제점을 가지고 있다.

 

1은 이러한 종래의 자바 응용프로그램과, 데이터베이스 관리 시스템, 자바 데이터베이스 커넥티버티(JDBC),데이터 암호화/복호화 API Policy Daemon을 포함한 암호화 모듈 간의 개략적인 흐름도를 도시하고 있다.

1)


응용 프로그램의 쿼리에 포함되는 데이터를 암호화하는 작업을 수행할 경우, 암호화 작업을 마친 데이터를 포함하는 쿼리는 자바 데이터베이스 커넥티버티가 인식할 수 있는 쿼리와는 상이하게 된다. 이러한 경우 기존에는 사용자가 응용 프로그램의 코드를 수정하여 암호화 작업을 마친 데이터를 포함하면서, 자바 데이터베이스 커텍티버티가 인식할 수 있는 쿼리의 형식으로 수정하는 작업이 필요하다.

 

데이터를 실시간으로 암호화하기 위해서는 데이터베이스 암호화 제품과 데이터베이스 관리 시스템간의 연동이 필요한데, 현재까지는 이를 사용자가 직접 응용 프로그램의 소스 코드를 항상 수정하는 작업이 필요했기 때문에 제품의 단가가 증가하고, 개발자의 업무 부담이 증대하는 문제점이 있었다.

 

 

특허기술 설명

본 발명은 상기에 언급되었던 종래의 직접 API를 통하여 암호화/복호화 작업을 수행함으로써 생기게 되는 문제점을 해결하기 위해, API 및 유저 응용프로그램 사이에 자바 데이터베이스 커넥티버티 랩퍼(JDBC wrapper) 모듈을 도입하고 있다. , 데이터 암호화/복호화 API에서의 필요한 함수를 선택하고 그 결과를 받고, 초기의 쿼리문을 이에 맞게 수정하는 것을 자바 데이터베이스 커넥티버티 랩퍼(wrapper) 모듈이 자동적으로 처리를 함으로써 기존의 데이터베이스 암호화 제품 적용 시 소스 수정이 수반되어야 한다는 문제점을 해결하고 있다.

 

컴퓨터에 의해 실행되며, 데이터베이스 관리 시스템(50)과의 관계에서 암호화 자료를 처리하기 위하여 응용 프로그램(10)의 삽입(insert) 또는 갱신(update)쿼리(query)를 자동으로 수정하는 암호화 데이터베이스 자동 연동 방법에 있어서, 상기 방법은, 상기 응용 프로그램(10)으로부터 데이터가 포함된 쿼리를 전달받는 제1 단계;/복호화 API(30)로 상기 데이터의 암호화를 요청하는 제2 단계; 상기 암/복호화 API(30)로부터 암호화된 데이터를 전달받는 제3 단계; 상기 암호화된 데이터에 맞게 쿼리를 수정하는 제4 단계; 상기 수정된 쿼리를 데이터베이스 커넥티버티 드라이버(40)에 전달하는 제5단계를 포함한다.

 

상기 쿼리는 자바 데이터베이스 커넥티버티(JDBC) SQL 인 것을 특징으로 하고, SEED, ARIA, AES, DES 또는 3-DES의 암호화 알고리즘을 사용한다.

 

상기 데이터베이스 커넥티버티 드라이버(40)가 상기 수정된 쿼리에 따라 상기 암호화된 데이터를 데이터베이스관리 시스템(50)에 삽입 또는 갱신하는 제6단계를 더 포함할 수 있다.

 

또한, 컴퓨터에 의해 실행되며, 데이터베이스 관리 시스템(50)과의 관계에서 암호화 자료를 처리하기 위하여 응용 프로그램(10)의 독출(select) 쿼리(query)를 자동으로 수정하는 암호화 데이터베이스 자동 연동 방법에 있어서, 상기 방법은, 상기 응용 프로그램(10)으로부터 독출할 데이터의 정보가 포함된 쿼리를 전달받는 제1단계; 상기 독출할 데이터의 정보에 맞게 쿼리를 수정하는 제2 단계; 상기 수정된 쿼리를 데이터베이스 커넥티버티 드라이버(40)에 전달하는 제3 단계; 상기 데이터베이스 커넥티버티 드라이버(40)로부터 암호화된 데이터를 전달받는 제4 단계; /복호화 API(30)로 상기 암호화된 데이터의 복호화를 요청하는 제5 단계; 상기 암/호화 API(30)로부터 복호화된 데이터를 전달받는 제6 단계; 상기 복호화된 데이터를 상기 응용 프로그램(10)으로 전달하는 제7단계를 포함한다.

 

 

이하 도면을 중심으로 본 발명에 대해 자세하게 설명하기로 한다.

2는 응용 프로그램의 삽입 또는 갱신 쿼리를 자동으로 수정하는 과정을 도식적으로 나타낸 도면을나타낸다.

2)


 

 

상기 과정은
1) 응용 프로그램(10)으로부터 데이터가 포함된 쿼리가 쿼리 수정 모듈(20)로 전달되는단계(S201),

2) 쿼리 수정 모듈(20)이 데이터 암/복호화 API(30)로 데이터의 암호화를 요청하는 단계(S202)

3) 데이터 암/복호화 API(30)가 데이터의 암화화를 수행한 후 이를 쿼리 수정 모듈(20)로 전달하는 단계(S203),

4) 쿼리 수정 모듈(20)이 암화화된 데이터에 맞게 쿼리를 수정하는 단계,

5) 쿼리 수정 모듈(20)이 수정된 쿼리를 데이터베이스 커넥티버티 드라이버(40)에 전달하는 단계(S204)로 구성된다.

6) 데이터베이스 커넥티버티 드라이버(40)가 상기 수정된 쿼리에 따라 상기 암호화된 데이터를 데이터베이스 관리 시스템(50)에 삽입 또는 갱신하는 단계(S205)가 더 포함될 수 있다.

 

상기 쿼리는 자바 데이터베이스 커넥티버티(JDBC) SQL 인 것을 특징으로 한다.

 

SQL문은 크게 데이터 정의문, 제어문, 조작문, 트랜잭션 처리로 나누어 진다. 이중 삽입(insert)

갱신(update) 쿼리는 데이터 조작문에 속한다.

 

쿼리 수정 모듈(20)
1)
응용 프로그램에서 넘겨진 쿼리를 파싱(Parcing)하고 SQL 요청을 분석하는 분석모듈,

2) 설정 파일과 암호화 모듈인 Crypto 모듈을 처리하는 처리 모듈,

3) 자바 표준 JDBC 드라이버를 랩핑(wrapping)하는 랩핑 모듈의 세 가지로 구성된다.

 

4는 쿼리 수정 모듈(20)을 구성하는 각 모듈에 대한 설명도이다.

4)


 

 

com.initech.driverwrapper.parser 모듈은 분석 모듈의 예이고, com.initech.driverwrapper.request 모듈은 처리 모듈의 예이고, com.initech.driverwrapper.wrapper 모듈은 래핑 모듈의 예이다.

2 S201 단계를 com.initech.driverwrapper.parser 모듈에서 수행하고, S203 단계를 com.initech.driverwrapper.request 모듈에서 수행한다. 쿼리를 수정하는 단계 및 S204 단계는

com.initech.driverwrapper.wrapper 모듈에서 수행된다.

 

5 com.initech.driverwrapper.parser 모듈에 속한 클래스에 관한 도식도를 나타낸다.

5)


 

 

6com.initech.driverwrapper.parser 모듈을 구성하는 각 클래스에 대한 설명도이다.

6)


 

응용 프로그램으로부터 삽입 쿼리의 요청을 받으면 Insert 클래스에서 이를 파싱하는 작업을 수행하고, InsertRequest 클래스에서 삽입하기 위한 암호화와 관련된 행위를 처리하는 작업을 수행한다.

 

독출 쿼리의 요청을 받으면 Select 클래스에서 이를 파싱하는 작업을 수행하고, 독출하기 위한 관련 암/복호화 행위를 처리하는 작업을 수행한다. 그 밖에 삭체(Delete) 쿼리 또는 갱신(update) 쿼리에 대한 처리도 가능하다.

 

7 com.initech.driverwrapper.request 모듈을 구성하는 각 클래스에 대한 설명도이다.

7)


 

이는 암호화 모듈인 Crypto 모듈을 호출하는 Encorder 클래스와 암호화 인자에 관련된 요청을 처리하는 EncryptedTables 클래스와, Application 클래스로 구성된다.

 

8 com.initech.driverwrapper.wrapper 모듈을 구성하는 각 클래스에대한 설명도이다.

8)



 

각각의 클래스에 관한 설명은 도면에 자세하게 설명되어 있으므로, 이에 대한 중복 설명은 제외하기로 한다.

 

아래의 설정 파일은 암호화 대상을 설정하는 XML 파일의 예시이다. 내용은 암호화 대상 테이블의 SID(오라클의경우), Table이름, Column 이름을 등록한다. 이 경우 쿼리 수정 모듈에서는 아래 기재된 암호화 대상 정보를 크로스 체크(cross check)하여 암/복호화 적용을 하게 된다.

 

예를 들어, 암호화 적용 전의 데이터가 주민번호(Varchar(15)):700130-1735245 라고 하면, 암호화 적용 후 데이터는 주민번호(Varchar(45)):fZ4et74Hs4bAmsedhB6A== 와 같은 값을 얻을 수 있다.

암호화 설정 파일의 예는 아래와 같다.


ORA_SID>

TEST_TABLE COLUMN=TEST_COLUMN/>

TEST_TABLE2 COLUMN=TEST_COLUMN2/>

ORA_SID2>

TEST_TABLE3 COLUMN=TEST_COLUMN3/>



9는 본 발명에 의한 응용 프로그램(10)의 암호화 데이터베이스 자동 연동 방법이 적용되지 않았을 때의 응용 프로그램 코드의 예이다.

9)


 

 

번호, 컬럼이름, 이름의 필드를 갖는 테이블에 삽입 쿼리에 대해 암호화를 수행하는 것이다. ssdb.encrypt 함수는 데이터를 암호화 하는 함수이다. 쿼리 수정 모듈에서 쿼리에 포함된 데이터를 ssdb.encrypt 함수를 호출하여 암호화 작업을 요청하여야 하는데, 이러한 부분이 자동화되지 못하고, 응용 프로그램의 소스 코드에ssdb.encrypt 함수를 호출하는 부분을 데이터의 형식에 맞게 일일이 수정을 하여야 하는 불편함이 있다.

 

patchData에는 최종적으로 암호화된 데이터가 저장되어 있다. 이러한 암호화를 마친 후에, 테이블의 필드를 번호, patchData(암호화된 데이터), plainData(평문데이터)로 변경하여 새로운 쿼리를 작성하여야 한다.

 

암호화 과정에서 사용되는 알고리즘은 SEED, ARIA, AES 또는 3-DES의 암호화 알고리즘을 사용하는 것이 바람직하다.

 

10는 본 발명에 의한 응용 프로그램(10)의 암호화 데이터베이스 자동 연동 방법이 적용되었을 때의 응용 프로그램 코드의 예이다.

10)


 
 

사용하는 데이터베이스에 member 라는 테이블이 존재하고, member 테이블은 번호, 주민등록번호, 이름의 필드를 갖는다.

 

주민등록번호와 관련된 ssn 필드에 평문값으로 쿼리를 작성한 후에, pstmt.executeUpdate() 함수에 의해 암호화 함수를 내부적으로 자동 호출하여 자바 데이터베이스 커넥티버티의 형식에 맞는 쿼리문으로 자동으로 수정하여 DB에 저장하게 된다. 따라서, 9에서와는 다르게 ssdb.encrypt 함수를 호출하거나, 개별적으로 쿼리문을 새로 생성하는 과정이 생략된다.

 

3은 응용 프로그램의 독출(select) 쿼리를 자동으로 수정하는 블록절차도를 나타낸다.

3)

 

상기의 과정은
1)
응용 프로그램(10)으로부터 독출할 데이터의 정보가 포함된 쿼리가 쿼리 수정 모듈(20)로 전달되는 단계(S301),

2) 쿼리 수정 모듈(20)이 독출할 데이터의 정보에 맞게 전달받은 쿼리를 수정하는 단계,

3) 쿼리 수정 모듈(20)이 수정된 쿼리를 데이터베이스 커넥티버티 드라이버(40)에 전달하는 단계(S302),

4) 데이터베이스 커넥티버티 드라이버(40)가 수정된 쿼리를 바탕으로 데이터베이스 관리시스템(50)으로부터 암호화된 데이터를 독출하는 단계(S303), 5) 데이터베이스 커넥티버티 드라이버(40)가 독출한 암호화된 데이터를 쿼리 수정 모듈(20)로 전달하는 단계(S304),

6) 쿼리 수정 모듈(20)이 암/복호화 API(30)로 암호화된 데이터의 복호화를 요청하는 단계(S305),

7) 쿼리 수정 모듈(20)이 암/복호화 API로부터 복호화된 데이터를 전달받는 단계(S306),

8) 쿼리 수정 모듈(20)이 전달받은 복호화된 데이터를 응용 프로그램으로 전달하는 단계(S307)로 이루어진다.

 

독출 쿼리에 사용되는 쿼리 수정 모듈(20)
1)
응용 프로그램에서 넘겨진 쿼리를 파싱(Parcing)하고 SQL 요청을 분석하는 분석 모듈,
2)
설정 파일과 암호화 모듈인 Crypto 모듈을 처리하는 처리 모듈,
3)
자바 표준JDBC 드라이버를 랩핑(wrapping)하는 랩핑 모듈의 세 가지로 구성된다.

 

상기의 과정 중에 S301 단계 및 S307 단계는 분석 모듈에서 수행하고, 쿼리를 수정하는 단계 및 S302 단계는 랩핑 모듈에서 수행한다. S305 단계 및S306 단계는 분석 모듈에서 수행한다. S303 단계 및 S304 단계는 쿼리수정 모듈과 연결된 데이터베이스 커넥티버티 드라이버에서 쿼리 수정 모듈로부터 요청에 따라 수행된다.

 

암호화 과정에서 사용한 필드값을 입력값으로 하는 쿼리를 생성하고, 데이터베이스로부터 암호화 데이터를 독출하는 함수인 stmt.executeQuery(query) 함수를 호출하는 모듈과, 독출된 암호화 데이터를 포함한 값을 입력값으로 하여 암/복호화 API(30)의 복호화 함수인 ssdb.decrypt 함수를 호출하는 모듈로 구성된다.

 

11은 본 발명에 의한 응용 프로그램(10)의 암호화 데이터베이스 자동 연동 방법이 적용되지 않았을 때의 독출 쿼리와 관련된 어플리케이셔 코드의 예이다.

11)


 

 

번호, 컬럼이름, 이름의 필드값과 이를 포함하는 테이블이름으로 구성된 독출쿼리를 수정하고, 데이터베이스로부터 상기 필드값을 독출하고, 이를 복호화하는 것이다. ssdb.decrypt 함수는 데이터를 복호화 하는 함수이다.

 

쿼리 수정 모듈에서 쿼리에 포함된 데이터를 ssdb.decrypt 함수를 호출하여 복호화 작업을 요청한다.

 

patchData에는 최종적으로 복호화된 데이터가 저장된다. 삽입 쿼리의 과정과 마찬가지로, 이의 작업을 응용 프로그램의 소스코드에 직접 수정을 가하여 작성하고, 또한 관련된 암호화 쿼리에 맞게 일일이 코드를 수정하여야 한다.

 

복호화 과정에서 사용되는 알고리즘은 SEED, ARIA, AES 또는 3-DES의 복호화 알고리즘을 사용하는 것이 바람직하다.

 

12는 본 발명에 의한 응용 프로그램(10)의 암호화 데이터베이스 자동 연동 방법이 적용었을 때의 독출 쿼리와 관련된 어플리케이셔 코드의 예이다.

12)

 

 

사용하는 데이터베이스에 member 라는 테이블이 존재하고, member 테이블은 번호, 주민등록번호, 이름의 필드를 갖는다. 상기 ssn 필드는 필드값이 암호화 되어 저장되어 있는 상태이다. stmt.executeQuery(query) 함수를호출하여 이를 바탕으로 수정된 쿼리를 작성한 후에 자동으로 암호화 데이터를 데이터베이스로부터 불러들인다.

자바 데이터베이스 커넥티버티 랩퍼 모듈을 도입함으로써, 자바 기반으로 구축된 업무 프로그램의 SQL쿼리 수정을 자동화할 수 있고, 암호화 모듈과의 연동 또한 시스템 내부적으로 자동화되어 있기 때문에 개발자의 부담을 최소화할 수 있는 효과를 제공한다.

 

본 발명은 상기와 같은 실시예에 의해 권리범위가 한정되는 것은 아니며, 본 발명의 기술적인 사상을 가지고있다면 모두 본 발명의 권리범위에 해당된다고 볼 수 있으며, 본 발명은 특허청구범위에 의해 권리범위가 정해짐을 밝혀둔다.

 

발명자: 이동기

대리인: 백도현

 

특허 등록번호

10-1100724-0000

 

                                  

표시번호

        

1

출원 연월일 :

2009 06 17

출 원 번 호 :

10-2009-0053971

특허결정(심결)연월일 :

2011 11 30

청구범위의 항수 :

7

유 별 :

G06F 21/24

발명의 명칭 :

암호화 데이터베이스와 응용 프로그램간의 데이터 처리 방법

존속기간(예정)만료일 :

2029 06 17

2011 12 23일 등록

 

                                  

순위번호

        

1

(등록권리자)

이니텍()

서울특별시 구로구 구로동 ***-** 에이스하이앤드* **

2011 12 23일 등록

 

'암호화 데이터베이스와 응용 프로그램간의 데이터 처리 방법' 특허 자세히 보기





뉴아이피비즈 제휴문의 이용약관 개인정보보호정책 오시는 길 사이트 맵
홍보: 주식회사 코마나스 해외업무: 대일국제특허법률사무소
서울시 영등포구 당산로 27길 18 진양빌딩 3층
사업자등록번호 : 117-81-77198, 대표 이현구/변리사 이종일
Copyright © 2011~2019 Comanas Co., Ltd all rights reserved.