목차
1. BaroCRYPT
1.1 BaroCRYPT 개요
1.2 BaroCRYPT 특/장점
2. BaroCRYPT 연동 API
2.1 연동 API 구성
2.2 연동 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구분 | 설명 | 비고 |
| libbaroudf.so | MySQL/MariaDB용 BaroCRYPT 모듈 |
3.2 연동 API 함수
1) TO_ENCRYPTS 함수
- NAME
TO_ENCRYPTS
- SYNOPSIS
void * TO_ENCRYPTS(const void * data)
- DESCRIPTION
데이터를 암호화하는 함수
data: 암호화할 데이터
- RETURN VALUES
암호화한 데이터를 반환
2) TO_DECRYPTS 함수
- NAME
TO_DECRYPTS
- SYNOPSIS
void * TO_DECRYPTS(const void * data)
- DESCRIPTION
데이터를 복호화 하는 함수
data: 복호화할 데이터
- RETURN VALUES
복호화한 데이터를 반환
3. 함수 생성/사용/삭제
3.1 함수 생성
MySQL/MariaDB의 UDF(User Define Function)는 MySQL/MariaDB에서 C 또는 C++로 작성된 외부 프로그램을 호출하거나 데이터를 전송할 때 사용된다.
C 또는 C++로 작성되어야 하며 운영 체제는 동적 로드를 지원해야 한다.
첨부 파일(libbaroudf.so)을 mysql shell에서 다음의 명령 결과를 디렉토리에 복사한다.
| MariaDB> SHOW VARIABLES LIKE 'plugin_dir'; +---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | plugin_dir | /usr/lib64/mariadb/plugin/ | +---------------+----------------------------+ 1 row in set (0.002 sec) |
TO_ENCRYPTS, TP_DECRYPTS 함수를 생성하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.
| MariaDB> create function TO_ENCRYPTS returns string soname 'libbaroudf.so'; MariaDB> create function TO_DECRYPTS returns string soname 'libbaroudf.so'; |
3.2 함수 사용
TO_ENCRYPTS, TP_DECRYPTS 함수를 사용하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.
| MariaDB> select * from func; +-------------+-----+---------------+----------+ | name | ret | dl | type | +-------------+-----+---------------+----------+ | TO_DECRYPTS | 0 | libbaroudf.so | function | | TO_ENCRYPTS | 0 | libbaroudf.so | function | +-------------+-----+---------------+----------+ 2 rows in set (0.00 sec) MariaDB> select TO_ENCRYPTS('I am Tom'); +-------------------------+ | TO_ENCRYPTS('I am Tom') | +-------------------------+ | W11HfaAAnMZDKuUe | +-------------------------+ 1 row in set (0.00 sec) MariaDB> select TO_DECRYPTS('W11HfaAAnMZDKuUe'); +---------------------------------+ | TO_DECRYPTS('W11HfaAAnMZDKuUe') | +---------------------------------+ | I am Tom | +---------------------------------+ 1 row in set (0.00 sec) |
3.3 함수 삭제
TO_ENCRYPTS, TP_DECRYPTS 함수를 삭제하는 방법은 mysql shell에서 다음과 같은 명령을 실행한다.
| MariaDB> drop function if exists TO_ENCRYPTS; MariaDB> 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 |