-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung bezieht sich auf mobile PC-Geräte, üblicherweise
als Mobilvorrichtungen bekannt. Genauer gesagt bezieht sich die
vorliegende Erfindung auf ein System und ein Verfahren zum Versenden
von Information an Mobilvorrichtungen und zum Programmieren selbiger
Vorrichtungen.
-
Bei
Mobilvorrichtungen handelt es sich um kleine elektronische Rechenvorrichtungen,
die oft als persönliche
digitale Assistenten bezeichnet werden. Viele solcher Mobilvorrichtungen
sind Pager, Handgeräte (hand
held devices) oder Vorrichtungen in Palm-Größe, die bequem in der Hand
gehalten werden können.
Eine im Handel erhältliche
Vorrichtung wird unter dem Markennamen HandHeld PC (oder H/PC) verkauft,
für die Microsoft
Corporation of Redmont, Washington die Software bereitstellt.
-
Üblicherweise
enthält
die Mobilvorrichtung einen Prozessor, einen RAM-Speicher und eine
Eingabevorrichtung wie z.B. eine Tastatur und ein Display. Die Tastatur
kann in das Display integriert sein, beispielsweise, wenn die Tastatur
in Form eines Berührungsdisplays
eingebaut ist. Eine Kommunikationsschnittstelle wird wahlweise angeboten
und wird üblicherweise
zur Kommunikation mit dem Desktopcomputer verwendet. Eine austauschbare
oder wiederaufladbare Batterie versorgt die Mobilvorrichtung mit
Strom. Die Mobilvorrichtung kann optional Strom von einer externen
Stromquelle beziehen, die die eingebaute Batterie außer Kraft setzt
oder wiederauflädt.
-
In
einigen früheren
Anwendungen wird die Mobilvorrichtung in Verbindung mit dem Desktopcomputer verwendet.
Beispielsweise kann der Benutzer der Mobilvorrichtung ebenfalls
Zugriff auf einen Desktopcomputer am Arbeitsplatz oder zu Hause
oder auf beide haben und diese auch verwenden. Wenn es sich bei
der Mobilvorrichtung um ein Gerät
der Marke H/PC oder ein ähnliches
Gerät handelt,
verwendet der Benutzer üblicherweise
die gleichen Anwendungsarten auf dem Desktopcomputer sowie auf der
Mobilvorrichtung. Daher ist es für
solche Mobilvorrichtungen von Vorteil, wenn sie so konzipiert sind,
dass sie mit dem Desktopcomputer verbunden werden können, um
Informationen auszutauschen und Informationen gemeinsam mit dem
Desktopcomputer zu nutzen.
-
Eine
andere Methode zur Bereitstellung von Informationen für Mobilvorrichtungen
ist über
eine kabellose Übertragungsleitung.
Solche Informationen können
elektronische Post oder Nachrichten, Wetter, Sport, Verkehr und
regionale Veranstaltungsinformationen beinhalten. Die Infomationen
werden üblicherweise über einen
mit dem Internet verbundenen Desktopcomputer erhalten, und über eine
Kabelverbindung übertragen. Es
könnte
jedoch wünschenswert
sein, solche Informationen ebenfalls über eine kabellose Verbindung
zu übertragen.
Ein kabelloser Empfänger
auf der Mobilvorrichtung kann Informationen empfangen, wenn diese an
die Mobilvorrichtung gesendet werden.
-
Handelt
es sich bei der Mobilvorrichtung um einen Pager, hat jeder Pager
in einem gegebenen System eine oder mehrere Adres sen. Wenn eine
Nachricht über
einen kabellosen Kanal übertragen
wird, ist sie für eine
Adresse bestimmt. Alle Pager, die diesem kabellosen Kanal zugeordnet
sind, erhalten die Nachricht und überprüfen die in der Nachricht enthaltene
Adresse mit ihren eigenen Adressen. Dieser Algorithmus zum Adressen-Abgleich
kann entweder in der Hardware implementiert sein, oder in der Software,
oder in einer Kombination aus Hardware und Software. Wenn die Adresse,
die der eingehenden Nachricht zugeordnet ist, mit keiner der Adressen
auf dem Pager übereinstimmt,
wird die Nachricht gelöscht.
Stimmt die Adresse jedoch mit einer der Adressen auf dem Pager überein,
wird die Nachricht angenommen und zur Software auf einem höheren Level
im Protokollregister auf dem Pager zur entsprechenden Verarbeitung
weitergeleitet.
-
Üblicherweise
gibt es zwei Arten von Adressen. Die erste ist eine persönliche Adresse,
die einzigartig innerhalb eines vorgegebenen kabellosen Netzwerks
ist (d.h. nur ein Pager hat diese Adresse). Die persönliche Adresse
wird verwendet, um eine Nachricht an einen bestimmten Pager zu schicken.
-
Die
zweite Art von Adresse ist eine Sendeadresse. Üblicherweise wird eine Sendeadresse
in viele Pager innerhalb eines gegebenen kabellosen Netzwerks programmiert.
Somit wird eine einzelne Nachricht, die über eine Sendeadresse gesendet
wird, von einer Vielzahl an Pagern in dem Netzwerk empfangen und
angenommen. Solche Adressen werden zur Durchführung von Sendediensten (Broadcast
Services) verwendet, wie zum Beispiel Nachrichten-, Verkehrs- und
Wetterdienste sowie weiterer oben erwähnter Dienste.
-
Gegenwärtig gibt
es keine geeignete Art und Weise zur Umprogrammierung von Adressen
in Mobilvorrichtungen, wie beispielsweise Pagern. Stattdessen müssen die
Pager zurück
zum Servicecenter gebracht werden, wo spezielle Werkzeuge zum Einsatz
kommen, um auf den internen Speicher des Pagers, in dem die Adressen
gespeichert sind, zuzugreifen und ihn zu modifizieren. Bei einigen
früheren
Systemen wurde versucht, das drahtlose Programmieren anzuwenden.
In solchen Systemen schickt der Besitzer (oder Träger) des Netzwerks
eine spezielle Nachricht an den Pager, welche die Adressen in dem
Pager ändert.
-
Bis
heute ist das jedoch sehr ungewöhnlich.
Im Bezug auf Sicherheit bringt das kabellose Programmieren schwerwiegende
Schwierigkeiten mit sich. Mit anderen Worten, wenn der Provider
des programmierten Sendedienstes eine Gebühr oder einen Bezugspreis von
den Benutzern für
den Empfang des Sendedienstes verlangen möchte, müssen die Programmiernachrichten
einen hohen Grad an Sicherheit aufweisen. Im Übrigen wäre ein unbefugte Programmieren
der Pagervorrichtungen zum Empfang der Sendedienste problematisch.
-
Methoden
zur Codierung werden auf dem Gebiet der Pager nicht effektiv eingesetzt.
Dafür gibt
es eine Vielzahl an Gründen.
Erstens werden Prozessoren in gewöhnlichen Pagern üblicherweise
nicht mit Mitteln zur Implementierung von Decodierungsalgorithmen
ausgestattet, wodurch die beim Pager eingehenden codierten Nachrichten
decodiert werden könnten.
Außerdem
gibt es gegenwärtig
kein Verfahren, welches es ermöglicht, dass
sich ein sicheres Element zur Durchführung einer Decodierung (z.B.:
ein Gerätetreiber)
auf ein externes Softwaresicherheitselement (z.B.: eine Sicherheitskomponente "dynamically linked
library" (DLL))
verlässt.
Um den Inhalt einer codierten Nachricht zu decodieren, muss die
Sicherheitskomponente den geeigneten Decodierungsschlüssel vom
Gerätetreiber
erhalten. Der Gerätetreiber
(von dem angenommen wird, dass es sich um ein ein bewährtes Gerät handelt)
muss daher den Decodierungsschlüssel
an ein externes Element (die Sicherheitskomponente DLL) weitergeben,
welches die Sicherheit des Codierungsschlüssels und somit die Sicherheit
des Abonnement-Systems aufweist.
-
Überdies
sind Informationsdienste mit der Einführung von globalen Computernetzwerken
wie dem Internet vorherschend und wichtig geworden.
-
Ein
typischer Pager kann jedoch nur eine begrenzte Anzahl an Adressen
(üblicherweise
2–8) aufweisen.
Um dem breiten Umfang an Interessen und Bedürfnissen zu entsprechen, wäre es wünschenswert,
wenn eine viel größere Anzahl
an Sendediensten angeboten werden würde. Wenn dies der Fall wäre, müsste jeder einzelne
Benutzer den Pager umprogrammieren lassen (indem er ihn zum Servicecenter
zurückbringt),
damit dieser die Adressen aufweist, die die vom einzelnen Benutzer
gewünschten
Sendedienste auswählen.
Das müsste
jedes Mal vorgenommen werden, wenn der Benutzer die Auswahl an Sendediensten
erweitern, löschen
oder ändern
möchte.
Das ist sehr teuer und man nimmt an, dass dadurch das Wachstum und
die Verbreitung solcher Sendedienste zumindest gehemmt würde.
-
Aus
diesen Gründen
bieten viele Funkrufunternehmen kostenlose Sendedienste an. Diese
Dienste sind kostenlos, weil es gegenwärtig keinen kostengünstigen
Weg zum Abonnement dieser Dienste gibt. Der Inhalt dieser Dienste
wird durch einen unabhängigen
Inhaltsprovider bereitgestellt, aber durch Betreiber kabelloser
Netzwerke übertragen.
Wenn der Benutzer einen neuen Dienst hinzufügen möchte, oder einen Dienst löschen möchte, muss
das Gerät
zu dem Servicecenter des Betreibers der kabellosen Netzwerke zurückgebracht
werden, um die im Pager enthaltenen Adressen umzuprogrammieren.
Das bedeutet, dass der unabhängige
Inhaltsprovider keine Abonnements unabhängig von den Trägern (oder
Betreibern kabelloser Netzwerke) verwalten kann. Selbst wenn dies,
wie oben besprochen, erreicht werden könnte, gibt es gegenwärtig keine
effiziente Methode, die Inhaltsnachrichten auf sichere Art und weise
zu übertragen.
-
Das
Dokument WO-A-95/12931 offenbart ein Kommunikationssystem, in dem
Informationen in aufeinanderfolgenden Zeitintervallen übertragen
werden, die zu einer Vielzahl an "Superframes" zusammengefasst sind, die wiederum
zu einer Vielzahl an "Hyperframes" zusammengefasst
sind.
-
Das
Dokument WO-A-97/28649 offenbart ein System zur Verhinderung des
unbefugten Empfangs, unbefugten Speicherns und Kopierens sowie der
unbefugten Wiedergabe digitaler Medienobjekte, welche ein verschlüsseltes
(scrambled) Sendeformat und ein verschlüsseltes (scrambled) Speicherformat
verwendet, dass sich wiederum von dem Sendeformat unterscheidet.
-
Zusammenfassung
der Erfindung
-
Es
gibt ein Verfahren, dass den Zugriffs auf Sendenachrichten überwacht,
wie in Anspruch 1 dargelegt wurde. Es gibt ausserdem ein System,
dass den Zugriffs auf eine Sendenachricht überwacht, wie in Anspruch 20
dargelegt wurde.
-
Ein
System steuert den Zugriff auf Sendenachrichten, die von einer Vielzahl
von Mobilvorrichtungen empfangen werden. Ausgewählte Mobilvorrichtungen sind
mit einem Sendecodierschlüssel
BEK (broadcast encryption key) ausgestattet. Unter Verwendung des
BEK vor dem Senden werden die Sendenachrichten codiert, so dass
die ausgewählte
Mobilvorrichtung, die den BEK enthält, die Sendenachrichten decodieren
kann. Die Sendenachrichten werden dann gesendet.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein vereinfachtes Blockdiagramm, das eine Ausführungsform einer Mobilvorrichtung
in einem System gemäß der vorliegenen
Erfindung erläutert.
-
2 ist
ein detaillierteres Blockdiagramm einer Ausführungsform einer Mobilvorrichtung,
die in 1 dargestellt ist.
-
3 ist
eine vereinfachte bildhafte Darstellung einer Ausführungsform
der Mobilvorrichtung, die in 2 dargestellt
ist.
-
4 ist
eine vereinfachte bildhafte Darstellung einer anderen Ausführungsform
der Mobilvorrichtung, die in 2 dargestellt
ist.
-
5 ist
ein Blockdiagramm einer Ausführungsform
eines Desktopcomputers gemäß eines
Aspekts der vorliegenden Erfindung.
-
6 ist
ein detaillierteres Blockdiagramm eines Übertragungssystems einschliesslich
einer Mobilvorrichtung gemäß eines
Aspekts der vorliegenden Erfindung.
-
7 ist
ein Flussdiagramm, das das Programmieren eines Sendeschlüssels in
die Mobilvorrichtung erläutert,
die in 6 dargestellt ist.
-
8A, 8B und 8C erläutern die
Erstellung einer Programmiernachricht, die zur Programmierung eines
Sendeschlüssels
in die Mobilvorrichtung, die in 6 dargestellt
ist, verwendet wird.
-
9A–9C erläutern die
Erstellung einer codierten Inhaltsnachricht gemäß eines Aspekts der vorliegenden
Erfindung.
-
10A und 10B sind
Flussdiagramme, die die Decodierung einer codierten Inhaltsnachricht
erläutern.
-
11A erläutert
ein detaillierteres Blockdiagramm einer zweiten Ausführungsform
einer Mobilvorrichtung gemäß eines
Aspekts der vorliegenden Erfindung.
-
11B und 11C erläutern das
Programmieren eines Sendeschlüssels
in die Mobilvorrichtung, die in 11A dargestellt
ist, und das Decodieren einer codierten Inhaltsnachricht auf der
Mobilvorrichtung, die in 11A dargestellt
ist.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsformen
-
1 erläutert ein
System 10, in dem die vorliegende Erfindung bildhaft umgesetzt
ist. Das System 10 enthält
einen Inhaltsprovider 12, einen kabellosen Träger 14,
einen Desktopcomputer 16 und eine Mobilvorrichtung 18.
Der Inhaltsprovider 12 stellt jede geeignete Art von Daten
einer Datenbank oder einer anderen Datenquelle bereit. Beispielsweise
wird der Inhaltsprovider 12 hierbei als ein Provider von
kabellosen Diensten oder anderen Arten von Diensten erörtert, die
vom Benutzer der Mobilvorrichtung 18 erwünscht sein
könnten. Beispiele
solcher Dienste wären
u.a. Nachrichten-, Wetter- und Sportdienste, Börsennotierungen, Verkehrsnachrichten
usw.
-
Der
kabellose Träger 14 wird
später
in der Anmeldung in detaillierter Form beschrieben. Kurz gesagt ist
der kabellose Träger 14 so
eingestellt, dass er über
eine Einwahl oder eine direkte Internetverbindung, oder über eine
Netzwerkverbindung Dienstinhalts- und Programmiernachrichten (hierbei
Inhalt) vom Inhaltsprovider 12 empfängt. Die Art und Weise, in
der der kabellose Träger 14 Informationen
vom Inhaltsprovider 12 empfängt, kann geschützte (herstellerspezifische)
oder nicht geschützte
(herstellerneutrale) Mittel beinhalten. In einer bildhafen Ausführungsform
abonniert der kabellose Träger 14 beispielsweise
aktive Kanäle
einer Website des Inhaltsproviders über den von der Microsoft Corporation
erhältlichen
Internet Explorer. Die Internet Explorer Komponente zieht Daten
von der Website herunter und speichert diese in einem Cachespeicher
zur späteren Übertragung
an die Mobilvorrichtung 18.
-
Der
kabellose Träger 14 enthält zudem
einen kabellosen Informationsserver (WIS) 20. Der Server 20 teilt
den vom Inhaltsprovider 12 erhaltenen Inhalt in Teile auf,
die mit der vom kabellosen Träger 14 verwendeten
spezifischen Übertragungsart
kompatibel sind. Der Server 20 teilt die Daten beispielsweise
so, dass sie den Beschränkungen
der maximalen Datenpaketgröße, den
Zeichenvorratsanforderungen usw. für die verwendete Kanal- oder Übertragungsart
entsprechen. Vor der Übertragung
werden die Daten bevorzugterweise in eine andere Form umgewandelt.
Wie später
in der Anmeldung detaillierter beschrieben wird, könnte eine solche
Umwandlung verschiedene Formen der Codierung sowie eine Komprimierung,
Verschlüsselung
usw. beinhalten. Sobald die Daten in geeigneter Weise geteilt wurden,
so dass sie den Übertragungsrandbedingungen
entsprechen, werden die Daten zur drahtlosen Übertragung durch ein kabelloses
Netzwerk (wie beispielsweise einen Funkrufkanal) so eingestellt,
dass sie direkt von der Mobilvorrichtung 18 empfangen werden.
Die übertragenen
Daten werden von einer kabellosen Empfänger- und Treiberkomponente 22 auf
der Mobilvorrichtung 18 empfangen, wo die Daten zur Verwendung
durch die Mobilvorrichtung 18 vorbereitet werden.
-
Die
Mobilvorrichtung 18 enthält vorzugsweise auch ein Modem 24.
Daher kann der Dienstinhalt anstatt über den kabellosen Träger 14, über eine
Einwahlverbindung des Modems direkt vom Inhaltsprovider 12 auf die
Mobilvorrichtung 18 übertragen
werden.
-
Der
Desktopcomputer 16 wird ebenfalls später in dar Beschreibung detaillierter
beschrieben. Kurz gesagt ist der Desktopcomputer 16 jedoch
vorzugsweise mit einem Standart Webbrowser ausgestattet, wie beispielsweise
mit dem im Handel erhältlichen
Internet Explorer 4.0 der Firma Microsoft Corporation of Redmond, Washington.
Wenn dies der Fall ist, können
die Benutzer des Desktopcomputers 16 vorzugsweise auf gewöhnliche
Art und Weise die Kanäle
abonnieren, die den Benutzer mit einem bestimmten Kanalinhalt beliefern,
der offline oder online durchsucht werden kann. Der Desktopcomputer 16 kann
daher zur weiteren Übertragung an
die Mobilvorrichtung 18 periodisch neuen Inhalt abrufen
oder empfangen.
-
Der
Desktopcomputer 1b enthält
vorzugsweise auch die Synchronisationskomponente 26. Kurz
gesagt ist die Synchronisationskomponente 26 so eingestellt,
dass eine Wechselwirkung zwischen diesem und einer optionalen gleichen
Synchronisationskomponente 28 auf der Mobilvorrichtung 18 stattfindet,
so dass die Dateien, die synchronisiert werden sollen, vom Desktopcomputer 16 auf
die Mobilvorrichtung 18 synchronisiert werden können, oder
umgekehrt. Sobald sie synchronisiert worden sind, enthalten beide
Dateien (die auf dem Computer 16 und der Mobilvorrichtung 18)
aktuelle Informationen.
-
Genauer
gesagt kann die Mobilvorrichtung 18 in der bevorzugten
Ausführungsform
entweder mit dem Desktopcomputer 16 oder mit einer anderen
Mobilvorrichtung 18 oder mit beiden synchronisiert werden.
In diesem Fall entsprechen die Eigenschaften der in einem Objektspeicher
auf der Mobilvorrrichtung 18 gespeicherten Objekte den
Eigenschaften anderer Instanzen für das gleiche Objekts, das
in einem Objektspeicher auf dem Desktopcomputer 16 oder
einer anderen Mobilvorrichtung 18 gespeichert ist. Wenn beispielsweise
ein Benutzer eine Instanz eines Objekts verändert, das in einem Objektspeicher
auf dem Desktopcomputer 16 gespeichert ist, wird die zweite
Instanz jenes Objekts, das in dem Objektspeicher der Mobilvorrichtung 18 gespeichert
ist, aktualisiert, wenn die Mobilvorrichtung 18 das nächste Mal
mit dem Desktopcomputer 16 verbunden wird, so dass beide
Instanzen des gleichen Objekts aktuelle Daten aufweisen. Dies wird
als Synchronisation bezeichnet.
-
Um
eine Synchronisation zu erreichen, laufen die Synchronisationskomponenten 26 und 28 sowohl auf
der Mobilvorrichtung 18 als auch auf dem Desktopcomputer 16 (oder
einer anderen Mobilvorrichtung 18). Die Synchronisationskomponenten
kommunizieren über
klar definierte Schnittstellen, um die Kommunikation und Synchronisation
zu ermöglichen.
-
Es
ist zu beachtet, dass die Mobilvorrichtung 18 in der bevorzugten
Ausführungsform
nicht nur mit dem Desktopcomputer 16 gekoppelt werden kann,
sondern auch mit einer anderen Mobilvorrichtung 18. Diese
Verbindung kann über
jede geeignete und im Handel erhältliche
Kommunikationsleitung unter Verwendung eines geeigneten Kommunikationsprotokolls
erreicht werden. In einer bevorzugten Ausführungsform kommuniziert die
Mobilvorrichtung 18 beispielsweise über ein Anschlusskabel, das
mittels eines seriellen Kommunikationsprotokolls kommuniziert, entweder
mit dem Desktopcomputer 16 oder mit einer anderen Mobilvorrichtung 18. Andere
Kommunikationsmechanismen werden bei der vorliegenden Erfindung
ebenfalls eingesetzt, wie zum Beispiel die Kommunikation mittels
Infrarot (IR) oder andere geeignete Kommunikationsmechanismen.
-
2 ist
ein detaillierteres Blockdiagramm der Mobilvorrichtung 18.
Die Mobilvorrichtung 18 enthält vorzugsweise einen Mikroprozessor 30,
einen Speicher 32, Eingabe-/Ausgabebauteile (E/A), eine
Desktop-Kommunikationsschnittstelle 36, einen kabellosen
Empfänger 37 und
eine Antenne 39. In einer bevorzugten Ausführungsform
sind diese Bauteile des Systems 10 zur gegensei tigen Kommunikation über einen
geeigneten Datenbus 30 verbunden.
-
Der
Speicher 32 wird vorzugsweise als permanenter elektronischer
Speicher eingesetzt, beispielsweise als RAM (random access memory)
mit einem Reserve-Batteriemodul (nicht dargestellt), so dass die
im Speicher 32 gespeicherten Informationen nicht verloren
gehen, wenn die Stromzufuhr zu der Mobilvorrichtung 18 abgeschaltet
wird. Ein Teil des Speichers 32 ist vorzugsweise als addressierbarer
Speicher zur Programmausführung
belegt, wohingegen ein anderer Teil des Speichers 32 vorzugsweise
zum Speichern verwendet wird, um zum Beispiel das Speichern auf
einem Laufwerk zu simulieren.
-
Der
Speicher 32 enthält
ein Betriebssystem 40, ein Anwenderprogramm 42 (wie
beispielsweise einen PIM (Personal Information Manager – persönlicher
Informationsverwalter), ein E-Mailprogramm, usw.), sowie einen Objektspeicher 44.
Während
des Betriebs wird das Betriebssystem 40 vorzugsweise durch
den Prozessor 30 vom Speicher 32 ausgeführt. In
einer bevorzugten Ausführungsform
handelt es sich bei dem Betriebssystem 40 um ein handelsübliches "Windows-CE"-Betriebssystem der
Firma Microsoft Corporation. Das Betriebssystem 40 wurde
vorzugsweise für
Mobilvorrichtungen entwickelt, und führt Datenbankeigenschaften aus,
die von dem PIM 42 über
eine Reihe von freiliegender Schnittstellen und Methoden zur Anwendungsprogrammierung
verwendet werden können.
Die Objekte in dem Objektspeicher 44 werden vorzugsweise
zumindest teilweise in Erwiderung auf Aufrufe an die freiliegenden
Anwendungsprogrammierschnittstellen und -methoden von dem PIM 42 und
dem Betriebssystem 40 verwaltet.
-
Die
E/A-Bauteile 34 sind in einer bevorzugten Ausführungsform
zur Unterstützung
von Eingabe- und Ausgabeabläufen
der Mobilvorrichtung 18 ausgelegt. Die E/A-Bauteile sind
mit Bezug auf die 3 und 4 detaillierter
beschrieben.
-
Die
Desktop-Kommunikationsschnittstelle 36 wird wie jede geeignete
Kommunikationsschnittstelle optional angeboten. Die Schnittstelle 36 wird
vorzugsweise zur Kommunikation mit dem Desktopcomputer 16, dem
Inhaltsprovider 12, dem kabellosen Träger 14 und optional
mit einer anderen Mobilvorrichtung 18 eingesetzt, wie mit
Bezug auf 1 beschrieben ist. Daher enthält die Kommunikationsschnittstelle 36 vorzugsweise
eine Synchronisationskomponente 28 zur Kommunikation mit
dem Desktopcomputer 16 und ein Modem 24 zur Kommunikation
mit dem Inhaltsprovider 12. Der kabellose Empfänger und
der kabellose Treiber 22 werden zur Kommunikation mit dem
kabellosen Träger 14 eingesetzt.
-
3 ist
eine vereinfachte bildhafte Darstellung einer bevorzugten Ausführungsform
einer Mobilvorrichtung 18, die gemäß der vorliegenden Erfindung
verwendet werden kann. Bei der in 3 erläuterten
Mobilvorrichtung 18 kann es sich um einen Desktopassistenten
handeln, der unter der Bezeichnung H/PC verkauft wird und Software
aufweist, die von der Firma Microsoft Corporation bereitgestellt
wurde. In einer bevorzugten Ausführungsform
enthält
die Mobilvorrichtung 18 eine Miniaturtastatur 43,
ein Display 45 und einen Stift 46 den Bildschirm.
Bei der in 3 dargestellten Ausführungsform
handelt es sich bei dem Display 45 um ein Flüssigkristall-Display
(LCD), das in Verbindung mit einem Stift 46 für den Bildschirm
einen Berührungsbildschirm
verwendet. Der Stift 46 für den Bildschirm wird verwendet,
um das Display an vorgegebenen Punkten anzutippen oder zu berühren, um
so bestimmte, vom Benutzer festgelegte, Funktionen auszuführen. Die
Miniaturtastatur 43 ist vorzugsweise als alphanumerische
Miniaturtastatur ausgelegt, wobei alle geeigneten und erwünschten
Funktionstasten ebenfalls so ausgelegt sind, dass sie bestimmte,
vom Benutzer festgelegte Funktionen, ausführen.
-
4 ist
eine andere vereinfachte bildhafte Darstellung der Mobilvorrichtung 18 gemäß einer
anderen bevorzugten Ausführungsform
der vorliegenden Erfindung. Die in 4 erläuterte Mobilvorrichtung 18 weist einige
Bestandteile auf, die denen ähneln,
die mit Bezug auf 3 beschrieben wurden, und die
daher ähnliche
Bezugszeichen haben. Beispielsweise enthält die in 4 dargestellte
Mobilvorrichtung ebenfalls einen Berührungsbildschirm 45,
der in Verbindung mit dem Stift 46 für den Bildschirm zur Durchführung bestimmter, vom
Benutzer festgelegter, Funktionen verwendet werden kann. Wenn die
Mobilvorrichtung 18 jedoch als Pager ausgeführt ist,
ist der Bildschirm 45 kein Berührungsbildschirm und der Stift 46 für den Bildschirm
ist nicht notwendig.
-
Es
sollte erwähnt
werden, dass das Display 45 für die in den 3 und 4 dargestellte
Mobilvorrichtung die gleiche Größe haben
kann, oder unterschiedlich groß sein
kann, aber üblicherweise
viel kleiner als ein gewöhnliches
Display eines Desktopcomputers ist. Beispielsweise können die
in den 3 und 4 dargestellten Displays 45 durch
eine Matrix festgelegt sein, die nur eine Größe von 240 × 320 hat, oder eine Größe von 160 × 160, oder
jede andere passende Größe.
-
Die
in 4 dargestellte Mobilvorrichtung 18 enthält außerdem eine
Anzahl an Eingabetasten oder anderen Tasten (wie beispielsweise
die Tasten 47 zum Scrollen), die es dem Benutzer ermöglichen,
durch die auf dem Bildschirm 45 angezeigten Menüoptionen
oder andere Displayoptionen zu scrollen oder Anwendungen zu verändern oder
bestimmte Eingabefunktionen auszuwählen, ohne das Display 45 zu
berühren.
Zusätzlich
enthält
die in 4 dargestellte Mobilvorrichtung 18 vorzugsweise
eine Ein-/Austaste 49, mit der die Mobilvorrichtung 18 ein-
oder ausgeschaltet werden kann.
-
Es
sollte ausserdem erwähnt
werden, dass in der in 4 dargestellten Ausführungsform
die Mobilvorrichtung 18 einen Bereich 51 zur handschriflichen
Eingabe enthält.
Dieser Bereich kann in Verbindung mit dem Stift 46 für den Bildschirm
verwendet werden, so dass der Benutzer Nachrichten scheiben kann,
die im Speicher 42 zur späteren Verwendung von der Mobilvorrichtung 18 gespeichert
werden. In einer erläuternden Ausführungsform
werden die handschriftlich eingegebenen Nachrichten einfach in handschriftlicher
Form gespeichert und können
vom Benutzer abgerufen und auf dem Bildschirm 45 angezeigt
werden, so dass der Benutzer die in die Mobilvorrichtung 18 eingegebenen
handschriftlichen Nachrichten überprüfen kann.
In einer anderen bevorzugten Ausführungsform ist die Mobilvorrichtung 18 mit
einem Modul zur Zeichenerkennung ausgestattet, so dass der Benutzer
alphanumerische Informationen in die Mobilvorrichtung 18 eingeben
kann, indem er diese alphanumerischen Informationen in den Bereich 51 mit
dem Stift 46 für
den Bildschirm handschriftlich eingibt. In diesem Fall erkennt das
Modul zur Zeichenerkennung in der Mobilvorrichtung 18 die
alphanumerischen Zeichen und wandelt die Zeichen in vom Computer
erkennbare alphanumerische Zeichen um, die von den Anwendungsprogrammen 42 in
der Mobilvorrichtung 18 verwendet werden können.
-
Natürlich sind
der Bereich 51 zur handschriftlichen Eingabe und der Stift 46 für den Bildschirm
nicht notwendig, wenn die Mobilvorrichtung 18 als Pager
ausgeführt
ist. Stattdessen ist die Mobilvorrichtung 18 nur mit einem
Bildschirm 45, Eingabetasten 47 und einer Ein-/Austaste 49 ausgestattet.
-
5 und
die dazugehörige
Erörterung
sollen eine kurze, allgemeine Beschreibung eines geeigneten Desktopcomputers 16 bieten,
in dem Teile der Erfindung umgesetzt sein können. Obwohl das nicht erforderlich ist,
wird die Erfindung, zumindest in Teilen, im allgemeinen Kontext
der am Computer ausführbaren
Befehle beschrieben werden, wie beispielsweise Programm-Module,
die von einem PC 16 oder einer Mobilvorrichtung 18 ausgeführt werden.
Programm-Module enthalten üblicherweise
Routine-Programme, Objekte, Komponenten, Datenstrukturen usw., die
bestimmte Aufgaben erfüllen
oder bestimmte abstrakte Datentypen implementieren. Außerdem werden
diejenigen, die sich in der Technik auskennen, es zu schätzen wissen,
dass der Desktopcomputer 16 mit Systemkonfigurationen anderer
Computer ausgeführt
werden kann, einschließlich Multiprozessorsystemen,
der auf Mikroprozessoren basierenden oder programmierbaren Unterhaltungselektronik,
Netzwerk-PCs, Kleinrechnern, Großrechnern und dergleichen.
Die Erfindung könnte
ebenfalls in verteilten Rechenumgebungen ausge führt werden, wobei Aufgaben
durch Fernverarbeitungsvorrichtungen durchgeführt werden, die über ein
Kommunikationsnetz verbunden sind. In einer verteilten Rechenumgebung
können Programm-Module sowohl in
lokalen Speichervorrichtungen als auch in Fern-Speichervorrichtungen vorhanden sein.
-
Mit
Bezug auf 5 enthält ein beispielhaftes System
zur Implementierung des Desktopcomputers 16 eine Rechenvorrichtung
für allgemeine
Zwecke in Form eines gewöhnlichen
PCs 16, einschließlich
eines Prozessors 48, eines Systemspeichers 50 und
eines Systembusses 52, der verschiedene Systemkomponenten, einschließlich des
Systemspeichers 50, mit dem Prozessor 48 verbindet.
Bei dem Systembus 52 kann es sich um jede der zahlreichen
Arten an Bus-Strukturen handeln, einen Speicherbus oder eine Speichersteuerung, einen
Peripheriebus, und einen lokalen Bus eingeschlossen, der jede der
zahlreichen Bus-Architekturen anwenden kann. Der Systemspeicher 50 enthält einen
Festwertspeicher 54 (ROM) und einen Direktzugriffsspeicher 55 (RAM).
Ein BIOS (basic input/output system), das die Grundprogrammroutine
enthält,
die bei der Übertragung
von Informationen zwischen Elementen im Desktopcomputer, wie beispielsweise
beim Starten unterstützt,
ist im ROM 54 gespeichert. Der Desktopcomputer 16 enthält desweiteren
ein Festplattenlaufwerk 57 zum Abrufen von der Festplatte
(nicht dargestellt) oder zum Schreiben auf die Festplatte, ein Magnetplattenlaufwerk 58,
um etwas von der entnehmbaren Magnetplatte 59 abzurufen
oder etwas darauf zu schreiben, sowie ein optisches Laufwerk 60,
um etwas von dem entnehmbaren optischen Datenträger 61, beispielsweise eine
CD Rom oder andere optische Datenträger, abzurufen oder etwas darauf
zu schreiben. Das Festplattenlaufwerk 57, das Magnetplattenlaufwerk 58 und
das optische Laufwerk 60 sind über eine Festplattenlaufwerks-Schnittstelle 62,
eine Magnetplattenlaufwerks-Schnittstelle 63 und eine optische
Laufwerksschnittstelle 64 jeweils mit dem Systembus 52 verbunden.
Die Laufwerke und die dazugehörigen,
am Computer abrufbaren, Datenträger
bieten eine per manente Speicherung von am Computer abrufbaren Befehlen,
Datenstukturen, Programm-Modulen und anderen Daten für den Desktopcomputer 16.
-
Obwohl
die hierbei beschriebene beispielhafte Umgebung eine Festplatte,
eine entnehmbare Magnetplatte 59 und einen entnehmbaren
optischen Datenträger 61 verwendet,
sollten diejenigen, die sich in der Technik auskennen, es zu schätzen wissen,
dass andere Arten von, am Computer abrufbaren, Datenträgern wie
Magnetkassetten, Flash-Speicherkarten, DVDs, Bernoulli-kassetten,
Direktzugriffsspeicher (RAM), Festwertspeicher (ROM) und dergleichen,
die Daten speichern können,
auf die vom Computer aus zugegriffen werden kann, auch in der beispielhaften
Betriebsumgebung verwendet werden können.
-
Eine
Vielzahl von Programm-Modulen können
auf der Festplatte, der Magnetplatte 59, dem optischen Datenträger 61,
ROM 54 oder dem Direktzugriffsspeicher 55 gespeichert
werden, einschließlich
des Betriebssystems 65, eines oder mehrerer Anwendungsprogramme 66 (die
PIMs enthalten können),
anderer Programm-Module 67 (die die Synchronisationskomponente 67 enthalten
können),
und der Programmdaten 68. Ein Benutzer kann über Eingabevorrichtungen
wie die Tastatur 70, die Zeigevorrichtung 72 und
das Mikrophon 74 Befehle und Informationen in den Desktopcomputer 16 eingeben.
Bei anderen Eingabevorrichtungen (nicht dargestellt) kann es sich
um einen Joystick, ein Gamepad, eine Satellitenschüssel, einen
Scanner oder dergleichen handeln. Diese und andere Eingabevorrichtungen
sind oftmals über
eine serielle Anschlussschnittstelle 76 mit dem Prozessor 48 verbunden,
können
aber durch andere Schnittstellen, wie zum Beispiel eine Soundkarte,
eine Parallelschnittstelle, einen Gameport oder einen USB (Universal
Serial Bus) verbunden sein. Ein Monitor 77 oder andere
Arten von Bildschirmgeräten
sind ebenfalls über
eine Schnittstelle, wie zum Beispiel einen Videoadapter 78,
mit dem Systembus 52 verbunden. Zusätzlich zu dem Monitor 77 können Desktopcomputer üblicherweise
andere periphere Ausgabegeräte
wie Lautsprecher 75 und Drucker aufweisen.
-
Der
Desktopcomputer 16 kann in einer Netzwerkumgebung arbeiten,
indem er logische Verbindungen zu einem oder mehreren entfernten
Computern (außer
der Mobilvorrichtung 18), wie dem entfernten Computer 79,
verwendet. Bei dem entfernten Computer 79 kann es sich
um einen anderen PC, einen Server, einen Router, einen Netzwerk-PC,
ein Peergerät
oder einen anderen Netzknoten handeln, und er enthält üblicherweise viele
oder alle der Elemente, die weiter oben mit Bezug auf den Desktopcomputer 16 beschrieben
wurden, obwohl nur eine Speichervorrichtung 80 in 4 erläutert wurde.
Die in 4 aufgezeigten logischen Verbindungen enthalten
ein lokales Netz (LAN) 81 und ein Weitverkehrsnetz (WAN) 82.
Solche Netzwerkumgebungen sind in Büros, bei Unternehmensinternen
Netzwerken (Intranet) und dem Internet üblich.
-
Bei
Verwendung des Desktopcomputers 16 in einer LAN-Netzwerkumgebung,
wird er über
eine Netzwerkschnittstelle oder den Adapter 83 mit dem
lokalen Netz (LAN) 81 verbunden. Bei Verwendung des Desktopcomputers 16 in
einer WAN-Netzwerkumgebung, enthält
er üblicherweise
ein Modem 84 oder andere Mittel zur Herstellung der Kommunikation über das
Weitverkehrsnetz (WAN) 82, wie beispielsweise das Internet.
Das Modem 84, das interner oder externer Art sein kann,
wird über
die serielle Anschlussschnittstelle 76 mit dem Systembus 52 verbunden.
In einer Netzwerkumgebung können
Programm-Module, die mit Bezug auf den Desktopcomputer 16 dargestellt
sind, oder Teile davon, einschließlich der Synchronisationskomponente 26,
in lokalen oder Fern-Speichervorrichtungen gespeichert werden. Man
wird es zu schätzen
wissen, dass die dargestellten Netzwerkverbindungen beispielhaft
sind und dass andere Mittel zum Aufbau einer Kommunikationsleitung
zwischen den Computern verwendet werden können.
-
Der
Desktopcomputer 16 führt
das Betriebssystem 65 aus, das üblicherweise im permanenten
Speicher 54 gespeichert ist und auf dem Prozessor 48 läuft. Ein
geeignetes Betriebssystem ist ein Windows Betriebssystem der Firma
Microsoft Corporation, wie zum Beispiel Windows 95 oder
Windows NT, andere abgeleitete Versi onen von Windows Betriebssystemen
oder andere geeignete Betriebssysteme. Andere geeignete Betriebssysteme
sind beispielsweise Macintosh OS der Firma Apple Corporation sowie
der OS/2 Präsentationsmanager
der Firma International Business Machines (IBM) aus Armonk, New
York. Anwendungsprogramme werden in permanenter oder nicht permanenter
Form vorzugsweise im Programm-Modul 67 gespeichert, oder
sie können
von einer Diskette 59 oder einem CDROM Laufwerk 61 in
jede der in 5 dargestellten Komponenten
geladen werden, von einem Netzwerk über einen Netzwerkadapter 83 heruntergeladen
werden oder unter Verwendung eines anderen geeigneten Mechanismus
geladen werden. Eine "dynamically
linked library" (DLL),
die eine Vielzahl an ausführbaren
Funktionen aufweist, wird zur Ausführung durch den Prozessor 48 im Speicher
den PIMs zugeordnet. Interprozessoraufrufe und Interkomponentenaufrufe
werden unter Verwendung von dem COM (Component Object Model) ermöglicht,
wie es bei Programmen üblich
ist, die für
die Microsoft Windows Betriebssysteme geschrieben wurden. Kurz gesagt
hat eine Softwarekomponente wie beispielsweise eine DLL unter Verwendung
des COM eine Anzahl an Schnittstellen. Jede Schnittstelle offenbart eine
Vielzahl an Methoden, die einzeln aufgerufen werden können, um
verschiedene Dienste zu nutzen, die von der Softwarekomponente angeboten
werden. Desweiteren sind Schnittstellen vorhanden, damit Methoden oder
Funktionen von anderen Softwarekomponenten aufgerufen werden können, die
ein oder mehrere Parameterargumente wahlweise empfangen und zurücksenden.
-
Im
Allgemeinen ist die DLL, die dem bestimmten PIM oder einem anderen
Programm zugeordnet ist, speziell dafür ausgelegt, in Verbindung
mit diesem PIM zu arbeiten und Desktop-Synchronisationsschnittstellen
gemäß einem
Synchronisationsprotokoll freizulegen. Die DLL ruft wiederum Schnittstellen
auf, die von dem PIM freigelegt wurden, um so auf Daten zuzugreifen,
die einzelne Eigenschaften der Objekte repräsentieren, die in einem Objektspeicher
enthalten sind. Der Objektspeicher 6 kann sich natürlich in
jedem der geeigneten Speicherkomponenten befinden, die mit Bezug
auf 4 beschrieben wurden.
-
6 ist
ein detallierteres Blockdiagramm bestimmter Komponenten eines Systems,
das in 1 dargestellt ist.
-
6 erläutert den
Inhaltsprovider 12, den kabellosen Träger 14 und die Mobilvorrichtung 18 auf
detailliertere Weise.
-
Der
Inhaltsprovider 12 enthält
die Kryptographiekomponente 200 und die Komponente 202 zur
Erstellung von Nachrichten. 6 erläutert ausserdem
eine Übertragungsleitung,
die den kabellosen Träger 14 mit der
Mobilvorrichtung 18 verbindet. In der in 6 erläuterten
Ausführungsform
handelt es sich bei dieser Übertragungsleitung
um eine kabellose Übertragungsleitung,
wie etwa einen Funkrufkanal. Andere Übertragungsleitungen könnten jedoch
verwendet werden, um Nachrichten des Inhaltsproviders 12 auf
die Mobilvorrichtung 18 zu übertragen, wie etwa die Synchronisationskomponenten 26 und 28 und
das oben erwähnte
Modem 24. Der Einfachheit halber wird die vorliegende Erfindung
nur mit Bezug auf die kabellose Übertragungsleitung ausgeführt.
-
6 erläutert ausserdem,
dass die Mobilvorrichtung 18 eine Radiohardware (Radio
HW) 208, einen Treiber 210, einen Router 212,
wahlweise zusätzliche Übersetzer 214 und
eine Ziel-Speicheradresse 216 aufweist. Die Radio HW 208 enthält vorzugsweise
eine Steuerschaltung 218 und hält eine Vielzahl an Datenstrukturen
aufrecht. Die Datenstukturen in der Radiokarte 208 in 6 sind
in Form von Tabellen erläutert.
Dabei handelt es sich jedoch nur um eine beispielhafte Erläuterung.
Die Radio HW 208 ist in Wirklichkeit leer, um die Daten
auf andere Art und Weise zu speichern, um so die Speicherung oder
die Zugriffsgeschwindigkeit zu optimieren. Es ist ausserdem nicht
notwendig, dass die Radio HW 208 diese Datenstrukturen
ebenfalls speichert. Es handelt sich einfach um eine bevorzugte
Ausführung,
wenn die Radio HW 208 als auswechselbares Hardwarebauteil
(z.B. als Radiokarte der PCMCIA-Art) ausgeführt ist. Das Speichern der
Datenstrukturen im permanenten Speicher auf der Radio HW 208,
ermöglicht
es einem Benutzer, die Karte aus der einen Mobilvorrichtung 18 zu
entnehmen und sie in eine andere zu stecken und so die Abonnementinformationen
auf einfache Art und Weise auf die neue Mobilvorrichtung 18 zu übertragen.
Dadurch wird auch ermöglicht,
dass ein größerer Teil
der Abonnement-Verwaltungsfunktion (wie z.B. die AnalyzeMessage()
oder die anderen unten erwähnten
Funktionen) in der Radio Hardware umgesetzt wird. Der Gerätetreiber 210 kann
jedoch ebenfalls diese Datenstrukturen im Systemspeicher speichern
und die Filterfunktionen und Abonnement-Verwaltungsfunktionen in
der Software ausführen,
obwohl dies in mancher Hinsicht nicht so ideal ist.
-
In
jedem Fall erläutert 6 eine
Ausführungsform,
in der die Radio HW 208 die Adresstabelle 220, die
Gruppeninformations-Tabelle 222 und
die Schlüsseltabelle 224 verwaltet.
Diese Datenstrukturen sind im Folgenden vollständig erläutert.
-
• Adresstabelle
-
Diese
Tabelle dient der Speicherung von adressrelevanten Informationen.
-
-
Die
Felder, die mit einem '*' versehen sind, können im
flüchtigen
Speicher (z.B. in dem Register) gespeichert werden, um Speichergröße des permanenten
Speichers in der Radio HW zu sparen. Diese wurden in den Größenberechnungen
nicht berücksichtigt.
-
Status:
Dies ist ein Kennzeichnungsbyte. Die Folgenden sind erläuternde
Kennzeichen:
-
Der
Treiber ermittelt vorzugsweise Veränderungen im Status des AC
und im EIN/AUS Status des Geräts,
um die auf ADRESS_FLAG_AC_ONLY und ADRESS_FLAG_PU_ONLY basierenden
Adressen freizugeben/ zu sperren zu machen.
KeyIndex: | Wenn
nicht-0, wird der Index in die Schlüsseltabelle |
| für den zugehörigen Schlüssel eingegeben. |
| Dieser
Schlüssel
wird verwendet, wenn eine |
| Nachricht
auf dieser Adresse ankommt, die keinen |
| Service-Gruppencode
verwendet. |
ExpirationDate: | Wenn
nicht-0, gibt es das Datum an, an dem diese |
| Adresse
gesperrt würde.
Es wird z.B. als Anzahl |
| der
Tage seit dem 1. Januar 1997 gespeichert. |
| Mitternacht
wird angenommen (daher ist das |
| Ablaufdatum
der letzte Tag des Dienstes). Es ist |
| zu
beachten, dass die Möglichkeit
besteht, dass |
| die
Karte oder der Treiber nicht auf diesen Wert |
| reagieren – Anwendungen
höherer
Levels werden |
| auf
diesen Wert zugreifen und darauf reagieren. |
AddressTag: | Kennzeichen
für die
Adresse. Das Adresskennzeichen |
| wird
nur intern zum Programmieren der Adressen und |
| zum
Zugriff auf die Adressen verwendet. |
AddressInfo: | Hierbei
handelt es sich um die Adresse und die |
| zugehörigen Informationen
zur Verwendung des zu |
| Grunde
liegenden Netzwerks (z.B.: in einem |
| FLEX-(Betriebs-)System
wäre das
der Capcode und die |
| zugehörigen Eigenschaften
wie der Absturzwert |
| (Collapse
Value), die Phase, usw.). In Funksystemen wäre |
| dies
die EIN (equipment identification number). |
AddressName: | Erläuternde
Bezeichnung für
die Adresse (z.B.: |
| MSNBC,
NewsNow, usw.) |
Description: | Erläuternder
Text zu der Adresse (z.B.: "Ihr
Kanal |
| für Börsen und
Unternehmensnachrichten") |
- Gesamtgröße = (1 + 1 + 2 + 8 + 32)·16 = 704
Bytes (Für
ein FLEX Radio)
-
• Schlüsseltabelle
-
Diese
Tabelle wird zum Speichern von sicherheitsrelevanten Informationen
verwendet. Hierbei handelt es sich um eine Pool-Resource (zusammengefasste
Quellen), da eine oder mehrere Dienstgruppen oder Dienstadressen
sich den gleichen Schlüssel
teilen können.
KeyTag: | Kennzeichen
für den
Schlüssel.
Das Schlüsselkennzeichen |
| wird
nur intern zum Programmieren des Schlüssels und zum |
| Zugriff
auf den Schlüssel
verwendet. |
AlgCode: | Algorithmuscode
zum Codieren. Dieser dient zur Verwendung |
| mit
dem Sicherheitsalgorithmus. |
Key: | Der
Sicherheitsschlüssel.
Der Treiber unterstützt
das |
| Speichern
von 16-Byte-Schlüsseln
(128-bits) für
spätere |
| Versionen. |
- Gesamtgröße = (8 + 4 + 16)·16 = 448
Bytes
-
• Dienstgruppen-Infotabelle
und Dienstgruppen-Iadextabelle
-
Die
Dienstgruppen-Tabelle speichert Informationen über die Dienstgruppen. Üblicherweise
ist das Nachschlagen des Dienstgruppen-Codes und des zugehörigen Schlüssels eine
häufiger
anfallende und zeitaufwendigere Aufgabe als die Eingabe oder das
Löschen
von Dienstgruppen. Daher hat der Treiber vorzugsweise eine Datenstruktur,
die so aufgebaut ist, dass sie dies unterstützt.
-
In
der unten vorgeschlagenen Ausführung
werden die Einträge
der Dienstgruppen nach Adressnummern und dann nach Dienstgruppencodes
sortiert. Eine separate Dienstgruppen-Indextabelle speichert den
Index für
den letzten Eintrag einer jeden gegebenen Adresse. (Es ist zu beachten,
dass es sich hierbei einfach nur um ein Ausführungsbeispiel handelt. Sie
ist für
das Nachschlagen des Dienstgruppencodes und die Minimierung der
Speicheranforderungen optimiert. Jedes Mal, wenn eine neue Dienstgruppe
definiert wird, müssen
die Tabelleneinträge
nach unten verschoben werden, um Platz dafür zu schaffen. Andere geeignete
Ausführungen
können
jedoch auch verwendet werden.)
-
In
einer erläuternden
Ausführungsform
werden die zugehörigen
Dienstgruppen-Einträge
nicht entfernt oder auf irgendeine Arte und Weise geändert, wenn
die Adresse gesperrt wird (da die Karte jedoch die Nachrichten für diese
Adresse auf jeden Fall löscht,
werden diese Einträge
nicht verwendet werden).
-
KeyIndex
ist der Index in der Schlüsseltabelle,
der dieser Dienstgruppe zugeordnet ist. Index 0 ist für die Bedeutung "kein Schlüssel vorhanden – der Inhalt
für diese
Dienstgruppe ist nicht codiert" reserviert.
-
-
-
Die
Felder, die mit einem '*' versehen sind, können im
flüchtigen
Speicher (z.B. in dem Register) gespeichert werden, um Speichergröße des permanenten
Speichers in der Radio HW zu sparen. Diese wurden in den Größenberechnungen
nicht berücksichtigt.
-
ServiceGroupCode Der Dienstgruppencode
im druckbaren ASCII-Bereich
von 0 × 20
und 0 × 7
-
Status:
Dies ist ein Kennzeichenbyte. Die folgenden Kennzeichen sind erläuternd definiert.
-
-
Der
Treiber ermittelt vorzugsweise Veränderungen im Status des AC
und im EIN/AUS Status des Geräts,
um die auf GROUP_FLAG_AC_ONLY und GROUP_FLAG_PU_ONLY basierenden
Serviegruppen freizugeben/ unwirksam zu machen.
KeyIndex: | Wenn
nicht-0, wird der Index in die Schlüsseltabelle |
| für den zugehörigen Schlüssel eingegeben. |
| Dieser
Schlüssel
wird verwendet, wenn eine |
| Nachricht
auf diesem Dienstgruppencode ankommt. |
ExpirationDate: | Wenn
nicht-0, gibt es das Datum an, an dem diese |
| Dienstgruppe
gesperrt würde.
Es wird z.B. als |
| Anzahl
der Tage seit dem 1. Januar 1997 gespeichert. |
| Eine
Zeit 12.01 AM (12.01 mittags) wird |
| angenommen.
Es ist zu beachten, dass die |
| Möglichkeit
besteht, dass die Karte oder der Treiber |
| nicht
auf diesen Werte reagieren – Anwendungen |
| höherer Levels
werden auf diesen Wert |
| zugreifen
und darauf reagieren. |
ServiceGroupTag: | Kennzeichen
für die
Dienstgruppe. Das |
| Dienstgruppenkennzeichen
wird nur intern zum Programmieren |
| der
Dienstgruppe und zum Zugriff auf die |
| Dienstgruppen
verwendet. |
ServiceGroupName: | Erläuternder
Bezeichnung für
die Dienstgruppe |
| (z.B.: "Internationale Nachrichten", "Regionales |
| Wetter", usw.). Die vorgeschlagene
Größe |
| für dieses
Feld ist 32, aber OEM kann mehr |
| unterstützen. |
Description: | Erläuternder
Text zu der Dienstgruppe (z.B. |
| "Nachrichten aus aller
Welt, die ihre kleine |
| Gemeinde
betreffen"). Die
vorgeschlagene Größe für |
| dieses
Feld ist 64, aber OEM kann mehr unterstützen. |
-
Die
Indextabelle wird verwendet, um eine Dienstgruppe für eine gegebene
Adresse schnell zu finden.
- Gesamtgröße = (1 + 1 + 1 + 2 + 8)·64 = 832
(Dienstgruppentabelle) (1)·16
= 16 (Indextabelle)j = 848 Bytes
-
6 erläutert ebenfalls,
dass der Treiber 210 eine Sicherheitskomponente 226 und
einen nachrichtenspezifischen Schlüsselspeicher 228 aufweist. 6 erläutert ausserdem,
dass der Treiber 210 vorzugsweise eine Programmbibliothek
unterstützt,
die bestimmte Funktionen beinhaltet, die typisch für das System
sind, die jedoch der erhöhten
Effizienz oder Sicherheit halber vorzugsweise auf dem Level des
Treibers ausgeführt werden.
Die Unterstützungsbibliothek
ist fest mit den restlichen Treiberkom ponenten verbunden. Die in 6 erläuterte Unterstützungsbibliothek
des Treibers umfasst die AnalyzeMessage-Funktion 230 und
die DeriveEncryptionKey-Funktion 232. Diese Funktionen
werden unten detaillierter beschrieben. Es ist ebenfalls zu beachten,
dass in einer bevorzugten Ausführungsform
die Radio HW 208 und der Treiber 210 zusätzliche
Datenstrukturen bzw. Funktionen unterstützen. Bei den hierbei erläuterten
Datenstrukturen und Funktionen handelt es sich jedoch um jene, die
für ein
klares Verständnis
der vorliegenden Erfindung notwendig sind.
-
Außerdem ist
der Router 212 (der üblicherweise
als ein Anwendungsprogramm eingebaut ist) in einer bevorzugten Ausführungsform
so konfiguriert, dass er eine Anzahl von E/A-Steuerungsaufrufen
zur Ausführung
verschiedener Abläufe
verwendet. Der Treiber 210 unterstützt und implementiert die E/A-Steuerungsaufrufe
nach einem vordefinierten Syntax und eines vordefinierten Ablaufs,
der unten beschrieben wird.
-
Die
allgemeinen Typen-Definitionen, die in der Treiber API (Application
Program Interface – Anwenderprogramm-Schnittstelle)
verwendet werden, werden im Folgenden beschrieben. Es ist zu beachten,
dass die meisten der folgenden Typen im Wesentlichen den oben erwähnten Datenstrukturen,
die durch die Radio HW 208 unterstützt werden, direkt entsprechen,
obwohl dies nicht notwendig ist.
-
Die
folgenden grundlegenden Typen werden verwendet:
BYTE | 8-bit
ohne Vorzeichen |
WORD | 16-bit
mit Vorzeichen |
DWORD | 32-bit
mit Vorzeichen |
TEXT | In
einem BYTE-Array gespeicherte Zeichenkette (string). |
| Da
die Länge
der Zeichenkette üblicherweise
in einem |
| anderen
Feld verfügbar
ist, ist keine Null-Termination |
| notwendig. |
-
Die
folgende Typen-Definition zeigen eine erläuternde Minimalgröße an, die
der Treiber zur Unterstützung
benötigt.
Die in der API verwendeten Strukturen (structs) haben in einem anderen
Feld die tatsächliche Länge.
RADIO_TAG
Struktur | |
TEXT
Wert [8] | Kennzeichen
werden zur Identifizierung |
| einer
bestimmten Adresse, Dienstgruppe |
| oder
eines bestimmten Schlüsseleintrages |
| verwendet. |
RADIO_KEY
Struktur | |
BYTE
Wert [16] | Speichert
die Codierungsschlüssel. |
RADIO_NAME
Struktur | |
TEXT
Wert [32] | Speichert
den Trägernamen,
Hersteller |
| namen,
Adressnamen, usw. |
RADIO_DESC
Struktur | |
TEXT
Wert [64] | Speichert
die Beschreibung der Karte, |
| der
Dienste, der Adressen, usw. |
-
Komplexe Typen (Strukturen)
-
Alle
Strukturen haben die folgenden zwei Felder am Anfang:
WORD
wStructSize | Jede
Struktur hat festgelegte Größenfelder, |
| gefolgt
von der Länge
der |
| variablen
Felder. Die variablen Felder |
| folgen
in der gleichen Reihenfolge wie |
| ihre
Längen.
Das wStructSize-Feld |
| beinhaltet
die Größe des festgelegten
Teils |
| der
Struktur (d.h., die festgelegten |
| Felder
und die Längen
der variablen |
| Felder)
in Bytes. Dieses Feld bietet |
| auch
eine Methode zur Versionierung, |
| die
in den zukünftigen
Versionen für |
| die
Abwärtskompabilität verwendet
wird. |
DWORD
dwMemberValidMask | Eine
Maske, die angibt, welche festgelegten |
| Größenfelder
der Struktur gültig |
| sind
und verwendet werden können
(für |
| variable
Größenfelder
gibt eine Länge |
| mit
dem Wert 0 an, dass das Feld nicht |
| vorhanden
ist). Dies ermöglicht
es uns, |
| die
gleiche Struktur zu verwenden, |
| selbst
wenn manche Felder nicht notwendig |
| sind.
Das ist insbesondere dann |
| nützlich,
wenn ein einzelnes Feld in |
| einer
Struktur programmiert wird, ohne |
| die
Werte anderer Felder zu ändern. |
-
Außerdem sind
die variablen Längenfelder
zum Ende hin angeordnet und für
jedes von ihnen ist ein Längenfeld
vorhanden. Dies ermöglicht
die Erweiterung dieser Strukturen, ohne dass die Abwärts- oder
Aufwärtskompabilität verloren
geht. Bei Zugriff auf die variablen Längenfelder, sollte der Treiber
den Wert des wStrukturGröße-Felds
als Startabstand für
das erste variable Längenfeld
verwenden. Dies wird die Aufwärtskompabilität ermöglichen,
wenn der Struktur zusätzliche
Felder hinzugefügt
werden (die Verwendung eines wStructSize-Felds stellt sicher, dass
diese neuen Felder von den Alttreibern ignoriert werden).
-
Obwohl
eine grobe Auswahl an spezifischen Strukturarten beim normalen Betrieb
der Treiber API verwendet werden, werden hierbei nur diejenigen
erörtert,
die sich auf die vorliegende Erfindung beziehen. Solche Strukturen
umfassen die Folgenden:
-
RADIO_ADDRESS Struktur
-
Diese
Struktur enthält
Informationen über
die Adresse.
WORD
wStructSize | Größe von (RADIO_ADDRESS) |
DWORD
dwMemberValidMask | Eine
Maske, die angibt, welche |
| Felder
der Struktur gültig
sind. |
| Erstellen
des Werts durch eine |
| 'ODER'-Verknüpfung von
einem oder |
| mehreren
der folgenden: |
| 0 × 0001 AdressNumber-Feld
ist |
| gültig |
| 0 × 0002 Statusfeld
ist gültig |
| 0 × 0004 ExpirationDate-Feld
ist |
| gültig |
BYTE
AdressNumber | Adressseintragsnumer. |
| Adresseinträge sind
von 0 aufwärts |
| nummeriert. |
BYTE
Status | Statuskennzeichen. |
BYTE
ExpirationDate (2) | Ablaufdatum.
Ist 0, wenn keins |
| vorhanden
ist. |
BYTE
AdressTagLen | Länge des
AdressTag-Felds. |
BYTE
KeyTagLen | Länge des
KeyTag-Felds. |
BYTE
AdressNameLen | Länge des
AdressName-Felds |
WORD
wAdressDescriptionLen | Länge des
AdressDescription-Felds |
WORD
wAdressInfoLen | Länge des
Adressinfo-Felds |
RADIO_TAG
AdressTag | Adresskennzeichen |
RADIO_TAG
KeyTag | Zu
dieser Adresse zugehöriger |
| Schlüssel. (Wenn
das Feld nicht |
| vorhanden
ist, ist dieser Adresse |
| kein
Schlüssel
zugeordnet). |
RADIO_DESC
AdressBeschreibung | Beschreibung
zu der Adresse. |
| Es
ist zu beachten, dass diese |
| Information
nicht unbedingt in |
| dem
permanenten Speicher vorliegen |
| muss.
Sie wird dem Benutzer |
| nur
zu Informationszwecken |
| gezeigt. |
RADIO_ADRESS
AdressInfo | Adress-
und zugehörige |
| Informationsfelder.
Diese Struktur ist |
| protokollspezifisch.
Für das |
| FLEX-Protokoll
kann es den die |
| Capcode-Information
codierenden |
| Absturzwert
(Collapse Value), die |
| Phase,
die Adresse usw. enthalten. |
-
Struktur RADIO_GROUP
-
Diese
Struktur enthält
Informationen über
die Dienstgruppe.
WORT
wStructSize | Größe von (RADIO_GROUP) |
DWORT
dwMemberValidMask | Eine
Maske, die angibt, welche |
| Felder
der Struktur gültig
sind. |
| Erstellen
des Werts durch eine |
| 'ODER'-Verknüpfung von
einem oder |
| mehreren
der folgenden: |
| 0 × 0001 GroupNumber-Feld
ist |
| gültig |
| 0 × 0002 Statusfeld
ist gültig |
| 0 × 0004 GroupCode-Feld
ist |
| gültig |
| 0 × 0008 ExpirationDate-Feld
ist |
| gültig |
WORT
wGroupNumber | Dienstgruppennummer.
Dienstgruppen |
| sind
von 0 aufwärts
nummeriert. |
BYTE
Status | Status
Kennzeichen. |
BYTE
Groupcode | Dienstgruppencode. |
BYTE
ExpirationDate [2] | Ablaufdatum.
Ist 0, wenn keins |
| vorhanden
ist. |
| |
| |
| |
BYTE
GroupTagLen | Länge des
GroupTag-Felds. |
BYTE
KeyTagLen | Länge des
KeyTag-Felds. |
BYTE
AdressTagLen | Länge des
GroupTag-Felds |
BYTE
GroupNameLen | Länge des
GroupName-Felds. |
WORD
wGroupDescriptionLen | Länge des
GroupDescription-Felds. |
RADIO_TAG
GroupTag | Dienstgruppenkennzeichen. |
RADIO_TAG
KeyTag | Zu
dieser Dienstgruppe zugehöriger |
| Schlüssel. (Wenn
das Feld nicht |
| vorhanden
ist, ist dieser Dienstgruppe |
| kein
Schlüssel
zugeordnet). |
RADIO_TAG
AddressTag | Die
Adresse, zu der die Dienstgruppe |
| gehört. |
RADIO_DESC
GroupDescription | Beschreibung
zu der Dienstgruppe. |
| Es
ist zu beachten, dass diese |
| Information
nicht im permanenten |
| Speicher
gespeichert sein muss. Sie |
| wird
dem Benutzer nur zu Informationszwecken |
| gezeigt. |
-
Struktur RADIO_KEY
-
Diese
Struktur enthält
Informationen über
die Codierschlüssel.
WORT
wStructSize | Größe von (RADIO_KEY) |
DWORT
dwMemberValidMask | Eine
Maske, die angibt, welche |
| Felder
der Struktur gültig
sind. |
| Erstellen
des Werts durch eine |
| 'ODER'-Verknüpfung von
einem oder |
| mehreren
der folgenden: |
| 0 × 0001 KeyNumber-Feld
ist |
| gültig |
| 0 × 0002 dwAlgCode-Feld
ist gültig |
BYTE
KeyNumber | Schlüsselnummer,
Schlüssel
sind |
| von
1 an aufwärts
nummeriert. |
DWORT
dwAlgCode | Codierungs-Algorithmus-Code. |
BYTE
KeyTagLen | Länge des
KeyTag-Felds. |
BYTE
KeyLen | Länge des
Key-Felds. |
RADIO_TAG
KeyTag | Schlüsselkennzeichen. |
RADIO_KEY
Key | Der
Codierungsschlüssel. |
-
Struktur RADIO_CRYPT
-
Diese
Struktur wird verwendet, um funktionsrelevante E/A-Steuerungsaufrufe
zu verschlüsseln.
WORT
wStructSize | Größe von (RADIO_CRYPT) |
DWORT
dwMemberValidMask | Eine
Maske, die angibt, welche |
| Felder
der Struktur gültig
sind. |
| Erstellen
des Werts durch eine |
| 'ODER'-Verknüpfung von
einem oder |
| mehreren
der folgenden: |
| 0 × 0001 hCryptoProv-Feld
ist |
| gültig |
| 0 × 0002 dwCryptoFlags-Feld
ist |
| gültig |
| 0 × 0004 dwCryptoAlgId-Feld
ist |
| gültig |
HCRYPTOPROV
hCryptoProv | Kennung
für einen |
| Kryptographie-Service-Provider. |
DWORD
dwCryptoAlgId | Kryptographie-Algorithmus
ID (ID = |
| Anwenderkennung),
z.B. CALG_RC4 |
DWORD
dwCryptoFlags | Kennzeichen
für die
Kryptographiefunktion |
| CryptDeriveKey
(), z.B. |
| CRYPT_EXPORTABLE |
BYTE
AdressTagLen | Länge des
AdressTag-Felds |
BYTE
GroupTagLen | Länge des
GroupTag-Felds |
WORT
wMsgSpecificDataLen | Länge des
MsgSpecificData-Felds |
RADIO_TAG
AdressTag | Adresskennzeichen |
RADIO_TAG
GroupTag | Dienstgruppenkennzeichen |
BYTE
MsgSpecificData () | Nachrichtenspezifische
Daten |
-
Wie
oben erwähnt
wurde, finden die E/A-Steuerungsaufrufe vom Router 212 zum
Treiber 210 statt, um bestimmte Abläufe zu erreichen. Wie bei den
zahlreichen Datenstrukturen werden eine Vielzahl an E/A-Steuerungsaufrufen
in der Treiber-API unterstützt.
-
Es
werden jedoch nur diejenigen hier erläutert, die sich auf die vorliegenden
Erfindung beziehen.
-
E/A-Steuerungsaufrufe
haben die folgende Syntax: Syntax
Parameter
hOpenContext | Bestimmt
eine Kennung, die den offenen |
| Kontext
des Geräts
ermittelt. Die |
| xxx_Open-Funktion
erstellt diese |
| Identifizierung
und gibt sie zurück. |
dwCode | Bestimmt
einen Wert, der den |
| auszuführenden
E/A-Steuerungsablauf angibt. |
| Diese
Codes sind gerätespezifisch
und |
| werden
Anwendungsprogrammierern |
| üblicherweise
durch eine Header-Datei |
| offenbart. |
pBufIn | Weist
auf den Puffer hin, der Daten |
| enthält, die
auf das Gerät übertragen |
| werden
sollen. |
dwLenIn | Bestimmt
die Anzahl an Bytes der Daten |
| in
dem Puffer, der für
pBufIn festgelegt |
| ist. |
pBufOut | Weist
auf den Puffer hin, der verwendet |
| wird,
um Ausgabedaten vom Gerät
zu |
| übertragen. |
dwLenOut | Bestimmt
die maximale Anzahl an Bytes in |
| dem
Puffer, der durch pBufOut festgelegt |
| ist. |
pdwActualOut | Weist
auf den DWORD Puffer hin, den die |
| Funktion
verwendet, um die tatsächliche |
| Anzahl
an Bytes wiederzugeben, die von |
| dem
Gerät empfangen
wurde. |
-
Rückmeldung
-
Gibt
TRUE aus, wenn das Gerät
seinen festgelegten E/A-Steuerungsablauf erfolgreich durchlaufen hat,
andernfalls gibt er FALSE aus.
-
RADIO_GET_XXX_INFO
-
Dieser
EA-Steuerungsaufruf ermöglicht
es der aufrufenden Person, Informationen über den Träger, den Hersteller, die Karte
usw. zu erhalten. Die E/A-Steuerungscodes sind:
RADIO_GET_CARRIER_INFO | Erhält die RADIO_CARRIER_INFO
Struktur |
RADIO_GET_MANUFACTURER_INFO | Erhält die RADIO_MANUFACTUTER_INFO |
| Struktur |
RADIO_GET_DRIVER_INFO | Erhält die RADIO_DRIVER_INFO
Struktur |
RADIO_GET_HW_INFO | Erhält die RADIO_HW_INFO
Struktur |
RADIO_GET_ADRESS_INFO | Erhält die RADIO_ADRESS
Struktur (siehe |
| Anmerkungen
unten) |
RADIO_GET_GROUP_INFO | Erhält die RADIO_GROUP
Struktur (siehe |
| Anmerkungen
unten) |
RADIO_GET_KEY_INFO | Erhält die RADIO_KEY
Struktur (siehe |
| Anmerkungen
unten) |
-
Syntax
-
Für Informationen über Träger, Hersteller,
Treiber und Hardware:
-
Für Informationen über Adresse,
Gruppe und zum Schlüssel:
-
Ablauf
-
Dieser
E/A-Steuerungsaufruf gibt die angeforderte Informationsstruktur
wieder. Für
Informationen über
Adresse, Gruppe und zum Schlüssel
muss der Eingabepuffer, der die entsprechende Struktur beinhaltet, in
einer erläuternden
Ausführungsform
vorgegeben sein, und in dieser Struktur muss entweder das Nummern- oder
das Kennzeichenelement initialisiert sein. RADIO_GET_ADRESS_INFO erfordert
es beispielsweise, dass entweder das AdressNumber-Element oder das
AdressTag-Element in pInBuf[] auf die gewünschte Adresse festgelegt wird.
Wenn beide gegeben sind, wird Adress-Number verwendet.
-
Wenn
pBufOut NULL ist und dwLenOut gleich 0 ist, gibt der Aufruf die
für die
Daten in pdwActualOut benötigte
Nummer oder Bytes zurück.
Die aufrufende Person kann dann einen Puffer von dieser Größe zuweisen
und diesen Aufruf erneut durchführen.
-
Anmerkungen
-
Für den RADIO_GET_ADRESS_INFO
Aufruf wird das AdressInfo-Feld in einer erläuternden Ausführungsform
ebenfalls NIE ausgegeben. Dies geschieht zum Schutz der Programmierinformation.
-
Ferner
wird für
den RADIO_GET_KEY_INFO Aufruf das Key-Feld NIE ausgegeben. Dies
geschieht zum Schutz der Codierungsschlüssel.
-
RADIO_CRYPT_DERIVE_KEY
-
Dieser
E/A-Steuerungsaufruf ermöglicht
es dem aufrufenden Benutzer, eine Adresse, eine Dienstgruppe, Schlüssel oder
Trägerinformationen
zu programmieren oder zu de-programmieren.
-
-
Ablauf
-
Diese
E/A-Steuerung wird von der Sicherheitskomponente des Systems verwendet.
Sie wird verwendet, um eine Kennung zu einem Schlüssel zu
erhalten. Hierfür
ist der Zugriff auf die Elektronische ID (EID = Elektronische Anwenderkennung)
notwendig, die nicht ausserhalb des Treibers offenbart werden sollte.
Eine DeriveEncryptionKey()-Funktion ist in der Unterstützungsbibliothek
des Treibers vorhanden und wird unten detaillierter beschrieben,
um die E/A-Steuerung auszuführen.
Der Treiber sollte diese Funktion aufrufen und die Kennung an den
von ihr ausgegebenen Schlüssel
(hKey) weitergeben. Auf diese Art und Weise kann eine Sicherheitskomponente
eine Kennung zu dem Schlüssel
erhalten, ohne einen Zugriff auf die EID zu erhalten.
-
Um
die E/A-Steuerungsaufrufe zu implementieren, ruft der Treiber
210 eine
Anzahl der in seiner Unterstützungsbibliothek
gespeicherten Funktionen auf. Solche Funktionen werden unten beschrieben: AnalyzeMessage() Syntax
pMsg | Zeiger
zu den Bytes der Nachricht. |
dwMsgLen | Länge der
Nachricht |
pDiscard | Empfängt einen
BOOL-Wert, der angibt, |
| ob
die Nachricht gelöscht
oder erhalten |
| werden
soll. |
pServiceGroupCode | Empfängt den
Dienstgruppen-Code. |
-
Ausgaben
-
Gibt
TRUE aus, wenn der Dienstgruppen-Code gefunden wurde, ansonsten
FALSE.
-
Beschreibung
-
Diese
Funktion analysiert die Nachricht, um festzustellen, ob sie einen
Dienstgruppen-Code aufweist. Sie kann auch analysieren, ob die Nachricht
andere Kennzeichen aufweist, um festzulegen, ob diese Nachricht gelöscht oder
behalten werden soll.
-
DeriveEncryptionKey() Syntax
-
Einige
Parameter für
diese Funktion werden von der aufrufenden Person eingegeben, der
Treiber gibt sie lediglich an diese Funktion weiter. Die restlichen
Parameter stehen dem Treiber in seiner internen Datenstruktur zur
Verfügung.
pCrypt_Input | Eingabe
zum |
| RADIO_CRYPT_DERIVE_KEY |
| E/A-Steuerungsaufruf |
pbKeyValue | Der
zu verwendende Schlüssel |
| beruht
auf den AdressTag- und |
| GroupTag-Feldern
innerhalb |
| der
RADIO_CRYPT Struktur (Die |
| den
E/A-Steuerungsaufruf |
| durchführende Person
stellt |
| diese
zwei Felder bereit. Der |
| Treiber
muss sie verwenden, |
| um
den in der Schlüsseltabelle |
| gespeicherten
Schlüssel |
| zu
lokalisieren und den |
| Schlüssel dann
in den |
| pbKey-Parameter
weiterzugeben). |
dwKeySize | Anzahl
der Bytes in dem |
| pbKeyValue
Parameter. |
-
Ausgaben
-
Diese
Funktion gibt TRUE aus, wenn der Vorgang erfolgreich war, ansonsten
FALSE. Wenn er erfolgreich war, gibt sie ausserdem eine Kennung
zu dem Schlüssel
aus, die aus den gegebenen Informationen erzeugt wurde.
-
Beschreibung
-
Die
Codierungsschlüssel
werden auf einer oder mehreren der folgenden Informationen basierend
berechnet: der Adresse zugeordneter Schlüssel, der Dienstgruppe zugeordneter
Schlüssel,
nachrichtsspezifische Daten, bestimmte Kennzeichen und eine Algorithmus-Kennung. Diese Funktion
verarbeitet das alles und erzeugt eine Kennung zu einem Schlüssel, die
vom Aufrufablauf verwendet werden kann, um die Codierungs-/Decodierungsabläufe durchzuführen.
-
6 erläutert ausserdem,
dass die Sicherheitskomponente 226 eine Kryptographie-Anwendungs-Programmierschnittstelle
(Crypto-API oder
CAPI) 236 aufweist, sowie einen kryptographischen Serviceprovider 238.
CAPI 236 bietet eine Reihe von Funktionen, die es anderen
Softwarekomponenten ermöglichen,
Daten auf flexible Art und Weise zu decodieren. In einer bevorzugten
Ausführungsform
ist CAPI 236 als die Kryptographie-Anwendungs-Programmierschnittstelle
(CryptoAPI) implementiert, die von der Firma Microsoft Corporation
of Redmond, Washington, im Handel erhältlich ist. Der kryptographische
Serviceprovider 238 ist vorzugsweise als Einzelmodul ausgeführt, das
kryptographische Operationen durchführt. Ein solcher kryptographischer
Serviceprovider ist im Handel unter dem Markennamen Microsoft RSA
Hase Provider erhältlich. Andere
kryptographische Serviceprovider könnten jedoch ebenfalls verwendet
werden. Manche solcher kryptographischen Serviceprovider bieten
stärkere
kryptographische Algorithmen an, während andere Hardwarekomponenten,
wie beispielsweise Chipkarten (smart cards) aufweisen. Daher können Programm-Module Funktionen
verwenden, die von der CAPI 236 freigelegt wurden, ohne
den zu Grunde liegenden kryptographischen Algorithmus zu kennen.
-
In Übereinstimmung
mit einem erläuternden
Aspekt der vorliegenden Erfindung, können der Inhaltsprovider 12 und
der Träger 14 sowohl
codierte Programmiernachrichten senden, die zur Programmierung von
Werten in die Radio HW 208 verwendet werden, als auch codierte
Inhaltsnachrichten, die nur von Mobilvorrichtungen 18 empfangen
und verarbeitet werden können,
die die passenden Decodierungsschlüssel aufweisen, welche zur
Decodierung der Inhaltsnachrichten zur weiteren Verwendung durch
die Mobilvorrichtung 18 verwendet werden können. Der
Treiber 210 ist so konfiguriert, dass er die Integrität des Codierungsschlüssels in
einer sicheren Umgebung aufrecht erhält, sogar während der Decodierung von entweder
Programmier- oder Inhaltsnachrichten.
-
Die
Radio HW 208 hat eine Anzahl von progammierbaren Adress-Schlitzen. Zur Erweiterung
der Verwendungszwecke, denen jede Adresse zugeordnet werden kann,
teilt die vorliegende Erfindung ausserdem die Sendeadressen in Unteradressen
auf, die als Gruppen bezeichnet und durch Gruppencodes bestimmt
werden. Eine Adresse könnte
beispielsweise verwendet werden, um Nachrichteninformationen zu übertragen, während ein
Gruppencode verwen det werden könnte,
um Unterteilungen der Nachrichten, wie z.B. nationale Nachrichten,
regionale Nachrichten und internationale Nachrichten zu übertragen.
-
In
einer bevorzugten Ausführungsform
speichert die Mobilvorrichtung 18 einen Codierungsschlüssel für jede Sendeadresse
sowie für
jeden Gruppencode. Alternativ kann ein Schlüssel für eine Adresse und all ihre
Gruppen verwendet werden, oder für
jede andere Kombination, die Adressen und Gruppen einbezieht. Die Mobilvorrichtung 18 ist
ausserdem vorzugsweise mit einer elektronischen Identifizierung
(EID) vorprogrammiert, die vom Hersteller der Mobilvorrichtung 18 während der
Produktion erzeugt und zugewiesen wird. Die EID wird vorzugsweise
willkürlich
erzeugt und beruht in keinster Weise auf und hat keinerlei Bezug
zu der Seriennummer des Geräts
(die ausserhalb des Geräts
erkennbar sein könnte).
Die EID wird von dem Hersteller der Mobilvorrichtung 18 und
des kabellosen Trägers 14 vertraulich
verwahrt.
-
Um
eine effiziente Abonnementverwaltung zu ermöglichen, müssen daher eine Vielzahl von
Operationen durchgeführt
werden. Zuerst werden der Inhaltsprovider 12 und der Träger 14 vorzugsweise
so eingerichtet, dass sie eine Mobilvorrichtung 18 mit
Adressen und Gruppencodes programmieren, über die der Benutzer der Mobilvorrichtung 18 die
gewünschten
Dienste empfangen kann. Um die Dienste nur den gewünschten
oder ausgewählten
Mobilvorrichtungen 18 zu ermöglichen, die diese Dienste
abonniert haben, werden sowohl die Programmiernachrichten, die zur
Programmierung der Adressen und Gruppencodes in die Mobilvorrichtung 18 verwendet
werden, als auch die Inhaltsnachrichten codiert. Daher sind der
Inhaltsprovider 12 und der kabellose Träger 14 ebenfalls vorzugsweise
so konfiguriert, dass sie die Mobilvorrichtung 18 mit den
notwendigen Codierungsschlüsseln
zur Decodierung von Programmier- und Inhaltsnachrichten programmieren.
-
Der
kabellose Träger 14 beinhaltet
vorzugsweise die Adressen, wohingegen sich die Gruppencodes im Inhaltsprovider 12 oder
im kabellosen Träger 14 befinden
können.
Zur Verwaltung seiner Abonnements ist der Inhaltsprovider 12 daher
vorzugsweise so konfiguriert, dass er die Mobilvorrichtung 18 durch
den kabellosen Träger 14 mit
neuen Gruppenschlüsseln
(oder Sendeschlüsseln)
umprogrammiert, ohne die Gruppenschlüssel (oder Sendeschlüssel) anderer
Inhaltsprovider ändern
zu können,
die Dienste durch den kabellosen Träger 14 oder durch
andere kabellose Träger
anbieten könnten.
Dadurch ist es dem Inhaltsprovider 12 möglich, die zur Codierung der
Inhaltsnachrichten verwendeten Codierungsschlüssel zu drehen, um die Sicherheit des Übertragungssystems
zu erhöhen.
-
Da
die Inhaltsnachrichten des Inhaltsproviders 12 codiert
sind, ist der Inhaltsprovider 12 natürlich vorzugsweise so konfiguriert,
dass er diese Nachrichten auf sichere Art und Weise codiert, so
dass sie nur von den Mobilvorrichtungen 18 decodiert werden
können,
die die notwendigen Sendeschlüssel
enthalten.
-
Da
sowohl die Programmiernachrichten als auch die Inhaltsnachrichten
codiert sind, ist die Mobilvorrichtung 18 vorzugsweise
so eingerichtet, dass sie solche Nachrichten sicher decodieren kann,
um so die Integrität
der Codierungsschlüssel
aufrecht zu erhalten, die zur Codierung und Decodierung der Nachrichten
verwendet werden.
-
DIE PROGRAMMIERUNG DER
MOBILVORRICHTUNG 18
-
7 ist
ein Flussdiagramm, das in Verbindung mit 6 besprochen
werden wird, und welches erläutert,
wie der Inhaltsprovider 12 und der kabellose Träger 14 Adressen,
Gruppencodes und entsprechende Codierungsschlüssel in die Mobilvorrichtung 18 programmieren,
um einem neuen Abonnenten den Empfang der gewünschten Dienste zu ermöglichen.
-
Der
Inhaltsprovider 12 empfängt
eine Meldung von einem bestimmten Benutzer einer Mobilvorrichtung 18,
dass der Benutzer ein Abonnement bestimmter Diensten erhalten möchte. Der
Inhalts provider 12 fordert daher den kabellosen Träger 14 auf,
einen passenden Gruppencode oder eine passende Gruppenadresse in die
gewünschte
Mobilvorrichtung 18 zu programmieren. Dies ist durch den
Block 242 in 7 dargestellt. Der Inhaltsprovider 12 leitet
dann die Identität
des Benutzers sowie die Seriennummer des vom Benutzer verwendeten
Pagers oder einer anderen Mobilvorrichtung 18 an den kabellosen
Träger 14 weiter.
Dies ist durch den Block 244 in 7 dargestellt.
-
Als
Reaktion darauf erzeugt der kabellose Träger 14 einen vorübergehenden
willkürlichen
Sendeschlüssel,
der vom Inhaltsprovider vorübergehend
zur Übertragung
der Dienste an die Mobilvorrichtung 18 verwendet wird.
Der kabellose Träger 14 gibt
den vorübergehenden
Sendeschlüssel
dann an den Inhaltsprovider 12 zurück. Dies ist durch die Blöcke 246 und 248 dargestellt.
-
Der
kabellose Träger 14 bereitet
dann unter Verwendung eines geheimen Schlüssels eine codierte Programmnachricht
vor, die nur dem kabellosen Träger 14 und
dieser einzelnen Mobilvorrichtung 18 bekannt ist, die programmiert
wird. Der geheime Schlüssel
könnte
beispielsweies die durch den Hersteller in die Mobilvorrichtung
programmierte EID sein, die nur gemeinsam mit dem kabellosen Träger 14 verwendet
wird. Dies ist durch den Block 250 dargestellt. Der kabellose
Träger 14 überträgt dann
die Programmiernachricht an die Mobilvorrichtung 18. Dies
ist durch Block 252 dargestellt.
-
Die
Mobilvorrichtung 18 empfängt die Programmiernachricht,
identifiziert sie als Programmiernachricht und decodiert die Nachricht.
Die Mobilvorrichtung 18 stellt den neuen Adress- oder Gruppencode
dann der Radio HW 208 zur Verfügung, die den neuen Adress-
oder Gruppencode in die entsprechende Tabelle auf der Radio HW 208 programmiert.
Dies ist durch den Block 254 dargestellt. Die Mobilvorrichtung 18 stellt
den vorübergehenden
Sendeschlüssel
(der ebenfalls mit der Programmiernachricht übertragen wurde) auch der Radio
HW 208 zur Verfügung,
die den vorübergehenden
Sendeschlüssel
in die Schlüsseltabelle 224 program miert.
Dies ist durch den Block 256 dargestellt. Der vorübergehende
Sendeschlüssel
wird dem neu programmierten Adress- oder Gruppencode (oder beiden)
zugeordnet und wird von der Mobilvorrichtung 18 verwendet, um
zumindest die erste codierte Nachricht zu decodieren, die vom Inhaltsprovider 12 erzeugt
wurde.
-
Es
ist zu beachten, dass der kabellose Träger 14 eine weitere
Programmiernachricht auf ähnliche
Weise an die Mobilvorrichtung 18 senden kann, um so den
neuen Adress- oder Gruppencode unwirksam zu machen. Wenn der Benutzer
der Mobilvorrichtung 18 beispielsweise das Abonnement beenden
möchte,
kann der kabellose Träger 14 eine
Programmiernachricht bereitstellen, die den neuen Adress- oder Gruppencode
im Wesentlichen von der Mobilvorrichtung 18 entfernt. Wenn
der Benutzer nur vorübergehend
aussteigt (weil er z.B. in den Urlaub fährt oder aufhört, die
Abonnementgebühr
zu zahlen), kann der Inhaltsprovider 12 ebenfalls eine
Programmiernachricht erzeugen (welche durch den kabellosen Träger 14 nur
an die Mobilvorrichtung 18 geschickt werden kann), die
den neuen Adress- oder Gruppencode unwirksam macht. In beiden Fällen ist
es dem Benutzer der Mobilvorrichtung 18 nicht länger möglich, Inhaltsnachrichten
vom Inhaltsprovider 12 zu empfangen.
-
ÄNDERN DER
SENDESCHLÜSSEL
-
Bei
den 8A–8C handelt
es sich um Diagramme, die erläutern,
wie der Inhaltsprovider 12 den vorübergehenden Sendeschlüssel in
seinen eigenen Sendeschlüssel
umwandelt, oder einfach nur den Sendeschlüssel dreht, der gegenwärtig in
der Mobilvorrichtung 18 enthalten ist. Die 8A–8C werden
auch in Verbindung mit 6 beschrieben. Natürlich können andere
geeignete Codierungsschemata verwendet werden, aber die 8A–8C erläutern ein
erläuterndes
Codierungsschema. Genau genommen erläutern die 8A und 8B die
Bildung eines Codierungsschlüssels
(festgelegter Programmierschlüssel)
und einer codierten Nachricht gemäß eines Aspekts der vorliegenden
Erfindung.
-
Um
den Programmierschlüssel
zu erhalten, verwendet die vorliegende Erfindung nachrichtenspezifische
Daten 58 und den alten Schlüssel 260, der gegenwärtig auf
der Mobilvorrichtung 18 gespeichert ist. In dem Fall, dass
der Inhaltsprovider 12 den vorübergehenden Sendeschlüssel ändert, entspricht
der der alte Schlüssel 260 dem
vorübergehenden
Sendeschlüssel,
der dann auf der Mobilvorrichtung 18 gespeichert wird. Bei
den nachrichtenspezifischen Daten 258 handelt es sich vorzugsweise
um einen Teil des alten Schlüssels 260 selbst,
aber es kann sich auch um andere nachrichtenspezifische Informationen
handeln. Die nachrichtenspezifischen Daten 258 ändern sich
daher mit jeder gesendeten Nachricht. Der alte Schlüssel 260 wird durch
die Komponente 202 zur Nachrichtenerzeugung erstellt (oder
abgerufen) und wird zusammen mit den nachrichtenspezifischen Daten
der Kryptographiekomponente 200 im Inhaltsprovider 12 (von
dem alle in 6 dargestellt sind) zur Verfügung gestellt.
Die Kryptographiekomponente 200 stellt nachrichtenspezifische Daten 258 und
den alten Schlüssel 260 einer
HMAC (hashed message authentication code)-Generatorkomponente 262 zur
Verfügung.
Der HMAC-Generator 262 berechnet
einen Hash-Wert, der zur Ausrichtung eines Schlüsselberechnungs-Algorithmus
verwendet wird. Der durch den HMAC erzeugten Wert hat die folgende
Eigenschaft: sein Wert hängt
von den Eingabedaten (MSD 258 – nachrichtenspezifische Daten – und der
alte Schlüssel 260)
ab, und schon eine kleine Bit-Veränderung in einer der Daten
führt zu
einem völlig
neuen Hash-Wert. Bei einem gegebenen Hash-Wert ist es zugleich äußerst schwierig
zu entschlüsseln,
welche Eingabedaten zur Erzeugung verwendet wurden.
-
Die
Bias-Komponente wird der Schlüsselberechnungskomponente
zur Verfügung
gestellt, die auf die Bias-Komponente wirkt, um den Programmierschlüssel 266 zu
berechnen. Da die MSD 258 zur Erzeugung des Ausrichtungswertes
verwendet werden und sich die MSD 258 für jede Nachricht ändern, ist
es logisch, dass sich der Programmierschlüssel 266 für jede Programmiernachricht ändern wird,
sogar wenn sie für
dieselbe Mobilvorrichtung gedacht ist. Das macht es äußerst schwierig,
den Programmierschlüssels
zu entschlüsseln (wenn
derselbe Schlüssel
in einer Stromverschlüsselung
wiederholt verwendet wird, um Vielfach-Nachrichten zu codieren,
dann reicht es aus, eine Einzel-Nachricht zu kennen oder zu erraten,
um den Rest zu erschließen).
Selbst wenn der Schlüssel
decodiert wurde, ist es überdies
sinnlos, da die nächste
Nachricht nicht den gleichen Schlüssel verwenden wird. Daher
bietet das vorliegende System einen hohen Grad an Sicherheit, außer ein
nicht autorisierter Benutzer kennt eine Vielzahl an Informationen,
wie beispielsweise die MSD 258, den alten Schlüssel 260,
den HMAC 262 Algorithmus, usw.
-
Der
Programmierschlüssels 266 wird
verwendet, um den neuen Sendeschlüssel zu codieren, der von der
Mobilvorrichtung 18 verwendet wird, um Nachrichten zu decodieren,
die über
den neuen Adress- oder Gruppencode empfangen wurden, der in die
Mobilvorrichtung programmiert wurde. In einer erläuternden
Ausführungsform
wird der API CryptDeriveKey verwendet, um den Programmierschlüssel 266 zu
berechnen. Der API CryptDeriveKey ist eine gewöhnliche Windows API, die den
Schlüssel
für Standardkryptographiealgorithmen
berechnet.
-
8H erläutert
die Codierung des neuen Schlüssels 268 unter
Verwendung des Programmierschlüssels 266.
Der Programmierschlüssel 266 und
der neue Schlüssel 268 werden
der Codierungskomponente 270 zur Verfügung gestellt, die den neuen
Schlüssel 268 unter
Verwendung des Programmierschlüssels 266 codiert.
Jede geeignete Codierungsmethode kann von der Codierungskomponente 270 eingesetzt
werden. Die Ausgabe der Codierungskomponente 270 ist ein
codierter neuer Schlüssel 272.
Der codierte neue Schlüssel 272 wird
dann zurück
an die Nachrichtenerstellungskomponente 202 am Inhaltsprovider 12 gegeben.
Die Nachrichtenerstellungskomponente 202 hängt dann
die nachrichtenspezifischen Daten 258 in nicht codierter Form
an den codierten neuen Schlüssel 272 an.
Die Nachrichtenerstellungskomponente 202 fügt dann
dem codierten neuen Schlüssel 272 und
den nachrichtenspezifischen Daten 258 einen Header 274 hinzu.
Bei dem Header 274 handelt es sich vorzugsweise um eine
Byte-Sequenz, die eine Vielzahl an Zwecken erfüllt. Zuerst identifiziert er
eine Nachricht als Programmiernachricht. Dann ermittelt er den Anfang
und das Ende des codierten Teils 272 der Nachricht, und
den Anfang und das Ende des nachrichtenspezifischen Datenteils 258 der Nachricht
(der nicht codiert ist). Als letztes ermittelt der Header 274,
ob die EID (oder ein anderer geheimer Schlüssel) zum Berechnen der Nachricht
verwendet wurde. Es ist zu beachten, dass dem kabellose Träger 14 die
Verantwortung für
das Hinzufügen
des Headers 274 an die Nachricht übertragen werden kann. In jedem Fall
wird die Nachricht dann dem kabellosen Träger 14 zur Verfügung gestellt,
der die Nachricht zur Übertragung über die Übertragungsleitung
in geeigneter Form anordnet, und die Nachricht auf die Mobilvorrichtung 18 überträgt.
-
8C ist
ein Flussdiagramm, dass die Erstellung der Programmiernachricht
erläutert,
die in den 8A und 8B erläutert wurde.
Zuerst werden die nachrichtenspezifischen Daten (oder andere Daten) zusammen
mit dem alten Sendeschlüssel
erhalten. Dies ist durch die Blöcke 276 und 278 dargestellt.
Der Hash-Wert wird dann berechnet, wie in Block 280 dargestellt
ist. Der Programmierschlüssel
wird dann basierend auf dem in Block 280 erzeugten Hash-Wert
berechnet. Dies ist durch den Block 282 dargestellt.
-
Der
neue Schlüssel
wird dann erhalten und mit Hilfe des Programmierschüssels codiert.
Dies ist durch die Blöcke 284 und 286 dargestellt.
Die nachrichtenspezifischen Daten sowie der Header werden dann dem codierten
neuen Schlüssel
hinzugefügt,
und die Nachricht wird übertragen.
Dies ist durch die Blöcke 288, 290 und 292 dargestellt.
-
Sobald
die Mobilvorrichtung 18 die Programmiernachricht empfängt, wird
die Programmiernachricht decodiert, um den neuen Schlüssel zu
erhalten, der dem, in die Mobilvorrichtung 18 programmierten,
Adress- oder Gruppencode zugeordnet ist, und der neue Schlüssel 268 wird
in die Schlüsseltabelle 224 programmiert. Kurz
gesagt führt
die Mobilvorrichtung im Wesentlichen die gleichen Schritte durch
wie in den 8A und 8B. Wenn
das Gerät
den alten Schlüssel
nicht aufweist, kann es diese Schritte nicht erfolgreich durchführen und
kann folglich die Nachricht nicht erfolgreich decodieren. Daher
ist es nur einem autorisierten Gerät möglich, die Programmiernachricht
erfolgreich zu decodieren und zu verwenden.
-
ERZEUGUNG
DES CODIERTEN INHALTS
-
Sobald
die Mobilvorrichtung 18 mit dem neuen Adress- oder Gruppencode
und einem oder mehreren entsprechenden Codierungsschlüsseln programmiert
wurde, kann der Inhaltsprovider 12 eine codierte Inhaltsnachricht
erzeugen, die durch den kabellosen Träger 14 an die Mobilvorrichtung 18 übertragen
wird. Die 9A–9C erörtern eine
erläuternde
Ausführungsform,
in der der Inhaltsprovider 12 eine codierte Inhaltsnachricht
zur Übertragung über den
kabellosen Träger
auf die Mobilvorrichtung 18 erzeugt.
-
Der
Inhaltsprovider 12 erhält
zuerst den gegenwärtigen
Sendeschlüssel 268,
der zu diesem Zeitpunkt auf der Mobilvorrichtung 18 gespeichert
ist und der dem Adress- oder Gruppencode entspricht, über den
die codierte Inhaltsnachricht gesendet werden soll. Dieser Schlüssel ist
nur in den autorisierten Mobilvorrichtungen gespeichert, wofür die Methode
verwendet wurde, die oben mit Bezug auf die 8A, 8B und 8C beschrieben
wurde. Der Inhaltsprovider 12 enthält ebenfalls nachrichtenspezifische
Daten 294, die vorzugsweise ein Teil der übertragenen
Inhaltsnachricht sind und die Eigenschaft aufweisen, dass sie sich
mit jeder Nachricht ändern
(um abzusichern, dass der unten beschriebene nachrichtenspezifische
Codierungsschlüssel 296 für jede Nachricht
anders ist, wodurch die Möglichkeit
eines böswilligen
Angriffs verringert wird). Der Sendeschlüssel 268 und die nachrichtenspezifischen
Daten 294 werden der HMAC-Komponente 262 zur Verfügung gestellt,
die einen Hash-Wert berechnet, der zum Berechnen eines nachrichtenspezifischen
Codierungsschlüssels 296 verwendet
wird. Die HMAC-Komponente 262 und die Schlüsselberech nungskomponente 264 können die
gleichen Methoden anwenden, die oben mit Bezug auf 8A beschrieben
wurden.
-
9B erläutert, dass
die bestimmte gesendete Inhaltsnachricht 298 durch die
Codierungskomponente 270 mit dem nachrichtenspezifischen
Codierungsschlüssel 296 codiert
wird. Die Codierungskomponente 270 kann ebenfalls den gleichen
Codierungsalgorithmus oder die Codierungsmethoden anwenden, die
oben mit Bezug auf 8B beschrieben wurden. Die Codierungskomponente 270 stellt
in ihrer Ausgabe die codierte Inhaltsnachricht 300 zur
Verfügung.
Die nachrichtenspezifischen Daten 298 werden dann der codierten
Inhaltsnachricht 300 in nicht codierter Form angehängt. Ein
geeigneter Header 302 wird hinzugefügt, um die gesamte Inhaltsnachricht 304 zu
bilden, die an die Mobilvorrichtung 18 gesendet werden
soll.
-
9C ist
ein Flussdiagramm, das die Erzeugung der Inhaltsnachricht 304 erläutert. Zuerst
werden die nachrichtenspezifischen Daten 294 und der Sendeschlüssel 304 erhalten
und der Hash-Wert berechnet. Dies ist durch die Blöcke 306, 308 und 310 dargestellt.
Danach wird der nachrichtenspezifische Codierungsschlüssel berechnet
und die Inhaltsnachricht wird unter Verwendung des nachrichtenspezifischen
Codierungsschlüssels
codiert. Dies ist durch die Blöcke 312 und 314 dargestellt.
Die nachrichtenspezifischen Daten sowie der Header werden dann der
codierten Inhaltsnachricht hinzugefügt. Dies ist durch die Blöcke 316 und 318 dargestellt.
-
Es
ist zu beachten, dass in der obigen Beschreibung der Sendeschlüssel oder
der nachrichtenspezifische Codierungsschlüssel nicht mit der codierten
Inhaltsnachricht zusammen gesendet werden müssen. Es werden nur nachrichtenspezifische
Daten gesendet, die für
die Berechnung des Codierungsschlüssels verwendet werden, die
sich mit jeder Nachricht ändern.
Zur erfolgreichen Decodierung der codierten Nachricht muss der Empfänger die
fehlenden Informationen haben, nämlich
den Sendeschlüssel,
den HMAC Algorithmus und die Kenntnis, wie man den Header der Nachricht auswertet,
der bestimmt, welcher Teil codiert ist und bei welchem Teil es sich
um die MSD 294 handelt. Dies wird der Integrität des Übertragungssystems
hinzugefügt.
-
DECODIERUNG
DER CODIERTEN INHALTSNACHRICHT
-
10A und 10B sind
Flussdiagramme, die in Verbindung mit 6 besprochen
werden, und die die Decodierung einer Inhaltsnachricht erläutern, sobald
diese von der Mobilvorrichtung 18 empfangen wurde. Zuerst
wird die Nachricht von der Steuerschaltung 218 und der
Radio HW 208 empfangen.
-
Die
Steuerschaltung 218 enthält vorzugsweise einen Mikroprozessor
oder einen Microcontroller, sowie die Antenne und die eigentliche
Funkempfänger-Hardware
auf der Mobilvorrichtung 18. Außerdem enthält die Steuerschaltung 218 vorzugsweise
zugehörige
Taktstromkreise und einen Speicher, sowie geeignete Eingabe- und
Ausgabepuffer.
-
Die
Steuerschaltung 218 ist so konfiguriert, dass sie die Nachricht
gemäß den jeweiligen Übertragungsbedingungen
empfängt,
die dem Kanal durch den kabellosen Träger 14 auferlegt sind.
Wenn die Nachricht beispielsweise paketiert ist, und die Pakete
willkürlich
gesendet werden, empfängt
die Steuerschaltung 218 (oder die Steuerschaltung 218 in
Verbindung mit dem Treiber 210) die Pakete und ordnet sie,
um eine verständliche
Nachricht zu bilden. Ausserdem verwendet die Steuerschaltung 218 vorzugsweise
eine Logik, die feststellt, ob ein ganzes Paket oder ein Teil-Paket empfangen wurde.
Der Empfang der Nachricht ist durch den Block 320 in 10A dargestellt.
-
Sobald
die Nachricht empfangen wurde, greift die Radio HW 208 auf
Informationen in der Adressinformationstabelle 220 zu,
um festzustellen, ob die Adresse, über die die Nachricht geschickt
wurde, einer Adresse entspricht, die gegenwärtig in die Radio HW 208 programmiert
wurde. Die Steuerschaltung 218 filtert Nachrichten darauf
basierend, ob sie über
eine Adresse empfangen wurden, die freigegeben und gegenwärtig nicht abgelaufen
ist. Dies ist durch den Block 322 dargestellt.
-
Wenn
die Nachricht einer Adresse auf der Radio HW 208 entspricht,
wird die Nachricht für
den Empfang durch den Treiber 210 in die Ausgabepuffer
der Steuerschaltung 208 gegeben. Der Treiber 210 empfängt die
Nachricht und ruft die AnalyzeMessage-Funktion 230 auf, die in seiner
Funktionsbibliothek vorhanden ist. Die AnalyzeMessage-Funktion 230 analysiert
die Nachricht, um festzustellen, ob sie einen zugewiesenen Gruppencode
aufweist. "Wiederaufruf
des Nachrichteninhalts" kann über eine
Adresse oder einen Gruppencode oder über beide gesendet werden.
Dies ist durch den Block 324 dargestellt.
-
Wenn
es eine Gruppencodeinformation gibt, muss der Treiber 210 weiter
verarbeiten, um festzustellen, ob die Radio HW 208 mit
dem passenden Gruppencode programmiert wurde. Für diesen Zweck verwendet der
Treiber 210 die Gruppentabelle. (Wenn die Gruppentabelle
in der Radio HW 208 gespeichert ist, bekommt der Gerätetreiber 210 durch
hardwarespezifische Mechanismen, wie direktes Lesen des Radio HW Speichers
usw., Zugriff auf diese). Basierend auf dem Inhalt der Gruppentabelle
kann der Treiber 210 eine weitere Filterung der Nachricht
vornehmen, um festzustellen, ob sie gelöscht werden sollte. Dies ist
durch den Block 326 dargestellt.
-
Wenn
die Nachricht nicht ausgefiltert wurde, leitet der Treiber 210 die
Nachricht an den Router 212 weiter. Dies ist durch den
Block 328 dargestellt.
-
Basierend
auf den Header Informationen in der Nachricht, stellt der Router 212 fest,
dass es sich bei der Nachricht um eine codierte Inhaltsnachricht
handelt, die zur weiteren Verwendung auf der Mobilvorrichtung 18 decodiert
werden muss. Der Router 212 macht daher einen API-Aufruf
an den Treiber 210, damit der Treiber 210 den
nachrichtenspezifischen Codierungsschlüssel berechnen kann, der zur
Decodierung der Nachricht verwendet wird. Dadurch macht der Router 212 (oder
eine andere Anwendung) einen Treiber-E/A-Steuerungsaufruf, um eine
Kennung zu dem Codierungsschlüssel
zu erhalten. Der Aufruf beinhaltet die nachrichtenspezifischen Daten,
die der Nachricht in nicht codierter Form angehängt wurden, und die Adresse
und Gruppe, über
die die Nachricht empfangen wurde. Dies ist durch den Block 330 dargestellt.
Basierend auf der Adress- und Gruppeninformation, die als Teil des
E/A-Steuerungsaufrufs weitergegeben wurde, erhält der Treiber 210 den
Codierungsschlüssel
aus der Schlüsseltabelle.
Dies ist durch den Block 332 dargestellt. Der Treiber 210 ruft
dann die DeriveEncryptionKey-Funktion 232 aus seiner Funktionsbibliothek
auf. Dies ist durch den Block 334 dargestellt. Die DeriveEncryptionKey-Funktion 232 verwendet
diesen oder diese Schlüssel,
der oder die dem Adress- oder Gruppencode zugeordnet ist oder sind, über die
die Nachricht übertragen
wurde, zusammen mit den nachrichtenspezifischen Daten, die in nicht
codierter Form an die Nachricht angehängt wurden, um den nachrichtenspezifischen
Schlüssel 296 erneut
zu berechnen. Es sollte erwähnt
werden, dass die Schlüsseltabelle
sicher gespeichert ist und nur der Gerätetreiber 210 darauf
Zugriff hat, und daher nur der Gerätetreiber 210 den
richtigen DeriveEncryption-Key()
API-Aufruf machen kann.
-
Die
erneute Berechnung des Schlüssels 296 kann
erfolgen, indem man einfach nur den Hash-Algorithmus wiederholt,
der von der HMAC-Komponente 262 ausgeführt wurde und den Schlüsselberechnungsalgorithmus,
der vom Schlüsselberechnungsgenerator 264 bei
der Erzeugung des nachrichtenspezifischen Schlüssels angewandt wurde.
-
Die
Bibliotheksfunktion berechnet daher den nachrichtenspezifischen
Schlüssel 296,
der zur Codierung der Inhaltsnachricht verwendet wurde, und der
den nachrichtenspezifischen Schlüssel 296 in
dem nachrichtenspezifischen Schlüsselspeicher 228 speichert.
Die Funktion gibt auch eine Kennung hKey an den Treiber 210 zurück (welcher
diesen wiederum an den Router 212 weitergibt), die eine
Speicherstelle im nachrichtenspezifischen Speicher 228 angibt,
an der der nachrichtenspezifische Schlüssel gespeichert ist. Dies
ist durch den Block 336 dargestellt.
-
Als
Reaktion darauf, macht der Router 212 einen API-Aufruf
an die CAPI-Komponente 236 in der Sicherheitskomponente 226,
und stellt dadurch den hKey und die codierte Inhaltsnachricht zur
Verfügung.
Die CAPI-Komponente 236 lädt den im Speicher 228 gespeicherten
nachrichtenspezifischen Schlüssel
zurück
und stellt den nachrichtenspezifischen Schlüssel zusammen mit der codierten
Inhaltsnachricht dem kryptographischen Serviceprovider 238 zur
Verfügung.
Dies ist durch die Blöcke 338 und 340 dargestellt.
-
Der
kryptographische Serviceprovider 238 decodiert die Inhaltsnachricht
und gibt sie in nicht codierter Form an die CAPI-Komponente 236,
die die decodierte Nachricht wiederum zurück an den Router 212 gibt. Dies
ist durch die Blöcke 342 und 344 dargestellt.
Der Router 212 leitet die Nachricht dann an die zusätzlichen Übersetzer 214 weiter,
wenn dies notwendig ist. Solche Übersetzer
können
aufgerufen werden, um die Nachricht zu dekomprimieren, wenn diese
komprimiert wurde, um die Nachricht zu decodieren, wenn diese codiert wurde,
usw. Die Nachricht wird dann an ihr Ziel 216 gegeben, wobei
es sich um ein Anwendungsprogramm zum Anzeigen der Inhaltsnachricht
auf dem Bildschirm der Mobilvorrichtung 18 oder ein anderes
gewünschtes Ziel
handeln kann. Dies ist durch den Block 346 dargestellt.
-
Es
ist zu beachten, dass die obige Beschreibung weiter erläutert hat,
dass der Router 212 die Komponente ist, die den Decodierungsvorgang
hauptsächlich
steuert. Dies könnte
jedoch auch von jeder anderen Anwendung vorgenommen werden. In einer
bevorzugten Ausführungsform
wird dieser Vorgang beispielsweise von einem seperaten Decodierungsübersetzer
durchgeführt.
-
Daher
kann man erkennen, dass die oben beschriebene Ausführungsform
der vorliegenden Erfindung ein System bietet, in dem der Inhaltsprovider 12 und
der kabellose Träger 14 die
Mobilvorrich tung 18 über
eine geeignete Übertragungsleitung
(wie z.B. kabellos) auf sichere Art mit Abonnementinformationen
programmieren können.
Dadurch empfangen nur die Benutzer der Mobilvorrichtung 18,
die ein Abonnement haben, die betreffenden Dienste. Ein weiterer
Aspekt der oben beschriebenen vorliegenden Erfindung bietet ein
System, durch das codierte Inhalsnachrichten zur Verwendung auf
der Mobilvorrichtung 18 decodiert werden können, ohne
dass der zur Codierung der Inhaltsnachrichten verwendete Sendeschlüssel jemals
den Treiber 210 verlässt.
Die vorliegende Erfindung stattet ausserdem den Inhaltsprovider 12 und
den kabellosen Träger 14 mit der
Fähigkeit
aus, Dienste für
einzelne Benutzer der Mobilvorrichtung 18 oder für alle Benutzer
gleichzeitig auszuschalten. Ausserdem stattet die vorliegende Erfindung
den Inhaltsproviders 12 mit der Fähigkeit aus, den Sendeschlüssel für eine größere Sicherheit
zu drehen.
-
DIE ÄUßERE SICHERHEITSKOMPONENTE
-
11A ist ein Blockdiagramm, das eine zweite Ausführungsform
der Mobilvorrichtung 18 gemäß eines anderen Aspekts der
vorliegenden Erfindung erläutert.
Manche Bestandteile entsprechen denen, die in 6 erläutert sind,
und sind entsprechend nummeriert. Manche Bestandteile wurden zudem
der Klarheit halber in 11A weggelassen.
Die in 11A dargestellten Komponenten
der Mobilvorrichtung 18, die zum Verständnis dieses Aspekts der vorliegenden
Erfindung notwendig sind, sind jedoch erläutert.
-
11A erläutert,
dass die Mobilvorrichtung 18 eine Radio HW 208,
einen Gerätetreiber 348,
einen Nachrichten-Router 212, optionale zusätzliche Übersetzer 214,
eine äußere Sicherheitskomponente 350,
die Nachrichtenkennung 352 und das Ziel 216 aufweist.
Die 11B und 11C sind
Flussdiagramme, die den Betrieb der Mobilvorrichtung 18 erklären, wenn
diese neue Adress- oder Gruppencodeschlüssel empfängt, diese Schlüssel decodiert
und diese Schlüssel
zur Decodierung der eingehenden Nachrichten verwendet. Die 11B und 11C werden
in Verbindung mit 11A beschrieben.
-
11A erläutert
eine Ausführungsform
der Schlüsseltabelle 224,
die Schlitze, Adressen, Gruppen, zugehörige Schlüssel und Prüfsummen aufweist. Der als Ki
gekennzeichnete Schlüssel
wird verwendet, um einen einzigartigen Codierungsschlüssel zu
bestimmen, der der Mobilvorrichtung 18 gegenüber einzigartig
ist und der vom einem geheimen Wert abgeleitet wird, der der Mobilvorrichtung 18 und
dem kabellosen Träger 14 (z.B.
die EID) gegenüber
geheim ist. Die Gruppenschlüssel
werden als Kg und Kh gekennzeichnet, und die Prüfsummen werden als CS gekennzeichnet.
-
Ki
wird von dem Kartenhersteller festgelegt und ist in der Schlüsseltabelle 224 in
der Radio HW 208 permanent gespeichert. Die Schlüssel Kg
und Kh können
drahtlos, oder über
das Internet oder über
jede andere geeignete Übertragungsleitung
in die Schlüsseltabelle 224 programmiert
werden.
-
Der
Ausdruck SetKey stellt eine freigelegte API vom Gerätetreiber 348 dar,
die es einer Anwendung erlaubt, codierte Schlüssel in der Schlüsseltabelle 224 der
Radio HW 208 festzulegen. Die SetKey-API läuft auf
einer gegebenen Adress- und Gruppennummer, um Gruppenschlüssel und
Prüfsummen
in die Schlüsseltabelle 224 zu
geben. Die Gruppenschlüssel
werden dem Gerätetreiber 348 immer
in codierter Form mit Ki bereitgestellt (wobei die Bezeichnung Ki
(kg) verwendet wird, um den Schlüssel
Kg darzustellen, der unter Verwendung von Ki codiert wurde), so
dass ein gültiger
Gruppenschlüssel
nicht erzeugt werden kann, wenn der vertrauliche Ki nicht ebenfalls
bekannt ist (der nur dem Träger
und dem Hersteller bekannt ist).
-
Die
Prüfsummen
CS werden dem Gerätetreiber 348 ebenfalls
in codierter Form übergeben,
mit Ki (d.h., Ki (CS)) codiert. Um einen Schlüssel in die Schlüsseltabelle 224 zu
geben, ruft jeder Aufrufer einfach nur die SetKey-API auf, die Ki
(Kg) und Ki (CS) bereitstellt. Der Gerätetreiber 348 macht
wiederum einen E/A-Steuerungsaufruf an die Radio HW 208,
um den codierten Gruppenschlüssel
und die Prüfsumme
(Ki (Kg) und Ki (CS)) in die Schlüsseltabelle 224 zu
geben. Das ist durch die Blöcke 354 und 356 in 11B dargestellt.
-
Wenn
eine neu codierte Inhaltsnachricht für eine spezifische Gruppe auf
einem spezifischem Schlitz bei der Radio HW 208 ankommt,
macht der Gerätetreiber 348 einen
E/A-Steuerungsaufruf an die Radio HW 208, um die Nachricht
von der Radio HW 208 abzurufen. Dies ist durch die Blöcke 358 und 360 dargestellt. Der
Gerätetreiber 348 gibt
die Nachricht wiederum an den Nachrichten-Router 212 weiter.
Der Nachrichten-Router 212 leitet die codierte Nachricht
an die äußere Sicherheitskomponente 350 weiter,
die sich außerhalb
des Gerätetreibers 348 befindet.
Dies wird vom Nachrichten-Router 212 basierend auf den
weitergeleiteten Headern der Nachrichten festgestellt. Dies ist
durch die Blöcke 362 und 364 dargestellt.
-
Die
Sicherheitskomponente 350 macht einen API-Aufruf (hierbei
als GetKey bezeichnet) an den Gerätetreiber 348, um
den Schlüssel
für die
Schlitznummer und die Gruppennummer zu erhalten, über die
die Nachricht empfangen wurde. Dies ist durch den Block 366 dargestellt.
-
Wenn
dies das erste Mal ist, dass der Gerätetreiber 348 einen
API-Aufruf von dieser bestimmten äußeren Sicherheitskomponente 350 empfangen
hat, überprüft der Treiber 348,
dass es sich um die richtige Komponente handelt, die die Schlüsselinformation
erhalten sollte. Die Ermittlung, ob es sich hierbei um den ersten
API-Aufruf der Sicherheitskomponente handelt, ist durch den Block 368 dargestellt.
-
Um
zu überprüfen, ob
es sich bei der Sicherheitskomponente um die richtige Komponente
handelt, decodiert der Gerätetreiber 348 Ki
(CS) und vergleicht die decodierte Prüfsumme mit einer tatsächlichen
Prüfsumme,
die auf der DLL-Datei der Sicherheitskom ponente 250 berechnet
wurde. Dies ist durch die Blöcke 370 und 372 dargestellt.
-
Bei
der Prüfsumme
der Sicherheitskomponente 350 handelt es sich vorzugsweise
um einen bekannten Wert, der auf einem eng gehaltenen Algorithmus
basiert. Es ist zu beachten, dass die Prüfsumme, wie die Gruppenschlüssel, dem
Gerätetreiber 348 immer
schon von Ki codiert bereitgestellt werden. Sogar wenn der Wert
der Prüfsumme
bekannt ist, ist es dem Gerätetreiber 348 daher
nicht möglich,
diese Prüfsumme
zu verwenden, da der Gerätetreiber 348 diese
nur verwenden wird, wenn sie von Ki codiert ist. Es ist ebenfalls
zu beachten, dass, falls einem böswilligen
Benutzer Kg bekannt ist, dieser Benutzer versuchen könnte, die
Sicherheitskomponente 350 so zu verändern, dass Kg immer verwendet
wird. Eine Veränderung
der Sicherheitskomponenten-DLL würde
jedoch von der Prüfsumme
erkannt werden und wäre
daher nicht erfolgreich.
-
Wenn
die decodierte Prüfsumme
nicht mit der Prüfsumme
der DLL der Sicherheitskomponente übereinstimmt, wird der Schlüssel der
Sicherheitskomponente 350 nicht bereitgestellt werden.
Dies ist durch die Blöcke 374 und 376 dargestellt.
-
Wenn
die Prüfsummen
jedoch übereinstimmen,
ist es wünschenswert,
die DLL der Sicherheitskomponente aufrecht zu erhalten, um zu verhindern,
dass sie sich bei aufeinander folgenden Aufrufen verändert. Mit
anderen Worten, wenn der Gerätetreiber 348 weiß, dass
sich die Prüfsumme
der DLL in der Sicherheitskomponente 350 seit dem letzten
Aufruf nicht verändert
hat, muss mit jedem aufeinanderfolgenden Aufruf keine neue Prüfsumme für die DLL
berechnet werden, Es gibt eine Vielzahl an Möglichkeiten, wie der Gerätetreiber 348 die
DLL offen halten kann. Sobald die DLL von der Sicherheitskomponente
durch den Gerätetreiber 348 geladen
wurde, kann der Gerätetreiber 348 einfach
davon absehen, die DLL zu entladen. Die DLL bleibt also offen und
kann daher nicht verändert
werden. Daher kann angenommen werden, dass der ursprüngliche Prüfsummennachweis
gültig
ist, ohne dass man den tatsächlichen
Vergleich für
jede erhaltene codierte Nachricht vornimmt.
-
Alternativ
kann der Gerätetreiber 348 "offen" ausführen, um
auf der DLL zu schreiben und die DLL einfach offen zu halten. Auf
diese Weise erlaubt das System keine Veränderungen bei der DLL, solange
sie offen ist. Die DLL ist dann zur späteren Verwendung vertrauenswürdig. Das
Offenhalten der DLL ist durch den Block 378 dargestellt.
-
Nachdem
die DLL der Sicherheitskomponente offen gehalten wurde, kann der
Gerätetreiber 348 den Gruppenschlüssel an
die Sicherheitkomponente 350 zurückgeben. In einer bevorzugten
Ausführungsform
wird der Gruppenschlüssel
jedoch in codierter Form zurückgegeben,
mit der Prüfsumme
CS codiert, so dass immer noch nicht auf den Schlüssel zugegriffen
werden kann. Die Prüfsumme
CS wird vorzugsweise zur Codierung des Gruppenschlüssels verwendet,
da die Sicherheitskomponente diese, basierend auf ihrer eigenen
DLL, berechnen kann. Alternativ kann die decodierte Prüfsumme CS
in den sicheren Speicher auf der Radio HW 208 gegeben werden.
Die Rückgabe
des Gruppenschlüssels
CS (Kg) ist durch den Block 380 dargestellt.
-
Nach
Empfang des codierten Gruppenschlüssels, führt die Sicherheitskomponente 350 eine
Prüfsumme
auf seiner eigenen DLL durch und verwendet diese Prüfsumme zur
Decodierung von CS (Kg), um den Gruppenschlüssel Kg zu erhalten. Dies ist
durch die Blöcke 382 und 384 dargestellt.
-
Die
Sicherheitskomponente 350 verwendet dann den decodierten
Gruppenschlüssel
Kg, um die codierte Inhaltsnachricht zu decodieren, und gibt die
decodierte Nachricht an den Router 212 zurück. Der
Router 212 leitet die Nachricht wahlweise an andere Übersetzer
weiter, wenn dies notwendig ist, und dann an die Nachrichtenkennung 352.
Die Nachrichtenkennung 352 liefert die decodierte Nachricht
dann an ihr Ziel. Dies ist durch die Blöcke 386, 388 und 390 dargestellt.
-
Daher
kann man erkennen, dass diese Ausführungsform der vorliegenden
Erfindung eine äußere Sicherheitskomponente 350 verwendet,
so dass die Sicherheitskomponente sich nicht im Inneren des Gerätetreibers 348 befinden
muss. Der Gerätetreiber 348 codiert
jedoch all die Schlüssel,
die auf der Radio HW 208 gespeichert sind, unter Verwendung
der geheimen EID und er schickt den Decodierungsschlüssel nur
ausserhalb seines Codes, nachdem der gespeicherte Schlüssel selbst
decodiert wurde. Sogar noch bevor der Schlüssel ausserhalb seines Codes
verschickt wird, wird der Schlüssel
unter Verwendung eines Schlüssels erneut
codiert, der spezifisch für
die bekannte Sicherheitskomponente ist. Die Sicherheitskomponente
wendet einen Schlüssel
an, den sie selbst aus dem Schlüssel
berechnet, der ihr von dem Gerätetreiber 348 gegeben wurde,
um den decodierten Gruppenschlüssel
zur Decodierung des Inhalts zu erhalten. Außerdem führt der Gerätetreiber 348 eine
Prüfsumme
in der Sicherheitskomponente 350 durch, bevor er den codierten
Gruppenschlüssel
an die Sicherheitskomponente weitergibt. Die tatsächliche
Prüfsumme,
die für
die Sicherheitskomponente berechnet wurde, wird mit einer codierten
Prüfsumme
(mit der EID codiert) verglichen, die auf der Radio HW 208 gespeichert
ist. Zur optimierten Leistung muss die Prüfsumme desweiteren auf der
Sicherheitskomponente nur berechnet werden, wenn die Sicherheitskomponente
den Gerätetreiber 348 das
erste Mal aufruft. Daher hält
der Treiber 348 die DLL der Sicherheitskomponente offen,
damit diese nicht verändert
werden kann.
-
Obwohl
die vorliegende Erfindung mit Bezug auf die bevorzugten Ausführungsformen
beschrieben wurde, werden Fachleute erkennen, dass Änderungen
in der Ausgestaltung und im Detail vorgenommen werden können, ohne
sich aus dem Bereich der Erfindung zu entfernen.