¿Está bien enviar la clave privada del usuario, incluso si está protegida con un canal SSL? [duplicar]

0

Estoy desarrollando un servidor web que realiza firmas digitales de documentos (xml, pdf y office) y luego valida esas firmas.

Mi idea es: un usuario coloca su tarjeta inteligente y, a través de un PIN, obtiene su clave privada. Luego, la clave privada debe enviarse al servidor, para que el servidor pueda firmar el documento con esa clave.

Incluso si la clave privada se transmite a través de un canal SSL (HTTPS), ¿es una buena idea enviar la clave privada al usuario? ¿Cuál es tu opinión? Intento evitar realizar las firmas en el lado del cliente, para que todos los dispositivos puedan acceder al servicio de firmas.

Saludos, William.

    
pregunta user3411342 12.03.2014 - 16:21
fuente

4 respuestas

3

No. Nunca, nunca, está bien enviar la clave del cliente a otra persona. Se llama clave "privada" por una razón.

    
respondido por el Coderer 12.03.2014 - 16:41
fuente
3

Es ciertamente una mala práctica, y también puede ser un problema legal importante.

Debido a que tanto el usuario como su servicio técnicamente han tenido acceso a la clave privada, ya no puede garantizar quién fue el firmante real ante un tercero.

    
respondido por el Bruno 12.03.2014 - 16:50
fuente
0

Estoy de acuerdo con los sentimientos aquí, que es una mala práctica enviar la clave privada y en realidad sería casi imposible hacer lo que quieras.

¿Por qué?

Porque genera la clave privada en una smartcard . Es muy difícil marcar las claves privadas como exportables en dispositivos de tarjeta inteligente. Requiere un conocimiento específico de bajo nivel de la API de tarjeta inteligente, que se llama a través de unidades de datos de protocolo de aplicación . La forma en que se ejecuta la mayoría de criptografía en los dispositivos es mediante CAPI en windows o PKCS#11 en todas las plataformas. En la mayoría de las implementaciones de dispositivos CAPI, la capacidad para exportar claves privadas está deshabilitada por la API. PKCS # 11 es más bajo y puede admitir esto, pero dependerá de un dispositivo a otro.

Tu pregunta también provoca otra pregunta. ¿Por qué querría el servidor firmar el documento? Seguramente el usuario quiere firmar el documento. Entonces, simplemente envíe el documento al usuario a través de HTTPS, el usuario puede firmar con la tarjeta inteligente y cargar la firma nuevamente en el servidor (el documento ya está en el servidor). De hecho, para aumentar la eficiencia simplemente envíe el hash del documento al usuario a través de HTTPS. Esto es realmente lo que se cifrará con la clave privada.

    
respondido por el NRCocker 26.03.2014 - 05:30
fuente
-1

@mki es correcto. De hecho, es la tarjeta la que hace la firma. Por lo tanto, su proyecto no solo es inseguro en términos conceptuales y legalmente nulos, sino que es absolutamente inviable en la práctica.

    
respondido por el user207421 12.03.2014 - 21:13
fuente

Lea otras preguntas en las etiquetas