-
HINTERGRUND
-
Tastenaufzeichner
(engl.: key loggers) sind Produkte, die ohne das Wissen oder die
Erlaubnis eines Nutzers die Tasten erfassen, die der Nutzer auf einer
Tastatur drückt.
Tastenaufzeichner können
beispielsweise dazu verwendet werden, Passwörter, die von einem Nutzer
getippt werden, wenn sich der Nutzer in einen Dienst oder in ein
System einloggt, zu stehlen. Das Aufkommen von Tastenaufzeichnungsprodukten
führte
zu einem Erfordernis von Anti-Tastenaufzeichnungsprodukten, die
versuchen, die Funktionsfähigkeit
von Tastenaufzeichnern zunichte zu machen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Zum
Zweck einer ausführlichen
Beschreibung von exemplarischen Ausführungsbeispielen der Erfindung
wird nun auf die beiliegenden Zeichnungen Bezug genommen, bei denen:
-
1 ein
Systemdiagramm gemäß verschiedenen
Ausführungsbeispielen
zeigt;
-
2 ein
Ausführungsbeispiel
einer Datenstruktur zeigt, die durch ein Shared Secret (gemeinsam
genutztes Geheimnis) bevölkert
bzw. bestückt wird;
-
3 ein
Beispiel eines bestimmten Shared Secret zeigt, das die Datenstruktur
der 2 bevölkert;
-
4 ein
Verfahren zum Erzeugen des Shared Secret gemäß verschiedenen Ausführungsbeispielen
zeigt;
-
5 ein
weiteres Ausführungsbeispiel
einer Datenstruktur zeigt, die durch ein Shared Secret bevölkert wird;
und
-
6 ein
Verfahren zum Verwenden des Shared Secret, um einen sicheren Kommunikationsfluss
von einer Tastatur zu einer Anwendung gemäß verschiedenen Ausführungsbeispielen
durchzuführen,
zeigt.
-
BEZEICHNUNG UND NOMENKLATUR
-
Bestimmte
Begriffe werden in der gesamten folgenden Beschreibung und in den
Patentansprüchen
mit Bezug auf bestimmte Systemkomponenten verwendet. Wie Fachleuten
einleuchten wird, können Computerfirmen
eine Komponente mit verschiedenen Namen bezeichnen. Das vorliegende
Dokument beabsichtigt nicht, zwischen Komponenten zu unterscheiden,
die sich bezüglich
ihres Namens, jedoch nicht bezüglich
ihrer Funktion unterscheiden. In der folgenden Erörterung
und in den Patentansprüchen werden
die Begriffe „aufweisen” und „umfassen” auf offene
Weise verwendet und sollten somit in der Bedeutung von „weisen
... auf, sind aber nicht beschränkt
auf ...” interpretiert
werden. Auch soll der Begriff „koppeln” oder „koppelt” entweder
eine indirekte, direkte, optische oder drahtlose elektrische Verbindung
bedeuten. Wenn also eine erste Vorrichtung mit einer zweiten Vorrichtung
gekoppelt ist, kann diese Verbindung durch eine direkte elektrische
Verbindung, durch eine indirekte elektrische Verbindung über andere
Vorrichtungen und Verbindungen, durch eine optische elektrische
Verbindung oder durch eine drahtlose elektrische Verbindung erfolgen.
Ferner bezieht sich der Begriff „System” auf eine Sammlung von zwei
oder mehr Hardware- und/oder Softwarekomponenten und kann dahin
gehend verwendet werden, sich auf eine elektronische Vorrichtung
wie z. B. einen Computer, einen Teil eines Computers, eine Kombination
von Computer usw. zu beziehen. Ferner umfasst der Begriff „Software” jeglichen
ausführbaren
Code, der in der Lage ist, auf einem Prozessor betrieben zu werden,
ungeachtet der zum Speichern der Software verwendeten Medien. Somit ist
in der Definition von Software ein Code enthalten, der in einem
nicht-flüchtigen
Speicher gespeichert ist und manchmal als „eingebettete Firmware” bezeichnet
wird.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 zeigt
ein System 10 gemäß verschiedenen
Ausführungsbeispielen.
Wie gezeigt ist, umfasst das System 10 einen Prozessor 12,
der mit einer Speichereinrichtung 14, einem Display 15,
einer Shared-Secret-Logik 20 und einer Tastatur 30 sowie einer
Zeigevorrichtung 31 (z. B. einer Maus) gekoppelt ist. Die
Zeigevorrichtung 31 kann wie gezeigt über die Tastatur 30 mit
dem Prozessor 12 gekoppelt sein. Über die Tastatur tätigt ein
Nutzer eine Eingabe in das System 10. Die Speichereinrichtung
umfasst eine flüchtige
Speichereinrichtung (z. B. einen Direktzugriffsspeicher), eine nicht-flüchtige Speichereinrichtung
(z. B. Festplattenlaufwerk, Compakt-Disk-Nur-Lese-Speicher usw.)
oder Kombinationen derselben. Die Speichereinrichtung umfasst ein Betriebssystem 16 und
eine oder mehrere Anwendungen 18, die unter der Steuerung
des Betriebssystems laufen. Das Betriebssystem 16 und die
Anwendung(en) 18 umfassen einen Code, der durch den Prozessor 12 ausführbar ist.
Eine Anwendung 18 kann eine beliebige Art von Anwendung
umfassen, beispielsweise eine Textverarbeitungsanwendung, eine Tabellenkalkulationsanwendung,
einen Internetbrowser usw.
-
Die
Tastatur umfasst eine Sicherer-Modus-Logik 32, eine oder
mehrere Tastaturtasten 34 (z. B. eine 101-Taste-Tastatur),
eine Sicherer-Modus-Aktivierungssteuerung 36 und eine visuelle
Anzeigeeinrichtung 38. Die Sicherer-Modus-Aktivierungssteuerung 36 umfasst
bei manchen Ausführungsbeispielen
einen Knopf oder eine andere Art Schalter. Die Anzeigeeinrichtung 38 umfasst
eine Licht emittierende Diode (LED – light emitting diode) oder
eine andere Art visueller Anzeigeeinrichtung (z. B. einen „Sprite” (Kobold)
oder eine andere Graphik, die einen Graphikbildpuffer überlagert
und durch das Betriebssystem 16 gesteuert wird), um anzuzeigen, ob
sich die Tastatur in dem nicht-sicheren Modus oder dem sicheren
Modus befindet, wie nachstehend erläutert wird.
-
Gemäß verschiedenen
Ausführungsbeispielen
ist ein Nutzer des Systems 10 in der Lage, die Tastatur 30 in
einem nicht-sicheren Modus oder in einem sicheren Modus zu betreiben.
Die hierin beschriebene Technologie bezieht sich auf jegliche Art von
Nutzereingabevorrichtung (Tastatur, Maus, Rollkugel usw.), die durch
einen Nutzer in Verbindung mit einer Anwendung verwendet werden
kann. Ungeachtet des Modus werden für jede Nutzeraktivierung einer
Taste 34 ein oder mehrere Zeichencodes durch die Tastatur
erzeugt und von derselben an den Prozessor 12 gesendet.
Ein gestrichelter Pfeil 25 zeigt an, dass die Eingabe von
der Tastatur logisch an die Anwendung 18 geliefert wird,
die „im
Fokus” ist,
wenn der Nutzer die Tastatur 30 bedient. In dem nicht-sicheren
Modus wird für
jede Nutzeraktivierung einer Taste 34 auf der Tastatur
ein Zeichencode, der dieser Taste entspricht, an die Anwendung 18 gesendet. Der
nicht-sichere Modus, die nicht-sichere Tastatur und nicht-sichere
Zeichencodes sind allgemein allen Anwendungen 18 und dem
Betriebssystem 16 bekannt und erfüllen zumindest bei manchen
Ausführungsbeispielen
den Abtastcode- und Seitentabellenlokalisierungsstandard. Ein Zeichencode
identifiziert die Taste, die ein Nutzer auf der Tastatur drückte.
-
In
dem sicheren Modus, der aktiviert werden kann, indem ein Nutzer
die Sicherer-Modus-Aktivierungssteuerung 36 aktiviert
oder indem die Anwendung 18 eine sichere Sitzung anfordert,
bevor sie eine Eingabe akzeptiert, wird für jede Nutzeraktivierung einer
Taste 34 ein Paket von Bits, das nicht mit dem Zeichencode übereinstimmt,
der der durch den Nutzer aktivierten Taste zugeordnet ist, an die „im Fokus
befindliche” Anwendung 18 geliefert,
wobei es durch verschiedene Betriebssystemschichten (OS-Schichten,
OS = operating system, Betriebssystem) gelangt. Ein derartiges Bitpaket
wird von der Anwendung 18, die das Paket empfängt, verstanden, wird
jedoch nicht von dem Betriebssystem 16 verstanden. Auf
diese Weise wird zwischen der Tastatur 30 und einer Anwendung 18 ein
sicherer Kommunikationskanal eingerichtet.
-
Der
sichere Kommunikationskanal zwischen Tastatur und Anwendung verwendet
ein Shared Secret, das an die Sicherer-Modus-Logik 32 der
Tastatur sowie an die Anwendung 18 geliefert wird. Dieser Shared-Secret-Schlüssel wird
durch die Shared-Secret-Logik 20 erzeugt, nachdem ein Nutzer
die Sicherer-Modus-Aktivierungssteuerung 36 auf der Tastatur 30 aktiviert,
oder er wird erzeugt, indem die Anwendung einen sicheren Kommunikationskanal
mit der Tastatur initiiert, beispielsweise wenn die Anwendung erfasst,
dass ein „Eingabekästchen”-Dateneintrag auf
dem Display als zu schützend
bezeichnet wurde. Manche Eingabekästchen können einen Nutzer auffordern,
ein Passwort oder sonstige Eingabeformen privater Informationen
einzugeben, die Informationen wie z. B. Kreditkartennummern abfragen
können.
Bei manchen Ausführungsbeispielen
umfasst der erzeugte Shared-Secret-Schlüssel eine Zufallszahl (z. B.
eine Zahl, die anhand eines analogen „weißen” Rauschens oder anderer Techniken
erzeugt wird), die durch die Tastatur 30 und die Anwendung 18 benutzt
wird, um eine Datenstruktur 40, z. B. die in 2 gezeigte,
zu bevölkern,
um einen sicheren Kommunikationskanal zu implementieren.
-
2 zeigt
ein exemplarisches Format einer Datenstruktur 40, die durch
die Sicherer-Modus-Logik 32 der
Tastatur 30 sowie durch die Anwendung 18 mit dem
Shared-Secret-Schlüssel bestückt wird.
Die veranschaulichende Datenstruktur 40 umfasst drei Informationszeilen.
Eine erste Zeile 42 umfasst Indexwerte. Eine zweite Zeile 44 umfasst
Längenwerte.
Eine dritte Zeile 46 umfasst Verzögerungswerte. Jede Spalte 50, 52, 54 und 56 umfasst
einen Indexwert 42, einen Längenwert 44 und einen
Verzögerungswert 46.
Jede Spalte von Werten wird dazu verwendet, ein Paket von Zeichencodes
zu definieren, das die Tastatur 30 jedes Mal dann erzeugt,
wenn ein Nutzer eine Tastaturtaste 34 aktiviert (z. B.
drückt). 2 umfasst
vier Spalten 50, 52, 54 und 56,
um vier Pakete von Zeichencodes zu definieren, bei anderen Ausführungsbeispielen
kann jedoch auch eine andere Anzahl von Spalten vorgesehen sein.
-
3 veranschaulicht
ein Shared Secret, das dazu verwendet wird, eine Datenstruktur 40 zu besetzen.
Sowohl die Tastatur 30 als auch die Anwendung 18 weist
eine derartige Datenstruktur auf. Die Shared-Secret-Logik 20 erzeugt
das Shared Secret und liefert das Shared Secret sowohl an die Tastatur 30 als
auch an die Anwendung 18. Sowohl die Shared-Secret-Logik 32 der
Tastatur 30 als auch die Anwendung 18 bevölkert seine
eigene Datenstruktur 40 unter Verwendung des Shared Secret,
wie in 3 veranschaulicht ist. Bei dem veranschaulichenden
Ausführungsbeispiel
der 3 heißt
das Shared Secret „235232012301203141030121”. Der erste
Wert „2” aus dem
Shared Secret wird dazu verwendet, die erste Zelle in der Datenstruktur
zu besetzen. Dieser Wert entspricht einem Indexwert in der ersten
Spalte. Der nächste
Wert „3” aus dem
Shared Secret wird dazu verwendet, die zweite Zelle in der Datenstruktur
zu besetzen. Dieser Wert entspricht einem Indexwert in der zweiten
Spalte. Dieser Vorgang wiederholt sich, bis alle Indexwerte der
Datenstruktur 40 eine vollständige Zuteilung von Indexwerten
umfassen. Der nächste
Wert „3” aus dem
Shared Secret wird dazu verwendet, die erste Zelle in der zweiten Zeile
der Datenstruktur zu besetzen. Diese Zelle umfasst einen Längenwert.
Nachfolgende Shared-Secret-Werte
werden dazu verwendet, die verbleibenden Einträge in der Datenstruktur zu
besetzen, wie in dem veranschaulichenden Beispiel der 3 gezeigt
ist.
-
Gemäß verschiedenen
Ausführungsbeispielen
erzeugt die Sicherer-Modus-Logik 32 der Tastatur jedes
Mal dann, wenn ein Nutzer eine Tastaturtaste 34 aktiviert,
ein Paket, das mehrere Zeichencodes aufweist. Jedes Paket umfasst
eine Mehrzahl von Zeichencodes. Einer der Zeichencodes in dem Paket ist
der durch einen Nutzer aktivierten jeweiligen Taste 34 zugeordnet
(z. B. ist er der Zeichencode der nutzeraktivierten Taste 34).
Die anderen Zeichencodes in dem Paket können einer durch einen Nutzer
aktivierten bestimmten Taste 34 zugeordnet sein, müssen aber
nicht, und werden (z. B. zufällig)
durch die Sicherer-Modus-Logik 32 der Tastatur 30 erzeugt. Lediglich
die Anwendung 18, nicht das Betriebssystem 16,
kann bestimmen, welcher der Zeichencodes in dem Paket extrahiert
werden soll/als der Zeichencode verwendet werden soll, der der durch
den Nutzer gedrückten
Tastaturtaste 34 zugeordnet ist (hierin als der „richtige” Zeichencode
bezeichnet). Diese Technik des „Key Flooding” (Tastenfluten)
beinhaltet somit ein Senden des richtigen Zeichencodes (desjenigen,
der der durch den Nutzer gedrückten
Taste zugeordnet ist) unter einem oder mehreren anderen, möglicherweise
zufällig
erzeugten Zeichencodes (oder Codes, die ausgewählt sind, um einer Entropieanalyse
standzuhalten) in einer seriellen Abfolge von Zeichencodes. Wenn
die Logik, die das Paket von Zeichencodes empfangt, nicht weiß, welches
Element der Abfolge den richtigen Zeichencode enthält, ist
die empfangende Logik nicht in der Lage, die durch die Tastatur 30 bereitgestellten
Daten präzise zu
interpretieren.
-
Unter
Bezugnahme auf das veranschaulichende Beispiel der 3 ist
das erste Paket von Zeichencodes, das durch die Tastatur 30 erzeugt wird,
einem Indexwert 2, einem Längen wert
3 und einem Verzögerungswert,
der eine Verzögerung
von 1 bis 20 Millisekunden (ms) angibt, zugeordnet. Dies bedeutet,
dass der zweite Zeichencode in dem Paket der richtige Zeichencode
ist, dass die Länge
des Pakets 3 Zeichencodes beträgt
und dass eine zeitliche Verzögerung
zwischen jedem der drei erzeugten Schriftzeichen zwischen 1 und
20 Millisekunden beträgt.
Die anderen zwei Zeichencodes können
beliebige Zeichencodes sein, sind bei verschiedenen Ausführungsbeispielen
jedoch nicht beide derselbe Code wie der richtige Code.
-
Das
nächste
Mal, wenn ein Nutzer eine Tastaturtaste 34 drückt, erzeugt
die Tastatur 30 ein weiteres Paket von Zeichencodes gemäß einem
Indexwert 3, einem Längenwert
20 und einem Verzögerungswert,
der eine Verzögerung
von 3 bis 14 ms angibt. Dies bedeutet, dass der dritte Zeichencode
in diesem Paket der richtige Zeichencode ist, dass die Länge des
Pakets 20 Zeichencodes beträgt
und dass die zeitliche Verzögerung
zwischen jedem der 20 erzeugten Schriftzeichen ein zufälliger oder
sonstiger Wert zwischen 3 und 14 ms ist. Ein drittes und ein viertes
Paket werden auf dieselbe Weise erzeugt.
-
Nachdem
das vierte Paket, das dem vierten Satz von Index-, Längen- und
Verzögerungswerten (2,
30 Zeichencodes und 1–21
ms) entspricht, erzeugt wurde, kann die Datenstruktur 40 erneut
zur nachfolgenden Aktivierung der Tastaturtasten 34 verwendet
werden. Das heißt,
dass die Datenstruktur 40 wiederholt dazu verwendet werden
kann, Pakete zu erzeugen. Bei anderen Ausführungsbeispielen erzeugt die
Shared-Secret-Logik 20, nachdem eine Datenstruktur 40 erschöpft ist
(d. h. nachdem jeder ihrer Index-, Längen- und Verzögerungswerte dazu verwendet
wurde, Zeichencodepakete zu erzeugen), eine neues Shared Secret,
das dann dazu verwendet wird, die Datenstrukturen 40 der
Tastatur 30 und der Anwendung 18 zu überschreiben
und neu zu besetzen. Als solches wird das Shared Secret als Form
einer „Einmal-Verschlüsselung” (OTP – one time
pad) verwendet.
-
Jedes
Paket von Zeichencodes wird durch die Anwendung 18 empfangen.
Die Anwendung weist eine identische Kopie der Datenstruktur 40 auf, die
seitens der Sicherer-Modus-Logik 32 der
Tastatur verwendet wurde, um das Paket zu erzeugen. Die Datenstruktur 40 in
der durch die Anwendung verwendeten Speichereinrichtung 14 wurde
unter Verwendung desselben Shared Secret auf dieselbe Weise besetzt.
Die Anwendung 18 verwendet ihre Kopie der Datenstruktur,
um den richtigen Zeichencode zu extrahieren. Die Indexwerte zeigen
auf den Zeichencode in jedem Paket, der der richtige Code ist (d.
h. der Code, der der durch den Nutzer gedrückten Taste zugeordnet ist.
Der Längenwert
wird durch die Anwendung verwendet, um das Ende jedes Pakets zu bestimmen
(z. B. der Längenwert
minus den Indexwert stellt die Anzahl von Zeichencodes dar, die
im Anschluss an den richtigen Zeichencode in dem Paket verbleiben).
Die zeitliche Verzögerung
(oder der Bereich von Zeitverzögerungswerten)
existiert, um Zeitgebungsangriffen eines Tastenaufzeichners standzuhalten.
-
4 veranschaulicht
ein Verfahren 100 zum Erzeugen des Shared Secret gemäß verschiedenen
Ausführungsbeispielen.
Die gezeigten Handlungen können
in der gezeigten Zeilenfolge oder in einer anderen Zeilenfolge durchgeführt werden.
Ferner können
manche der Handlungen gleichzeitig (z. B. parallel) durchgeführt werden.
-
Wie
gezeigt ist, umfasst das Verfahren 100 einen Nutzer, der
eine Anwendung betreibt (102). Wie oben erwähnt wurde,
kann die Anwendung eine beliebige Anwendung wie z. B. ein Internetbrowser, ein
Textverarbeitungsprogramm usw. sein. Ein Betreiben der Anwendung
umfasst beispielsweise ein „Doppelklicken” auf ein
Bildsymbol, das die Anwendung auf dem Display 15 darstellt.
Bei 104 aktiviert der Nutzer die Sicherer-Modus-Eingabesteuerung 36 auf
der Tastatur 30, um einen sicheren Tastatureingabekanal
von der Tastatur 30 zu der Anwendung 18 zu implementieren.
Alternativ dazu kann die Anwendung 18 den sicheren Tastatureingabekanal
initiieren. Die Sicherer-Modus-Logik 32 der Tastatur erzeugt
bei 106 eine Systemverwaltungsunterbrechung (SMI – system
management interrupt), um die Shared-Secret-Logik 20 zu
veranlassen, ein Shared Secret zu erzeugen. Eine Charakteristik
eines SMI-Steuerungsprogrammcodes besteht darin, dass ein derartiger
Code außerhalb
der Steuerung und der Einbeziehung des Betriebssystems 16 abläuft. Während der
Ausführung
der SMI wird die Ausführung des
Betriebssystems 16 ausgesetzt. Auf diese Weise kann die
Shared-Secret-Logik 20 ein Shared Secret erzeugen, ohne
dass das Betriebssystem 16 das Shared Secret besitzt oder
Zugriff auf dasselbe hat.
-
Bei 108 spricht
die Shared-Secret-Logik 20 auf die SMI an, indem sie ein
Shared Secret erzeugt. Bei manchen Ausführungsbeispielen umfasst die Shared-Secret-Logik 20 ein
Modul mit vertrauter Plattform (TMP – Trusted Platform Module),
eine sichere digitale Karte (SD-Karte, SD = secure digital) oder
einen anderen Mechanismus zum Erzeugen eines Shared Secret, das
lediglich an die Sicherer-Modus-Logik 32 der Tastatur und
die Anwendung 18 geliefert wird. Bei 110 sendet
die Shared-Secret-Logik 20 das Shared Secret an die Tastatur 30.
Bei 112 wird die SMI freigegeben, und das Betriebssystem 16 nimmt
seine Ausführung
wieder auf.
-
Bei 114 zeigt
die Tastatur 30 dem Nutzer gegenüber an, dass die Tastatur 30 nun
bezüglich
der Anwendung 18, die im Fokus ist, in einem sicheren Betriebsmodus
ist. Die Anzeige umfasst eine visuelle Rückmeldung über die Anzeigeeinrichtung 30 (z.
B. eine LED). Die Tastatur zeigt der Anwendung 18 gegenüber an (z.
B. sendet ein Signal an diese), dass die Tastatur 30 ein
Shared Secret aufweist und in ihrem sicheren Modus ist (116).
Nach einer Bestimmung, dass die Tastatur 30 in einem sicheren
Modus ist, fordert die Anwendung 18 bei 118 den
Shared Key (gemeinsam genutzten Schlüssel) von der Shared-Secret-Logik 20 an.
Bei 120 liefert die Shared-Secret-Logik 20 das
Shared Secret an die Anwendung, möglicherweise beispielsweise
eine sichere Transportsitzung zwischen der Anwendung und einem Modul
mit vertrauter Plattform (TPM) durch die Verwendung eines TCG-Software-Stapels (TSS – TCG Software
Stack). Bei derartigen Ausführungsbeispielen
wird der TSS als prozessintegrierter Server geladen, der in dem
Adressraum der Anwendung vorliegt. Der TSS liefert Mechanismen zum
Erzeugen einer sicheren Transportsitzung zwischen einer Anwendung
und einem TPM. Andere Techniken können verwendet werden, um das
Shared Secret in dem Adressraum der Anwendung weiter zu vernebeln.
Wenn erst einmal sowohl der Tastatur 30 als auch der Anwendung 18 das
Shared Secret bereitgestellt wurde, verwenden die Tastatur (d. h.
die Sicherer-Modus-Logik 32) und die Anwendung 18 das Shared
Secret, um Tastaturdaten in einem sicheren Kommunikationskanal von
der Tastatur 30 an die Anwendung zu liefern (122).
-
Statt
den Zeichencode, der der durch den Nutzer aktivierten Tastaturtaste
zugeordnet ist, unter einem oder mehreren zusätzlichen Zeichencodes einzubetten,
wird der der b'nutzeraktivierten
Tastaturtaste zugeordnete Zeichencode bei manchen Ausführungsbeispielen
modifiziert. Gemäß manchen derartigen
Ausführungsbeispielen
umfasst die Modifizierung ein Ändern
des Zeichencodes gemäß dem Shared
Secret. Beispielsweise wird der Zeichencode mit dem gesamten oder
einem Teil des Shared Secret exklusiv ODERiert (d. h. die logische
Exklusiv-ODER-Verknüpfung).
Der resultierende modifizierte Zeichencode kann in seine unveränderte Form zurück gewandelt
werden, indem die Anwendung 18 den von der Tastatur 30 empfangenen
modifizierten Zeichencode mit demselben Shared Secret oder Unterabschnitt
desselben, das bzw. der durch die Tastatur 30 verwendet
wurde, um den Zeichencode überhaupt
erst zu modifizieren, exklusiv ODERiert.
-
5 veranschaulicht
ein Ausführungsbeispiel
einer Datenstruktur 60, die ähnlich der Datenstruktur 40 der 2 und 3 ist.
Die Datenstruktur 60 umfasst eine zusätzliche Zeile von Daten 62.
Diese Daten, mit denen die Datenstruktur von dem Shared Secret bevölkert ist,
umfassen Werte, die bei der Exklusiv-ODER-Verknüpfung, wie sie oben beschrieben
wurde, verwendet werden. Das heißt, die Tastatur 30 erzeugt
ein erstes Paket, bei dem der richtige Zeichencode der zweite Code
in dem Paket ist, das drei Zeichencodes aufweist. Die zeitliche
Verzögerung
zwischen den erzeugten Tastencodes liegt im Bereich zwischen 1 und
20 ms. Der richtige Code wird mit dem Wert „12” exklusiv ODERiert, und der auf
diese Weise modifizierte resultierende Zeichencode wird als zweites
von drei Elementen in dem Paket in das Paket platziert. Nachdem
sie dieses Paket empfangen hat, extrahiert die Anwendung 18 das zweite
Element und berechnet die Exklusiv-ODER-Verknüpfung des extrahierten Elements mit
demselben Wert („12”), um den
richtigen Zeichencode wiederzugewinnen.
-
Bei
manchen Ausführungsbeispielen
werden die von der Tastatur 30 an die Anwendung 18 gesendeten
Zeichencodes unter Verwendung des gesamten oder eines Teils des
Shared Secret als Verschlüsselungs-/Entschlüsselungsschlüssel verschlüsselt. Das
Betriebssystem und andere Anwendungen, die unter dem Betriebssystem
ablaufen, haben keinen Zugriff auf das Shared Secret und sind somit
nicht in der Lage, die verschlüsselten
Zeichencodes richtig zu entschlüsseln.
Die verschlüsselten
Zeichencodes können
gesendet werden, ohne mit anderen Zeichencodes in ein Paket eingebettet
zu werden, oder sie können
nach Wunsch in derartige Pakete eingebettet werden.
-
Bei
manchen Ausführungsbeispielen
weist jedes durch die Tastatur 30 erzeugte Paket dieselbe Länge auf.
Die Position (der Index) des Zeichencodes in dem Paket kann von
Paket zu Paket variieren. Das heißt, alle Pakete können eine
Länge von beispielsweise
10 aufweisen. Die Länge
kann in der Datenstruktur 40, 60 vorgesehen sein
oder kann vorprogrammiert sein und durch die Sicherer-Modus-Logik 32 der
Tastatur und die Anwendung 18 implizit verstanden werden.
Bei einem Paket kann der richtige Zeichencode das zweite Element
sein, während bei
einem anderen Paket der richtige Zeichencode das sechste Element
sein kann.
-
Bei
verschiedenen Ausführungsbeispielen kann
die festgelegte Position in dem Paket für den richtigen Zeichencode
feststehend sein, die Länge jedes
Pakets kann jedoch variieren. Beispielsweise kann der richtige Zeichencode
in jedem von mehreren Paketen, deren Länge von 3 bis zu einer Zahl,
die größer ist
als 3, variiert, in der dritten Position platziert sein. Bei derartigen
Ausführungsbeispielen kann
der Indexwert (bei diesem Beispiel 3) in den Datenstrukturen 40, 60 vorgesehen
sein oder kann durch die Tastatur 30 und die Anwendung 18 implizit verstanden
werden (z. B. eine Konfigurationspolitik).
-
Als
solches weisen die Pakete zumindest zwei Charakteristika auf, die
anhand der Shared Secrets und der Datenstrukturen 40, 60,
die den sicheren Kommunikationskanal zwischen der Tastatur 30 und
der Anwendung 18 implementieren helfen, individuell programmiert
werden können.
Eine Charakteristik ist die Position in einem Paket (Index), an
der sich der richtige Code befindet, und die andere Charakteristik
ist die Länge
jedes Pakets. Eine oder beide Charakteristika können durch das Shared Secret
auf einer Paket-um-Paket-Basis festgelegt werden.
-
Wie
hierin beschrieben ist, aktiviert der Nutzer die Sicherer-Modus-Aktivierungssteuerung 36, um
einen sicheren Kommunikationskanal zwischen der Tastatur 30 und
der Anwendung 18 einzurichten. Der Nutzer kann selektiv
einen sicheren Kommunikationskanal zwischen der Tastatur und jeder
von mehreren Anwendungen 18 einrichten. Bei verschiedenen
Ausführungsbeispielen
verwendet jeder derartige sichere Kommunikationskanal ein anderes Shared
Secret. Bezüglich
mancher Anwendungen 18 wird ein sicherer Kommunikationskanal
eingerichtet, während
für andere
Anwendungen kein sicherer Kommunikationskanal eingerichtet wird.
Jedes Mal, wenn ein Nutzer eine Anwendung 18 veranlasst, „im Fokus” zu sein
(z. B. indem er unter Verwendung der Zeigevorrichtung 31 diese
Anwendung anklickt), wird das Shared Secret, falls dieser Anwendung
eines zugeordnet ist, verwendet, während der Nutzer die Tastatur 30 bedient,
um mit der Anwendung zu interagieren.
-
6 veranschaulicht
ein Ausführungsbeispiel
einer Handlung 122 zum Führen eines sicheren Kommunikationskanals
von der Tastatur 30 zu der Anwendung 18. Bei 132 umfasst
das Verfahren 122 ein Bestimmen eines Zeichencodes, der
einer durch einen Nutzer aktivierten Tastaturtaste zugeordnet ist. Bei 134 umfasst
das Verfahren ein Codieren des Zeichencodes mit dem Shared Secret,
um ein Paket zu bilden. Das Codieren des Zeichencodes umfasst eine
beliebige der hierin beschriebenen Techniken. Das Paket wird anschließend an
die Anwendung 18 gesendet, mit der der Nutzer derzeit interagiert
(136). Bei 138 extrahiert die Anwendung den richtigen
Zeichencode aus dem Paket.
-
Die
Verwendung des Shared Secret, das der Tastatur und der Anwendung,
jedoch nicht dem Betriebssystem oder sonstigen Anwendungen, die
unter dem Betriebssystem ablaufen, bekannt ist, trägt dazu bei,
Tastenaufzeichnungssoftware abzuwehren. Eine derartige Tastenaufzeichnungssoftware
hat keinen Zugriff auf das Shared Secret, das nötig ist, um die Tastaturpakete
richtig zu decodieren, und ist somit nicht in der Lage, zu bestimmen,
welche Tasten der Nutzer auf der Tastatur gedrückt hat.
-
Bei
manchen Ausführungsbeispielen
kann der Anfang jedes Pakets von Zeichencodes durch eine vorab benannte
Abfolge von Bits (eine „Markierung”) identifiziert
werden. Die Markierung kann durch einen Wert in dem Shared Secret
festgelegt sein.
-
Die
obige Erörterung
soll die Prinzipien und verschiedene Ausführungsbeispiele der vorliegenden
Erfindung veranschaulichen. Fachleuten werden zahlreiche Variationen
und Modifikationen einleuchten, nachdem sie die obige Offenbarung
vollständig nachvollzogen
haben. Es ist beabsichtigt, dass die folgenden Patentansprüche dahin
gehend interpretiert werden sollen, alle derartigen Variationen
und Modifikationen zu umfassen.
-
ZUSAMMENFASSUNG
-
Ein
System umfasst einen Prozessor, der ein Betriebssystem und eine
Anwendung ausführt.
Das System umfasst ferner eine mit dem Prozessor gekoppelte Tastatur.
Die Tastatur und die Anwendung nutzen gemeinsam ein Shared Secret,
das dazu verwendet wird, Tastaturdaten, die von der Tastatur an die
Anwendung geliefert werden, zu codieren. Das Shared Secret ist dem
Betriebssystem nicht bekannt und ist für dasselbe nicht zugänglich.