RSA
RSA (Rivest-Shamir-Adleman)
큰 소수의 인수분해 수학적 어려움에 기반한 널리 사용되는 비대칭 암호화 알고리즘으로, 비밀 키를 공유하지 않고도 안전한 키 교환, 디지털 서명, 암호화 통신을 가능하게 합니다.
기술 세부사항
RSA는 키 쌍을 생성합니다: 암호화용 공개 키(n, e)와 복호화용 개인 키(n, d), 여기서 n은 두 큰 소수의 곱입니다. 암호화는 c = m^e mod n을 계산하고, 복호화는 m = c^d mod n을 계산합니다. 2,048비트가 현재 최소 권장 키 크기이며, 4,096비트는 더 큰 보안 여유를 제공합니다. RSA는 대칭 알고리즘보다 느리므로 실제로는 대량 데이터가 아닌 랜덤 AES 세션 키를 암호화합니다(하이브리드 암호화). RSA-OAEP(Optimal Asymmetric Encryption Padding)는 선택 암호문 공격을 방지합니다. RSA-PSS가 권장 서명 방식입니다.
예시
```javascript
// AES-256-GCM encryption (Web Crypto API)
const key = await crypto.subtle.generateKey(
{ name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt']
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: 'AES-GCM', iv },
key,
new TextEncoder().encode('secret message')
);
```