0Pricing
Cryptology Academy · Aula

RSA-PSS para assinaturas digitais

Aprenda a codificação PSS, o salt e por que ela substituiu PKCS#1 v1.5 para assinaturas.

RSA-PSS para assinaturas digitais é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.

Boas-vindas

O RSA-PSS (Esquema de Assinatura Probabilístico) é o substituto seguro para assinaturas PKCS#1 v1.5. Ele usa codificação aleatorizada para produzir assinaturas com segurança demonstrável.

Pontos fracos das assinaturas PKCS#1 v1.5

As assinaturas PKCS#1 v1.5 usam uma codificação DigestInfo determinística. Ataques de falsificação conhecidos exploram implementações de verificação permissivas. Bleichenbacher (2006) demonstrou falsificações de assinaturas contra determinados verificadores.

Objetivos do design do PSS

Bellare-Rogaway, 1996: o PSS adiciona um sal aleatório para tornar as assinaturas probabilísticas. Cada assinatura produz uma assinatura diferente. É demonstravelmente seguro no modelo do oráculo aleatório — com uma redução estreita à dificuldade do RSA.

Etapas da codificação PSS

1. mHash = Hash(M) 2. salt = random(sLen bytes) 3. M' = 0x00×8 || mHash || salt 4. H = Hash(M') 5. DB = PS || 0x01 || salt 6. dbMask = MGF1(H, emLen - hLen - 1) 7. maskedDB = DB XOR dbMask 8. EM = maskedDB || H || 0xbc

Opções de comprimento do sal

Opções do PKCS#1 v2.2: - MAX_LENGTH: sal tão longo quanto o hash (recomendado, segurança máxima) - DIGEST_LENGTH: sal = comprimento do hash (padrão) - 0: PSS determinístico (perde a propriedade probabilística, não recomendado) Python: padding.PSS.MAX_LENGTH

Verificação do PSS

Recupere EM = sig^e mod n. Analise maskedDB e H. Calcule M' a partir de mHash (da mensagem) e do sal recuperado. Verifique H == Hash(M'). O sal não precisa corresponder — basta H ser validado.

Comparação de segurança entre PSS e v1.5

PSS: seguro de forma demonstrável, redução estreita, assinaturas probabilísticas, cálculo um pouco maior. v1.5: seguro heuristicamente, determinístico, mais rápido, vulnerável a ataques de oráculo de formato. Todo código novo deve usar PSS.

PSS no TLS 1.3

O TLS 1.3 exige RSA-PSS para todas as assinaturas RSA. O PKCS#1 v1.5 é proibido em novas extensões do TLS 1.3. Algoritmos de assinatura: rsa_pss_rsae_sha256, rsa_pss_rsae_sha384, rsa_pss_rsae_sha512.

PSS em Python

from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes # Sign sig = private_key.sign( message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH), hashes.SHA256() )

OID do RSASSA-PSS

O RSA-PSS tem seu próprio tipo de chave OID: id-RSASSA-PSS (1.2.840.113549.1.1.10). As chaves geradas especificamente para PSS usam esse OID e exigem assinatura PSS (não funcionarão com v1.5). É a prática recomendada para novas implantações.

Hashes truncados e recomendações de sal

A segurança do PSS = min(|modulus|/2, |hash|) - 1 bits quando salt_length = hash_length. Para RSA-2048 com SHA-256: segurança de 128 bits. Combine os níveis de segurança: RSA-3072 + SHA-384 para segurança de 192 bits.

Verificação rápida

O que torna as assinaturas RSA-PSS “probabilísticas” em comparação com PKCS#1 v1.5?

Recapitulação

O RSA-PSS é a forma segura de assinar com RSA. Em seguida, dominaremos a criptografia de curvas elípticas — compreendendo a geometria e a álgebra das curvas.

Perguntas Frequentes

A aula “RSA-PSS para assinaturas digitais” é grátis?

Sim — o texto completo de “RSA-PSS para assinaturas digitais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.

O que vou aprender em “RSA-PSS para assinaturas digitais”?

Aprenda a codificação PSS, o salt e por que ela substituiu PKCS#1 v1.5 para assinaturas. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cryptology Academy?

Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “RSA-PSS para assinaturas digitais”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cryptology Academy?

Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. RSA de livro-texto e por que é inseguro
  2. Preenchimento PKCS#1 v1.5 e Bleichenbacher
  3. OAEP: preenchimento ideal para encriptação assimétrica
  4. RSA-PSS para assinaturas digitais
← Voltar para Cryptology Academy