¿Hay un formato de certificado PKCS que firme datos ASCII?

1

¿Ya existe un PKCS #x que fue diseñado para firmar datos ASCII y protegerlos de la manipulación? Originalmente fui guiado a PKCS # 7, pero según las publicaciones aquí parece que los datos no están firmados, solo la información de la CRL. No me importa eso.

Aquí es cómo me gustaría que esto funcione:

  • Establecer un conjunto de claves raíz + certificado autofirmado
  • Establezca un segundo nivel de pares de claves con certificados firmados por la raíz
  • Cree "certificados" con texto ASCII en el cuerpo (firmado por el segundo nivel)

Algo así como un archivo de configuración protegido. Fácil de leer / analizar, pero verificable. Lo siento por la mala descripción. Realmente soy nuevo en los conceptos de seguridad y lo admito. Solo quiero saber si necesito olvidarme de PKCS y simplemente codificarlo o si hay algo ya definido que apoye esto. Me parece más sencillo codificarme, pero por si acaso ...

    
pregunta Peter Stephens 09.06.2015 - 04:35
fuente

2 respuestas

1

Un "certificado" según la definición utilizada en criptografía es información sobre una entidad criptográfica en un formato específico y firmada por una "autoridad de certificación" o CA; X.509 es el tipo de certificado más común y el utilizado por PKCS # 7 o su versión actualizada de CMS (y S / MIME, que es una envoltura delgada en CMS). Si desea firmar sus propios datos, no datos de certificados criptográficos especiales, desea SignedData , que es una de varias opciones (con algunas subopciones también) en PKCS # 7 / CMS. Los datos no necesitan ser ASCII, pero si están bien, y si se trata de ASCII imprimible canónico (sin caracteres de control excepto CRLF para el salto de línea), entonces puede usar la subopción "firma separada", lo que permite que cualquiera pueda ver la parte de datos sin ninguna herramienta especial (pero no puede modificarla sin invalidar la firma). Tener una CA raíz que emite certificados para varias entidades que usan esos certificados y sus claves para firmar y verificar datos es un uso bog estándar de PKCS # 7 / CMS .

Tenga en cuenta que PKCS # 7 a veces se usa como "transportista" para certificados X.509 y / o CRL, pero no los datos del usuario. Los certificados y las CRL están firmados internamente por la CA que los emite, y no necesitan ni obtienen protección adicional. Eso es diferente del caso SignedData, donde los datos del usuario necesitan y se agrega una firma.

Según el comentario, el formato PGP , implementado por GnuPG y algunos competidores, tiene las mismas capacidades básicas (y casi todos los objetivos) que PKCS # 7 / CMS / SMIME: las partes generan pares de teclas que puede estar certificado o puede ser distribuido y confiable por otros medios; luego, las partes utilizan una clave privada para firmar (de forma arbitraria) los datos que cualquier destinatario puede verificar utilizando la publicación, o utiliza una publicación (o varias) para cifrar los datos que solo los destinatarios pueden descifrar utilizando la clave privada (s). (PKCS # 7 / CMS llama a este último "envolvente" para distinguirlo de otras formas de cifrado.)

Existen diferencias técnicas : PKCS # 7 / CMS usa la codificación ASN.1 (al igual que X.509), mientras que PGP usa su propia estructura de paquetes etiquetada. ambos usualmente usan base64 "armadura"; PGP identifica las claves por una identificación hexadecimal abreviada y las partes generalmente por una dirección de correo electrónico, mientras que X.509 y PKCS # 7 / CMS identifican las claves por (generalmente) un hash y las partes por una estructura de "Nombre Distinguido" que puede ser terriblemente complicada pero en Una situación que controlas puede ser bastante simple.

Pero la diferencia más visible es que PGP se presenta principalmente como una línea de comandos o programa GUI que ejecuta para generar claves, firmar, etc. PKCS # 7 / CMS se implementa en al menos algunas bibliotecas y como parte de algunas Otros programas como Microsoft Outlook, pero el único programa independiente que conozco es la utilidad de línea de comandos en OpenSSL, que después de una larga evolución tiene algunas peculiaridades que requieren un poco de tiempo para acostumbrarse. OTOH si desea que su programa (s) lea y verifique el archivo (y posiblemente también lo cree y firme), la API de la biblioteca OpenSSL es en su mayoría sencilla y razonablemente bien documentada, si están utilizando C o C ++ o cualquier cosa que pueda llamar a C. Para Java hay una buena biblioteca de terceros de BouncyCastle. MSDN dice que dot-NET tiene soporte. Cualquier otra cosa, haz tu pregunta más específica.

    
respondido por el dave_thompson_085 09.06.2015 - 17:11
fuente
0

PKCS # 7 ahora está estandarizado por IEFT como CMS, RFC5652 .

    
respondido por el primetomas 10.06.2015 - 20:26
fuente

Lea otras preguntas en las etiquetas