Qual è il modo più semplice (in termini di risorse di calcolo) per stabilire se un messaggio di posta elettronica s/mime è firmato con firma allegata quando questo messaggio è crittografato ?Come verificare se anche il messaggio S/MIME crittografato è firmato, senza decrittografarlo
Se un messaggio è appena firmato, è facile. Ha un po 'come:
alla firma allegata
Content-Type: application/x-pkcs7-mime; smime-type=signed-data;
name="smime.p7m"
Oppure:
alla firma distaccata
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature";
micalg=SHA1; boundary="----=_NextPart_000_00D2_01CD5850.61030BF0"
nelle sue intestazioni.
Ma quando un messaggio è crittografato, non si può dire se è firmato anche perché l'intestazione Content-Type è lo stesso per entrambi i casi (solo cifrati e cifrati/firmati):
Content-Type: application/x-pkcs7-mime;
smime-type=enveloped-data;
boundary="----=_NextPart_000_000D_01CDC82B.98454D80";
name="smime.p7m"
lo fa significa che devo decifrare il messaggio solo per sapere se è anche firmato? Per ora, sembra che non possa nemmeno dire se il mio messaggio è stato firmato prima di decifrarlo (perché la firma è all'interno dei dati crittografati). O, forse, i dati crittografati e firmati S/MIME hanno ancora qualche schema che potrebbe permettermi di distinguere tra dati crittografati/firmati e crittografati/non firmati senza decrittografia (che potrebbe anche essere possibile se non ho il certificato per la decrittografia)?
Se l'utente ha firmato, quindi ha crittografato i dati, probabilmente voleva nascondere il fatto che il messaggio è stato firmato, il che è contrario a ciò che si vuole fare. –
Io non la penso così. Alcuni client di posta elettronica funzionano in questo modo. – Alex
Se un messaggio è crittografato _dopo_ è stato firmato, l'unico modo per sapere che è stato firmato è di decodificarlo prima. Vedi la mia [risposta] (http://stackoverflow.com/a/13516241/29157) per capire perché questa è una cattiva idea. –