RSA Encrypt
수신자의 공개키로 RSA-OAEP 메시지를 암호화한다 (RFC 8017)
개요
수신자의 RSA 공개키와 PKCS#1 v2.2(RFC 8017) 표준 RSAES-OAEP(Optimal Asymmetric Encryption Padding) 스킴을 사용하여 짧은 메시지나 대칭 세션 키를 암호화한다.
공개키는 SPKI/PKCS#1 PEM과 DER 형식을 모두 자동으로 판별하여 파싱하며, 내부 MGF1 마스크 생성 함수는 선택한 OAEP 해시 알고리즘과 동일한 해시를 사용한다. 평문 최대 길이는 모듈러스 바이트 크기 $k$와 해시 길이 $hLen$에 의해 $k - 2 \times hLen - 2$바이트(예: RSA-2048 + SHA-256에서는 최대 190바이트)로 제한된다.
사용 시점
- 대칭 세션 키(예: 32바이트 AES 키)나 짧은 비밀 메시지를 수신자의 RSA 공개키로 안전하게 감싸 전송할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
해시 알고리즘 (OAEP 및 MGF1)hash |
select기본값: SHA-256 |
항상 노출 | 이 노드의 해시 알고리즘 (OAEP 및 MGF1) 설정을 지정한다.
|
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 3개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Public Key |
publicKey |
Any |
필수 | 항상 노출 | 수신자의 RSA 공개키 바이트 배열(PEM 또는 DER 자동 인식)이다. |
Plaintext Data |
plaintext |
Bytes |
필수 | 항상 노출 | 암호화할 평문 바이트 배열(최대 $k - 2 \times hLen - 2$바이트)이다. |
OAEP Label |
label |
Bytes |
선택 | 항상 노출 | 선택적 OAEP 레이블 $L$ 바이트 배열(미연결 시 빈 레이블 사용; 복호화 시 동일한 레이블을 제공해야 함)이다. |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Ciphertext |
ciphertext |
Bytes |
항상 노출 | 암호화된 $k$바이트 RSA-OAEP 암호문(Uint8Array)이다. |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
INVALID_KEY_FORMAT |
RSA 키 형식이 올바르지 않는다 | Public Key를 유효한 RSA 공개키(PEM 또는 DER)로 파싱할 수 없을 때 발생한다. |
OAEP_MESSAGE_TOO_LONG |
OAEP로 인코딩하기에 메시지가 너무 길다 | 입력 Plaintext가 해당 키 크기와 해시 조합의 최대 허용 길이($k - 2 \times hLen - 2$바이트)를 초과할 때 발생한다. |
활용 예시
RSA-OAEP(SHA-256)로 32바이트 AES 키 암호화하기
수신자 공개키로 대칭 세션 키를 암호화한다.
- RSA Key Generator의
Public Key와 32바이트 대칭키를 RSA Encrypt(SHA-256)에 연결하면 256바이트Ciphertext가 출력된다.