Narzędzia do przechwytywania i konwertowania Internetu

Jak chronić zawartość przechwytywania?

Szyfrowane przechwytywania

W dobie przepisów takich jak Ogólne Rozporządzenie o Ochronie Danych Osobowych czy RODO ochrona informacji o użytkownikach stała się ważniejsza niż kiedykolwiek. Po przechwyceniu jest ono zapisywane na krótki czas w pamięci podręcznej na naszych serwerach, aby umożliwić pobranie. Choć nasze serwery są bezpieczne i nie sprawdzamy nagrań użytkowników bez pozwolenia. W niektórych sytuacjach podczas przetwarzania danych osobowych nie jest to wystarczająca ochrona.

Pierwszą potencjalną poprawą jest zaprzestanie przechwytywania pamięci podręcznej poprzez zmianę długości pamięci podręcznej na zero minut na komputerze strona konta. Należy jednak pamiętać, że będzie to oznaczać, że przechwycenie nie będzie dostępne do pobrania przez bardzo długi czas, dlatego należy je pobrać natychmiast po utworzeniu.

Innym możliwym problemem związanym z bezpieczeństwem jest sam proces wysyłania do nas wrażliwych danych. Aby zabezpieczyć te dane należy w pierwszej kolejności włączyć SSL, wówczas po otrzymaniu danych i ich przetworzeniu, co następuje dość szybko, zostaną one automatycznie usunięte z naszego systemu, aby mieć pewność, że nie doszło do naruszenia bezpieczeństwa.

Do przechwytywania plików PDF lub DOCX można również dodać większe zabezpieczenia hasło zabezpieczające dokumenty. Gwarantuje to, że tylko użytkownicy posiadający prawidłowe hasło będą mieli dostęp do chronionego pliku.

Jeśli jednak przechwytujesz bardzo wrażliwe informacje, takie jak dokumentacja szpitalna itp., i potrzebujesz dodatkowego poziomu ochrony, możesz samodzielnie zaszyfrować powstałe przechwycenia. Aby to zrobić, przy każdym żądaniu określasz klucz szyfrowania, klucze te nie są przechowywane przez GrabzIt. Klucz ten służy do szyfrowania przechwytywania chroniącego informacje. Ponieważ nie przechowujemy klucza, nie możemy pomóc w odzyskaniu zaszyfrowanych nagrań. Po otrzymaniu przechwytywania użyj wygenerowanego wcześniej klucza, aby go odszyfrować.

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

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);

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

Aby móc korzystać z zaszyfrowanych przechwytów w Java 6, 7 i 8, zainstaluj rozszerzenie Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files into wszystkie foldery /jre/lib/security/ w folderach instalacyjnych 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);

W poniższym przykładzie automatycznie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do automatycznego odszyfrowania wyniku poprzez przekazanie wartości true do metody DataURI, którą można następnie odczytać w metodzie wywołania zwrotnego.

<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>

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

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);
}); 	

Niestety Perl nie może natywnie odszyfrować szyfrowania AES i wymaga zewnętrznych plików wykonywalnych lub kompilacji w języku C. Dlatego nie dodaliśmy tej funkcji do naszego API Perla, zamiast tego możesz dodać tę funkcjonalność samodzielnie, korzystając z poniższego przewodnika.

$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();

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

$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);

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

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)

W poniższym przykładzie tworzony jest kryptograficznie bezpieczny klucz i wysyłany do GrabzIt, który jest następnie używany do szyfrowania przechwytywania. Ten sam klucz szyfrowania jest następnie używany do odszyfrowania wyniku.

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)

Jak działa szyfrowanie przechwytywania GrabzIt

Ten przewodnik ma charakter bardzo techniczny i ma na celu pomóc programistom zrozumieć, jak działa nasze szyfrowanie. Powinien być szczególnie przydatny dla programistów Perla, ponieważ język ten nie ma pakietu Perla typu open source, który nie wymaga ukończenia ani instalacji narzędzi innych firm, takich jak Open SSL.

Zaszyfrowane przechwytywanie wykorzystuje 256-bitowe szyfrowanie Advanced Encryption Standard (AES). Wykorzystuje również tryb działania szyfrowania blokowego Cipher Block Chaining (CBC).

Aby GrabzIt mógł zaszyfrować przechwycenie, klucz szyfrowania Base 64 o długości 44 znaków musi zostać przekazany do obiektu opcji. Aby utworzyć ten klucz szyfrujący, należy wybrać 32 losowe, kryptograficznie bezpieczne bajty. Należy je następnie zakodować w formacie Base 64. Ponieważ są to bajty bezpieczne kryptograficznie, trudno będzie je przewidzieć, a zatem trudniej je złamać.

Kiedy GrabzIt otrzyma żądanie przechwytywania z kluczem szyfrowania, przechwytywanie jest szyfrowane, a wektor inicjujący (IV) jest wstawiany na początku pliku. Ten IV ma 16 bajtów długości i należy go usunąć z przodu pliku przed odszyfrowaniem. Wartość IV należy także przekazać do algorytmu AES, aby umożliwić odszyfrowanie. Kiedy przechwytywanie jest szyfrowane, do pliku nie jest dodawane żadne dopełnienie, więc przy deszyfrowaniu należy wyłączyć dopełnienie.

Pamiętaj, że jeśli stworzyłeś ulepszenie jednego z naszych istniejących interfejsów API klienta lub dla zupełnie nowego języka, możesz udostępnić to społeczności poprzez GitHub.