Warum verwackeln Sie sensible Informationen schlecht

Published on April 26, 2019

Warum verwackeln Sie sensible Informationen schlecht

Ursprünglicher Autor: Dheera Venkatraman
  • Übersetzung
Sicher hat jeder im Fernsehen und im Internet Fotos von Menschen gesehen, die besonders verschwommen waren, um ihre Gesichter zu verbergen. Zum Beispiel Bill Gates:



Meistens funktioniert das, weil es keine bequeme Möglichkeit gibt, die Unschärfe in ein ziemlich detailliertes Foto umzuwandeln, um das Gesicht zu erkennen. Also mit den Gesichtern ist alles gut. Viele nutzen jedoch die Verschwommenheit vertraulicher Zahlen und Texte . Ich zeige Ihnen, warum das eine schlechte Idee ist.

Angenommen, jemand hat ein Foto seines Schecks oder seiner Kreditkarte aus einem schrecklichen Grund online gestellt (im Forum muss er nachweisen, dass er eine Million Dollar verdient hat, etwas Lustiges zeigt oder die Größe eines Gegenstands mit einer Kreditkarte vergleichen usw.). .), verwackelte das Bild mit einem zu breiten Mosaikeffekt, um die Zahlen auszublenden:



Es scheint sicher zu sein, weil niemand die Zahlen lesen wird? FALSCHE ANTWORT. Es gibt einen Angriff auf dieses Schema:

Schritt 1. Holen Sie sich ein sauberes Quittungsbild


Dafür gibt es zwei Möglichkeiten. Sie können entweder die Zahlen im grafischen Editor entfernen oder ein Konto bei derselben Bank erstellen und ein Bild Ihrer eigenen Karte aus demselben Winkel machen, um den Weißabgleich und den Kontrast zu kombinieren. Entfernen Sie dann die Zahlen aus dem grafischen Editor (im hochauflösenden Foto ist dies einfacher).

In unseren Beispielen ist dies natürlich leicht möglich:



Schritt 2. Iterationen


Verwenden Sie das Skript, um alle möglichen Kontonummern zu durchlaufen und erstellen Sie eine Prüfung für jede Gruppe, wobei die Nummerngruppen getrennt werden. Bei VISA-Karten werden beispielsweise Zahlen nach 4 gruppiert, sodass Sie jeden Abschnitt einzeln bearbeiten können. Dies erfordert nur 4 × 10.000 = 40.000 Bilder, die vom Skript leicht erstellt werden können.



Schritt 3. Unschärfe Jedes Bild ist identisch mit dem Original.


Bestimmen Sie die exakte Größe und den Versatz der zum Verschwimmen des Originalbilds verwendeten Kacheln in Pixel (einfach), und führen Sie dasselbe mit jedem Ihrer unscharfen Bilder aus. In diesem Fall sehen wir, dass das unscharfe Bild aus einem Mosaik von 8x8 Pixeln besteht, und der Versatz wird durch Zählen vom oberen Rand des Bildes (nicht gezeigt) bestimmt:



Jetzt durchlaufen wir alle Bilder und verwischen sie wie das Original, und wir erhalten so etwas:



Schritt 4. Bestimmen Sie den Helligkeitsvektor des Mosaiks jedes unscharfen Bildes.


Was bedeutet das? Nehmen wir die Mosaikversion 0000001 (vergrößert):



... und bestimmen Sie den Helligkeitsgrad (0-255) jedes Mosaikbereichs, indem Sie ihn auf eine bestimmte Weise als bezeichnen a = [ a 1 , a 2 . . . , a n ] :



In diesem Fall erstellt die Kontonummer 0000001 einen Mosaik-Helligkeitsvektor. A ( 0000001 ) = [ 213 , 201 , 190 , . . . ] . Wir finden den Mosaik-Helligkeitsvektor für jede Kontonummer auf dieselbe Weise. Verwenden Sie ein Skript, um jedes Bild zu verwischen und die Helligkeit zu lesen. Lassena ( x ) - Kontonummernfunktionx . Danna ( x ) i bezeichnet den i-ten Vektorwert des Mosaikhelligkeitsvektorsa , abgeleitet von der Kontonummerx . Obena ( 0000001 ) 1 = 213 .

Nun machen wir dasselbe für das ursprüngliche Referenzbild, das wir im Internet oder irgendwo sonst gefunden haben, und erhält den Vektor, den wir hier nennenz = [ z 1 , z 2 , . . . z n ] :



Schritt 5. Finden Sie das Bild, das dem Originalbild am nächsten liegt.


Bestimmen Sie den Helligkeitsvektor des Mosaiks des Originalbilds. Nennen wir es z = [ z 1 , z 2 , . . . z n ] und berechnet dann einfach die Entfernung von jeder Kontonummer (angezeigt durchx ) zum Mosaik-Helligkeitsvektor (nach Normalisierung):

d ( x ) = ( (A(x)0/N(a(x))-Z0/N(z))2+(a(x)1/N(a(x))-Z1/N(z))2+...)


wo N(a(x))und N(z)sind die Normalisierungskonstanten angegeben

N ( a ( x ) ) = ( a ( x ) 2 0 + a ( x ) 2 1 + . . . ) 2


N ( z ) = ( z 2 0 + z 2 1 + . . . ) 2


Jetzt nur das kleinste finden d ( x ) . Bei Kreditkarten bestätigt nur ein kleiner Teil der möglichen Zahlen die hypothetisch möglichen Kreditkartennummern, so dass auch hier nichts komplizierter ist.

In unserem Fall berechnen wir zum Beispiel

N ( z ) = ( 2062+2112+...)=844,78459


N ( a ( 0000001 ) ) = 907.47837


N ( a ( 0000002 ) ) = 909,20647


und fahren Sie dann mit der Berechnung der Entfernungen fort:

d ( 0000001 ) = 1,9363


d ( 0000002 ) = 1,9373


. . .


d ( 1124587 ) = 0,12566


d ( 1124588 ) = 0,00000


. . .


Vielleicht entspricht die Kontonummer 1124588 Mosaik?

"Aber du hast dein eigenes Bild benutzt, das leicht zu entziffern ist!"


In der realen Welt, echte Fotos, keine Dummy-Beispiele in Photoshop. Wir haben Textverzerrungen aufgrund des Kamerawinkels, der unvollständigen Ausrichtung usw. Dies hindert eine Person jedoch nicht daran, die Art der Verzerrung genau zu bestimmen und das entsprechende Skript zu erstellen! In jedem Fall können mehrere festgelegte Mindestabstände als Kandidaten betrachtet werden, insbesondere in der Welt der Kreditkarten, wo die Nummern gut in 4er-Gruppen unterteilt sind und nur eine von zehn Nummern tatsächlich eine gültige Nummer ist, wodurch die Auswahl zwischen mehreren möglich ist Kandidaten.

Um dies in echten Fotos zu realisieren, sollten Sie den Entfernungsalgorithmus verbessern. Sie können beispielsweise die obige Abstandsformel umschreiben, um Standardabweichungen zusätzlich zum Mittelwert zu normalisieren. Sie können auch RGB- oder HSV-Werte für jeden Mosaikbereich unabhängig voneinander verarbeiten und Skripts verwenden, um Text in jeder Richtung um mehrere Pixel zu verzerren und zu vergleichen (was immer noch eine begrenzte Anzahl von Vergleichen auf einem schnellen PC erfordert). Sie können Algorithmen verwenden, die den bereits vorhandenen Algorithmen für den nächsten Nachbarn ähneln, um die Zuverlässigkeit beim Arbeiten mit echten Fotos zu erhöhen.

Ja, ich habe mein Image verwendet und es für diesen Fall angepasst. Der Algorithmus kann jedoch für den tatsächlichen Einsatz sicherlich verbessert werden. Aber ich habe weder die Zeit noch den Wunsch, etwas zu verbessern, weil ich nicht nach Ihren Informationen suche. Eines ist jedoch sicher: Dies ist eine sehr einfache Situation. Verwenden Sie keine einfachen Mosaiken, um das Bild zu verwischen. Alles was Sie tun, ist die Menge an Informationen in dem Bild zu reduzieren, das alles enthältl o g ( 10 N ) / l o g ( 2 ) effektive BitKontoDaten. Wenn Sie diese Bilderverteilen, möchten Sieentfernenpersönlichen Daten und nicht behindernZugang zu ihmindem die Menge der visuellen Information abnimmt.

Stellen Sie sich ein grafisches Bild von 100 × 100 vor. Angenommen, ich habe einfach die Pixel gemittelt und jeden von ihnen durch einen Durchschnittswert ersetzt (d. H. Das Bild in ein Ein-Pixel-Mosaik umgewandelt). Sie haben gerade eine Funktion erstellt, die aus 256 ^ (10.000) Varianten auf 256 Varianten gehasht wird. Natürlich können Sie mit den empfangenen 8 Bits das Originalbild nicht wiederherstellen. Wenn Sie jedoch wissen, dass es nur 10 Varianten des Originalbilds gibt, können Sie anhand dieser 8 Bits leicht feststellen, welche von ihnen verwendet wurde.

Analogie zum Wörterbuchangriff


Die meisten UNIX / Linux-Systemadministratoren wissen, dass Kennwörter in / etc / passwd oder / etc / shadow mit einer Einwegfunktion wie Salt oder MD5 verschlüsselt werden. Dies ist ziemlich sicher, da niemand das Passwort entschlüsseln kann, indem er seinen verschlüsselten Text betrachtet. Die Authentifizierung erfolgt durch Ausführen der gleichen unidirektionalen Kennwortverschlüsselung, die der Benutzer beim Anmelden am System eingegeben hat, und vergleicht dieses Ergebnis mit dem gespeicherten Hash. Wenn sie übereinstimmen, hat der Benutzer den Test erfolgreich bestanden.

Es ist bekannt, dass ein Einweg-Verschlüsselungsschema leicht aufbricht, wenn ein Benutzer ein Wörterbuchwort als Kennwort wählt. Ein Angreifer muss lediglich das gesamte englische Wörterbuch verschlüsseln, den Geheimtext jedes Wortes mit dem in / etc / passwd gespeicherten Geheimtext vergleichen und das richtige Wort als Kennwort auswählen. Daher wird Benutzern generell empfohlen, komplexere Kennwörter zu wählen, die keine Wörter sind. Ein Wörterbuchangriff kann wie folgt veranschaulicht werden:



Ebenso ist die Bildunschärfe ein Einweg-Verschlüsselungsschema. Sie konvertieren das Bild, das Sie haben, in ein anderes Bild, das zur Veröffentlichung vorgesehen ist. Da die Kontonummern in der Regel nicht Millionen überschreiten, können wir ein „Wörterbuch“ mit möglichen Zahlen erstellen. Beispielsweise sind alle Zahlen von 0000001 bis 9999999. Starten Sie dann die automatische Verarbeitung, bei der jedes dieser Bilder auf einem Foto mit leerem Hintergrund platziert wird, und verwischen Sie jedes Bild. Dann müssen Sie nur die unscharfen Pixel vergleichen und sehen, welche Optionen dem Original am besten entsprechen.

Lösung


Die Lösung ist einfach: Verwischen Sie die Bilder nicht! Stattdessen malen Sie sie einfach:



Denken Sie daran, dass Sie die Informationen vollständig entfernen und nicht wie in einem unscharfen Foto reduzieren möchten.