코딩마을방범대
비대칭키를 이용한 인증서 생성 - (1) RSA 암호화, Bouncy Castle 본문
728x90
💬 목차
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();
❗❗❗❗ 프로바이더를 추가하지 않을 경우 알고리즘 사용 불가 ❗❗❗❗
728x90
'🎃 기타 > 상식 ❗' 카테고리의 다른 글
SSL과 TSL (0) | 2023.05.27 |
---|---|
비대칭키를 이용한 인증서 생성 - (2) 인증서에 대하여 (0) | 2023.05.27 |
소켓이란 (0) | 2023.05.26 |
Bit와 Byte의 차이점 (0) | 2023.05.26 |
서버와 IT용어(컴파일 & 링크 & 빌드) (0) | 2023.05.26 |