목차
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 함수 삭제
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 | MySQL용 BaroCRYPT dll | |
BaroUDF_MariaDB.dll | MariaDB용 BaroCRYPT 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)
'▶ BaroSolution > 가이드' 카테고리의 다른 글
정보자산의 이상접속 탐지/차단을 위한 실시간 로그 수집기인 BaroCollector 관리 (0) | 2020.02.25 |
---|---|
기억할 필요 없는 비밀번호를 위한 BaroPAM과 SMS/이메일 연동 가이드 (0) | 2020.01.30 |
기억할 필요 없는 비밀번호를 위한 BaroPAM 솔루션의 API 가이드(dll) (0) | 2019.05.07 |
기억할 필요 없는 비밀번호를 위한 BaroPAM 솔루션의 API 가이드(C) (0) | 2019.02.26 |
기억할 필요 없는 비밀번호를 위한 BaroPAM 솔루션의 API 가이드(Java) (0) | 2018.08.27 |