Nell'era delle leggi come il Regolamento generale sulla protezione dei dati o il GDPR, la protezione delle informazioni dell'utente è diventata più importante che mai. Quando viene eseguita un'acquisizione, questa viene memorizzata nella cache per un breve periodo sui nostri server per consentirne il download. Mentre i nostri server sono sicuri e non ispezioniamo le acquisizioni di un utente senza autorizzazione. Questa protezione non è sufficiente in alcuni scenari durante la gestione delle informazioni personali.
Il primo potenziale miglioramento è quello di non memorizzare più nella cache le acquisizioni modificando la lunghezza della cache su zero minuti, sul tuo file pagina dell'account. Tieni presente, tuttavia, che ciò significherà che l'acquisizione non sarà disponibile per il download per molto tempo, quindi dovrà essere scaricata immediatamente dopo la sua creazione.
Un altro possibile problema di sicurezza è l’effettivo processo di invio dei dati sensibili a noi. Per proteggere questi dati dovresti prima abilitare SSL, una volta ricevuti i dati ed elaborati, cosa che avviene abbastanza rapidamente, verranno automaticamente eliminati dal nostro sistema per garantire che non vi siano violazioni della sicurezza.
È inoltre possibile aggiungere maggiore sicurezza alle acquisizioni PDF o DOCX tramite password che protegge i documenti. Ciò garantisce che solo gli utenti con la password corretta possano accedere a un file protetto.
Tuttavia, se stai acquisendo informazioni molto sensibili come cartelle cliniche ecc. e desideri un ulteriore livello di protezione, puoi crittografare le acquisizioni risultanti. Per fare questo specifichi una chiave di crittografia con ogni richiesta, queste chiavi non vengono memorizzate da GrabzIt. Questa chiave può essere utilizzata per crittografare l'acquisizione proteggendo le informazioni. Poiché non memorizziamo la chiave, non possiamo aiutarti a recuperare le acquisizioni crittografate. Una volta ricevuta la cattura, utilizza la chiave generata in precedenza per decrittografarla.
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
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);
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
Per utilizzare le acquisizioni crittografate con Java 6, 7 e 8, installare Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files into tutte le cartelle /jre/lib/security/ delle cartelle di installazione 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);
Nell'esempio seguente una chiave crittograficamente sicura viene creata automaticamente e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare automaticamente il risultato passando true al metodo DataURI, che può quindi essere letto nel metodo callback.
<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>
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
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); });
Sfortunatamente Perl non può decrittografare la crittografia AES in modo nativo e richiede eseguibili esterni o compilazione C. Pertanto non abbiamo aggiunto questa funzionalità alla nostra API Perl; puoi invece aggiungerla tu stesso utilizzando la guida di seguito.
$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();
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
$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);
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
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)
Nell'esempio seguente viene creata una chiave crittograficamente sicura e inviata a GrabzIt, questa viene quindi utilizzata per crittografare l'acquisizione. Questa stessa chiave di crittografia viene quindi utilizzata per decrittografare il risultato.
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)
Questa guida è molto tecnica e mira ad aiutare gli sviluppatori a capire come funziona la nostra crittografia. Dovrebbe essere di particolare utilità per gli sviluppatori Perl, poiché il linguaggio non dispone di un pacchetto Perl open source che non richieda il completamento o l'installazione di strumenti di terze parti come Open SSL.
Le acquisizioni crittografate utilizzano la crittografia AES (Advanced Encryption Standard) a 256 bit. Utilizza anche una modalità operativa di crittografia a blocchi Cipher Block Chaining (CBC).
Affinché GrabzIt possa crittografare un'acquisizione, è necessario passare all'oggetto opzione una chiave di crittografia base 64 lunga 44 caratteri. Per creare questa chiave di crittografia dovresti scegliere 32 byte casuali crittograficamente sicuri. Questi dovrebbero quindi essere codificati in base 64. Poiché sono byte crittograficamente sicuri, saranno difficili da prevedere e quindi più difficili da decifrare.
Quando GrabzIt riceve una richiesta di acquisizione con una chiave di crittografia, l'acquisizione viene crittografata e il vettore di inizializzazione (IV) viene inserito all'inizio del file. Questo IV è lungo 16 byte e deve essere rimosso dalla parte anteriore del file prima della decrittografia. L'IV deve anche essere passato all'algoritmo AES per consentire la decrittografia. Quando un'acquisizione viene crittografata, al file non viene aggiunto alcun riempimento, quindi durante la decrittografia è necessario disabilitare il riempimento.
Ricorda che se hai creato un miglioramento per una delle nostre API client esistenti o per un linguaggio completamente nuovo puoi condividerlo con la community tramite github.