2011-04-27 13 views
17

Estoy agregando un sentry handler al R logging package. actualmente django-sentry valida al cliente (la aplicación que envía registros de registro) en función de una clave compartida que viaja en texto claro en un canal seguro.¿cómo cifro los datos en R?

Me preguntaba si era posible hacer el cifrado desde R, preferiblemente asimétrico, basado en clave pública, pero no encuentro nada relevante.

bien, no "si fuera posible", sino "cómo hacerlo" y si alguien ya lo hizo.


después de la interacción con el autor de django-centinela, optamos por hmac, que he implementado dentro del paquete digest R (versión 0,5+ lo contiene). Esto hace no responde la pregunta "cómo cifrar datos usando R", pero resuelve el problema que formó la base de mi pregunta inicial.

En este momento ya no estoy trabajando activamente en la inscripción asimétrica en R, sin embargo, si le interesa y desea aportar ideas o códigos, ¡deje una nota aquí!

+1

parece que no está disponible todavía. ¿Quién está interesado en hacer esto? Propongo usar github para interacción y r-forge para el mejor maestro. en r-forge I ya registrado el paquete gnupg, una envoltura R para GnuPG.Mientras estoy solo, me quedaré con la forja-r. – mariotomo

Respuesta

4

te ayuda esto por delante: digest package? Tiene varias funciones hash. Que yo sepa, el cifrado asimétrico es el mismo que hash ...

+1

No estaba al tanto del paquete 'digest ', voy a echar un vistazo a su implementación, quizás ayude. el hash puede ser parte de la firma, pero definitivamente no es lo mismo que el cifrado asimétrico. no uso de claves públicas/privadas, no es posible eliminar hash, lo que sea. – mariotomo

7

También puede encontrar la función adecuada en el PKI package del autor Simon Urbanek.

Este paquete proporciona funciones PKI como certificados de verificación, inscripción RSA y firma que se pueden usar para construir infraestructura PKI y realizar tareas criptográficas.

código Ejemplo del tutorial:

require(PKI) 
key <- PKI.genRSAkey(2048) 
x <- charToRaw("Hello, world!") 
e <- PKI.encrypt(x, key) 
y <- PKI.decrypt(e, key) 
stopifnot(identical(x, y)) 
print(rawToChar(y)) 

da como resultado: [1] "Hello, world!"

mientras que el mensaje cifrado e fue:

[1] 36 83 d3 70 0a 67 b5 05 a6 40 1e 37 28 b9 4e 28 f1 31 92 14 2c 35 c8 8a 61 93 1e 04 62 01 da 3b 2b a0 75 1c 10 58 26 
[40] e4 77 da 7a 47 3f 4e 44 29 8e 97 6f 62 b1 98 44 ba 18 ef 57 1e 9e 9c 27 a8 6e 9c 7b c7 8b c0 c3 a3 00 e2 67 98 8b 6e 
[79] 1a 93 c6 d6 ed 4b 54 e5 7a 07 d7 06 ef a6 bb 36 6a 7f 57 06 b9 15 03 f6 51 3f 07 48 cb f4 2d 25 15 be 42 de f4 8a 06 
[118] 72 89 b1 e3 04 d3 ec 80 99 f0 66 0f 84 e1 b5 af 23 24 a1 36 8e 62 65 ae 19 fb 77 d1 36 06 ae 71 95 ee 57 aa 68 5a 6b 
[157] 4e 28 ba a2 0d 17 78 11 6c 7f 1b b3 ce 31 65 a9 d3 71 89 76 f9 19 a0 7a bf 02 dd c9 1f cb 9c 39 25 d4 48 a2 23 83 26 
[196] b4 a9 b1 40 f5 1d 46 21 35 12 52 73 09 9b f3 52 e1 9e 0d 2a 9b ff 70 81 41 24 49 ed 58 b2 61 dc 3e c9 b3 b2 b1 37 e0 
[235] 48 76 18 bf b0 e5 c2 d9 2b 92 2f 6b 49 dd e0 93 b7 10 f8 ba d2 8a 
+0

No es una solución completa. No hay cifrado AES, y RSA sin procesar no es realmente recomendable. –

2

Este es un hilo de edad pero en caso de que otros vienen a través de esto, parece que hay un paquete secure de Hadley. El readme dice:

El paquete seguro proporciona una bóveda de seguridad dentro de un repositorio de código a disposición del público. Le permite almacenar información privada en un repositorio público para que solo personas selectas puedan leerla. Esto es particularmente útil para las pruebas porque ahora puede almacenar credenciales privadas en su repositorio público, sin que el mundo las pueda leer.

Seguro se basa en la encriptación asimétrica (clave pública/privada). Secure genera una clave maestra aleatoria y la utiliza para cifrar (con AES256) cada archivo en bóveda /. La clave maestra no se almacena sin cifrar en ningún lado; en su lugar, se almacena una copia encriptada para cada usuario, utilizando su propia clave pública. Cada usuario puede descifrar la clave maestra encriptada usando su clave privada y luego usarla para descifrar cada archivo.

Cuestiones relacionadas