En la era de leyes como el Reglamento General de Protección de Datos o el RGPD, proteger la información del usuario se ha vuelto más importante que nunca. Cuando se realiza una captura, se almacena en caché durante un breve período de tiempo en nuestros servidores para permitir su descarga. Si bien nuestros servidores son seguros y no inspeccionamos las capturas de un usuario sin permiso. Esta protección no es suficiente en algunos escenarios cuando se maneja información personal.
La primera mejora potencial es dejar de almacenar en caché las capturas cambiando la duración del caché a cero minutos, en su página de la cuenta. Sin embargo, tenga en cuenta que esto significará que la captura no estará disponible para descargar durante mucho tiempo, por lo que deberá descargarla inmediatamente después de crearla.
Otro posible problema de seguridad es el proceso real de enviarnos datos confidenciales. Para proteger estos datos, primero debe habilitar SSLLuego, una vez que recibamos los datos y se procesen, lo que ocurre con bastante rapidez, se eliminarán automáticamente de nuestro sistema para garantizar que no haya ninguna violación de seguridad.
También se puede agregar más seguridad a las capturas de PDF o DOCX al contraseña protegiendo los documentos. Esto garantiza que sólo aquellos usuarios con la contraseña correcta puedan acceder a un archivo protegido.
Sin embargo, si está capturando información muy confidencial, como registros hospitalarios, etc., y desea un nivel adicional de protección, puede cifrar las capturas resultantes. Para hacer esto, especifica una clave de cifrado con cada solicitud; GrabzIt no almacena estas claves. Esta clave se utilizará para cifrar la captura protegiendo la información. Como no almacenamos la clave, no podemos ayudarlo a recuperar capturas cifradas. Una vez que reciba la captura, utilice la clave que generó anteriormente para descifrarla.
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
GrabzItClient grabzIt = new GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); grabzIt.UseSSL(true); string encryptionKey = grabzIt.CreateEncryptionKey(); ImageOptions options = new ImageOptions(); options.EncryptionKey = encryptionKey; grabzIt.URLToImage("http://www.spacex.com", options); GrabzItFile encryptedCapture = grabzIt.SaveTo(); GrabzItFile decryptedCapture = grabzIt.Decrypt(encryptedCapture, encryptionKey);
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
Para utilizar capturas cifradas con Java 6, 7 y 8, instale los archivos de política de jurisdicción de fuerza ilimitada de Java Cryptography Extension (JCE). into todas las carpetas /jre/lib/security/ de las carpetas de instalación de Java.
GrabzItClient grabzIt = new GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); grabzIt.UseSSL(true); String encryptionKey = grabzIt.CreateEncryptionKey(); ImageOptions options = new ImageOptions(); options.setEncryptionKey(encryptionKey); grabzIt.URLToImage("http://www.spacex.com", options); GrabzItFile encryptedCapture = grabzIt.SaveTo(); GrabzItFile decryptedCapture = grabzIt.Decrypt(encryptedCapture, encryptionKey);
En el siguiente ejemplo, se crea automáticamente una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza para descifrar el resultado automáticamente pasando verdadero al método DataURI, que luego se puede leer en el método de devolución de llamada.
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@grabzit/js@3.5.2/grabzit.min.js"></script>
</head>
<body>
<img id="capture"></img>
function callback(dataUri)
{
document.getElementById('capture').src = dataUri;
}
<script type="text/javascript">
GrabzIt("Sign in to view your Application Key").UseSSL().Encrypt().ConvertURL("http://www.spacex.com").DataURI(callback, true);
</script>
</body>
</html>
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
var grabzit = require('grabzit'); var client = new grabzit("Sign in to view your Application Key", "Sign in to view your Application Secret"); client.use_ssl(true); var encryptionKey = client.create_encryption_key(); client.url_to_image("http://www.spacex.com", {"encryptionKey":encryptionKey}); client.save_to(null, function (error, result){ if (error != null){ throw error; } var decryptedBytes = client.decrypt(result, encryptionKey); });
Lamentablemente, Perl no puede descifrar el cifrado AES de forma nativa y requiere ejecutables externos o compilación de C. Por lo tanto, no hemos agregado esta funcionalidad a nuestra API de Perl; usted puede agregarla usted mismo utilizando la guía a continuación.
$grabzIt = GrabzItClient->new("Sign in to view your Application Key", "Sign in to view your Application Secret"); $grabzIt->UseSSL(1); $options = GrabzItImageOptions->new(); $options->encryptionKey("UUK2Xo9OLT2dFvN0wPBGOMZRYqD6WxqFtrZK9YrG+Hg="); $grabzIt->URLToImage("http://www.spacex.com", $options); //needs to be decrypted $data = $grabzIt->SaveTo();
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
$grabzIt = new \GrabzIt\GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); $grabzIt->UseSSL(true); $encryptionKey = $grabzIt->CreateEncryptionKey(); $options = new \GrabzIt\GrabzItImageOptions(); $options->setEncryptionKey($encryptionKey); $grabzIt->URLToImage("http://www.spacex.com", $options); $encryptedData = $grabzIt->SaveTo(); $decryptedData = $grabzIt->Decrypt($encryptedData, $encryptionKey);
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
grabzIt = GrabzItClient.GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret") grabzIt.UseSSL(True) encryptionKey = grabzIt.CreateEncryptionKey() options = GrabzItImageOptions.GrabzItImageOptions() options.encryptionKey = encryptionKey grabzIt.URLToImage("http://www.spacex.com", options) encryptedData = grabzIt.SaveTo() decryptedData = grabzIt.Decrypt(encryptedData, encryptionKey)
En el siguiente ejemplo, se crea una clave criptográficamente segura y se envía a GrabzIt, que luego se utiliza para cifrar la captura. Esta misma clave de cifrado se utiliza luego para descifrar el resultado.
grabzIt = GrabzIt::Client.new("Sign in to view your Application Key", "Sign in to view your Application Secret") grabzIt.use_ssl(true) encryptionKey = grabzIt.create_encryption_key() options = GrabzIt::ImageOptions.new() options.encryptionKey = encryptionKey grabzIt.url_to_image("http://www.spacex.com", options) encryptedData = grabzIt.save_to() decryptedData = grabzIt.decrypt(encryptedData, encryptionKey)
Esta guía es muy técnica y tiene como objetivo ayudar a los desarrolladores a comprender cómo funciona nuestro cifrado. Debería ser de especial utilidad para los desarrolladores de Perl, ya que el lenguaje no tiene un paquete Perl de código abierto que no requiera completar o instalar herramientas de terceros como Open SSL.
Las capturas cifradas utilizan cifrado Estándar de cifrado avanzado (AES) de 256 bits. También utiliza un modo de operación de cifrado de bloques Cipher Block Chaining (CBC).
Para que GrabzIt cifre una captura, se debe pasar una clave de cifrado base 64 de 44 caracteres al objeto de opción. Para crear esta clave de cifrado, debe elegir 32 bytes aleatorios criptográficamente seguros. Luego, estos deben codificarse en base 64. Como son bytes criptográficamente seguros, serán difíciles de predecir y, por lo tanto, más difíciles de descifrar.
Cuando GrabzIt recibe una solicitud de captura con una clave de cifrado, la captura se cifra y el vector de inicialización (IV) se inserta al principio del archivo. Este IV tiene 16 bytes de largo y debe eliminarse del frente del archivo antes de descifrarlo. El IV también debe pasarse al algoritmo AES para permitir el descifrado. Cuando se cifra una captura, no se agrega ningún relleno al archivo, por lo que cuando se descifra el relleno es necesario desactivarlo.
Recuerde que si ha creado una mejora para una de nuestras API de clientes existentes o para un idioma completamente nuevo, puede compartirla con la comunidad a través de gitHub.