Estación de trabajo criptográfica basada en tokens PKCS # 11. Firma electrónica Parte 2

En la primera parte de nuestra historia, mostramos cómo, tener en nuestras manos un token criptográfico con soporte para criptografía rusa, crear una solicitud de certificado, obtener e instalar un certificado para un token, verificar la firma electrónica del certificado y su validez contra la lista de certificados revocados (CRL), eliminar el certificado de ficha, cambiar etiquetas, etc. Después de haber creado una solicitud de certificado (haber generado un par de claves), recibido un certificado en la CA y establecerlo en un token, nada impide ahora usar un certificado personal (certificado con un par de claves) para la firma electrónica de documentos. Empecemos Primero, recuerde dónde se encuentra la utilidad cryptoarmp11.


A continuación, ejecute la utilidad y haga clic en el botón "1. Firmar el documento":



Seleccionamos el archivo con el documento que queremos firmar y decidimos el directorio donde guardaremos el archivo con la firma (el final del nombre de este archivo será .p7s). Decidimos si el documento firmado se almacenará en el cuerpo de la firma o no (firma adjunta / desconectada). Y lo más significativo, determinamos el formato de la firma. En mi opinión, puede cumplir con las siguientes reglas. Si este es un flujo interno de documentos corporativos, donde se lleva a cabo un control estricto sobre las computadoras, entonces es suficiente usar el formato de firma CAdes -BES, que incluye, además de la firma matemática, de acuerdo con GOST R 34.10-2012 y el tiempo de generación de la firma (campo Hora actual). Si no hay un control estricto sobre las computadoras (todos pueden configurar en cualquier momento en su computadora), y la fecha de la firma del documento es importante, entonces debe usar el formato CAdes-T o CAdes-XLT1. Cuando se usan los formatos CAdes-T y CAdes-XLT1, el lado externo está involucrado (similar a atraer un natarius), un servidor de sello de tiempo. Con el formato CAdes-T, la respuesta del servidor de sello de tiempo se agrega al archivo con firma electrónica (consulte el campo "Servidor TSP"). Esta respuesta (y también es un documento en formato PKCS # 7, firmado por el servidor TSP) le permite determinar en qué momento se firmó el documento. Debe tenerse en cuenta que a menudo solo se verifica una firma matemática, y se omite la validez de la firma en sí por las marcas de tiempo. Para verificar la validez de la firma, por supuesto, se requiere la verificación de la validez de los certificados. Entonces, para simplificar este trabajo, el formato de firma CAdes-XLT1 implica la inclusión en el archivo de firma de todas las pruebas de validez de firma en el momento de su creación. Estos son certificados, incluidos certificados de CA, servidores de sello de tiempo, servidores ocsp, así como listas de certificados revocados y respuestas de servidores OCSP. No nos detendremos en esto. ¿Quién quiere encontrar la literatura adecuada?

Entonces, decidimos el formato de la firma y presionamos el botón "Firmar el documento". Luego, debemos ingresar otro código PIN para el token, luego aparece una advertencia sobre el comienzo de la formación de la firma y la necesidad de ser paciente, y finalmente, se creará la firma:



¿Qué se necesita para crear una firma? Esto, por supuesto, son los cálculos matemáticos en sí mismos y la recopilación de varios datos (certificados, CRL, respuestas del servidor OCSP, marcas de tiempo). Todo, se crea la firma. Al recibir el certificado en la CA, asegúrese de averiguar la dirección del servidor de sello de hora de su CA. Si los enlaces a los certificados de las autoridades de certificación ( cadena de certificados), a las listas de certificados revocados, así como al servidor OCSP se toman de los certificados, entonces la dirección del servidor de sello de tiempo deberá ingresarse manualmente (campo "Servidor TSP").

Cómo asegurarse de que la firma se crea correctamente y que el documento se puede transferir al caso. En Internet puede encontrar varios sitios para verificar la firma. Algunos de ellos verifican solo la firma desconectada, otros verifican todo e informan bien:



Pero en cualquier caso, esto no le garantiza que su firma será aceptada en la organización donde presente el documento firmado, por ejemplo, en el sitio web del Servicio Estatal. Esto se debe al hecho de que de diferentes maneras se puede almacenar y verificar la evidencia de la validez de la firma en formato XLT1. Entonces, por ejemplo, en el sitio web del Servicio Estatal se requiere que la evidencia de la validez del certificado del servidor de sello de tiempo se almacene en la firma recibida del servidor. Y si no están allí, entonces, a pesar del hecho de que pueden estar presentes en la firma del documento, la firma en el sitio web de los Servicios del Estado será invalidada. Todo está bien con nuestra firma:



Vamos a la página "2. Trabajar con ES (PKCS7)" e inmediatamente seleccionamos el archivo con la firma creada:



Al cargar una firma, la utilidad completa los campos apropiados en la ventana principal. La captura de pantalla muestra esto bien. Muestra cuándo se generó la firma en la computadora del usuario (campo “Fecha de firma:”), cuándo se verificó esta fecha en el servidor de sello de tiempo (campo “Fecha de recepción del sello de tiempo”) y cuándo se recopilaron todas las pruebas de validez (campo “Fecha de aprobación de la etiqueta tiempo ").

Las operaciones que se pueden realizar en una firma también están claras. De mayor interés aquí es la adición de una firma a un documento previamente firmado. Para hacer esto, simplemente seleccione un certificado para agregar una nueva firma (análogo a la visualización del documento) y no se olvide de elegir un servidor TSP:



Y si nos fijamos en quién firmó el documento, ahora hay dos firmantes. Y ambas firmas se verificaron con éxito en el sitio web de servicios públicos:



En mi opinión, la utilidad corresponde a las aspiraciones de tener una utilidad para firmar documentos, tener a mano "certificados en tokens con una clave irrecuperable para que puedan leer todo ellos mismos".

Sin embargo, decidimos ir más allá e incluir en esta utilidad una página para trabajar con el contenedor PKCS # 12 , que se está volviendo cada vez más popular. Y si ahora para firmar un documento necesita el token PKCS # 11 y una biblioteca para él, entonces cuando use PKCS # 12 solo necesitará el contenedor en sí. Y, por supuesto, la utilidad de la que hablamos hoy. Pero esta utilidad es absolutamente autosuficiente y, a diferencia de varios CSP, no parchea ningún núcleo y funciona en cualquier plataforma. Por lo tanto, pasamos a la tercera parte .

Source: https://habr.com/ru/post/457288/


All Articles