Herramientas para capturar y convertir la web

¿Cómo proteger el contenido de las capturas?

Capturas cifradas

En la era de las leyes, como el Reglamento General de Protección de Datos, o el RGPD que protege la información del usuario se ha vuelto más importante que nunca. Cuando se toma una captura, se almacena en caché por un corto tiempo en nuestros servidores para permitir que se descargue. Si bien nuestros servidores son seguros y no inspeccionamos las capturas de un usuario sin permiso. Esto no es suficiente protección en algunos escenarios cuando se maneja información personal.

La primera mejora potencial es dejar de capturar en caché cambiando la longitud 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 por mucho tiempo, por lo que debe descargarse inmediatamente después de su creación.

Otra posible preocupación de seguridad es el proceso real de enviarnos los datos confidenciales. Para proteger estos datos, primero debe habilitar SSL, una vez que recibamos los datos y se procesen, lo que sucede con bastante rapidez, se eliminarán automáticamente de nuestro sistema para garantizar que no haya una violación de seguridad.

También se puede agregar más seguridad a las capturas PDF o DOCX por contraseña que protege los documentos. Esto garantiza que solo aquellos usuarios con la contraseña correcta puedan acceder a un archivo protegido.

Sin embargo, si está capturando información muy confidencial, como registros de hospitales, etc. y desea un nivel adicional de protección, puede cifrar las capturas resultantes. Para hacer esto, especifique una clave de cifrado con cada solicitud, GrabzIt no almacena estas claves. Esta clave se utilizará para cifrar la captura que protege la información. Como no almacenamos la clave, no podemos ayudarlo a recuperar capturas cifradas. Una vez que reciba la captura, use 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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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 usa para cifrar la captura. Esta misma clave de cifrado se usa para descifrar el resultado automáticamente al pasar 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.3.7/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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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);
}); 	

Desafortunadamente, 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. En su lugar, puede agregar esta funcionalidad 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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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 usa para cifrar la captura. Esta misma clave de cifrado se usa 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)

Cómo funciona el cifrado de captura de GrabzIt

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 particular utilidad para los desarrolladores de Perl, ya que el lenguaje no tiene un paquete de código abierto de Perl que no requiera la finalización o instalación de herramientas de terceros como Open SSL.

Las capturas cifradas utilizan el cifrado de estándar de cifrado avanzado (AES) de 256 bit. También utiliza un modo de operación de cifrado de bloque Cipher Block Chaining (CBC).

Para que GrabzIt encripte una captura, una clave de cifrado 64 base que los caracteres 44 deben pasar al objeto de opción durante mucho tiempo. Para crear esta clave de cifrado, debe elegir bytes 32 aleatorios criptográficamente seguros. Estos deberían ser codificados a la 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 comienzo del archivo. Este IV tiene una longitud de bytes 16 y debe eliminarse del frente del archivo antes del descifrado. El IV también debe pasarse al algoritmo AES para habilitar el descifrado. Cuando se encripta una captura, no se agrega relleno al archivo, por lo que es necesario desactivar el desencriptado.

Recuerde que si ha creado una mejora para una de nuestras API de cliente existentes o para un idioma completamente nuevo, puede compartirla con la comunidad a través de gitHub.