카테고리 없음

JCA(Java Cryptography Architecture) & JCE(Java Cryptography Extension)

캠퍼강 2019. 8. 1. 15:33

JCA(Java Cryptography Architecture)

  • JCA 자바 암호화를 위한 프레임워크
  • JDK1.1 java.security 패키지에 소개됨.

  • 암호화, 키생성 및 관리, 인증서 검등의 API 포함

  • 전자 서명과 메시지 다이제스트 같은 기능에 대한 일반적인 API 제공

  • 'Provider"-based architecture'

    • 암호 서비스를 정의하고 지원하기 위한 'Provider Framework'(java.security, javax.crypto, javax.crypto.spec, javax.crypto.interfaces 패키지)

    • 실제 암호 구현 내용이 포함된 Provider (Sun, SunRsaSign, SunJCE 패키지등)를 제공

JCE(Java Cryptography Extension)

  • JCA보다 더 강력한 확장된 보안 기능 제공
  • 미국에서 보안상 이유로 2000년 이후에 해외 보급

  • JDK1.4 부터는 JDK에 포함됨

  • 주요 클래스: Cipher, KeyGenerator, SecretKeyFactor, KeyAgreement, MAC

  • 대표적인 JCE provider > Bouncy Castle

    • Bouncy Castle은 암호화에 사용되는 API 모음. Java 및 C # 프로그래밍 언어 모두에 대한 API가 포함되어 있습니다.

BouncyCastle  사용법

  • 설정방법
    • 정적방법
      • $JAVA_HOME\lib\ext 에 jar 포함 >> bcprov-djk15on-162.jar (bcprov-ext-jdk15on-162.jar)
      • $JAVA_HOME\lib\security\java.security 파일 열어서 추가> security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
      • 소스사용 > Security.getProvider("BC")
    • 동적방법
      • 이클립스 클래스패스에 jar파일 포함 > bcprov-djk15on-162.jar
      • 소스사용 > Security.addProvider(new BouncyCastleProvider());
  • 정책파일 설정 ( 암호알고리즘사용제한 제거 설정, 보다 강력한 암호화를 사용하기 위해서 필요함)
    • 자바 8 151 이전 버전
    •  자바 8 151 버전 이후
      • 폴더 구조가 변경되어 C:\Program Files\Java\jre1.8.0_211\lib\security\policy\limited, unlimed 폴더 하위에 정책 파일 있음.
      • $JAVA_HOME\lib\security\java.security 파일에서 crypto.policy=unlimited 부분 주석 제거하면 됨.
      • 또는 소스에서 Security.setProperty("crypto.policy", "unlimited");
    • 자바 9 이후부터는
      • 기본설정으로 들어가 있다고 함.

출처