NodeCrypto 도움말

Asymmetric Padding

카테고리: 유틸리티 · 노드 타입 ID: padding-asymmetric

RSA OAEP(인코딩/디코딩) 및 RSA PSS(인코딩) 패딩 방식 (PKCS#1 v2.2 / RFC 8017)

개요

PKCS#1 v2.2(RFC 8017) 표준에 따른 비대칭키 RSA 패딩 변환인 EME-OAEP 인코딩/디코딩과 EMSA-PSS 인코딩을 모듈러 거듭제곱($m^e \bmod n$)과 분리하여 단독으로 수행한다.

내부 마스크 생성 함수(MGF1)와 DB 마스킹 결과를 바이트 단위로 직접 검사하거나 결정론적 Seed/Salt를 주입해 NIST/RFC 테스트 벡터를 검증할 때 사용한다. 자세한 알고리즘 구조는 패딩 스킴 — RSA 비대칭키 패딩을 참고한다.

사용 시점

파라미터 설정

파라미터 (ID)타입 및 기본값노출 조건설명 및 옵션
방식
scheme
select
기본값: OAEP-Encode
항상 노출 이 노드의 방식 설정을 지정한다.
  • OAEP-Encode: RSA-OAEP 인코딩 (암호화 패딩)
  • OAEP-Decode: RSA-OAEP 디코딩 (복호화 패딩 제거)
  • PSS-Encode: RSA-PSS 인코딩 (서명 패딩)
모듈러스 / 목표 길이 (바이트)
targetLength
select
기본값: 256
항상 노출 이 노드의 모듈러스 / 목표 길이 (바이트) 설정을 지정한다.
  • 128: 128바이트 (1024비트 RSA)
  • 256: 256바이트 (2048비트 RSA)
  • 384: 384바이트 (3072비트 RSA)
  • 512: 512바이트 (4096비트 RSA)
PSS 솔트 길이 (바이트)
saltLength
number
기본값: 32
변수 참조 지원 ($var: int)
scheme가 PSS-Encode 일 때 PSS_ENCODE에서 Salt (PSS) 포트가 연결되지 않았을 때 무작위로 생성할 솔트 바이트 길이(기본 32바이트)이다.
오류 단일화
errorUnify
boolean
기본값: false
변수 참조 지원 ($var: bool)
항상 노출 활성화하면 내장 오류를 지정한 단일 오류 코드·메시지로 대체한다.
단일화 오류 코드
errorUnifyCode
text
기본값: "" (비움)
변수 참조 지원 ($var: string)
errorUnify가 true 일 때 오류 통합 활성화 시 사용할 오류 코드이다.
단일화 오류 메시지
errorUnifyMessage
text
기본값: "" (비움)
변수 참조 지원 ($var: string)
errorUnify가 true 일 때 오류 통합 활성화 시 사용할 오류 메시지이다.

포트 입출력 명세

포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.

입력 포트

포트 성격: 고정 입력 포트 (총 5개; 조건부 노출 포트는 아래 표와 같이 파라미터 설정에 따라 전환됨).

포트 이름포트 ID데이터 타입필수 여부노출 조건설명
Message message Bytes 필수 scheme가 OAEP-Encode 일 때 RSA-OAEP로 인코딩할 메시지.
Encoded Message em Bytes (EM) 필수 scheme가 OAEP-Decode 일 때 RSA-OAEP로 패딩을 제거할 인코딩된 메시지(EM).
Message Hash mHash Bytes (32B) 필수 scheme가 PSS-Encode 일 때 RSA-PSS로 인코딩할 메시지의 SHA-256 해시.
OAEP Label label Bytes 선택 scheme가 OAEP-Encode 또는 OAEP-Decode 일 때 OAEP_ENCODE 및 OAEP_DECODE에서 사용하는 선택적 OAEP 레이블 $L$(연결하지 않으면 빈 바이트열)이다.
PSS Salt salt Bytes 선택 scheme가 PSS-Encode 일 때 PSS_ENCODE 전용 선택적 결정론적 솔트(saltLength바이트). 연결하지 않으면 무작위 솔트를 생성한다.

출력 포트

포트 성격: 고정 출력 포트 (총 1개).

포트 이름포트 ID데이터 타입노출 조건설명
Result result Bytes 항상 노출

오류 케이스

실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다. 오류 통합(errorUnify)을 활성화하면 아래의 모든 오류 코드가 사용자가 지정한 단일 오류 코드와 메시지로 대체된다.

오류 코드기본 엔진 메시지발생 조건
OAEP_MESSAGE_TOO_LONG OAEP로 인코딩하기에 메시지가 너무 길다 OAEP_ENCODE에서 입력 메시지 길이가 최대 허용 크기($k - 2 \times hLen - 2$바이트)를 초과하거나, 연결된 Seed 길이가 $hLen$과 다를 때 발생한다.
INVALID_OAEP_PADDING OAEP 패딩이 올바르지 않는다 OAEP_DECODE에서 입력 블록 길이가 $k$바이트가 아니거나 선두 0x00 바이트, lHash', 또는 0x01 구분자 검증에 실패했을 때 발생한다.
INVALID_PSS_PARAMS PSS 파라미터가 올바르지 않는다(메시지 해시 32바이트, 솔트는 Salt Length와 같은 길이, 대상 길이는 해시·솔트보다 길어야 함) PSS_ENCODE에서 입력 메시지 해시가 32바이트가 아니거나, 연결된 Salt 길이가 saltLength와 다르거나, 모듈러스 크기가 해시+솔트보다 작을 때 발생한다.

활용 예시

2048비트 RSA-OAEP 인코딩 후 다시 디코딩하기

평문을 256바이트 OAEP 블록으로 만든 뒤 역변환하여 원본이 나오는 것을 확인한다.

  1. 첫 번째 Asymmetric Padding을 OAEP_ENCODE(2048비트, SHA-256)로 설정하고 평문을 연결해 256바이트 블록을 얻는다.
  2. 두 번째 Asymmetric Padding을 OAEP_DECODE(2048비트, SHA-256)로 설정하고 첫 노드의 출력을 연결하면 원본 평문이 복원된다.