주식회사 누리아이티

정보자산의 보안강화를 위한 3단계 인증 보안SW(BaroPAM) 전문기업인 누리아이티

▶ BaroSolution/가이드

가볍고 가장 빠른 암호화 알고리즘을 위한 BaroCRYPT 솔루션의 API 가이드(MySQL, MariaDB용)

누리아이티 2019. 12. 13. 14:18

목차
 
1. BaroCRYPT
1.1 BaroCRYPT 개요
1.2 BaroCRYPT 특/장점
 
2. BaroCRYPT 연동 API

2.1 연동 API 구성

2.2 MySQL 연동 API 함수

2.3 MariaDB 연동 API 함수

 

3. 함수 생성/사용/삭제

3.1 함수 생성

3.2 함수 사용

3.3 함수 삭제

 

4. About BaroCRYPT

 

 

 

1. BaroCRYPT

1.1 BaroCRYPT 개요

 

BaroCRYPT 솔루션은 Feistel 암호를 사용하여 크기가 작고 구현이 쉬운 블록 암호화 알고리즘인 XXTEA (Extended Extended Tiny Encryption Algorithm)를 기반으로 하는 가볍고 가장 빠른 암호화 알고리즘이다.

 

 

1.2 BaroCRYPT 특/장점

 

BaroCRYPT 솔루션은 XXTEA(일명 Corrected Block TEA) 암호화 알고리즘을 기반으로 사용 가능한 RAM의 양이 최소인 레거시 하드웨어 시스템(임베디드)과 같이 극한의 제약이 있는 상황에서도 빠르게 데이터 암복호화를 실행 가능한 최적의 솔루션으로 특장점은 다음과 같다.

 

■ 작고 구현이 쉬운 블록 암호화 알고리즘으로 페이스텔 암호를 기반으로 하여 크기가 작고 빠르면서 구현이 쉬움

■ 페이스텔 암호를 기반으로 한 작은 크기의 알고리즘으로 그 크기에 비해서 암호화 강도가 높음

■ 알고리즘의 크기는 작지만 현존하는 가장 빠르고 안전한 알고리즘

■ 다른 블록 암호화 알고리즘에 비해 구현이 용이하고 하드웨어 사양 제약 조건이 큰 환경에 적용이 용이하며 자유롭게 사용

■ 64 bit(8byte)를 암호화하는 블록 암호화 알고리즘으로 128 bit(16byte) 키를 사용

■ Corrected Block TEA(XXTEA)는 원래 Block TEA의 약점을 수정하기 위해 고안된 블록 암호화 알고리즘

■ 자유로운 Customizing 및 다양한 응용프로그램과 연동 개발의 편의성 제공

   (Java, C 언어로 된 API 연동)

■ SQL 문장에서 쉽게 사용할 수 있도록 TO_ENCRYPTS(암호화), TO_DECRYPTS(복호화) 함수 제공

 

 Feistel 암호란?

동일한 대치와 치환을 반복하면서 암호문이 평문으로부터 암호화되는 반복 블록 암호로 데이터 암호화 표준(DES)과 유사한 암호로서, 평문을 반씩 2개 블록으로 나누어 한쪽은 서브 키를 사용한 기능 F로 치환하고 그 결과를 다른 반쪽에서 배타적 논리합(XOR)한 다음 서로 교환한다. 

이러한 과정을 각 치환마다 동일한 패턴으로 하되 마지막 치환에서는 서로 교환하지 않는다. 

암호화시 사용된 서브키는 복호화시 역으로 사용된다.

 

 

 

2. BaroCRYPT 연동 API

2.1 연동 API 구성

 

BaroCRYPT 관련 Dynamic linking library는 데이터를 암호화 및 복호화하는데 사용된다. 

API구분 설명 비고
BaroUDF_MySQL.dll MySQLBaroCRYPT dll  
BaroUDF_MariaDB.dll MariaDBBaroCRYPT dll  

  

3.2 MySQL연동 API 함수

 

1) libBaroUDF_MySQL_info 함수

 

- NAME

 libBaroUDF_MySQL_info

 

- SYNOPSIS

  char * libBaroUDF_MySQL_info()

 

- DESCRIPTION

  현재 설치된 lib_mysqludf_sys 버전에 대한 정보를 얻음.

 

- RETURN VALUES

  lib_mysqludf_sys 버전 정보를 반환

 

2) TO_ENCRYPTS 함수

 

- NAME

  TO_ENCRYPTS

 

- SYNOPSIS

  void * TO_ENCRYPTS(const void * data)

 

- DESCRIPTION

  데이터를 암호화 하는 함수

  data : 암호화할 데이터

 

- RETURN VALUES

  암호화한 데이터를 반환

 

3) TO_DECRYPTS 함수

 

- NAME

  TO_DECRYPTS

 

- SYNOPSIS

  void * TO_DECRYPTS(const void * data)

 

- DESCRIPTION

  데이터를 복호화 하는 함수

  data : 복호화할 데이터

 

- RETURN VALUES

  복호화한 데이터를 반환

 

 

2.3 MariaDB연동 API 함수

 

1) libBaroUDF_MariaDB_info 함수

 

- NAME

 libBaroUDF_MariaDB_info

 

- SYNOPSIS

  char * libBaroUDF_ MariaDB_info()

 

- DESCRIPTION

  현재 설치된 lib_mysqludf_sys 버전에 대한 정보를 얻음.

 

- RETURN VALUES

  lib_mysqludf_sys 버전 정보를 반환

 

2) TO_ENCRYPTS 함수

 

- NAME

  TO_ENCRYPTS

 

- SYNOPSIS

  void * TO_ENCRYPTS(const void * data)

 

- DESCRIPTION

  데이터를 암호화 하는 함수

  data : 암호화할 데이터

 

- RETURN VALUES

  암호화한 데이터를 반환

 

3) TO_DECRYPTS 함수

 

- NAME

  TO_DECRYPTS

 

- SYNOPSIS

  void * TO_DECRYPTS(const void * data)

 

- DESCRIPTION

  데이터를 복호화 하는 함수

  data : 복호화할 데이터

 

- RETURN VALUES

  복호화한 데이터를 반환

  

 

3. 함수 생성/사용/삭제

3.1 함수 생성

 

MySQL UDF(User Define Function) MySQL에서 C 또는 C++로 작성된 외부 프로그램을 호출하거나 데이터를 전송할 때 사용된다.

 

C 또는 C++로 작성되어야 하며 운영 체제는 동적 로드를 지원해야 한다.

 

첨부 파일(BaroUDF_MySQL.dll, BaroUDF_MariaDB.dll) mysql shell에서 다음의 명령 결과를 디렉토리에 복사한다. 

Mysql> SHOW VARIABLES LIKE 'plugin_dir';

 

libBaroUDF_MySQL_info, libBaroUDF_MariaDB_info, TO_ENCRYPTS, TP_DECRYPTS 함수를 생성하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.

 

1) MySQL인 경우 

mysql> create function libBaroUDF_MySQL_info returns string soname 'BaroUDF_MySQL.dll';
mysql> create function TO_ENCRYPTS           returns string soname 'BaroUDF_MySQL.dll';
mysql> create function TO_DECRYPTS           returns string soname 'BaroUDF_MySQL.dll';

 

2) MariaDB인 경우

 

mysql> create function libBaroUDF_MariaDB_info returns string soname 'BaroUDF_MariaDB.dll';
mysql> create function TO_ENCRYPTS             returns string soname 'BaroUDF_MariaDB.dll';
mysql> create function TO_DECRYPTS             returns string soname 'BaroUDF_MariaDB.dll';

  

3.2 함수 사용

 

libBaroUDF_MySQL_info, libBaroUDF_MariaDB_info, TO_ENCRYPTS, TP_DECRYPTS 함수를 사용하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.

 

1) MySQL인 경우 

mysql> select * from func;
+-----------------------+-----+-------------------+----------+
| name                   | ret | dl                  | type     |
+-----------------------+-----+-------------------+----------+
| TO_DECRYPTS            |   0 | BaroUDF_MySQL.dll | function |
| TO_ENCRYPTS            |   0 | BaroUDF_MySQL.dll | function |
| libBaroUDF_MySQL_info |   0 | BaroUDF_MySQL.dll | function |
+-----------------------+-----+-------------------+----------+
3 rows in set (0.00 sec)
 
mysql> select TO_ENCRYPTS('I am Tom');
+-------------------------+
| TO_ENCRYPTS('I am Tom') |
+-------------------------+
| W11HfaAAnMZDKuUe        |
+-------------------------+
1 row in set (0.00 sec)
 
mysql> select TO_DECRYPTS('W11HfaAAnMZDKuUe');
+---------------------------------+
| TO_DECRYPTS('W11HfaAAnMZDKuUe') |
+---------------------------------+
| I am Tom                          |
+---------------------------------+
1 row in set (0.00 sec)

 

2) MariaDB인 경우 

mysql> select * from func;
+-------------------------+-----+---------------------+----------+
| name                      | ret | dl                   | type     |
+-------------------------+-----+---------------------+----------+
| TO_DECRYPTS              |   0 | BaroUDF_MariaDB.dll | function |
| TO_ENCRYPTS              |   0 | BaroUDF_MariaDB.dll | function |
| libBaroUDF_MariaDB_info |   0 | BaroUDF_MariaDB.dll | function |
+-------------------------+-----+---------------------+----------+
3 rows in set (0.00 sec)
 
mysql> select TO_ENCRYPTS('I am Tom');
+-------------------------+
| TO_ENCRYPTS('I am Tom') |
+-------------------------+
| W11HfaAAnMZDKuUe        |
+-------------------------+
1 row in set (0.00 sec)
 
mysql> select TO_DECRYPTS('W11HfaAAnMZDKuUe');
+---------------------------------+
| TO_DECRYPTS('W11HfaAAnMZDKuUe') |
+---------------------------------+
| I am Tom                        |
+---------------------------------+
1 row in set (0.00 sec)

  

3.3 함수 삭제

 

libBaroUDF_MySQL_info, libBaroUDF_MariaDB_info, TO_ENCRYPTS, TP_DECRYPTS 함수를 삭제하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.

 

1) MySQL인 경우 

mysql> drop function if exists libBaroUDF_MySQL_info;
mysql> drop function if exists TO_ENCRYPTS;
mysql> drop function if exists TO_DECRYPTS;

 

2) MariaDB인 경우 

mysql> drop function if exists libBaroUDF_MariaDB_info;
mysql> drop function if exists TO_ENCRYPTS;
mysql> drop function if exists TO_DECRYPTS;

 

 

 

4. About BaroCRYPT

 

 

 

 

 

Version 1.0 - Official Release - 2016.12.1

Copyright ⓒ Nurit corp. All rights reserved.

http://www.nurit.co.kr

 

제 조 사 : 주식회사 누리아이티
등록번호 : 258-87-00901
대표이사 : 이종일
대표전화 : 02-2665-0119(영업문의/기술지원)
이 메 일 : mc529@nurit.co.kr
주    소 : 서울시 강서구 마곡중앙2로 15, 913호(마곡동, 마곡테크노타워2)