학교 CS/정보보호이론(4-1학기)

RSA Padding: PSS 서명 생성 절차

우중충 2025. 6. 9. 10:22
반응형

RSA의 서명에 사용되는 PSS (Probabilistic Signature Scheme) 에 대해 알아보자

이 방식은 단순한 RSA 서명에서 발생할 수 있는 여러 보안 문제(예: 메시지 위조)를 방지하기 위해 도입된 안전한 서명 패딩 방식입니다.


🔐 왜 PSS가 필요한가요?

기존 RSA 서명 방식은 구조가 너무 단순해서 특정 구조를 조작하거나, 서명을 위조할 수 있는 공격에 취약했어요. 이를 방지하기 위해 메시지를 무작위 요소(salt)와 함께 복잡하게 가공하는 방식이 필요했는데, 그것이 바로 PSS입니다.

RSA 서명의 보안

  • 소인수분해 문제가 어렵다면, d를 복원하는 것은 매우 어려움.
  • 그러나 다음과 같은 존재 위조 공격(existential forgery attack)이 가능함:
    1. 서명 s ∈ Z_N을 무작위로 선택
    2. M = s^e mod N 계산
    3. 서명 쌍 σ = (M, s) 출력

⇒ 검증 결과: s^e = M (mod N) 이므로, 유효한 서명처럼 보임


RSA-PSS

✅ PSS 서명 생성 절차 상세 설명

💡 전제 조건

  • M: 서명할 메시지
  • Hash: 해시 함수 (예: SHA-256)
  • salt: 임의로 생성된 값 (랜덤 바이트)
  • MGF: Mask Generation Function, 일반적으로 MGF1 사용 (주로 Hash 기반)
  • EM: 최종 인코딩된 메시지 (EM은 mod N 연산 전 단계에서 사용하는 값)

📜 1단계. salt 생성

  • salt는 무작위 바이트 문자열입니다.
  • 매번 다른 값을 생성함으로써 동일한 메시지라도 서명이 매번 다르게 나오게 만듭니다.

📜 2단계. M′ 구성

M′ = 0x00 00 00 00 00 00 00 00 ∥ mHash ∥ salt
  • 8바이트의 0x00으로 구성된 고정 패딩
  • mHash = Hash(M): 메시지를 해시한 값
  • salt: 위에서 생성한 랜덤 값

이 M′은 중간 해싱을 위한 구조입니다.


📜 3단계. H 계산

H = Hash(M′)
  • 위에서 만든 M′ 전체를 해싱합니다.
  • 이것이 나중에 마스크 생성을 위한 기반이 됩니다.

📜 4단계. DB 구성

DB = PS ∥ 0x01 ∥ salt
  • PS: 고정된 길이의 0x00으로 구성된 패딩 (길이는 전체 길이에 따라 다름)
  • 0x01: 구분자
  • salt: 랜덤값 (동일한 salt 사용)

이 DB는 결국 마스킹 대상이 됩니다.


📜 5단계. 마스크 생성

mask = MGF(H, len(DB))
  • MGF(H)는 H를 기반으로 DB와 같은 길이의 바이트 스트림을 생성하는 함수입니다.
  • 보통 MGF1을 사용하며, 내부적으로는 반복 해시로 생성합니다.

📜 6단계. 마스킹 수행

maskedDB = DB ⊕ mask
  • 생성된 마스크를 DB에 XOR 연산해서 maskedDB를 생성합니다.
  • 즉, DB 내용이 외부에서 바로 보이지 않게 숨겨줍니다.

📜 7단계. 최종 인코딩 메시지 EM 구성

EM = maskedDB ∥ H ∥ TF
  • TF는 트레일링 비트 (예: 0xbc 등 고정값), 전체 길이 조정을 위한 것입니다.
  • 이 EM을 RSA의 mod N 연산에 사용하여 최종 서명값을 만듭니다.

🔁 서명 검증 시는 어떻게 하나요?

  1. 공개키로 서명값을 RSA 복호화합니다. (즉, EM 획득)
  2. EM을 위 순서의 역순으로 분석합니다:
    • maskedDB와 H를 분리
    • H로 MGF 실행 → 마스크 생성 → DB 복원
    • salt 추출 → 다시 M′ 구성 → H′ = Hash(M′)와 H 비교

→ 같으면 서명 유효, 다르면 위조


📌 PSS의 장점

특징 설명

무작위성 도입 동일한 메시지라도 서명이 매번 달라짐
구조적 안전성 단순 구조 서명의 공격(예: 포장 공격) 방지
암호학적으로 증명된 안전성 보안 증명이 존재하는 padding 방식

 

 

출처

https://de.wikipedia.org/wiki/Probabilistic_Signature_Scheme#

 

Probabilistic Signature Scheme – Wikipedia

aus Wikipedia, der freien Enzyklopädie Probabilistic Signature Scheme (PSS) oder probabilistisches Signaturverfahren ist ein von Mihir Bellare und Phillip Rogaway entwickeltes kryptographisches Paddingverfahren.[1] Im Zufallsorakelmodell kann mit dem PSS

de.wikipedia.org