비대칭키를 이용한 인증서 생성 - (1) RSA 암호화, Bouncy Castle

단비·2023년 5월 8일
0

학습

목록 보기
38/66

RSA 암호화

  • SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘
  • 소인수분해 문제에 기반하여 알고리즘이 만들어졌음
  • 암호화 뿐만 아니라 전자서명이 가능한 최초의 알고리즘
  • 큰 정수의 소인수 분해의 난해함에 기반하여, 공개키만을 가지고는 개인키를 쉽게 짐작할 수 없도록 디자인되어 있음
  • RSA-2048 전에는 숫자가 number of digits 를 의미했으나 RSA-2048 부터는 bit 을 의미

RSA-2048
617 자리 숫자를 Key 로 사용





Bouncy Castle란

  • 경량 암호화에 사용되는 API 모음
  • Java 및 C# 프로그래밍 언어 모두에 대한 API가 포함
  • JCE(Java Cryptography Extension) 및 JCA(Java Cryptography Architecture), JSSE(Java Secure Socket Extension)용 공급자

new BouncyCastleProvider()

  • BouncyCastleProvider 선언 시 하기와 같이 프로바이더 목록 불러와짐
SUN : SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
SunRsaSign : Sun RSA signature provider
SunEC : Sun Elliptic Curve provider (EC, ECDSA, ECDH)
SunJSSE : Sun JSSE provider(PKCS12, SunX509/PKIX key/trust factories, SSLv3/TLSv1/TLSv1.1/TLSv1.2)
SunJCE : SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC)
SunJGSS : Sun (Kerberos v5, SPNEGO)
SunSASL : Sun SASL provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5, NTLM)
XMLDSig : XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory; C14N 1.0, C14N 1.1, Exclusive C14N, Base64, Enveloped, XPath, XPath2, XSLT TransformServices)
SunPCSC : Sun PC/SC provider
SunMSCAPI : Sun's Microsoft Crypto API provider
BC : BouncyCastle Security Provider v1.68

java.security.Provider
알고리즘(예: DSA, RSA, MD5 또는 SHA-1), 키 생성, 변환 및 관리 기능 제공


프로젝트 내 알고리즘 추가 방법

  • build.gradle에 의존성 추가
implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.68'
  • Security.addProvider: 프로바이더 추가
  • Security.getProviders(): 등록된 프로바이더 목록을 반환
Security.addProvider(new BouncyCastleProvider());
Provider[] providers = Security.getProviders();

❗❗❗❗ 프로바이더를 추가하지 않을 경우 알고리즘 사용 불가 ❗❗❗❗



profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글