암호화/복호화

개요

암호화/복호화는 보안을 위하여 데이터를 암호화하거나 암호화된 데이터를 복호화하기 위해, GPKI(Government Public Key Infrastructure)를 통한 데이터의 암호화 및 복호화 기능을 제공한다. 부가적으로 GPKI를 통한 전자서명 및 전자서명 확인 기능도 제공한다.

전제조건

GPKI의 암복호화 기능을 사용하기 위해서는 별도로 사용하기 위해서는 행정전자서명 인증관리센터(Government Certification Management Authority)를 통해 GPKI 암복호화 모듈 및 서버인증서를 발급받아야 한다.

보다 자세한 사항은 공통컴포넌트의 GPKI 인증서 로그인 서비스를 참조하거나 행정전자서명 인증관리센터(http://www.gpki.go.kr)를 참고한다.

설명

GPKI 암복호화는 서비스를 통해 데이터 암호화 및 복호화를 제공하는 기능으로 별도의 화면을 제공하지 않는다. 다만 테스트를 위한 JSP 화면만 제공된다.

패키지 참조 관계

암호화/복호화 패키지는 요소기술의 공통 패키지(cmm)에 대해서만 직접적인 함수적 참조 관계를 가진다.

관련소스

유형대상소스비고
Controlleregovframework.com.sec.pki.web.EgovGPKITestController.java암호화/복호화 테스트를 위한 컨트롤러 클래스
Serviceegovframework.com.sec.pki.service.EgovGPKIService.java암호화/복호화를 위한 서비스 인터페이스
ServiceImplegovframework.com.sec.pki.service.impl.EgovGPKIServiceImpl.java암호화/복호화를 위한 서비스 구현 클래스
JSP/WEB-INF/jsp/egovframework/com/sec/pki/EgovGpkiTest.jsp암호화/복호화 테스트를 위한 jsp페이지

환경설정

GPKI 암호화/복호화 기능을 활용하기 위하여 필요한 항목 및 그 환경 설정은 다음과 같다.

GPKI API 설치파일 확인

먼저 GPKI 인증서 로그인 기능을 위해서는 행정전자서명 인증관리센터(http://www.gpki.go.kr)에서 시스템에 맞는 GPKI API를 신청하여 발급받아야 한다. 서버에 구성해놓은 표준보안 API는 IBM AIX용으로 WINDOWS계열이나 다른 유닉스 시스템에서 사용할 수는 없다.

표준 API 구성요소
구분형태파일명/폴더설명
표준API Native모듈라이브러리libgpkiapi64.aIBM AIX용 (행정용)
표준API Native모듈라이브러리libgpkiapi64_jni.aIBM AIX용 (행정용)
표준API Native모듈라이브러리libibmldap64n.aIBM AIX용 (민간용)
환경파일(conf)환경파일gpkiapi.conf인증서 검증에 필요한 정보 포함
테스트프로그램(sample)코드/javaCert.java, Cms.java, Crypto.java, Ivs.java, Main.java, Tsa.java, Util.java (소스 코드)
테스트프로그램(sample)실행파일/class/Sample (테스트 프로그램을 돌리기 위해서 필요한 데이터)Cert.class, Cms.class, Crypto.class, Ivs.class, Main.class, Tsa.class, Util.class (테스트 프로그램)
표준APIjar파일libgpkiapi_jni.jar표준보안 API
클래스, 라이브러리 경로 설정
export GPKI_HOME=/product/jeus/egovProps/libgpkiapi
export CLASSPATH=$GPKI_HOME/libgpkiapi_jni.jar:$CLASSPATH
export LIBPATH=/product/jeus/egovProps/libgpkiapi/gpkiapi
export PATH=$PATH:/product/jeus/egovProps/libgpkiapi/gpkiapi

JAVA용 표준보안API (libgpkiapi_jni.jar)를 사용하기 위해서는 jar 파일이 클래스 경로에 잡혀있어야 하며, JAVA용 표준보안API에서 호출하는 JNI 파일의 경로를 잡아주어야 한다.이 때, 이 JNI 파일은 C/C++용 표준보안API와 LDAP 라이브러리와 연결되어있어 이 두 라이브러리의 경로도 잡아주어야 한다.

인증서 위치 (예시)
/product/jeus/egovProps/gpkisecureweb/certs/SVR..._env.cer
/product/jeus/egovProps/gpkisecureweb/certs/SVR..._env.key
/product/jeus/egovProps/gpkisecureweb/certs/NPKIRootCA1.der
/product/jeus/egovProps/gpkisecureweb/certs/GPKIRootCA1.der

프로퍼티 파일 설정

globals.properties

인증서에 대한 정보를 지정하기 위해서는 globals.properties 속성 파일에 추가 속성을 설정하여야 한다.

globals.properties에 관련된 내용은 요소기술 프로퍼티 및 명령어 쉘스크립트 부분을 참조한다.

...
Globals.GPKIConfPath = /product/jeus/egovProps/conf/gpki.properties
...
gpki.properties (예시)
#--------------------------
# for GPKI LDAP access
#--------------------------
gpki.ldap.ip=ldap.gcc.go.kr
#gpki.ldap.ip=10.1.7.140
gpki.ldap.port=389
gpki.ldap.basedn=ou=Group of Server,o=Government of Korea,c=kr
gpki.ldap.attribute=usercertificate;binary
 
#--------------------------
# 인증서 정보
# 실제 인증서 관련 파일들은 각 속성들을 조합해서 얻음
#--------------------------
gpki.certificate.path = /product/jeus/egovProps/gpkisecureweb/certs/
gpki.certificate.server = 1310123456
gpki.privatekey.password = test

대상시스템에 대한 인증서를 GPKI의 ldap을 통해 취득하며 다음과 같은 코드로 해당 서버 정보 등을 처리한다.

	//--------------------------------
	// LDAP 관련 정보 얻기
	//--------------------------------	
	String serverIp = EgovProperties.getProperty(config, "gpki.ldap.ip");
	String serverPort = EgovProperties.getProperty(config, "gpki.ldap.port");
	String basedn = EgovProperties.getProperty(config, "gpki.ldap.basedn");
	String readEntry = "cn=SVR" + code;
	String attribute = EgovProperties.getProperty(config, "gpki.ldap.attribute");
...
	//----------------------------------
	// 설정 정보 (암호화용 인증서 정보 필요)
	//----------------------------------
	String path = EgovProperties.getProperty(config, "gpki.certificate.path");
 
	String certForEnvFile = path + "/SVR" + EgovProperties.getProperty(config, "gpki.certificate.server") + "_env.cer";
	String keyForEnvFile = path + "/SVR" + EgovProperties.getProperty(config, "gpki.certificate.server") + "_env.key";
	String pinForEnv = EgovProperties.getProperty(config, "gpki.privatekey.password");
...
	//----------------------------------
	// 설정 정보 (전자서명용 인증서 정보 필요)
	//----------------------------------
	String path = EgovProperties.getProperty(config, "gpki.certificate.path");
 
	String certForSignFile = path + "/SVR" + EgovProperties.getProperty(config, "gpki.certificate.server") + "_sig.cer";
	String keyForSignFile = path + "/SVR" + EgovProperties.getProperty(config, "gpki.certificate.server") + "_sig.key";
	String pinForSign = EgovProperties.getProperty(config, "gpki.privatekey.password");

관련화면

암복호화 테스트 화면은 다음과 같다.

테스트화면

테스트는 원본에 대한 암호화 및 전자서명 처리, 결과에 대하여 복호화 및 전자서명확인 처리를 제공한다.

 
egovframework/com/v2/sec/암호화_복호화.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki