Martins key.matiq-Blog

>> Zurück zum Artikelverzeichnis >>


Suchen und Finden

Geschrieben: 31.05.2019
Letzte Überarbeitung: 22.04.2021
Stichwörter: Bedienbarkeit

Warum brauchen wir eine Suchfunktion?

Trotz aller Ordnung, die man in der key.matiq-Box hält, kommt es vor, dass man irgendwann nicht mehr weiß, wo man ein bestimmtes Kennwort abgelegt hat. Oder man hat eine neue E-Mail-Adresse und will feststellen, bei welchen Internet-Konten man noch die alte angegeben hatte oder eine neue Telefonnummer, die vielleicht auch irgendwo angegeben wurde.

Oder man hatte zunächst einfach alle bisherigen Internet-Login-Daten in key.matiq abgespeichert und möchte nun nach und nach schwache Kennworte eliminieren und durch starke ersetzen.

Wir wollen am liebsten nur eine kurze Eingabe, ...

... die Ergebnisse sollen unmittelbar erscheinen und das was wir meinten, soll zuoberst in den Suchergebnissen erscheinen. So wie wir es inzwischen bei Internet Recherchen gewohnt sind, ...

aber Eingabe und Resultate dürfen nicht anderen offenbart werden ...

... und das ist der Unterschied zu Internetsuchen: key.matiq verwaltet ja nicht Inhalte, die möglichst viele Leute lesen sollen, sondern ganz im Gegenteil Geheimnisse, also Inhalte, die höchstens von ganz wenigen Menschen geteilt werden. Auf diese Bedingung muss eine key.matiq-Suche angepasst sein.

Um die Auswirkungen auf die Arbeitsweise von key.matiq zu verstehen, und warum wir deshalb nicht nicht ganz so große Bequemlichkeit wie bei Internet-Suchen erwarten können, betrachten wir zunächst die Arbeitsweise der Internet-Suchmaschinen:

Wie arbeiten Internet-Suchmaschinen?

Sogenannte "Spider" durchforsten ständig das Netz und bauen eine großes Stichwortverzeichnis über die dort präsentierten Inhalte und Begriffe auf. Die Suchanfragen werden dann von selbstlernender Software bedient, die das Stichwortverzeichnis einerseits benutzt, aber auch das Feedback der Benutzer*innen speichert und einbezieht: Auf welche Suchergebnisse wird geklickt? Scheint die Benutzer*in mit dem Ergebnis zufrieden oder sucht sie gleich weiter ...?

Können solche Suchmaschinen auch für private Daten sinnvoll sein?

Natürlich kann der Aufbau eines Stichwortverzeichnisses die spätere Suche stark beschleunigen. Aber beim Einsatz von künstlicher Intelligenz (selbstlernende Suchmaschine) merkt man schnell, dass diese ohne Training durch eine breite Masse an Benutzer*innen doch recht bescheiden funktioniert.

Das heißt: Wenn nur eine Benutzer*in eine selbstlernende Suchmaschine trainiert, ist der Aufwand für sie recht groß, bevor ihr die Suchmaschine wirklich helfen kann.

Geheime Daten zu durchsuchen, ist kritisch!

Man muss sich bewusst machen: Suchkritieren und -ergebnisse, die Kennwörter und andere Geheimnisse erster Ordnung betreffen, sagen etwas über die Geheimnisse aus. Sie dürfen deshalb nicht in falsche Hände geraten und sind zu verschlüsseln wie die eigentlichen Geheimnisse selbst.

Einfacher ist es, klassisch zu suchen

Natürlich könnte man auch einen Index verschlüsseln. Aber der Aufwand und das Ergebnis stünden wohl im Missverhältnis. Gewöhnlich umfassen geheime Daten nicht allzuviele Kilobytes. Die kann man in aller Regel auch sequenziell durchsuchen.

Die Einbindung einer indizierenden Bibliothek bereits würde erfordern, den Code genau zu untersuchen und zu verstehen, um z. B. zu verhindern, dass auch nicht nur versehentlich in Log-Daten kritische Daten im Klartext ausgegeben werden. Auch jedes Update einer solchen Bibliothek müsste vor dessen Anwendung entsprechend untersucht werden.

Die Einbindung künstlicher Intelligenz bringt nicht viel, solange man die Schwarm-Intelligenz nicht nutzt, das heißt die selbstlernende Suchmaschine nicht vor allem mit dem Verhalten aller Benutzer*innen füttert. Aber: Weil sich dadurch eben dann auch das Verhalten der Suchmaschine ändert, können Benutzer*innen also Rückschlüsse auf das Verhalten anderer Benutzer*innen ziehen. Springt die Suchmaschine z. B. auf ein bestimmtes Kennwort an, weiß die Benutzer*in, dass wohl Mitbenutzer*innen desselben Dienstes dieses oder ähnliche Kennworte häufig benutzen. Derartiges gilt es natürlich zu vermeiden.*

key.matiq bietet genug Komfort, um in den Daten einer Box gut Ordnung zu halten. Dass die Suchfunktion benötigt wird, ist also eher selten. Für diese seltenen Fälle ist es ohne große Anstrengungen (die dann an anderer wichtigerer Stelle fehlen würden) sehr viel sicherer, eine klassische Suchfunktion (sequenziell, mit optionalem Filter, nicht selbstlernend) anzubieten.

Banken machen es ähnlich, aber noch nicht optimal

Erst nachdem wir die oben genannten Aspekte genauer untersucht und gegeneinander abgewägt haben, haben wir uns auch andere moderne Applikationen, die ebenfalls Wert auf hohen Benutzungskomfort legen, ohne dabei die Sicherheit gefährden zu wollen, auf diese Aspekte hin angeschaut. Da fielen uns gleich Web-Apps für das Online-Banking ein: Die Einen verzichten ganz auf eine Suchfunktion, andere verlangen, ähnlich wie key.matiq einen Suchtext und bieten einen Filter an. Gefunden werden dann jedoch nur Ergebnisse mit gleicher Schreibweise also ohne Toleranz gegen Schreibfehler. (Sorry, wir haben nur bei ein paar Online-Banking-Apps nachgeschaut.**

Das zeigt, dass wir wohl nicht ganz falsch liegen, im Prinzip bei geheimen Inhalten auf die gute Ordnung und bei Bedarf auf die klassische Suche zu setzen. Allerdings sind Banken erfahrungsgemäß eher konservativ, selten innovativ. Also haben wir uns überlegt, was wir besser machen können:

Nur wenige Ergebnisse, auch ähnliche, anzeigen

Was wir nämlich von Internetsuchen lernen können: Man will eigentlich immer nur eine übersichtliche Zahl von Ergebnissen sehen. Und es sollten ggf. auch ähnliche (also nicht genau passende) Ergebnisse mit einbezogen werden.

Beides lässt sich relativ leicht implementieren. Und die Beschränkung auf wenige Ergebnisse erleichtert sogar die Suche nach ähnlichen Ergebnissen: Wenn die Suchfunktion bereits die Maximalzahl an möglichen Ergebnissen gefunden hat, kann sie sich bei der Weitersuche darauf beschränken, diese ggf. durch bessere (d. h. ähnlichere) Ergebnisse zu ersetzen.

Was kann man alles mit dem Suchtext finden?

Alle Werte, die Sie eingegeben haben (außer logischen Werten, s. u.), aber auch berechnete Werte, wie die Größe von Objekten oder den Zeitpunkt der letzten Änderung. Geben Sie Zeiten und Größen einfach in dem Format ein, wie Sie auch in den Anzeige-Ansichten angezeigt werden. Also z. B. "31.05.2019" oder "104 Bytes". Probieren Sie es einfach mal aus!

Unterschiedliche Schreibung trotzdem finden

Eine IBAN kann mit eingestreuten Leerzeichen geschrieben sein oder auch zusammenhängend. Telefonnummern werden oft mit Sonderzeichen strukturiert, manche schreiben sie mit andere ohne nationale Vorwahl auf. Man könnte sie auch ohne Orts-Vorwahl aufschreiben.

Alle diese Schreibungen sollen gefunden werden: key.matiq stellt fest, ob ein Suchtext evtl. eine IBAN oder eine Telefonnummer sein könnte und bringt diese ggf. in eine Normalform.

Beim Suchen werden sowohl der Text so wie er ist, als auch diese Normalformen mit den zu durchsuchenden Zeichenketten verglichen. Konkret: Sie haben die Telefonummer

+49-(0)-12345/6789

als Suchtext eingegeben. In dem zu durchsuchenden Text steht

0049-12345-6789

key.matiq macht aus dem Suchtext die Normalform

490123456789

und der Zeichenkette im zu durchsuchenden Text

0049123456789

und findet darin den Teil

49123456789

der der Normalform des Suchtextes schon recht gut entspricht. Es wird Ihnen unter den ersten Ergebnissen angezeigt, dass

+49-12345-6789

gefunden wurde (d. h. der gefundene Wert fett und das davor stehende "+" mager im Kontext), und vor allem, in welchem Objekt.

Wie kann man logische Werte finden?

Logische Werte werden typischerweise mit Kontrollkästchen eingegeben. D. h. Sie haken an, dass z. B. ein Geheimnis übertragbar, aber versiegelt sein soll.

Wenn wir jetzt logische Werte einfach in "Ja" und "Nein" umsetzen würden, würden Sie mit einer Suche auf "Ja" oder "Nein" eine unsinnige Menge an Ergebnissen finden. Eine Suche nach "Versiegelt ja" wäre zwar denkbar, aber würde die Sache kompliziert machen, sowohl für uns bei der Implementation, als auch für Sie bei der Suche: Wir müssten bei Suchen auch die Beschreibungen von Attributen berücksichtigen und Sie müssten sich ziemlich genau diese Beschreibungen merken.

Einfacher ist es, wiederum den Filter zu benutzen. Hier kann man die wichtigsten logischen Werte als Filterkriterien nutzen. Man schränkt zunächst die Suche auf "Geheimnisse" ein, dann noch auf "mit Verteiler" und schließlich auf "versiegelt". Einen Suchtext braucht man dann gar nicht einzugeben. So findet man leicht die ersten 20 versiegelten Geheimnisse in einem Verzeichnisbaum. "die ersten 20" heißt: Alle Objekte werden in der Reihenfolge durchsucht, wie Sie sie von dem Verzeichnis-Baum her gewohnt sind. Brauchen Sie weitere Ergebnisse, können Sie einfach in tieferen Verzeichnissen suchen.

Sicherheit

Suchtext, Filter und Suchergebnisse werden nur verschlüsselt gespeichert. Das heißt im Klartext werden sie immer nur kurzzeitig und nur im flüchtigen Hauptspeicher gehalten, wo auch der Schlüssel nur liegt, der bei jedem Neustart von key.matiq neu generiert wird. Sie können also getrost auch nach Kennwörtern suchen.

 

*) Zumindest, solange der Dienst noch so klein ist, dass diese Erkenntnis nicht absolut anonym ist. Anderenfalls ist nicht auszuschließen, dass solche Erkenntnisse, wenn sie vorsichtig gehandhabt werden, auch nützlich sein könnten, wenn auch nicht für die konrete Suche.

**) Falls Sie uns von besseren Ergebnissen berichten können, geben Sie uns doch bitte ein Feedback.


>> Zurück zum Artikelverzeichnis >>