JAVA/JAVA - Security / / 2021. 4. 13. 14:03

[Security] JCA / JCE

반응형
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'를 제공.

출처 : https://itbj.tistory.com/2

기타 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년 이후에 해외로 보급.

출처 : https://itbj.tistory.com/2

  • 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의 한계로 비교적 예전의 보안을 활용한다고 한다.
방법은 있지만 사용자도 개개인이 적용을 해야하는것으로 보인다.

참고

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유