반응형
Bouncy Castle을 사용할 일이 생겨 정리.
보안은 낯선 영역....
JCA(Java Cryptography Architecture)
- 자바 프로그래밍 언어의 암호화를 위한 프레임워크. JDK 1.1 java.security 패키지부터 등장.
- 'provider-based architecture' 사용한다. 암호화, 키 생성 및 관리,
'secure random number' 생성, 인증서 검증 등의 API. - 구현 독립성/호환성, 알고리즘 확장성을 고려하여 설계.
- JDK 1.4 이상에서는 JCE(Java Cryptography Extention)도 기본 포함.
- 관련 암호 서비스를 정의, 지원하기 위해 'Provider Framework'와 'Provider'를 제공.
기타 JDK 암호 라이브러리
- JSSE(Java Secure Socket Extension) : SSL/TLS 기능 제공
- JGSS(Java Generic Security Services) : Kerberos, 네트워크 보안 기능 제공
- SASL(Simple Authentication and Security Layer) : 네트워크 보안 기능 제공
키 관리
- ketstore : 키와 인증서들의 저장소 관리
- java.security.KeyStore클래스
- .jks 파일 형태로 구현됨(또는 3DES로 암호화된 .jceks)
- 어플리케이션은 각각의 'Provider'로부터 개별적인 keystore 구현 가능
JCE(Java cryptography Extension)
JCE는 JCA보다 강력한 확장된 보안을 제공. 미국에서 보안상 이유로 2000년 이후에 해외로 보급.
- JCA와 JCE는 분리되어 있다.
- JDK 1.4 이상부터는 기본으로 포함.
- JCE에 포함되는 클래스 : Cipher, KeyGenerator, SecretKeyFactor, KeyAgreement, Mac 등..
SUN JCE / BouncyCastle
장점 | 장점 | 단점 |
SUN JCA/JCE | - JDK에 포함되어 있음 - 'provider'를 선택해서 사용할 수 있음 |
- JDK 별로 provider가 일치하지 않아서 동작하지 않을 수 있음 (Java mobile 등) - 알고리즘을 많이 제공하지 않음 |
Bouncy Castle |
- JCA보다 많은 알고리즘을 지원 * SEED128 알고리즘 지원 - 사용에 아무런 제한이 없음(128비트 암호키 제한 등[5]) |
- 라이브러리 파일을 프로젝트에 추가시켜야함 |
Bouncy Castle : 확장된 기능을 가진 자바암호라이브러리
기본적인 키생성, 암호화, 전자서명 등은 JCA/JCE로 가능하지만 JDK별로 호환이 다르며, 많은 알고리즘을 지원하지 않기 때문에 BouncyCastle 등의 암호 패키지를 사용하는 것이 좋다.
요약
- JCA는 java.security 패키지에 포함되어 있으며 , 암호화 처리를 위한 표준 구조, 인터페이스 , 팩토리 등을 정의한다.
- JCE는 javax.crypto 패키지에 포함되어 있으며 암/복호화 , 키 생성, 키 교환 , MAC 알고리즘등 실질적인 암호화 구현을 제공한다.
자바의 기본적인 bit의 한계로 비교적 예전의 보안을 활용한다고 한다.
방법은 있지만 사용자도 개개인이 적용을 해야하는것으로 보인다.
참고
반응형