Cifrado / descifrado PGP básico

0

Estoy trabajando en un proyecto que requiere el cifrado / descifrado básico de un mensaje. Generé claves privadas / públicas con mi correo electrónico y sin contraseña. La clave pública pgp, así como la clave privada, parecen estar en el siguiente formato (parece ser base64_encoded):

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: BCPG C# v1.6.1.0

rwd3434f...key..4d44edw4
-----END PGP PUBLIC KEY BLOCK-----

Esta clave pública se usó para cifrar algún mensaje. Luego recibí este mensaje cifrado no codificado de muestra en un archivo (* .pgp) que necesito descifrar usando la clave privada generada.

WEÛπ*=‚d\Ì˝¯i⁄„˝∂FŒ™ç;ı\qä´©Õ·[. G»v‹4Ø˘∂0J˘ÏN8¡6ÓÿÖ÷Á{x_>À5ÉQug‘Ô}ôΩ\ò[@$¶rnò∂sƒ1E∂˛ 9M!üæd<˝GŸ^páwS”ö'Uó˙L"ª∑â˛T“û0EUΩÉ'£éZ¢Ïg∂fiH13èóƒíÁ⁄!∞èñ4ù(ÂC2ábñ§¥ªµìÀ(õ(Ô1'ü¥ªçh4
îD¬r?7œƒ?+†#ßGµ?±î<›+ä’ºÖ

Mi pregunta es ¿cuál es la forma más sencilla de descifrar este mensaje cifrado dentro del archivo .pgp?

Probé la siguiente herramienta en línea: enlace

pero sigue recibiendo un error unknown object in stream 22

    
pregunta AnchovyLegend 25.10.2017 - 19:42
fuente

2 respuestas

3

Esa herramienta requiere que uses archivos cifrados blindados ASCII. Su ejemplo tiene problemas, ya que la codificación de un archivo binario como se muestra en un editor de texto no es única (y la aplicación web no sabe cómo interpretarlo correctamente).

La forma más sencilla es usar la línea de comandos con gpg ( gpg y PGP son generalmente compatibles cuando siguen el estándar OpenPGP excepto en algunos casos raros). Para un ejemplo completo, creas un par de claves de confianza (nuevamente para esta demostración, no elegí ninguna frase de contraseña en la clave) con:

$ gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
[...]
Your selection? 1
[...]
Key expires at Thu 26 Oct 2017 01:58:43 PM EDT
Is this correct? (y/N) y

[...]
You selected this USER-ID:
    "john doe (don't use) <[email protected]>"
[...]    
gpg: key DA65E019 marked as ultimately trusted
public and secret key created and signed.

que en mi caso creó un nuevo par de llaves de confianza llamado DA65E019.

Luego puedo cifrar un archivo sin ASCII armándolo (básicamente cifrando en base64 con linebreaks):

$ gpg --encrypt --recipient DA65E019 test.txt

que crea un archivo llamado test.txt.gpg o con ASCII armándolo:

$ gpg --encrypt --armor --recipient DA65E019 test.txt

que crea un archivo blindado ASCII llamado test.txt.asc .

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1

hIwDLaGCjcd4AvcBA/wLm/sLb5yha7dPIz4288dtgR0a4zdynB+MZ1ikH8aVWi8x
w6aR3DoA5IyOQkg7whC2vWlWHaJLkrSOWYwnvHVSNm/bXVtXkLq9ZLWnvLVjux+E
+GVQDr8nCSdGR04ZfQ741LjDWubUzlZFacIlMuSmvMrfepIcl5i1ydr4UNA9OtJR
Ac0pgzY3odsl8nmcO+v9XmRpekDm8O3TTHAHN5ci1+iqxI6W/VOEHeuan8HW00Hh
E10+X0Sb5cNCNJBtrIE4G06F2JMKt53o4kTULiSPjT8A
=WEJE
-----END PGP MESSAGE-----

Puedo usar su herramienta para descifrar este mensaje con su herramienta en línea, exportando mi clave secreta:

$ gpg --armor --export-secret-key DA65E019
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1

lQHYBFnw0OUBBADpSAnz6pdZYIyeRHJDi4AuTyEAmZTzFNbbS5Ble0wRnydzkl0o
/1pF0FpnkpFcutN2U1fQA/wVi2mYnUT5m3dY9kQVM9qaOShELg21wuqbvEjE+Y1f
+8+aTNY8f1eeLO6sDPZcpaGhiPxWfpb+uM5dke6DQ1wO+wZM/zXlRNjVAwARAQAB
AAP/W6pK/uV3g09E8gvDOndebtP5C9tNhBb0NkeC/d1tDp+TSP6CTNHKDxTH8VrO
c7mVzjEBmGN4cp7NZ4Kkz9AfHL3N9J2Y0VwoxtwkVgCFktvYFZZRBGI8tw5utxt1
T0dhPkBMDsPqoLushbooymPKbl9vGTZGMmPD1PWCRBc/yUECAO7qowO1J7PAoR0+
p3Z1mWfUXqD1eRuT5WL/MpP8+aUf5LxjeFqBweC3IWRSO6F6GdfGi6OPR+9rQ5IS
NKIbuJUCAPn2QDWUZiUTTregWgpVe4QkYW5l2h5+GXwdIJAr2mda7hvnR7QWXRbr
uYeN9kLxJsKw1AWZ8+EnyzjluM/fOTcB/j2E/SOel+N5q9fBTZNRjoVTaP8SS4mV
Oqljhdb25j6Dbk7Hn39yr6oQMGQlpF3oe7e4FTynSVvaLDMutqPrcHqjBLQeam9o
biBkb2UgKGRvbid0IHVzZSkgPGpAai5jb20+iL4EEwECACgFAlnw0OUCGwMFCQAB
UYAGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBD5wEzaZeAZZIsD/0sF0CMg
uzc8YH/hJT0WyGRKAOvqVrZxoRuSSmcZtBiM4yXXHZfByfuCqNwssJ+MnRyC7n3h
JbqI8CqI2Vfp+Bij9qZQEhhEiZVan62jtzv5ta9SSEoJTIzJNdhi3gmirzTXVM19
Mc0ZqSMGQRwku/TmLb5dfhNeIpnh8j2tlh4mnQHYBFnw0OUBBACzHMrc3YDGu4tj
PBdTFG7ziDOq3pb9pRrIvDDfTnkD5A+WWsOhuk201gnE1fmVoiPN9HiewLIMBekH
oYgFqz2QvIoGe5aGs1vsPb3iTYbLPHkNU2NCmMvDo4eH9pwf0aq/dVOY8LOO/pKy
S0pj0zXdpQJ61emGzCLMky4ScI1U9wARAQABAAP7BDZAh4pGd70wG+Ob0VoZy3gx
VnwryuTkumTkWGnK3HQ+cQwcimwdulFTenu2kZMBp4n690BfPgcL6pSdE2KBiglZ
1APeiPuSM5zYyHJBd2qJdB4s9PEWIIpJFR/XchTMy+1OzpsMZ8xF5dkzx8jwt6JG
U1bpzJIHEH89e07BSV0CAMMfOJr9PxtxsHDUcvdObZvwGcRFffuon9m0N0oG/v0B
j2GM/8Z2xM6ICRCDyH1KNgnxwPxOYtN6JgSq0tUY8GUCAOr+3JsUlsXnmw6iOu/4
d6kiTJaZ/f2Rh6St4Sxc/tfDBKT8bNZZdkG67C+cH0gn09aCemLWDWLm+dk+XWKH
5CsB/RXJdJ2G/0J3ZwQ83YqiFFIc9B1cC5b1Ji5u/prjPVeWVBHA1+gTptWiYgZi
PAugw5HilG4ec9egBJdVGGPPCQ+jNoilBBgBAgAPBQJZ8NDlAhsMBQkAAVGAAAoJ
EBD5wEzaZeAZHoMD/j92pvKe1mr8usWzYFecmZx8uyb1WouxqP+UeEQtry0+IfNJ
Qmlo5UbxYvn5KPg1WIcMOAXlDpm0neBuG/FCIhuUbXq4JVxV5tKJYw2I+Px6jiCD
HivTQ+/NgZdVMcB8k9PqyA96yVyct18KrDAAQ6l8xqzzxXefJRbUaqj8usG7
=yKJT
-----END PGP PRIVATE KEY BLOCK-----

o descifre directamente el archivo binario test.txt.gpg con gpg en la línea de comandos:

$ gpg --decrypt test.txt.gpg
gpg: encrypted with 1024-bit RSA key, ID C77802F7, created 2017-10-25
      "john doe (don't use) <[email protected]>"
this is a file

En tu ejemplo, tendrás que importar la clave privada:

$ gpg --allow-secret-key-import --import secret_key.gpg.asc 

y luego debería tener la clave privada y puede usarla para descifrar.

    
respondido por el dr jimbob 25.10.2017 - 20:19
fuente
0

La clave está en esta línea:

 Version: BCPG C# v1.6.1.0

Una búsqueda rápida en línea dice que se cifró con la biblioteca Bouncy Castle PGP, por lo que probablemente sea la mejor biblioteca para descifrarla. Este enlace enlace incluye un programa C # de ejemplo que utiliza Bouncy Castle para descifrar un PGP cifrado mensaje.

    
respondido por el John Deters 25.10.2017 - 20:16
fuente

Lea otras preguntas en las etiquetas