DE10051571B4 - Methode und System zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung - Google Patents
Methode und System zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung Download PDFInfo
- Publication number
- DE10051571B4 DE10051571B4 DE10051571A DE10051571A DE10051571B4 DE 10051571 B4 DE10051571 B4 DE 10051571B4 DE 10051571 A DE10051571 A DE 10051571A DE 10051571 A DE10051571 A DE 10051571A DE 10051571 B4 DE10051571 B4 DE 10051571B4
- Authority
- DE
- Germany
- Prior art keywords
- key
- document
- encryption
- encrypted
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/007—Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/76—Proxy, i.e. using intermediary entity to perform cryptographic operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/88—Medical equipments
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Bioethics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Document Processing Apparatus (AREA)
Abstract
Eine
Methode zur Unterstützung
von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung
in einer Computerumgebung, folgende Schritte umfassend:
Bereitstellen eines Input-Dokuments;
Bereitstellen eines oder mehrerer Vorgabenunterstützungsobjekte, wobei jedes der genannten Vorgabenunterstützungsobjekte eine Sicherheitsvorgabe angibt, die Null oder mehreren Elementen des genannten Input-Dokuments zugeordnet werden kann;
Bereitstellen einer Document Type Definition (DTD) entsprechend dem genannten Input-Dokument, wobei die genannte DTD mit einem oder mehreren Verweisen auf die ausgewählten gespeicherten Vorgabenunterstützungsobjekte erweitert wurde;
Ausführen eines erweiterten Stylesheet-Prozessors, weiterhin folgende Schritte umfassend:
Laden der genannten DTD;
Auflösen der genannten einen oder mehreren Verweise in der genannten geladenen DTD;
Instantiieren der genannten Vorgabenunterstützungsobjekte, die den genannten aufgelösten Verweisen zugeordnet sind;
Ausführen von ausgewählten der instantiierten Vorgabenunterstützungsobjekte während der Anwendung von einem oder mehreren Stylesheets auf das genannte Input-Dokument, wobei ein Ergebnis der genannten Ausführung der ausgewählten Schritte ein Interims-Dokument ist, das die genannte Ausführung wiedergibt;
Generieren eines...
Bereitstellen eines Input-Dokuments;
Bereitstellen eines oder mehrerer Vorgabenunterstützungsobjekte, wobei jedes der genannten Vorgabenunterstützungsobjekte eine Sicherheitsvorgabe angibt, die Null oder mehreren Elementen des genannten Input-Dokuments zugeordnet werden kann;
Bereitstellen einer Document Type Definition (DTD) entsprechend dem genannten Input-Dokument, wobei die genannte DTD mit einem oder mehreren Verweisen auf die ausgewählten gespeicherten Vorgabenunterstützungsobjekte erweitert wurde;
Ausführen eines erweiterten Stylesheet-Prozessors, weiterhin folgende Schritte umfassend:
Laden der genannten DTD;
Auflösen der genannten einen oder mehreren Verweise in der genannten geladenen DTD;
Instantiieren der genannten Vorgabenunterstützungsobjekte, die den genannten aufgelösten Verweisen zugeordnet sind;
Ausführen von ausgewählten der instantiierten Vorgabenunterstützungsobjekte während der Anwendung von einem oder mehreren Stylesheets auf das genannte Input-Dokument, wobei ein Ergebnis der genannten Ausführung der ausgewählten Schritte ein Interims-Dokument ist, das die genannte Ausführung wiedergibt;
Generieren eines...
Description
- Hintergrund der Erfindung
- Bereich der Erfindung
- Die vorliegende Erfindung befasst sich mit einem Computersystem und im Besonderen mit einer Methode, einem System und einem Computerprogramm zur selektiven Verschlüsselung eines oder mehrerer Dokumentelemente unter Verwendung von Stylesheet-Verarbeitung. Bei dem Dokument kann es sich um ein Extensible Markup Language (XML)-Dokument handeln und bei dem Prozessor kann es sich um einen Extensible Stylesheet Language (XSL)-Prozessor handeln.
- Die Verwendung von XML als universelles Format für den Datenaustausch zwischen heterogenen Computerprogrammen wird z. B. in Widergren et al: XML for Data Exchange, IEEE Power Engineering Society Summer Meeting, July 1999, S. 840–842, beschrieben.
- Bei der Verschlüsselung handelt es sich um einen Mechanismus zum Schutz von Informationen vor ungewollter Offenlegung, indem diese Informationen in eine Form gebracht werden, die für Menschen und Maschinen unleserlich ist, wenn diese Maschinen nicht darauf ausgerichtet sind, die Transformation rückwärts auszuführen, so dass der Originalinhalt wiederhergestellt wird. Die Verschlüsselung kann bei Daten ausgeführt werden, die elektronisch übertragen werden sollen, wie etwa Elektronische Mail-Narichten oder ein elektronisches Dokument, das von einem Internet-Benutzer angefordert wird. Die Verschlüsselung ist ebenfalls nützlich für Daten, die sicher gespeichert werden müssen, wie etwa Kontendatensätze für die Kunden einer Bank oder eines Kreditinstituts.
- Der Transformationsprozess, der für die Originaldaten ausgeführt wird, wird als Verschlüsselung bezeichnet. Der Prozess zum Rückgängigmachen der Transformation und zur Wiederherstellung der Originaldaten wird als Entschlüsselung bezeichnet. Die Begriffe chiffrieren und dechiffrieren beschreiben ebenfalls diese beiden Prozesse. Ein Mechanismus, der sowohl chiffrieren als auch dechiffrieren kann, wird zusammenfassend als Chiffriermechanismus bezeichnet.
- Die Verwendung eines "Schlüssels" während der Prozesse zum Verschlüsseln und Entschlüsseln macht die Verschlüsselung schwieriger zu entschlüsseln. Ein Schlüssel ist eine durch das Zufallsprinizp erstellte Nummer, zerlegt in den Vorgang der Verschlüsselung, so dass das Ergebnis vom Schlüssel abhängig ist. Der für den Schlüssel verwendete Wert "personalisiert" den Algorithmus, so dass der gleiche Algorithmus bei den gleichen eingegebenen Daten für die verschiedenen Schlüsselwerte eine andere Ausgabe erzeugt. Wenn der Wert dieses Schlüssels nicht berechtigten Personen unbekannt ist, sind sie nicht in der Lage, die Verschlüsselung zu duplizieren oder rückgängig zu machen.
- Eines der ältesten und gängigsten Sicherheitssysteme wird als "Privatschlüssel" oder "symmetrisches" Sicherheitssystem bezeichnet. Privatschlüsselsysteme umfassen zwei Benutzer, die beide über einen geheimen (bzw. privaten) Schlüssel zum Verschlüsseln und Entschlüsseln von Informationen verfügen, die wiederum über ein Netzwerk zwischen diesen beiden Benutzern übertragen werden. Bevor eine Kommunikation stattfinden kann, müssen die beiden Benutzer auf sichere Weise miteinander kommunizieren, um den Privatschlüssel zu bestätigen und sicherzustellen, dass dieser Schlüssel ausschließlich von diesen beiden Benutzern verwendet wird. Ein Beispiel für eine Verschlüsselung zur Verwendung bei der Privatschlüsselsicherheit ist der Data Encryption Algorithm ("DEA"). Dieser Algorithmus wurde von Wissenschaftlern der International Business Machines Corporation ("IBM") entwickelt, und bildet die Basis eines US-amerikanischen Standards, dem Data Encryption Standard ("DES"). Privatschlüsselsysteme weisen jedoch eine Reihe von Nachteilen in einer offenen Netzwerkumgebung wie dem Internet auf, da Benutzer die gesamte Kommunikation über die offene Netzwerkumgebung ausführen und die zusätzlichen Ausgaben für ein separates sicheres Mittel zum Austausch von Schlüsselinformationen vor der Netzwerkkommunikation nicht wünschen oder brauchen.
- Um die Beschränkungen durch Privatschlüsselsysteme zu umgehen, wurden Systeme entwickelt, die als "Öffentliche Schlüssel" oder asymmetrische Systeme bekannt sind. In einem System mit öffentlichem Schlüssel verfügt ein Benutzer über ein Schlüsselpaar, das aus einem öffentlichen und einem privaten Schlüssel besteht, wobei beide Schlüssel zum Verschlüsseln und Entschlüsseln von Nachrichten verwendet werden. Der private Schlüssel ist keinem anderen Benutzer zugänglich oder wird ausschließlich von diesem Benutzer verwendet. Der öffentliche Schlüssel andererseits ist jedem zugänglich, der diesen benötigt. Ein Beispiel zur Verwendung des Schlüsselpaars zum Verschlüsseln einer Nachricht ist es, wenn der Erzeuger einer Nachricht die Nachricht mit Hilfe des öffentlichen Schlüssels verschlüsselt. Der Algorithmus und der öffentliche Schlüssel zum Verschlüsseln einer Nachricht können zur Verfügung gestellt werden, ohne die Sicherheit der verschlüsselten Nachricht zu gefährden, da nur der Besitzer des damit verbundenen privaten Schlüssels in der Lage ist, die Nachricht erfolgreich zu entschlüsseln. Ein Schlüsselpaar kann ebenfalls verwendet werden, um einen Nachrichtenerzeuger zu berechtigen oder dessen Einheit festzustellen. Um ein Schlüsselpaar zum Zuweisen von Berechtigungen zu verwenden, signiert der Erzeuger seine Nachricht (oder einen Auszug davon) digital unter Verwendung seines eigenen privaten Schlüssels. Der Empfänger entschlüsselt die digitale Signatur unter Verwendung des öffentlichen Schlüssels des Versenders. Ein gängiges Mittel zum Veröffentlichen eines öffentlichen Schlüssels für einen bestimmten Empfänger ist ein X.509 Zertifikat, auch digitaler Fingerabdruck genannt.
- Die Verschlüsselung öffentlicher Schlüssel ist im allgemeinen ein kostenintensiver Vorgang mit einer großen Anzahl an Potenzierungsoperationen. Sie erfordert auch längeres Schlüsselmaterial als ein symmetrischer Schlüsselalgorithmus für ein entsprechendes Maß an Sicherheit. Sie wird daher seltener genutzt, nur für Verschlüsselungsoperationen, die deren eindeutige Merkmale benötigen. Symmetrische Schlüsselverschlüsselung wird im weiteren Sinne für die massenhafte Verschlüsselung/Entschlüsselung verwendet, da weniger CPU beansprucht wird, unter Verwendung von primär wiederholten Umschalt-, Rotations, exklusiven ODER und Tabellensuch-Operationen.
- Verschlüsselungsmethoden für öffentliche und symmetrische Schlüssel werden häufig kombiniert. Ein Beispiel für eine solche Kombination ist der Secure Socket Layer (SSL) und dessen Nachfolger, die Transport Layer Security (TLS). Ein weiteres Beispiel ist das Internet Key Exchange (IKE)-Protokoll des IP-Sicherheitsprotokolls, wie es im Dokument RFC 2411: "IP Security Document Roadmap" der Internet Engineering Task Force (IETF) beschrieben wird.
- Im Allgemeinen führen die SSL- und IKE-Protokolle ähnliche Schritte durch. Zunächst erhalten die Teilnehmer die Berechtigung zum Einsatz der Verschlüsselung öffentlicher Schlüssel, wobei X.509 Zertifikate ausgetauscht und Verschlüsselungsalgorithmen ausgehandelt werden. Dann erstellt der erste Teilnehmer einen symmetrischen Schlüssel und verschlüsselt diesen unter Verwendung des öffentlichen Schlüssels des zweiten Teilnehmers. Der verschlüsselte symmetrische Schlüssel wird an den zweiten Teilnehmer übertragen, der ihn dann mit Hilfe seines privaten Schlüssels entschlüsselt. Der Prozess der Verhandlung und der Schlüsselübertragung wird "Schlüsselvereinbarung" genannt. Eine Schlüsselvereinbarung kann über eine vorbestimmte Gültigkeitsdauer verfügen und das Protokoll kann Mittel für weitere Schlüsselvereinbarungen enthalten. Nach Abschluss einer Schlüsselvereinbarung kann ein symmetrischer Schlüssel verwendet werden, um massenweise Datenverschlüsselung zwischen den Teilnehmern vorzunehmen.
- Bei den meisten aktuellen Verschlüsselungstechniken wird ein ganzes Dokument zur Übertragung an bekannte Empfänger verschlüsselt. Die Anforderungen aus der Business-to-Business- Sicherheit heutiger komplexer Netzwerkumgebungen wurde dabei wenig beachtet, in dem ein Dokument asynchron eine Reihe von Zwischen-Agents durchlaufen muss, wie etwa Transcoder, Gateways und Firewalls (wobei jeder Agent zwei verschiedene Aspekte der übermittelten Informationen kennen muss) und wobei das Empfängerpublikum nicht genau vorherbestimmt werden kann.
- Weiterhin ist die Schlüsselverteilung in einer Netzwerkumgebung mit mehreren Teilnehmern eine kritische Angelegenheit. Wenn zwei Teilnehmer wiederholt verschlüsselte Daten mit demselben Schlüssel für nachfolgende Dokumente austauschen (was vorkommen kann, wenn zwei Unternehmen Transaktionsinformationen über einen längeren Zeitraum austauschen), ist es für einen dritten Teilnehmer einfacher, die Verschlüsselung aufzulösen und den Dokumentinhalt aller wiederholten Übertragungen zu lesen. Somit muss eine sichere Methode zum regelmäßigen Verteilen neuer Schlüssel zwischen den teilnehmenden Parteien vorhanden sein. Wenn auf ähnliche Weise Schlüssel ausgetauscht werden und die Schlüssel durch eine einfach berechnete Funktion des grundlegenden gemeinsam genutzten Schlüssels variiert werden, sind die wiederholten Übertragungen leichter zu decodieren als wenn ein durch Zufallsgenerator generierter Schlüssel für jede nachfolgende Übertragung erstellt wird. Es ist deshalb von Vorteil, für jeden nachfolgenden Schlüssel einen zufallsgenerierten Schlüsselwert zu erstellen. Es ist außerdem von Vorteil, für jedes Dokument einen neuen Schlüssel zu erstellen, um die Sicherheit für das Dokument zu erhöhen. Wenn ein zufallsgenerierter Schlüssel für jedes Dokument verwendet wird, muss eine sichere Technik vorhanden sein, um diesen Schlüssel an den Empfänger mit einem Minimum an Systemaufwand zu verteilen.
- Ein Dokument kann sicher in einem verschlüsselten Dateisystem gespeichert werden, oder eine verschlüsselte Datei kann auf einem Server gespeichert werden, wo sie nur für diejenigen zugänglich ist, die über den Schlüssel zum Entschlüsseln verfügen. Aus den gleichen, oben beschriebenen Gründen sollte jedes Dokument mit einem zufallsgenerierten Schlüssel verschlüsselt werden, und es muss ein Mittel vorhanden sein, diesen Schlüssel an all jene zu verteilen, die das Dokument lesen müssen.
- Ein Volltextdokument kann während der Übertragung gesichert werden, indem die Transportschicht-Verbindung unter Verwendung von SSL oder TLS verschlüsselt oder indem ein verschlüsselter Data-Link-Layer-Tunnel unter Verwendung von IP Security Protocol (IPSec) oder dem Layer 2 Tunneling Protocol (L2TP) erstellt wird. Solche Schutzmethoden können jedoch nur auf verbindungsorientierte Systeme angewendet werden, in denen eine End-to-End-Sitzung zwischen dem Versender und dem Empfänger zum Zeitpunkt der Übertragung besteht. In beiden Fällen werden Techniken geboten, in denen der Verschlüsselungsschlüssel zum Verstecken der Daten in regelmäßigen Intervallen während der Dauer einer Sitzung geändert wird.
- Diese Ansätze (Verschlüsseln der Datei, des Dateisystems oder der Sitzung) sind in einigen Situationen nicht sinnvoll. In Situationen mit mehreren Agents (etwa ein Reihe von Zwischenstationen, wie Gateways, Transcoder und/oder Firewalls), die das Dokument nachfolgend bearbeiten müssen, kann es an jeder Zwischenstation nötig werden, Zugriff auf einige der verschlüsselten Datenelemente innerhalb einer Datei oder eines Dokuments zu haben. Dies beinhaltet, dass die Zwischenstationen den Schlüssel zum Entschlüsseln der Datei benötigen, wodurch der Schutz des Schlüssels zu einem logistischen Problem wird. Wenn die Verschlüsselung für das ganze Dokument ausgeführt wird, erhält eine Zwischenstation, die den Schlüssel empfängt, Zugriff auf das ganze Dokument anstatt auf die Elemente, die möglicherweise für diese spezielle Funktion erforderlich sind, womit das Potenzial für nicht berechtigte Agents vergrößert wird, auf schützenswerte Informationen zuzugreifen.
- Eine andere Problemsituation für vorhandene Techniken (wie etwa eine verschlüsselte Sitzung) ist die Übertragung von Dokumenten über Systeme zum Speichern und Weiterleiten, wie etwa Nachrichtenwarteschlangen (MQ), wobei der Versender und der Empfänger mit einem Server zum Speichern und Weiterleiten zu verschiedenen Zeiten verbunden sind und niemals End-to-End-Verbindungen miteinander erstellen. In einem MQ-System, selbst wenn die Verbindung zwischen dem Versender und dem MQ Server verschlüsselt sowie die Verbindung zwischen dem MQ Server und dem Empfänger verschlüsselt ist, wird das Dokument nichtsdestotrotz als Volltext auf dem MQ Server für einen gewissen Zeitraum gespeichert. Dadurch entsteht offensichtlich eine Sicherheitslücke, bis der Zugriff auf dem MQ Server streng kontrolliert wird. Für den Erzeuger von schützenswerten Informationen ist es nicht sinnvoll, den MQ Server (der möglicherweise mehrere solcher Server in einem Netzwerkpfad umfasst) zu verwenden, um den nötigen Schutz zu bieten, so dass auf das Volltextdokument nicht zugegriffen werden kann.
- Die vorhandenen, oben beschriebenen Ansätze (Verschlüsseln der Sitzung, Verschlüsseln des Dateisystems oder Verschlüsseln der Datei) sind nicht sinnvoll in einer Situation, in der das Ziel-Client-Gerät über eine begrenzte CPU-Leistung verfügt, so dass die notwendigen Operation für Verschlüsselung und Entschlüsselung nicht oder so langsam ausgeführt werden, dass dieses System keinen Nutzen bringt.
- Elektronischer Handel (e-commerce) wird in der heutigen Wirtschaft immer wichtiger. E-commerce oder e-business umfasst die sichere Übertragung von unternehmenswichtigen Daten an ausgewählte Empfänger über nicht sichere öffentliche Netzwerke, wie das Internet. Als Grundlage dient hier die Gesamtlebensdauer eines e-business Dokuments. Im allgemeinen Fall passiert das Dokument mehrere Hände oder Agents, die sich hinsichtlich der für sie wichtigen Daten voneinander unterscheiden. Ein Mitarbeiterdatensatz oder Dokument wird von einer Enterprise Resource Planning (ERP) Software erstellt. Dieses Mitarbeiterdokument ist ein Beispiel für ein Einzeldokument, das Elemente enthalten kann, für die unterschiedlicher Zugriffsschutz erforderlich ist. Das Dokument kann öffentliche Informationen enthalten, wie etwa den Namen des Mitarbeiters, die Mitarbeiternummer und das Einstellungsdatum. Diese Informationen müssen in einem Volltext vorhanden sein, weshalb das Dokument in einer Datenbank zur Verfügung gestellt wird. Das Mitarbeiterdokument kann auch Lohninformationen enthalten, die nur den Vorgesetzten zugänglich sein sollen. Oder es sind nur Gehaltsinformationen zu sehen, die der Gehaltsabteilung zugänglich gemacht werden sollen. Es kann sogar medizinische Daten enthalten, die nur dem medizinischen Personal zugänglich sein sollten. Zusätzlich dazu sollte der Mitarbeiter in der Lage sein, den gesamten Inhalt seines eigenen Dokuments anzuzeigen. Neben der Übertragung über das Netzwerk kann ein Dokument Agents passieren, die die Daten speichern und weiterleiten, wie etwa das Repository des Unternehmens, das übertragene und erhaltene Dokumente aus rechtlichen Gründen aufzeichnet und mit einer Zeitmarkierung versieht, ein E-Mail-System, ein E-Mail-Archiv, ein E-Mail-Screening-Programm auf einer Firewall und so weiter. Es ist nicht sinnvoll, allen Zwischenstationen in einem e-commerce-System zu trauen.
- Weiterhin ist es beim Erstellen des Dokuments nicht möglich festzustellen, wer letztlich die Benutzer (anfordernde Verwender oder Anwendungsprogramme) der Daten sein werden oder welche Zwischen-Agents die Daten bearbeiten können, weshalb die Daten gesichert werden müssen. Es ist nicht sinnvoll, ein benutzerdefiniertes Dokument für jeden potenziellen Konsumenten zu erstellen, oder ein benutzerdefiniertes Dokument bei jeder Anforderung durch einen anderen Konsumenten zu erstellen, in dem das benutzerdefinierte Dokument die Elemente enthalten würde, für die der Konsument über eine Berechtigung verfügt.
- Die unveröffentlichte US-Patentanmeldung (Seriennummer 09/240,387 vom 29.1.1999) mit dem Titel "Method, System, and Apparatus for Selecting Encryption Levels Based on Policy Profiling" bietet das Markieren von Datenelementen in Extensible Markup Language ("XML")-Dokumenten mit Sicherheitsinformationen auf Feld- oder Datensatzebene. ("XML" ist Warenzeichen des Massachusetts Institute of Technology). Durch Prüfen dieser Sicherheitsinformationen und Konsultieren der Verzeichniseinträge nach der Berechtigung eines Einzelnen zum Zugriff, unterdrückt ein Server, der auf eine Dokumentanfrage antwortet, alle Dokumentelemente, für die der Anforderer keine Berechtigung hat, bestimmt den Verschlüsselungsalgorithmus und die Schlüssellänge, die für das am meisten beschränkte Element benötigt wird (d.h. das verbleibende Element mit den höchsten Sicherheitsanforderungen) und verschlüsselt das gesamte gefilterte Dokument entsprechend. Diese Erfindung löst nicht das Problem verschlüsselter Dokumente mit mehreren berechtigten Empfängern und Agents, alle mit anderen Informationen (d.h. es wird nicht die Möglichkeit bestimmter Einzelpersonen oder Gruppen eingeschränkt, bestimmte Felder eines Dokuments zu lesen) Es wird auch nicht auf das Problem von Client-Geräten mit ungenügender Arbeitsleistung zum Verschlüsseln von empfangenen Dokumenten eingegangen.
- Mehrere Lösungen zum Verteilen von verschlüsseltem Schlüsselmaterial zusammen mit dem verschlüsselten Dokument, zu dem der Schlüssel gehört, sind nach Stand der Technik bekannt. Der Industriestandard SMIME, definiert durch IETF, wird verwendet, um E-Mail sicher zu übertragen. Dabei wird die Einkapselung von digital signierten Objekten und Verschlüsselungen geboten. (Siehe http://www.ietf.org/htm.charters/smime-charter.html im Internet für weitere Informationen). Die Software Lotus Notes® verwendet eine proprietäre Implementierung zur Schlüsselverteilung. (Siehe http://www.lotus.com im Internet für weitere Informationen. "Lotus Notes" ist eingetragenes Warenzeichen der Lotus Development Corporation). Keiner dieser vorhandenen Ansätze schlägt vor, einzelne Dokumentfelder zu verschlüsseln (und gleichzeitig andere Felder unverschlüsselt zu lassen). Es werden auch keine unterschiedlich berechtigten Anzeigegemeinschaften und die Verwendung mehrerer und/oder unterschiedlicher Verschlüsselungsalgorithmen und/oder Schlüssel für verschiedene Felder in einem Dokument vorgeschlagen, die verschiedene Sicherheitsstufen erfordern (es besteht auch keine Möglichkeit zum Verteilen mehrerer Schlüssel je Dokument).
- Entsprechend ist eine Technik erforderlich, mit der die Sicherheitsvorgaben effizient in einem verteilten Netzwerk unterstützt werden können, was viele komplexe Faktoren wie oben beschrieben umfasst.
- Zusammenfassung der Erfindung
- Ein Gegenstand der vorliegenden Erfindung ist eine Technik zum effizienten Unterstützen der Sicherheitsvorgaben in einer komplexen verteilten Netzwerkumgebung.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist eine Technik, mit der Daten während des gesamten Unternehmensprozesses und während der Übertragung zwischen Agents in einem Netzwerkpfad von einem Dokumentserver zu einem Dokumentempfänger geschützt werden können, wobei schützenswerte Informationen im Dokument nur den Agents angezeigt werden, die über diese Informationen verfügen müssen, während diese Informationen vor einer Offenlegung gegenüber anderen Teilnehmern geschützt werden.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist diese Technik, wobei jedes der verschiedenen Elemente eine andere Sicherheitsvorgabe verwenden kann, einschließlich der Möglichkeit zur Verwendung verschiedener Sicherheitsalgorithmen, Schlüssel und Schlüssellängen von einem Element zum anderen.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist diese Technik, wobei Stylesheets auf Dokumente angewendet werden, die in Markierungssprachen codiert sind, wie etwa die Extensible Markup Language.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist diese Technik, wobei ein anderer Schlüssel für jedes verschlüsselte Dokument oder Dokumentelement verwendet werden kann, wobei jeder verwendete Schlüssel an alle Dokumentempfänger verteilt werden kann, ohne dass eine Sicherheitslücke entsteht.
- Eine weiterer Gegenstand der vorliegenden Erfindung ist diese Schlüsselverteilungstechnik, die einen Verschlüsselungsschlüssel bietet, der wiederhergestellt werden kann, je nachdem, ob sich das verschlüsselte Dokument in einem Dateisystem oder in einer Warteschlange auf dem Weg zum Zielempfänger befindet.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist eine Technik zur selektiven Datenverschlüsselung, die den Umfang an Daten verringert, die auf einer bestimmten Sicherheitsstufe verschlüsselt werden müssen, wodurch die Sicherheitsleistung für Client-Geräte mit begrenzten Möglichkeiten vergrößert wird.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist eine Technik zur Wiederherstellung der Schlüssel, die zum Verschlüsseln der Dokumentelemente verwendet werden.
- Ein weiterer Gegenstand der vorliegenden Erfindung ist diese Technik in rückwärtskompatibler Form, damit vorhandene Stylesheets weiterhin einwandfrei funktionieren.
- Andere Gegenstände und Ziele der vorliegenden Erfindung werden im weiteren durch die Beschreibung und die Zeichnungen offengelegt.
- Um die weiteren Gegenstände in Übereinstimmung mit dem Ziel der Erfindung zu erzielen, bietet die Erfindung eine Methode, ein System und Computerprogramm zur Unterstützung der Sicherheitsvorgaben unter Verwendung von Stylesheets. In einem bevorzugten Ausführungsbeispiel umfasst diese Technik folgende Verfahren: Bereitstellen eines Input-Dokuments, Bereitstellen eines oder mehrerer gespeicherter Vorgabenunterstützungsobjekte, wobei jedes der gespeicherten Objekte eine Sicherheitsvorgabe bestimmt, die Null oder mehr Elementen des Input-Dokuments zugeordnet werden, Bereitstellen einer Document Type Definition (DTD) entsprechend dem Input- Dokument, wobei die DTD durch einen oder mehrere Verweise auf die ausgewählten gespeicherten Vorgabenunterstützungsobjekte erweitert wurde, Ausführen eines erweiterten Stylesheet-Prozessors, Empfangen eines verschlüsselten Output-Dokuments an einem Client-Gerät unter Erstellung eines Ergebnisdokuments und Zurücksenden des Ergebnisdokuments an das Client-Gerät. Das Ausführen des erweiterten Stylesheet-Prozessors umfasst vorzugsweise die folgenden Verfahren: Laden der DTD, Lösen der einen oder mehreren Verweise in der geladenen DTD; Erstellen der Vorgabenunterstützungsobjekte, die den aufgelösten Verweisen zugeordnet sind, Ausführen einer ausgewählten Zahl an Vorgabenunterstützungobjekten während der Anwendung eines oder mehrerer Stylesheets auf das Input-Dokument, wobei ein Ergebnis der Ausführung der ausgewählten ein Interims-Dokument ist, das die Ausführung wiedergibt; Generieren eines oder mehrerer zufallsgenerierter Verschlüsselungsschlüssel, Verschlüsseln ausgewählter Elemente des Interims-Dokuments, wobei ein bestimmter der erstellten, zufallsgenerierten Verschlüsselungsschlüssel verwendet werden kann, um eines oder mehrere der ausgewählten Elemente zu verschlüsseln, wobei Null oder mehrere Elemente des Interims-Dokuments unverschlüsselt bleiben, Verschlüsseln jedes einzelnen der zufallsgenerierten Verschlüsselungsschlüssel und Erstellen des verschlüsselten Output-Dokuments, wobei das verschlüsselte Output-Dokument die Null oder mehr anderen unverschlüsselten Elemente, die ausgewählten verschlüsselten Elemente sowie die verschlüsselten Verschlüsselungsschlüssel enthält. Das Ausführen des erweiterten Dokument-Prozessors umfasst die Entschlüsselung des empfangenen Output-Dokuments für einen einzelnen Benutzer oder Prozess auf dem Client-Gerät.
- Alternativ dazu kann die DTD durch ein Schema ersetzt werden.
- Das Interims-Dokument kann einen oder mehr Verschlüsselungs-Tags umfassen, die mehrere Elemente identifizieren, die verschlüsselt werden müssen. Das Input-Dokument kann in einer Extensible Markup Language (XML)-Schreibweise angegeben werden und das Output-Dokument kann in dieser XML-Schreibweise angegeben werden. Die Stylesheets können in einer Extensible Stylesheet Language (XSL)-Schreibweise angegeben werden.
- Die gespeicherten Vorgabenunterstützungsobjekte können weiterhin ausführbaren Code zum Überschreiben einer Methode sowie zum Beurteilen der Elemente des Input-Dokuments umfassen, wobei die Ausführung ausgewählter Elemente weiterhin das Überschreiben dieser Methode zum Beurteilen umfasst. Bei dieser Methode kann es sich um eine Wert-von Methode der XSL-Schreibweise handeln und das Überschreiben der Wert-von Methode kann durch Unterklassierung dieser Wert-von Methode erfolgen.
- Dieses Überschreiben kann weiterhin die Generierung von Verschlüsselungs-Tags und das Einfügen der generierten Verschlüsselungs-Tags in das Interims-Dokument umfassen, für die eine Verschlüsselung festgelegt wurde. Das Verschlüsseln ausgewählter Elemente kann weiterhin das Verschlüsseln derjenigen Elemente umfassen, die von Verschlüsselungs-Tags umgeben sind.
- Jedes der instantiierten Vorgabenunterstützungsobjekte kann weiterhin folgendes umfassen: eine Spezifikation einer Gemeinschaft, die über eine Berechtigung verfügt, die Elemente anzuzeigen, die der Sicherheitsvorgabe zugeordnet sind und eine Verschlüsselungsanforderung für die Elemente, die der Sicherheitsvorgabe zugeordnet. Diese Verschlüsselungsanforderung kann weiterhin die Spezifikation eines Verschlüsselungsalgorithmus umfassen. Oder die Verschlüsselungsanforderung kann weiterhin die Spezifikation eines Verschlüsselungsalgorithmus-Stärkewerts und/oder eine Spezifikation einer Verschlüsselungsschlüssellänge umfassen. Die Verschlüsselungsanforderung kann über einen Nullwert verfügen, um anzugeben, dass die angegebene Sicherheitsvorgabe keine Verschlüsselung erfordert.
- Das Verschlüsseln der Verschlüsselungsschlüssel kann weiterhin das Verschlüsseln einer anderen Version jedes Mitglieds der Null oder mehreren Gemeinschaften umfassen, die diesen Verschlüsselungsschlüssel verwendet und wobei jede der verschiedenen Versionen mit einem öffentlichen Schlüssel des Gemeinschaftsmitglieds verschlüsselt ist, für den die andere Version verschlüsselt worden war.
- Beim Verschlüsseln der ausgewählten Elemente kann ein Verschlüsselungsprozess für die Verschlüsselungsblockverkettung verwendet werden.
- Diese Technik kann weiterhin folgendes umfassen: Erstellen einer Schlüsselklasse für jede eindeutige Gemeinschaft, wobei die Schlüsselklasse jedem der verschlüsselten Elemente zugeordnet wird, für die die Gemeinschaft die Berechtigung zur Anzeige innehat und wobei die Schlüsselklasse folgendes umfasst: (1) eine stärkste Verschlüsselungsanforderung der zugeordneten verschlüsselten Elemente; (2) einen Identifier für jedes Mitglied der eindeutigen Gemeinschaft und (3) eine der verschiedenen Versionen des verschlüsselten Verschlüsselungsschlüssel für jedes der identifizierten Mitglieder der Gemeinschaft. Das Generieren des einen oder der mehreren zufallsgenerierten Verschlüsselungsschlüssel kann einen bestimmten zufallsgenerierten Verschlüsselungsschlüssel für jede einzelne Schlüsselklasse verwenden, wobei jede der verschiedenen Versionen in einer bestimmten Schlüsselklasse vom generierten Verschlüsselungsschlüssel verschlüsselt ist, der für die Schlüsselklasse generiert wurde. Die Verschlüsselung der ausgewählten Elemente kann diesen einen der bestimmten zufallsgenerierten Verschlüsselungsschlüssel verwenden, die für die Schlüsselklasse generiert wurden, der das ausgewählte Element zugeordnet wurde.
- Das Entschlüsseln des Output-Dokuments kann weiterhin folgendes umfassen: Bestimmen von Null oder mehr der Gemeinschaften, der einer der einzelnen Benutzer oder Prozesse als Mitglied angehört; Entschlüsseln für jede der ermittelten Gemeinschaften der unterschiedlichen Version des zufallsgenerierten Verschlüsselungsschlüssels, der verschlüsselt wurde unter Verwendung des öffentlichen Schlüssels dieses Mitglieds, wobei die Entschlüsselung einen privaten Schlüssel des einen Mitglieds verwendet, der dem öffentlichen Schlüssel zugeordnet ist, der wiederum zur Verschlüsselung verwendet wurde, und Entschlüsseln der ausgewählten verschlüsselten Elemente im Output-Dokument unter Verwendung der entschlüsselten Schlüssel, wobei die ausgewählten verschlüsselten Elemente diejenigen sind, die für eine der festgelegten Gemeinschaften verschlüsselt wurden. Die Bereitstellung des Output-Dokuments kann weiterhin die Bereitstellung der entschlüsselten ausgewählten sowie der anderen nicht entschlüsselten Elemente umfassen.
- Oder das Entschlüsseln des Output-Dokuments kann weiterhin folgendes umfassen: Festlegen von Null oder mehreren Schlüsselklassen, die den einzelnen Benutzer oder den Prozess als ein Mitglied identifizieren, Entschlüsseln für jede der festgelegten Schlüsselklassen der unterschiedlichen Version der zufallsgenerierten Verschlüsselungsschlüssel in der Schlüsselklasse, die unter Verwendung des öffentlichen Schlüssels dieses einen Mitglieds verschlüsselt wurde, wobei die Entschlüsselung einen privaten Schlüssel des einen Mitglieds verwendet, der dem öffentlichen Schlüssel zugeordnet, der zur Verschlüsselung verwendet wurde, wobei ein entschlüsselter Schlüssel erstellt und Entschlüsseln der ausgewählten verschlüsselten Elemente im Output-Dokument unter Verwendung der entschlüsselten Schlüssel, wobei die ausgewählten der entschlüsselten Elemente diejenigen sind, die für die Schlüsselklasse entschlüsselt wurden. Die Bereitstellung kann weiterhin die Bereitstellung der entschlüsselten ausgewählten Elemente sowie der anderen nicht entschlüsselten Elemente umfassen.
- Die Bereitstellung kann weiterhin die Bereitstellung einer Ersatztextnachricht für jede der ausgewählten verschlüsselten Elemente im Output-Dokument umfassen, die nicht durch die Entschlüsselung des Output-Dokuments entschlüsselt werden können.
- Die eingefügten Verschlüsselungs-Tags können entweder Werte der Elemente oder Werte und Tags der Elemente umfassen.
- Die vorliegende Erfindung wird nun mit Verweis auf die folgenden Zeichnungen beschrieben, wobei die Referenznummer auf das gleiche Element verweisen.
- KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist ein Blockdiagramm einer Computer Workstation-Umgebung, in der die vorliegende Erfindung ausgeführt werden kann; -
2 ist ein Diagramm einer vernetzten Computerumgebung, in der die vorliegende Erfindung ausgeführt werden kann; -
3 zeigt eine Document Type Definition (DTD), die mit Sicherheitsvorgabeninformationen erweitert wurde, entsprechend des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung; -
4a –4c zeigen ein Beispiel eines Mitarbeiterdokuments, mit dem die vorliegende Erfindung arbeiten kann, eine Interims-Darstellung des Mitarbeiterdokuments nach Erweiterung durch Sicherheitsinformationen und das gleiche Dokument nach Ausführung der Verschlüsselung; -
5a bis5c zeigen Beispiele für Datensatz- oder Objektformate, die mit den bevorzugten Ausführungsbeispielen der vorliegenden Erfindung verwendet werden können; -
6 gibt einen Überblick der Komponenten, die in den bevorzugten Ausführungsbeispielen der vorliegenden Erfindung verwendet werden sowie die allgemeinen Datenflüsse zwischen diesen; und -
7 bis12 zeigen Flussdiagramme mit der Logik, mit der die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung ausgeführt werden können. - BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
1 zeugt eine repräsentative Workstation Hardware-Umgebung, in der die vorliegende Erfindung ausgeführt werden kann. Die Umgebung aus1 umfasst eine repräsentative Einzelbenutzer-Computer Workstation10 , wie etwa einen Personal Computer, einschließlich damit verbundener peripherer Geräte. Die Workstation10 umfasst einen Mikroprozessor12 und einen Bus14 zur Verbindung und Ermöglichung der Kommunikation zwischen dem Mikroprozessor12 und den Komponenten der Workstation10 in Übereinstimmung mit bekannten Techniken. Die Workstation10 umfasst typischerweise einen Benutzerschnittstellen-Adapter16 , der den Mikroprozessor12 über den Bus14 mit einem oder mehreren Schnittstellengeräten verbindet, wie etwa einer Tastatur18 , Maus20 und/oder anderen Schnittstellengeräten22 , bei denen es sich um ein beliebiges Schnittstellengerät handeln kann, wie etwa ein Touchscreen, digitalisiertes Eingabepad usw. Der Bus14 verbindet ebenfalls ein Anzeigegerät24 , wie etwa einen LCD-Bildschirm oder Monitor mit dem Mikroprozessor12 über einen Anzeigeadapter26 . Der Bus14 verbindet ebenfalls den Mikroprozessor12 mit dem Speicher28 und einem Langzeitspeicher30 , der eine Festplatte, ein Diskettenlaufwerk, ein Bandlaufwerk usw. umfassen kann. - Die Workstation
10 kann mit anderen Computern oder einem Netzwerk aus Computern kommunizieren, beispielsweise über einen Übertragungskanal oder ein Modem32 . Alternativ dazu kann die Workstation10 unter Verwendung einer drahtlosen Schnittstelle an32 , wie etwa einer CDPD (Cellular Digital Packet Data)-Karte, kommunizieren. Die Workstation10 kann anderen Computern in einem LAN (Local Area Network) oder in einem WAN (Wide Area Network) zugeordnet werden, oder es kann sich bei der Workstation10 um einen Client in einer Client/Server-Anordnung mit einem anderen Computer handeln usw. All diese Konfigurationen sowie die entsprechende Kommunikationshardware und Software sind Fachleuten bekannt. -
2 zeigt ein Datenverarbeitungsnetzwerk40 , in dem die vorliegende Erfindung ausgeführt werden kann. Das Datenverarbeitungsnetzwerk40 kann eine Vielzahl an Einzelnetzwerken umfassen, wie etwa ein drahtloses Netzwerk42 und ein Netzwerk44 , wobei jedes eine Vielzahl an einzelnen Workstations10 umfassen kann. Zusätzlich dazu können, wie es den Fachleuten bekannt ist, ein oder mehrere LAN inbegriffen sein (nicht gezeigt), wobei ein LAN eine Vielzahl an intelligenten Workstations umfassen kann, die an einen Host-Prozessor gekoppelt sind. -
2 zeigt weiterhin, dass die Netzwerk42 und44 Großrechner oder Server umfassen können, wie etwa einen Gateway Computer46 oder einen Anwendungsserver47 (der auf ein Daten Repository48 zugreifen kann). Ein Gateway Computer46 dient als Eingangspunkt für jedes Netzwerk44 . Das Gateway46 kann vorzugsweise mit einem anderen Netzwerk42 gekoppelt werden, mittels eines Kommunikations-Links50a . Das Gateway46 kann ebenfalls direkt mit einer oder mehreren Workstations10 gekoppelt werden, unter Verwendung eines Kommuniaktions-Links50b ,50c . Der Gateway Computer46 kann implementiert werden, unter Verwendung einer Enterprise Systems Architecture/370, erhältlich bei IBM, eines Enterprise Systems Architecture/390 Computers usw. Je nach Anwendung kann ein Computer mittlerer Größe, wie etwa ein Application System/400 (auch bekannt als AS/400) eingesetzt werden. ("Enterprise Systems Architecture/370" ist Warenzeichen von IBM; "Enterprise Systems Architecture/390", "Application System/400" und "AS/400" sind eingetragene Warenzeichen von IBM). - Der Gateway Computer
46 kann ebenfalls ein Speichergerät (wie etwa ein Daten Repository48 ) umfassen. Weiterhin kann das Gateway direkt oder indirekt mit einer oder mehreren Workstations10 gekoppelt werden. - Fachleuten dürfte klar sein, dass sich der Gateway Computer
46 in großer geographischer Entfernung vom Netzwerk42 befinden kann und ebenfalls können sich die Workstations10 in großer Entfernung von den Netzwerken42 und44 befinden. - Beispielsweise kann sich das Netzwerk
42 in Kalifornien befinden, während das Gateway in Texas befindlich ist, oder eine oder mehrere Workstations können sich in New York befinden. Die Workstations10 können mit dem drahtlosen Netzwerk42 unter Verwendung eines Netzwerkprotokolls, wie etwa einem Transmission Control Protocol/Internet Protocol ("TCP/IP"), über eine Vielzahl an alternativen Verbindungsmedien verbunden sein, wie etwa einem Mobiltelefon, Funknetzwerken, Satellitennetzwerken usw. Das drahtlose Netzwerk42 ist vorzugsweise mit dem Gateway46 unter Verwendung einer Netzwerkverbindung50a verbunden, wie etwa TCP oder UDP (User Datagram Protocol) über IP, X.25, Frame Relay, ISDN (Integrated Services Digital Network), PSTN (Public Switched Telephone Network) usw. Die Workstations10 können alternativ dazu direkt mit dem Gateway46 über Einwählverbindung50b oder50c verbunden sein. Weiterhin können das drahtlose Netzwerk42 und44 mit einem oder mehreren anderen Netzwerken (nicht gezeigt) auf analoge Weise, wie in2 gezeigt, verbunden sein. - Auf Software-Programmierungscode entsprechend der vorliegenden Erfindung wird typischerweise über den Mikroprozessor
12 des Servers47 oder über ein Zwischenmittel, wie etwa Gateway46 (im folgenden einfach als Zwischenmittel bezeichnet) – und über Workstation10 in mehreren Ausführungsbeispielen der vorliegenden Erfindung – zugegriffen, von Langzeitspeichermedien30 verschiedener Art, wie etwa ein CD-ROM-Laufwerk oder ein Festplattenlaufwerk. Der Software-Programmierungscode kann sich auf jeder bekannten Art von Medium zur Verwendung in einem Datenverarbeitungssystem befinden, wie etwa einer Diskette, einer Festplatte oder CD-ROM. Der Code kann auf solchen Medien verteilt werden oder an Benutzer vom Speicher oder vom Speicher eines Computersystems über ein Netzwerk auf andere Computersysteme verteilt werden, zur Verwendung durch die Benutzer der anderen Computersysteme. Alternativ dazu kann der Programmierungscode im Speicher28 enthalten sein, auf den der Mikroprozessor12 unter Verwendung des Busses14 zugreifen kann. Die Techniken und Methoden zur Eingabe von Software-Programmierungscode in Speicher auf physischen Medien und/oder die Verteilung von Softwarecode über Netzwerke sind den Fachleuten bekannt und werden im folgenden nicht weiter ausgeführt. - Ein Benutzer der vorliegenden Erfindung kann seinen Computer mit einem Server unter Verwendung einer Verbindung mit oder ohne Draht verbinden. Verdichtete Verbindungen sind solche, die physische Medien verwenden, wie etwa Kabel und Telefonleitungen, während drahtlose Verbindungen Medien wie Satelliten-Links, Funkwellen und Infrarot verwenden. Viele Verbindungstechniken können mit diesen verschiedenen Medien verwendet werden, beispielsweise: Verwenden des Computermodems zur Erstellung einer Verbindung über eine Telefonleitung, verwenden einer LAN-Karte, wie etwa Token Ring oder Ethernet, Verwenden eines Mobilmodems zur Erstellung einer drahtlosen Verbindung usw. Bei dem Computer des Benutzers kann es sich um jede Art von Computer handeln, einschließlich Laptop, Handgerät oder Mobilcomputer, fest installierte Geräte, Desktop Computer, Großrechner usw., die über Verarbeitungsmöglichkeiten (und optional über Kommunikationsmöglichkeiten) verfügen. Beim entfernten Server und dem Zwischenmittel kann es sich um einen der verschiedenen Computer handeln, die über Verarbeitungs- und Kommunikationsmöglichkeiten verfügen. Diese Techniken sind den Fachleuten bekannt, und die Hardwaregeräte sowie die Software zu deren Einsatz sind bereits erhältlich. Im folgenden wird der Computer des Benutzers als "Workstation", "Gerät" oder "Computer" bezeichnet und die Verwendung einer dieser Begriffe oder des Begriffs "Server" bezieht sich auf jede Art der oben beschriebenen Computergeräte.
- In den bevorzugten Ausführungsbeispielen wird die Erfindung als ein oder mehrere Computer-Softwareprogramme implementiert. Die Software kann auf einem Server, auf einer Workstation und/oder auf einem Zwischenmittel in einem Netzwerk als ein oder mehrere Module (auch als Code-Subroutinen oder "Objekte" in der objektorientierten Programmierung bezeichnet) ausgeführt werden, die bei Anforderung aufgerufen werden. Der Server oder das Zwischenmittel können Services in einer Internet-Umgebung, in einem firmeneigenen Intranet oder Extranet oder in jeder anderen Netzwerkumgebung bieten.
- Die vorliegende Erfindung definiert eine neuartige Technik zur selektiven Unterstützung von Sicherheitsvorgaben in einer verteilten Netzwerk-Computer-Umgebung unter Verwendung von Stylesheet-Verarbeitung. Ein vorgabenorientierter, erweiterter Stylesheet-Prozessor wird verwendet, um ein selektiv verschlüsseltes Dokument mit Schlüsselverteilungsmaterial zu erstellen, so dass durch Verwendung eines erweiterten Dokumentprozessors ein Agent ein Document Object Model ("DOM") wiederherstellen kann, das nur die Informationselemente enthält, für die der Agent über eine Berechtigung verfügt. In den bevorzugten Ausführungsbeispielen handelt es sich bei dem erweiterten Stylesheet-Prozessor um einen Extensible Stylesheet Language ("XSL")-Prozessor, das Dokument ist ein XML-Dokument und der erweiterte Dokument-Prozessor ist eine erweiterte XML-Verarbeitungsengine. Auf diese Weise codierte Dokumente unterstützen verbesserte Gruppenarbeitsmodelle, wodurch die Benutzer leichteren Zugang zu Informationen erhalten, für die sie über eine Berechtigung verfügen, während sensible Daten vor Agents ohne Berechtigung geschützt werden. Die vorliegende Erfindung bietet weiterhin einen neuartigen, effizienten Weg zur Wiederherstellung von Daten aus codierten Dokumenten entsprechend den Erfindungstechniken, die hier offengelegt werden.
- Eine Anzahl von Begriffen, die in dieser Beschreibung verwendet werden, sollen im folgenden definiert werden.
- • "Gemeinschaft" bezeichnet die Sammlung
an Benutzern, auf die eine gegebene Berechtigungsvorgabe Anwendung
findet, hinsichtlich einer bestimmten Klasse von Informationen.
Bei dem zuvor beschriebenen Beispiel des Mitarbeiterdatensatzes
sind "Alle Vorgesetzten" oder "Mitarbeiter plus
medizinisches Personal" Beispiele
für potenzielle
Gemeinschaften. In den bevorzugten Ausführungsbeispielen wird eine
Gemeinschaft durch die Distinguished Names (DN) von einer oder mehreren
Einzelpersonen und/oder Gruppen in der Gemeinschaft wiedergegeben.
Für jeden
DN besteht ein entsprechendes X.509 Zertifikat. In den bevorzugten
Ausführungsbeispielen
der vorliegenden Erfindung wird, sobald eine Gruppe durch ein einzelnes
Zertifikat dargestellt werden kann, das Gruppenzertifikat anstelle
aller anderen einzelnen Zertifikate der einzelnen Gruppenmitglieder
bevorzugt (was mit Verweis auf
7A noch ausführlich beschrieben werden wird). - • "Elementsichtbarkeit" ist eine Vorgabe,
die definiert, für
wen (wobei es sich um Menschen und/oder Anwendungsprogramme oder
Prozesse handeln kann) ein durch eine DTD (oder alternativ dazu
durch ein Schema) definiertes Element sichtbar gemacht werden soll
und unter welchen Bedingungen. Entsprechend der bevorzugten Ausführungsbeispiele
definiert eine Sichtbarkeitsvorgabe (
1 ) die erforderliche minimale Verschlüsselungsstärke für das Element und (2) die Gemeinschaft, die über eine Berechtigung zur Ansicht des Elementwerts verfügt. "Minimale Verschlüsselungsstärke" kann in einen bestimmten Verschlüsselungsalgorithmus und eine Schlüssellänge aufgelöst werden (beispielsweise durch Konsultieren eines Verzeichnisses oder einer Suchtabelle usw.). Verschlüsselungen, die stärker als erforderlich sind, können einer Elementsichtbarkeitsvorgabe entsprechen, eine Verschlüsselung, schwächer als erforderlich ist, ist jedoch niemals ausreichend. (Es ist zu beachten, dass die bevorzugten Ausführungsbeispiele die dynamische Bestimmung eines Algorithmus und einer Schlüssellänge beschreiben, um die minimale Verschlüsselungsstärke zu erzielen, die in einem Vorgabenobjekt angegeben wurde. In einem alternativen Ansatz dazu können der Algorithmus-Identifier und die Schlüssellänge direkt im Vorgabenobjekt angegeben werden, ohne dass vom Gegenstand der Erfindung abgewichen wird. In diesem Fall kann eine Bestimmung, aufgrund der mehrere Algorithmen und zugeordnete Schlüssellängen eine stärkere Verschlüsselung erhalten, vorgenommen werden, indem eine Suchtabelle verwendet wird, in der die pertinenten Werte in einer bestimmten Stärkereihenfolge angeordnet werden, durch Codieren der relativen Stärkewerte direkt in einer Implementierung usw. Es sollte den Fachleuten klar sein, auf welche Weise die Beschreibungen der bevorzugten Ausführungsbeispiele zu ändern sind, um diesen alternativen Ansatz zu nutzen.) - • "Gruppe" bezeichnet eine Sammlung von einem oder mehreren Einzelpersonen oder Prozessoren (beispielsweise Anwendungseinheiten), die berechtigte Mitglieder einer Gemeinschaft sind. Vorzugsweise wird eine Gruppe durch ein benanntes Objekt in einem LDAP-Verzeichnis dargestellt. (Alternativ dazu können andere Speicher-Repositories verwendet werden). Die gespeicherten Informationen für eine bestimmte Gruppe umfassen folgendes: (1) Das X.509 Zertifikat der Gruppe, (2) einen Zeiger (oder Identifier) zur Identifikation eines Gruppenverwalters oder Verwalters und (3) einen Zeiger für jedes Gruppenmitglied. (Die X.509 Zertifikate für jedes Gruppenmitglied werden dann in den gespeicherten Mitgliederinformationen festgehalten und es wird auf sie verwiesen). Wenn ein Proxy oder Agent über eine Berechtigung verfügt, im Namen der Gruppe oder einzelner Gruppenmitglieder zu handeln, wird der Proxy ebenfalls als Gruppenmitglied identifiziert.
- • "Gruppenverwalter" bezeichnet einen Prozess, bei dem der private Schlüssel von jedem Mitglied gespeichert wird, damit nicht jedes einzelne Mitglied seinen privaten Schlüssel speichern muss. Der Verwalter wird während der Verschlüsselung von sicherem Dokumentinhalt kontaktiert, der an ein Gruppenmitglied geht, und bietet Informationen zur Verwendung im Verschlüsselungsprozess. Jede Gruppe verfügt über mindestens einen Verwalter. Es können auch mehrere Verwalter für eine einzelne Gruppe identifiziert werden, um Hot Backups und/oder Ladeverteilungen vorzunehmen, wobei jeder dieser Verwalter über die gleichen Verarbeitungsprivilegien für eine bestimmte Gruppe verfügt.
- US-Patent
US 6 585 778 B1 mit dem Titel "Enforcing Data Policy Using Stylesheet Processing" legt eine Technik zur Steuerung des Dokumentinhalts offen, unter Verwendung gespeicherter Vorgabeninformationen. Diese Erfindung, im Folgenden die "Referenz-Erfindung" genannt, wird hier als Referenz angegeben. Die vorliegende Erfindung definiert eine Erweiterung der gespeicherten Vorgabenobjekte, die in dieser Referenz-Erfindung definiert sind, wobei die gespeicherten Vorgabenobjekte weiterhin Attribute umfassen, die die oben beschriebenen Informationen zur Elementsichtbarkeit angeben. Diese Erweiterungen werden detaillierter unter Verweis auf7A bis7C beschrieben. - Der zuvor beschriebene Mitarbeiterdatensatz wird verwendet, um die Vorteile sowie die Implementierung der vorliegenden Erfindung zu beschreiben. In diesem Beispiel verfügt ein Unternehmen über eine Datenbank (oder ein anderes Repository) mit Informationen zu seinen Mitarbeitern. Weiterhin umfasst der für jeden Mitarbeiter gespeicherte Datensatz den Namen, die Nummer, das Einstellungsdatum, den derzeitigen Lohn sowie sämtliche medizinischen Informationen zu dem Mitarbeiter.
3 zeigt ein Beispiel für eine DTD300 , die zur Beschreibung der Daten im Datensatz für einen Mitarbeiter dieses Unternehmens verwendet werden kann. Wie in Fachkreisen bekannt, ist eine DTD eine Definition der Struktur eines XML-Dokuments und ist in einer Datei codiert, die durch einen XML-Parser verarbeitet werden soll, zusammen mit der Datei, in der sich ein bestimmtes XML-Dokument befindet. Die DTD teilt dem Parser mit, wie das Dokument interpretiert werden soll, das entsprechend der DTD erstellt wurde. (Es ist zu beachten, dass die Erfindung unter Verweis aus Informationen beschrieben wird, die in einer DTD angegeben. Die Informationen können jedoch ebenfalls in anderer geeigneter semantischer Form festgelegt werden. Vor allem die Schemata, die derzeit durch das World Wide Web Consortium standardisiert werden, können anstelle der DTD verwendet werden. Siehe "XML Schema Part 1: Structures", was sich im Internet unter http://www.w3.org/TR/xmlschema-1/ befindet, um weitere Informationen zu erhalten. In diesem Dokument gemachte Verweise auf eine DTD sollen so verstanden werden, dass hier ebenfalls Schemata anwendbar sind.) Diese DTD300 umfasst Einträge für den Mitarbeiternamen ("empl_name")350 , der Seriennummer ("ser_nbr")360 , "date_of_hire"370 , "curr_salary"380 und medical_condition"390 . - Diese DTD
300 wurde durch Informationen zu Datenvorgaben erweitert, die entsprechend der vorliegenden Erfindung Informationen zur Elementsichtbarkeit enthalten, die wiederum verwendet werden können, um die zugeordneten Dokumentelemente selektiv zu verschlüsseln, womit der Zugriff auf die Werte der Dokumentelemente beschränkt wird. Wie durch die Referenz-Erfindung definiert, können Datenvorgaben (durch die vorliegende Erfindung um die Elementsichtbarkeit erweitert) den Datenstrukturen eines Dokuments zugeordnet werden, indem die DTD für das Dokument zur Angabe der URI (Uniform Resource Indicator) für jede anwendbare Vorgabe geändert wird. Es werden drei verschiedene Datenvorgaben herangezogen, jede mit einer anderen Elementsichtbarkeit, um das Beispiel des Mitarbeiterdatensatzes näher zu erläutern. Jede Vorgabe wird nun zusammen mit den angegebenen Informationen zur Elementsichtbarkeit in den gespeicherten Vorgabenobjekten beschrieben. - Die verwendete Vorgabe für Mitarbeitername, Seriennummer und Einstellungsdatum bietet unbeschränkten Zugriff auf diese Datenelemente. Datenvorgabeninformationen zur Unterstützung dieses unbeschränkten Zugriffs (sowie jede andere Vorgabe, die mit dieser Erfindung verwendet wird) wird vorzugsweise in einer Verzeichnisdatenbank gespeichert, wie etwa eine LDAP-Datenbank. Die gespeicherte Vorgabe kann dann durch Senden einer Nachricht an die Datenbank-Engine abgerufen werden, die die URI der gewünschten Informationen enthalten muss, wie im folgenden noch detaillierter beschrieben. Eine Beispiel-URI, wie sie zum Abrufen der "unbeschränkten" Vorgabeninformationen für dieses Beispiel verwendet werden kann, wird in Element
332 gezeigt. Es ist zu beachten, dass XML-Parametereinheiten in dieser Beispiel-DTD300 ersetzt wurden, wobei die relativ langen URIs321 ,322 ,332 als der Wert angegeben werden, der kürzeren Einheitennamen311 ,321 ,331 zugeordnet wird. Diese kürzeren Namen werden dann in den Attributlistenerklärungen verwendet, beispielsweise "%unrestricted"355 in der Erklärung empl_name350 . Dieser Ansatz bietet den Vorteil einer verringerten Zahl an Zeichen in der DTD, wenn eine URI wiederholt verwendet wird und die Attributlistenerklärungen werden intuitiver gestaltet und leichter zu lesen. (Offensichtlich können die URIs alternativ dazu in der DTD repliziert werden, ohne dass vom Gegenstand der vorliegenden Erfindung abgewichen wird). Es ist zu beachten, dass die URIs312 ,322 ,332 als Relative Distinguished Names (RDN) für die gespeicherten Datenvorgabeninformationen gezeigt wurden. Diese RDN sind einfach eindeutige Identifier zum Speichern des Objekts in einem Verzeichnis. Alternative Speichertechniken (in Identifikationen davon) können verwendet werden, ohne vom Gegenstand der vorliegenden Erfindung abzuweichen. - Da der Zugriff auf den Mitarbeiternamen, die Seriennummer und das Einstellungsdatum unbeschränkt ist, werden die Werte dieser Dokumentelemente nicht im Dokument verschlüsselt, das an einen Dokumentanforderer ausgeben wird. Somit werden die minimale Sicherheitsstärke und Gemeinschaftsattribute des an Speicherort
332 gespeicherten Vorgabenobjekts vorzugsweise auf Null gesetzt (um anzugeben, dass eine Verschlüsselung nicht notwendig ist). - Eine weitere Vorgabe, die beim Mitarbeiterdatensatz verwendet wird, dient der Beschränkung des Zuriffs auf den derzeitigen Lohn des Mitarbeiters auf den Mitarbeiter selbst sowie auf die Vorgesetzten im Unternehmen und Mitarbeiter der Personalabteilung des Unternehmens. Die URI für diese Vorgabe erhält den Einheitennamen "empl_mgr_hr"
311 und wird angegeben385 in der Attributlistenankündigung für curr_salary380 . Das gespeicherte Vorgabenobjekt an der URI312 gibt die Verschlüsselungsstärke an, die zum Schutz der Lohninformationen dieses Mitarbeiters vor unberechtigtem Zugriff geeignet ist. Das Gemeinschaftsattribut im Vorgabenobjekt umfasst vorzugsweise drei Distinguished Name Werte, einen für den einzelnen Mitarbeiter, einen für die Gruppe der Vorgesetzten und einen für die Gruppe mit allen Mitarbeitern der Personalabteilung. (Alternativ dazu kann ein separater DN-Eintrag für jedes Mitglied der Vorgesetztengruppe und/oder für jedes Mitglied der Personalabteilung angegeben werden, doch wie zuvor erklärt, ist es von Vorteil, alle Mitglieder einer Gruppe durch einen Gruppen-DN darzustellen, wenn der Gruppen-DN zur Verfügung steht.) - Die dritte Vorgabe in diesem Beispiel wird für die medizinischen Informationen verwendet. Der Zugriff zu diesen Informationen soll nur auf den Mitarbeiter beschränkt werden, auf den sich diese Informationen beziehen, sowie auf jeden Mitarbeiter in der medizinischen Abteilung. Informationen zur Unterstützung dieser Vorgabe (einschließlich der Beschränkungen der Elementsichtbarkeit) mit dem Einheitennamen "empl_medical"
321 werden an der URI322 gespeichert. Die Vorgabe wird dem Element medical_condition390 unter Angabe395 der URI322 über den Einheitennamen321 zugeordnet. Das gespeicherte Vorgabenobjekt an der URI322 gibt die Verschlüsselungsstärke an, die geeignet ist, um die medizinischen Informationen über den Mitarbeiter ausreichend zu schützen, und das Gemeinschaftsattribut im Vorgabenobjekt umfasst vorzugsweise zwei Distinguished Names Werte, einen für den einzelnen Mitarbeiter und einen für die Gruppe mit allen Mitarbeitern der medizinischen Abteilung. (Wie oben beschrieben, kann alternativ dazu ein separater DN-Eintrag für jedes Mitglied der medizinischen Gruppe angegeben werden, ohne dass vom Gegenstand der Erfindung abgewichen wird.) - Die verwendete Lösung in den bevorzugten Ausführungsbeispielen – Angabe einer Datenvorgaben-URI innerhalb einer Attributlistenankündigung eines Datenelements – ermöglicht die Codierung selbst hochkomplexer Anordnungen mit einer unterschiedlichen Vorgabe und unterschiedlicher Elementsichtbarkeit (auch wenn diese Situation tatsächlich sehr selten eintritt). Wie bei der Beispiel-DTD in
3 zu sehen ist, werden für die bevorzugten Ausführungsbeispiele Standard-DTD-Markups mit einer speziellen Konvention verwendet. Auf diese Weise können Prozesse ohne Kenntnis der Vorgabenkonvention dennoch absolut gültige XML-Syntax anzeigen, die alle Standardvalidierungstests besteht, wenn das entsprechende Dokument Vorgaben-Markups enthält. Ein vorteilhafter Nebeneffekt davon ist, dass wenn das durch eine Datenquelle erstellte Dokument eine URI DTD Referenz verwendet (wie etwa Element405 des Dokuments400 in4A , das auf den Speicherort der Beispiel-DTD300 in3 verweist), ein firmeneigener Administrator für die Datenvorgaben dafür sorgen kann, dass Beschränkungen der Datenvorgaben und Elementsichtbarkeit auf solche generierten Dokumente verwendet werden, indem einfach die Referenz-DTD geändert wird (um Vorgabendefinitionen und Elementsichtbarkeit hinzuzufügen oder möglicherweise, um die bereits hinzugefügten Vorgabendefinitionen und Elementsichtbarkeit zu ändern). Es muss keine Änderung am Code zur Generierung der XML-Quelldokumente an der Datenquelle vorgenommen werden, damit die geeignete Verschlüsselung sowie Zugriffsbeschränkungen Anwendung finden. - Die Konvention gibt vor, dass DTD-Vorgaben-Markup der bevorzugten Ausführungsbeispiele ein festes Attribut (siehe beispielsweise
354 in3 ) von einem Vorgabennamensbereich (siehe352 in3 ) verwendet, um die URI der Vorgabe anzugeben, die auf ein XML-Element anzuwenden ist. Wie den Fachleuten bekannt ist, ermöglicht die Verwendung eines Namensbereich-Präfixes die Unterscheidung zwischen Tags, die andernfalls als Duplikate angesehen werden könnten. Durch das Setzen eines festen Wertes wird sichergestellt, dass der Wert dieses Attributs (wie etwa der Wert355 von Attribut353 ) dem XSL-Prozessor zur Verfügung steht, sobald dieser das Element (etwa das Element empl_name351 ) verarbeitet. -
4A zeigt ein einfaches Quelldokument400 , als Ergebnis eines Abrufens der Informationen im Mitarbeiterdatensatz für einen bestimmten Mitarbeiter (identifiziert durch den Namen bei402 und durch die Seriennummer bei404 ), bevor die Verarbeitung entsprechend der vorliegenden Erfindung stattgefunden hat. Dieses Quelldokument400 enthält Volltextinformationen für alle Dokumentelemente des Mitarbeiterdatensatzes, einschließlich schützenswerter Elemente wie "curr_salary"408 und "medical_condition"410 (die verschlüsselt werden müssen, unter Verwendung der gespeicherten Vorgabenobjekte, angegeben bei385 und395 in3 ). Die Beispiel-DTD in3 würde dann durch einen erweiterten XSL-Prozessor verwendet, wie unten beschrieben, um die gewünschten Regeln für die Datenvorgabe und Elementsichtbarkeit anzuwenden, um eine selektiv verschlüsselte Version dieses Dokuments400 vor Veröffentlichung des verschlüsselten Dokuments oder vor Versendung des verschlüsselten Dokuments zu erstellen. Es ist zu beachten, dass weder Vorgaben-Markup noch Referenzen für die Vorgabe im Dokument400 bestehen und somit, wie oben beschrieben, kein Bedarf besteht, den XML-Emitter der dokumentgenerierenden Anwendung an der Datenquelle zu ändern. - In
4C wird ein repräsentatives Beispiel eines selektiv verschlüsselten Dokuments mit Informationen aus dem Quelldokument400 an450 gezeigt. Auf der Grundlage der Beispiele für Vorgabe und Elementsichtbarkeit, beschrieben unter Verweis auf3 , wenn der anfordernde Benutzer der Mitarbeiter402 ist, ist dieser Benutzer in der Lage, die geschützten Werte für curr_salary408 und medical_condition410 in den verschlüsselten Feldern452 ,454 (wobei diese Felder452 ,454 lediglich Werte zur übersichtlichen Darstellung enthalten) des Dokuments450 wiederherzustellen (das heißt zu entschlüsseln), das als Reaktion auf seine Anforderung ausgegeben wird. Zusätzlich dazu, da entsprechend dieser Erfindung selektiv verschlüsselte Dokumente nicht für einen bestimmten anfordernden Benutzer angepasst werden, jedoch ausreichendes Schlüsselverteilungsmaterial mit sich bringen, um jedem berechtigten Benutzer Zugriff zu gewähren, ist der Mitarbeiter402 in der Lage, die geschützten Werte453 ,455 der Felder452 ,454 wiederherzustellen, auch wenn er nicht der ursprüngliche Anforderer des verschlüsselten Dokuments ist. Ebenso ist ein Benutzer, der Vorgesetzter in seinem Unternehmen ist oder der in der Personalabteilung arbeitet, in der Lage, den Wert453 des verschlüsselten Feldes452 wiederherzustellen, wenn er das Dokument450 erhält, da diese Benutzer sich in einer Gemeinschaft mit der entsprechenden Berechtigung für das zugehörige Dokumentelement408 befinden, und ein Benutzer in der medizinischen Abteilung ist in der Lage, den Wert455 des verschlüsselten Feldes454 wiederherzustellen. Wenn ein Benutzer, der kein Vorgesetzter und nicht der betroffene Mitarbeiter ist und nicht in der Personalabteilung arbeitet, das verschlüsselte Dokument450 empfängt, kann dieser Benutzer lediglich die Werte der unbeschränkten Dokumentelemente402 ,404 und406 anzeigen, auch wenn sich die Werte curr_salary und medical_condition ebenfalls in der Kopie des Dokuments450 befinden. Die Art, in der ein erweiterter Stylesheet-Prozessor die Regeln zur Datenvorgabe und Sichtbarkeit einsetzt, um diese Ergebnisse entsprechend der vorliegenden Erfindung zu erhalten, werden im folgenden beschrieben. (Stylesheet-Verarbeitung kann zusätzliche Änderungen am Quelldokument400 beim Prozess des Generierens eines verschlüsselten Dokuments durchführen, wie etwa Formatieren der Informationen aus dem Mitarbeiterdatensatz in ein vordefiniertes Layout oder Ausführen zielspezifischer Transformationen, die nicht mit der Datenvorgabe oder der Elementsichtbarkeit verbunden sind, unter Verwendung von Techniken, die in Fachkreisen bekannt und nicht Teil der vorliegenden Erfindung sind). - Entsprechend der bevorzugten Ausführungsbeispiele der vorliegenden Erfindung wird der Prozess der selektiven Verschlüsselung eines Dokuments als zwei logische Phasen implementiert. Die erste Phase wird hier als "Vorverarbeitungs"phase bezeichnet. Die erweiterte DTD
300 , beschrieben unter Verweis auf3 , ein Quelldokument, wie etwa Dokument400 aus4A und die gespeicherten Vorgabenobjekte sowie deren Sichtbarkeitsregeln (nicht gezeigt) werden als Input in der Vorverarbeitungsphase verwendet. Die zweite Phase wird hier als "Nachbearbeitungs"phase bezeichnet. Das verschlüsselte Dokument450 , einschließlich des verschlüsselten Schlüsselverteilungsmaterials460 wird als Ergebnis der Nachbearbeitungsphase generiert. - Die
5A bis5C zeigen bevorzugte Ausführungsbeispiele des Formats für Datensätze oder Objekte (im folgenden als "Objekte" bezeichnet), die während der Verarbeitung entsprechend der vorliegenden Erfindung erstellt und verwendet werden, um die hier offengelegte selektive Verschlüsselungstechnik auszuführen und die ebenfalls während der entsprechenden Verschlüsselungstechniken verwendet werden. Der Inhalt und das Format für jedes dieser Objekte wird nun beschrieben. (Die Art, in der die Objekte während der Verarbeitung der bevorzugten Ausführungsbeispiele erstellt und verwendet werden, wird nun detaillierter und unter Verweis auf die Logik in den7 bis12 beschrieben.) -
5A zeigt das Layout eines Objekts, hier als "Schlüsselobjekt" bezeichnet. Entsprechend den bevorzugten Ausführungsbeispielen wird eine Version500 dieses Schlüsselobjekts intern von Verschlüsselungsverarbeitung verwendet und eine zweite Version510 wird zusammen mit dem verschlüsselten Objekt übertragen, mit dem es verwendet wurde. Beide Versionen500 ,510 umfassen einen Distinguished Name (DN)501 . Die Version500 des Schlüsselobjekts umfasst ein X.509 Zertifikat502a entsprechend dieses DN, während Version501 das Zertifikat durch einen "keyIdentifier"502b (siehe RFC 2459: "Internet X.509 Public Key Infrastructure Certificate and CRL Profile"), ersetzt, der verwendet werden kann, um das Zertifikat502a in Verbindung mit dem DN in einem Verzeichnis oder einem anderen Repository zu lokalisieren. Zuletzt enthalten beide Versionen500 und510 einen verschlüsselten symmetrischen Schlüssel503 . Das X.509 Zertifikat502a enthält den öffentlichen Schlüssel505 , der zur Erstellung des verschlüsselten symmetrischen Schlüssels503 verwendet wurde (wie weiter unten noch detailliert beschrieben wird). Die im Feld "Betreff"504 des Zertifikats genannte Einheit enthält den privaten Schlüssel entsprechend dem öffentlichen Schlüssel505 und kann diesen privaten Schlüssel verwenden, um den symmetrischen Schlüssel503 zu entschlüsseln. (Es ist zu beachten, dass sich der Wert des Feldes Betreff des Zertifikats504 vom Wert des Feldes DN501 unterscheiden kann.) Der keyIdentifier502b ist ein kurzer "Fingerabdruck", der zur Identifikation des Zertifikats502a verwendet werden kann, zu dem er gehört, beispielsweise beim Suchen in den Zertifikaten in einem Schlüsselring oder einer -kette oder beim Suchen in Zertifikaten, die von einer Verzeichnis- oder Datenbanksuche ausgegeben wurden. Wie in Fachkreisen bekannt, sind X.509 Zertifikate recht groß. Unter Verwendung der Kurzmitteilung502b beim Übertragen eines verschlüsselten Dokuments kann Platz im verschlüsselten Dokument gespart werden, während semantisch äquivalente Informationen weitergegeben werden. Das gesamte Zertifikat502a kann jedoch alternativ dazu mit dem verschlüsselten Dokument übertragen werden, anstatt die Version510 des Schlüsselobjekts und seinen keyIdentifier502b zu verwenden, ohne vom Gegenstand der vorliegenden Erfindung abzuweichen. - Wie in Fachkreisen bekannt, erfordern einige sichere Übertragungsprotokolle ein digitales Zertifikat zum Verschlüsseln von Daten sowie ein weiteres zur Verwendung beim Erstellen einer digitalen Signatur. Die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung gehen von der Verwendung einer SSL-Sitzung aus, wobei nur ein einzelnes Zertifikat notwendig ist. Es ist offensichtlich für die Fachleute, wie die Beschreibung der bevorzugten Ausführungsbeispiele zu ändern ist, wenn zwei Zertifikate verwendet werden. In einem solchen Fall von zwei Zertifikaten stellt das Zertifikat
502a das Verschlüsselungszertifikat dar. - Die Schlüsselobjekte
500 ,510 wurden zunächst während der Vorverarbeitungsphase der vorliegenden Erfindung erstellt. Der verschlüsselte symmetrische Schlüsselwert503 wird in der Nachbearbeitungsphase erstellt. -
5b zeigt das Format eines Objekts, das hier als "Vorverarbeitungsschlüsselklassen"objekt520 bezeichnet wird. Vorverarbeitungsschlüsselklassenobjekte werden intern von der vorliegenden Erfindung sowohl während der Vorverarbeitungs- als auch während der Nachbearbeitungsphase verwendet. Jedes Vorverarbeitungsschlüsselklassenobjekt520 umfasst einen Verschlüsselungsstärken-Identifier521 (der aufgelöst werden kann, um einen bestimmten Verschlüsselungsalgorithmus und eine Schlüssellänge zu identifizieren, beispielsweise durch Konsultieren eines Verzeichnisses oder einer Suchtabelle), eine Schlüsselklasse522 und einen nicht verschlüsselten symmetrischen Schlüssel523 . Der Wert des symmetrischen Schlüsselfelds523 wird während der Nachbearbeitungsphase erstellt. -
5C zeigt das Format eines Objekts, hier als "Schlüsselklassen"objekt530 bezeichnet. Eine Schlüsselklasse definiert eine Gemeinschaft, die über eine Berechtigung zum Zugriff auf ein Element verfügt und die Art der Verschlüsselung, die für dieses Element ausgeführt werden soll. Mehr als ein Element kann eine einzelne Schlüsselklasse gemeinsam nutzen, vorausgesetzt, dass die Gemeinschaftsmitglieder zwischen den gemeinsam nutzenden Elementen identisch sind. Jedes Schlüsselklassenobjekt530 umfasst eine Identifikation der Schlüsselklasse531 , einen Algorithmus-Identifier532 (zur Identifikation des zu verwendenden Algorithmus für Dokumentelemente, die dieser Schlüsselklasse531 zugeordnet sind), eine Schlüssellänge533 , ein optionales Feld534 zur Angabe weiterer Hinweise, die zur Ausführung des Algorithmus erforderlich sein können sowie ein oder mehrere Schlüsselobjekte (allgemein gezeigt in den5C als535 ,536 bis539 ). - Schlüsselklassenobjekte
530 entsprechend dem einzelnen Vorverarbeitungsschlüsselklassenobjekt520 werden während der Nachbearbeitungsphase erstellt und durch die Nachbearbeitungsphase in das DOM-Stammverzeichnis des Dokuments eingefügt, das mit diesen Schlüsselklasseobjekten verschlüsselt wurde. - Ein Schlüsselobjekt
535 ,536 bis539 besteht vor allem in einem bestimmten Schlüsselklassenobjekt530 für jedes Gemeinschaftsmitglied innerhalb der Schlüsselklasse531 . Ein Schlüsselobjekt500 oder510 wird für jeden DN501 erstellt, und ein solches Schlüsselobjekt umfasst einen verschlüsselten symmetrischen Schlüssel503 . Somit umfasst ein Schlüsselklassenobjekt530 für eine Schlüsselklasse531 mit 3 Gemeinschaftsmitgliedern3 Schlüsselobjekte535 ,536 ,539 und von daher auch 3 verschiedene verschlüsselte symmetrische Schlüsselwerte503 (das heißt, ein anderer symmetrischer Schlüsselwert für jede Gemeinschaft). Für das Beispiel des Mitarbeiterdatensatzes, bei dem der Mitarbeiter, die Vorgesetzten und die Mitarbeiter der Personalabteilung die drei Mitglieder der berechtigten Gemeinschaft zur Anzeige der aktuellen Lohninformationen umfassen, umfasst das Schlüsselklassenobjekt530 Schlüsselobjekte mit unterschiedlichen verschlüsselten Schlüsseln503 für jedes Mitglied. Diese drei verschiedenen symmetrischen Schlüsselwerte werden aus dem einzelnen, nicht verschlüsselten Schlüsselwert523 erstellt, der im Vorverarbeitungsschlüsselobjekt520 gespeichert ist. Der öffentliche Schlüssel505 vom Schlüsselobjekt für jedes Gemeinschaftsmitglied wird verwendet, um die verschiedenen symmetrischen Schlüsselwerte zu generieren. Um die Informationen curr_salary zu entschlüsseln, lokalisiert der Vorgang für ein Mitglied der Vorgesetztengruppe ("managers") das Vorgesetzenschlüsselobjekt unter den Objekten535 ,536 ,539 durch Vergleichen des Vorgesetztengruppe-DN mit den DN-Werten501 , ruft den verschlüsselten symmetrischen Schlüsselwert503 vom entsprechenden Schlüsselobjekt ab und entschlüsselt diesen symmetrischen Schlüssel unter Verwendung des privaten Schlüssels für die Vorgesetztengruppe. Dieser entschlüsselte Schlüssel kann dann verwendet werden, um die Information curr_salary zu entschlüsseln. Ähnlich ist es, wenn ein Mitglied der Personalabteilung (HR) auf curr_salary zugreifen möchte: Der DN für die Gruppe Personalabteilung wird verglichen mit den DN-Werten in den Objekten535 ,536 ,539 , um das Schlüsselobjekt für die Gruppe Personalabteilung zu lokalisieren. Der entschlüsselte Schlüsselwert503 wird dann abgerufen und mit dem privaten Schlüssel des Mitglieds der Gruppe Personalabteilung entschlüsselt. Dieser entschlüsselte private Schlüssel wird dann vom Mitglied der Gruppe Personalabteilung verwendet, um den Wert curr_salary zu entschlüsseln. - Auf diese Weise verteilen die über selektive Verschlüsselung erstellten Dokumente entsprechend der vorliegenden Erfindung auf sichere Art Schlüsselmaterial, das zur Entschlüsselung durch einen Empfängerkreis verwendet werden kann, der bei Erstellung der Dokumente noch unbekannt ist.
- Die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung werden nun detailliert und unter Verweis auf die
6 bis12 erläutert.6 gibt einen Überblick über die Software-Komponenten, die in mehreren der bevorzugten Ausführungsbeispiele verwendet werden. Die7 bis12 zeigen die Logik, die verwendet werden kann, um die bevorzugten Ausführungsbeispiele zu implementieren. -
6 zeigt Backend-Server605 für e-commerce, eine e-commerce Infrastruktur625 , einen e-commerce Client655 (dieser wird in einigen Fällen als Server bezeichnet, wenn er als Proxy für einen Browser Client eingesetzt wird), einen standardmäßigen Browser Client675 und einen Programm-Client680 . Drei Prozesse werden auf dem e-commerce Server605 gezeigt: ein XSL-Vorprozessor610 und ein XSL-Nachprozessor620 entsprechend der vorliegenden Erfindung, sowie ein Transcoding Proxy615 . Der XSL-Vorprozessor610 führt die Vorverarbeitungsphase des Verschlüsselungsprozesses aus, und der XSL-Nachprozessor (bei dem es sich um die gleiche Software-Komponente handeln kann wie bei dem Vorprozessor610 ) führt die Nachbearbeitungsphase aus. Die Prozesse in der e-commerce Infrastruktur625 umfassen eine Administrator-Anwendung630 , eine Zertifikatsstelle (Certificate Authority = CA)635 , ein LDAP-Verzeichnis640 , verschiedene Web Server645 , eine Nachrichtenwarteschlange oder eine andere Transport-Infrastruktur650 sowie einen Gruppenverwalter670 . Prozesse im e-commerce Client655 umfassen einen XML-Vorparser660 (definiert durch die vorliegende Erfindung zur Entschlüsselung selektiv verschlüsselter Dokumente, wie noch detaillierter beschrieben wird) und einen Gruppen Client665 . In einem Ausführungsbeispiel der vorliegenden Erfindung ist der Programm-Client Teil des e-commerce Clients655 . Alternativ dazu kann der Programm-Client680 eine unabhängige Einheit analog zum Browser Client675 sein, unterstützt vom e-commerce Client655 in seiner Server-Rolle. - Es ist zu beachten, dass mehrere Komponenten aus
6 mit dem Begriff e-commerce belegt werden; dies dient Anschauungszwecken und stellt keine Einschränkung dar. Die vorliegenden Erfindung kann vorteilhafterweise mit Dokumenten eingesetzt werden, die über schützenswerte Informationen verfügen, die nicht kommerzieller Art sind. - Die Funktion des e-commerce-Backend-Servers
605 besteht in der Erstellung selektiv verschlüsselter Dokumente und im besonderen selektiv verschlüsselter XML-Dokumente. In der Vorverarbeitungsphase fragt der XSL-Vorprozessor610 das Verzeichnis640 ab, um die DTD sowie Datenvorgaben und Sichtbarkeitsregeln für verschiedene Dokumentelemente zu erhalten. Während in den bevorzugten Ausführungsbeispielen ein LDAP-Verzeichnis verwendet wird, sollte es den Fachleuten klar sein, dass auch eine andere Art von Verzeichnis oder Daten-Repository verwendet werden könnte, ohne dass vom Gegenstand der Erfindung abgewichen würde. Entsprechend wird ein LDAP-Verzeichnis640 verwendet, um diese Vorgaben in eine bestimmte Verschlüsselungslänge (beispielsweise ein nummerierter Wert) und eine Gemeinschaft aufzulösen und um die X.509 Zertifikate zu erhalten, die zu den einzelnen Mitgliedern der Gemeinschaft gehören. Am Ende der Vorverarbeitungsphase passiert der Vorprozessor610 eine Arbeitsdarstellung der Daten, wie etwa eine DOM-Baumdarstellung bis zur nächsten Verarbeitungsstufe, wie etwa ein Transcoding Proxy615 , falls vorhanden für die weitere Verarbeitung, andernfalls geht er direkt zum XSL-Nachprozessor620 über. Die Zwischenstufe615 gibt den gesamten Output an den XSL-Nachprozessor620 weiter, der entsprechend der vorliegenden Erfindung definiert ist. Während der Nachbearbeitungsphase kontaktiert der XSL-Nachprozessor620 das LDAP-Verzeichnis640 , um die Verschlüsselungsstärke in einen spezifischen Verschlüsselungsalgorithmus und eine Schlüssellänge (falls diese Informationen nicht direkt im Vorgabenobjekt gespeichert wurden) aufzulösen und um einen KeyIdentifier entsprechend einem X.509 Zertifikat zu erhalten. Wenn das selektiv verschlüsselte XML-Dokument vom e-commerce-Server605 erstellt wurde, wird das Dokument den Benutzern zugänglich gemacht, die es (beispielsweise durch Speichern auf Web Servern) anfordern können, über einen Transportmechanismus, wie etwa Nachrichtenwarteschlangen650 an andere Speicherorte versendet usw. - Der Transport und die Speicherung von Details sind nicht Teil dieser Erfindung, anders als die Beobachtung, dass bei nun entschlüsselten empfindlichen Teilen des Dokuments kein Bedarf für Nachrichtenwarteschlangen oder andere Server oder Agents besteht, die die XML Daten mit spezieller Verschlüsselungsunterstützung bearbeiten, um den Dokumentinhalt zu schützen; die schützenswerten Dokumentelemente sind bereits geschützt. Weiterhin können Agents, die bestimmte Dokumentfelder untersuchen müssen, beispielsweise zum Zwecke des Transaktions-Routings, entweder über eine Berechtigung zum Entschlüsseln nur dieser Felder verfügen, oder diese Felder werden leer gelassen.
- Eine Administrations-Anwendung
630 , definiert entsprechend der vorliegenden Erfindung (detailliert beschrieben unter Verweis auf12 ), interagiert mit dem LDAP-Verzeichnis640 , der Zertifikatsstelle (Certificate Authority = CA)635 , dem Browser Client675 , dem Programm-Client680 , dem Gruppenverwalter670 und dem e-commerce-Client655 bei der Ausführung ihrer Funktionen. Der Administrator kann eine Gruppe erstellen, ändern oder löschen; eine einzelne Einheit (wie etwa einen Browser Client675 , einen Programm-Client680 , einen e-commerce Client655 in seiner Funktion als Proxy/Server für einen Browser Client675 oder einen Gruppenverwalter670 ) erstellen, ändern oder löschen, eine Einheit einer Gruppe zuordnen, eine Einheit aus einer Gruppe entfernen, ein Zertifikat für eine Gruppe oder eine einzelne Einheit neu zuordnen, erneuern oder zurückrufen, eine Datenvorgabe erstellen, ändern oder löschen; eine Gemeinschaftsdefinition erstellen, ändern oder löschen, eine Verschlüsselungsstärkedefinition erstellen, ändern oder löschen, Informationen zur Elementsichtbarkeit in einer Datenvorgabe erstellen, ändern oder löschen, eine DTD erstellen, ändern oder löschen, was noch in12 näher erklärt wird. - Der XML-Vorparser
660 versucht eine Entschlüsselung der selektiv verschlüsselten XML-Daten. Für Schlüsselobjekte, die mit Hilfe eines Gruppenschlüssels gesperrt wurden, kontaktiert der Vorparser660 die Komponente lokaler Gruppen-Client665 . Der Gruppen-Client kontaktiert das LDAP-Verzeichnis640 zur Lokalisierung des für die Gruppe definierten Verwalters. Dann kontaktiert der Gruppen-Client665 den Gruppenverwalter670 , um das Schlüsselobjekt zu entschlüsseln. Der Gruppenverwalter670 kontaktiert das LDAP-Verzeichnis640 , um die X.509 Zertifikate zu ermitteln, die dem Anforderer zugeordnet wurden sowie die Agents (einer oder mehrere der folgenden: e-commerce-Client655 selbst oder als Proxy, der Browser Client675 und/oder Programm-Client680 ). Der Verwalter670 fragt ebenfalls das LDAP-Verzeichnis ab, um zu validieren, ob eine gegebene Einheit Mitglied einer gegebenen Gruppe ist. In einem Ausführungsbeispiel der vorliegenden Erfindung werden der Gruppenverwalter670 und der e-commerce-Client655 auf der gleichen Hardware-Plattform implementiert. - Die Logik, mit der die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung implementiert werden können, wird nun unter Verweis auf die Flussdiagramme in den
7 bis12 beschrieben. Die7A bis7C zeigen den Prozess, mit dem ein Dokument selektiv verschlüsselt werden kann, entsprechend der vorliegenden Erfindung. In einem bevorzugten Ausführungsbeispiel empfängt ein einzelner Benutzer (der ein berechtigtes Mitglied von mindestens einer Gemeinschaft sein kann, für die das Dokument selektiv verschlüsselt wurde) das verschlüsselte Dokument auf seiner Client Workstation und führt einen Verschlüsselungsprozess auf dieser Workstation aus. Dieses Szenario wird in der Logik der8A und8B dargestellt. In einem anderen bevorzugten Ausführungsbeispiel kann eine Workstation eines Benutzers über genügend Arbeitsleistung verfügen, um den Verschlüsselungsprozess der vorliegenden Erfindung auszuführen, oder es ist wünschenswert, eine Änderung der Umgebung der Benutzerworkstation zu umgehen, so dass der Code der vorliegenden Erfindung lokal ausgeführt werden kann, so führt ein Client Proxy die Entschlüsselung für den Benutzer aus. Dieses Szenario wird in der Logik der9A und9B gezeigt. In noch einem weiteren bevorzugten Ausführungsbeispiel wird das verschlüsselte Dokument von einem Mitglied einer Gruppe empfangen, wobei es sich bei der Gruppe um ein berechtigtes Mitglied einer Gemeinschaft handeln kann, die Zugriff auf mindestens ein Element des selektiv verschlüsselten Dokuments hat. Die Art, in der der Verschlüsselungsprozess für dieses Ausführungsbeispiel ausgeführt wird, wird in den10A bis10C gezeigt. In einem anderen bevorzugten Ausführungsbeispiel muss ein berechtigter Benutzer, wie etwa ein Systemadministrator, möglicherweise die Schlüssel wiederherstellen, die verwendet wurden, um ein Dokument zu verschlüsseln, das beispielsweise in einem firmeneigenen Repository gespeichert wurde. Die Art, in der die Schlüsselwiederherstellung vorteilhafterweise und entsprechend der vorliegenden Erfindung ausgeführt wird, wird in den11A und11B gezeigt.12 zeigt die Logik, mit der ein Administrator oder ein Administrationsprozess das sichere Dokumentsystem der vorliegenden Erfindung einrichtet und verwaltet. - Verschlüsselung
- Der selektive Verschlüsselungsprozess der
7A bis7C arbeitet in logischen Phasen, wie zuvor beschrieben, einer Vorverarbeitungsphase und einer Nachbearbeitungsphase. Während der Vorverarbeitungsphase (7A ) werden Datenvorgaben und Beschränkungen der Elementsichtbarkeit von den gespeicherten Vorgabenobjekten geladen und analysiert. Dann wird die standardmäßige Stylesheet-Verarbeitung aufgerufen (7B ), um jene Elemente im Quelldokument zu markieren, die eine Verschlüsselung erfordern. (Alternativ dazu kann die Verarbeitung von7B durch den erweiterten Stylesheet-Prozessor der vorliegenden Erfindung ausgeführt werden, als eine Erweiterung des Codes, der zur Ausführung der Vorverarbeitungsphase geschrieben wurde.) Während der Nachbearbeitungsphase wird die Verschlüsselung auf die markierten Elemente angewendet und das Schlüsselverteilungsmaterial wird in den DOM-Baum zur Verteilung mit dem selektiv verschlüsselten Dokument eingefügt (7C ). - Die bevorzugten Ausführungsbeispiele der vorliegenden Erfindung führen den Prozess der selektiven Verschlüsselung unter Verwendung eines XSL-Prozessors aus, der erweitert wurde, um Datenvorgaben und Beschränkungen der Elementsichtbarkeit anzuwenden, wie zuvor erläutert.
7A und7C zeigen Flussdiagramme mit der zusätzlichen Logik, mit der dieser speziell eingerichtete XSL-Prozessor arbeitet. (Die Logik des vorhandenen XSL-Prozessors wird nicht gezeigt. Es sollte den Fachleuten klar sein, wie die Logik der7A und7C in die vorhandene XSL-Prozessorlogik einzubauen ist.) - Der Zweck der Vorverarbeitungsphase in
7A ist es, die Elemente des Quelldokuments als zu verschlüsselnde Elemente festzulegen und während des Verschlüsselungsprozesses die zu verwendenden Schlüsselklassen zu erstellen. Die Verarbeitung in dieser Phase beginnt bei Block700 und arbeitet mit einem bestimmten Quelldokument (wie etwa Dokument400 in4A ). Dieser Prozess kann als Reaktion auf eine Clientanforderung für das Dokument (als Teil des Prozesses zur Rückgabe des angeforderten Dokuments zum Client) gestartet werden oder im Voraus auf eine solche Anforderung (wobei das daraus resultierende Dokument dann gespeichert wird, in Erwartung einer nachfolgenden Clientanforderung). Es ist zu beachten, dass hier gemachte Verweise auf einen anfordernden "Client" ebenfalls den Fall einschließen, in dem die Antwort an einen menschlichen Benutzer oder in dem die Antwort an ein ausführendes Anwendungsprogramm oder einen Prozess auszugeben ist. - In Block
700 wird die durch Vorgaben erweiterte DTD für das Quelldokument von einem Verzeichnis oder einem anderen Speicher-Repository abgerufen. In den bevorzugten Ausführungsbeispielen wird davon ausgegangen, dass Datenvorgaben in einem Repository (wie etwa das LDAP-Verzeichnis mit den Verweisen durch die Vorgaben-URIs312 ,322 ,332 in3 ) gespeichert sind, als ausführbarer Vorgabenobjektcode. Unter Verwendung der Beispiele der3 und4 ist das verarbeitete Dokument das Quelldokument400 der4A . Die DTD-Referenz405 wird durch den Block700 lokalisiert, und diese Referenz405 wird verwendet, um die DTD300 abzurufen. Block705 ruft (unter Verwendung der URIs, wie etwa312 ,322 und332 ) das Vorgabenobjekt ab, auf das von der DTD-Elementdefinition verwiesen wird, und instantiiert es. - Ein Vorgabenobjekt wird vorzugsweise für jeden spezifischen, zu verarbeitenden Elementtyp geschrieben, unabhängig davon, ob das Element verschlüsselt werden soll oder nicht. Wie in der Referenz-Erfindung beschrieben, arbeitet jedes Vorgabenobjekt vorzugsweise durch Spezifizieren von ausführbarem Code, um vorhandene XSL-Prozessormethoden zu überladen und wird geschrieben, um als "Plug-in" vom XSL-Prozessor ausgeführt zu werden (wobei das Konzept des Plug-in den Fachleuten bekannt ist). Im besonderen überladen die bevorzugten Ausführungsbeispiele die XSL "Wert-von"-Methode. Vorzugsweise wird diese Überladung ausgeführt, indem Unterklassen der vorhandenen Wert-von-Methode gebildet werden (wobei die Technik zur Unterklassierung einer Methode den Fachleuten bekannt ist). Verweise auf Werte werden dann während der Stylesheet-Verarbeitung (
7B ) abgefangen, und diese abgefangenen Werte passieren dann die in Block710 instantiierten Vorgaben. Die in der vorliegenden Erfindung definierten Attribute und Techniken zur Verschlüsselung können zusätzlich zu oder anstelle der Attribute und Techniken der Referenz-Erfindung verwendet werden, wobei der Wert eines Elements geändert werden kann (beispielsweise durch Ändern numerischer Werte in Text, Unterdrücken von Elementen und Werten usw.), während der Stylesheet-Verarbeitung. (Es ist zu beachten, dass es wünschenswert sein kann, während dieser Verarbeitung ein Prüfprotokoll zu erstellen, um die erfassten ursprünglichen Daten sowie die Daten aus den Wertänderungen festzuhalten. Techniken zum Erstellen von Prüfprotokollen sind in Fachkreisen bekannt und sind nicht Teil der vorliegenden Erfindung.) - Jedes von den bevorzugten Ausführungsbeispielen verwendete Vorgabenobjekt umfasst vorteilhafterweise eine Methode oder ein Attribut zur Angabe der minimalen Sicherheitsstärke, die zum Verschlüsseln der Dokumentelemente erforderlich ist, mit denen dieses Objekt verwendet werden soll, sowie zur Angabe der Mitglieder der Gemeinschaft, die zur Anzeige (d.h. Entschlüsselung) des Wertes berechtigt sind. Der den Vorgabenobjektcode erstellende Programmierer ist zuständig für die Angabe dieser Stärke und der Gemeinschaftsinformationen. Die Gemeinschaft kann statisch angegeben werden, indem eine Liste der DNs ihrer Mitglieder eingefügt wird, die im Voraus bestimmt werden können und/oder es kann ein ausführbarer Code in das Vorgabenobjekt geschrieben werden, um einen oder mehrere DNs von Gemeinschaftsmitgliedern dynamisch zu bestimmen. Wenn eine Gruppe als ein Gemeinschaftsmitglied anzugeben ist, gibt der Programmierer vorzugsweise einen DN der Gruppe (falls vorhanden) an, andernfalls kann der DN für jedes Mitglied (statisch) angegeben werden, obwohl dieser letztere Ansatz eine zeitintensivere Ausführung während der Verschlüsselungs- und Entschlüsselungsprozesse in Anspruch nimmt und nicht auf Zusätze oder Änderungen bei der Gruppenmitgliedschaft eingeht, bis nicht die statisch angegebene Liste im Vorgabenobjekt aktualisiert wird. Es kann auch Code in das Vorgabenobjekt geschrieben werden, um die DN für jedes Mitglied einer bestimmten Gruppe dynamisch zu lokalisieren und auszugeben.
- Block
715 fragt, ob dieses Vorgabenobjekt die Verschlüsselung der zugehörigen Datenelemente vorsieht. Dies kann ermittelt werden, indem eine Methode aufgerufen wird, die einen Attributwert zur Angabe der erforderlichen minimalen Verschlüsselungsstärke ausgibt, wobei eine Null angibt, dass die Verschlüsselung nicht erforderlich ist und ein Nicht-Nullwert angibt, dass eine Verschlüsselung vorzunehmen ist. Alternativ dazu kann eine Methode aufgerufen werden, die einen Booleschen Attributwert ausgibt, der speziell gesetzt wurde (d.h. unabhängig vom Attribut Verschlüsselungsstärke), um anzugeben, ob eine Verschlüsselung erforderlich ist. - Wenn der Test an Block
715 ein negatives Ergebnis mit sich bringt, geht die Steuerung auf Block720 über, um festzustellen, ob es sich um die letzte Elementdefinition gehandelt hat. Wenn dies der Fall ist, endet die Verarbeitung von7A und die Steuerung setzt die Verarbeitung in7B fort. Wenn es sich nicht um die letzte Definition gehandelt hat, kehrt die Steuerung zu Block705 zurück, um die nächste Elementdefinition zu lesen und mit deren Verarbeitung zu beginnen. - Die Steuerung erreicht Block
725 , wenn der Test in Block715 ein positives Ergebnis mit sich bringt. Block725 ruft die Gemeinschaftsinformationen ab, die mit diesem Vorgabenobjekt verbunden sind, vorzugsweise durch Aufrufen einer Methode, wie etwa "communityMembers", die eine Liste mit Distinguished Names ausgibt. Bei dem Beispiel des Mitarbeiterdatensatzes in den3 und4 kann das Vorgabenobjekt für die Vorgabe "empl_mgr_hr" statisch angegebene DNs für die Gruppen Vorgesetzte und Personalabteilung verwenden, muss jedoch ausführbaren Code einfügen, um den DN für den bestimmten Benutzer zu bestimmen, dessen Informationen sich in Dokument400 befinden. Die statischen DNs können im gespeicherten Vorgabenobjekt beispielsweise in folgendem Format angegeben werden:
DN="cn=managers,ou=groups,o=acme" für die Gruppe Vorgesetzte (manager), und
DN="cn=hr,ou=groups,o=acme" für die Gruppe Personalabteilung (HR). - Ein DN für einen einzelnen Benutzer (wie etwa den Systemadministrator) kann ebenfalls statisch angegeben werden, beispielsweise unter Verwendung folgender Syntax:
DN="cn=admin,ou=users,o=acme". - Durch Untersuchen der Syntax dieser Beispiele kann erkannt werden, dass die Distinguished Names mit einem Organisationseintrag für Acme Unternehmen ("o=acme") auf der Stufe des Stammverzeichnisses strukturiert sind, wobei die Stammstufe weiterhin unterteilt ist in "users" und "groups" in der Unternehmenseinheit (organisational unit = "ou") und wobei die "groups"-Stufe wiederum weiter unterteilt ist für Einträge für "managers" und "hr" auf der Stufe Gemeinsamer Name (common name = "cn"). Der DN für eine Gruppe, etwa für die Gruppen Vorgesetzter oder Personalabteilung, kann verwendet werden, um den DN für jedes Mitglied der Gruppen abzurufen, unter Verwendung von Techniken, die in Fachkreisen bekannt sind und nicht Teil der vorliegenden Erfindung sind. Unter Verwendung dieses gleichen Formats kann der DN für die medizinische Abteilung, verwendet im Vorgabenobjekt "empl_medical", innerhalb des gespeicherten Vorgabenobjekts angegeben werden als:
DN="cn=medical,ou=groups,o=acme",
wobei die Stufe "groups" ebenfalls über einen Eintrag für eine Gruppe namens "medical" verfügt. - Ein DN für einen einzelnen Benutzer, der dynamisch abgerufen wird, verfügt über eine ähnliche Syntax wie die, die für die statisch angegebenen DNs verwendet wird. Abhängig von der Art, in der die Registrierung der DNs organisiert ist, kann der Benutzer-DN im Beispiel des Mitarbeiterdatensatzes lokalisiert werden, unter Verwendung seines Namens und seiner Nummer oder möglicherweise nur unter Verwendung seiner Nummer usw. Der ausführbare Code im Vorgabenobjekt muss deshalb das Quelldokument
400 (oder eine andere Informationsquelle, wie etwa den Anforderungskopf, mit dem das Quelldokument angefordert wurde, falls vorhanden) durchsuchen, um den Wert oder die Werte zu lokalisieren, die verwendet werden sollen (wie etwa Suchen nach den Werten der Tags "empl_name"402 und/oder "ser_nbr"404 ). - Block
730 vergleicht die Liste der Distinguished Names für alle Mitglieder dieser Gemeinschaft mit der Liste der DNs mit Gemeinschaftsmitgliedern in den vorhandenen Vorverarbeitungsschlüsselklassenobjekten (wobei jeder DN501 sich in einem Schlüsselobjekt500 eines Schlüsselklassenobjekts530 befindet, das in Feld522 jedes Vorverarbeitungsklassenobjekts520 dargestellt wird). - Wenn ein Vorverarbeitungsschlüsselklassenobjekt
520 nicht gefunden wird, das bereits diese Gemeinschaft (ein Nein-Ergebnis bei Block735 ) enthält, wird ein neues Schlüsselklassenobjekt (Block740 ) erstellt. Das Feld Verschlüsselungsstärke521 des Objekts520 wird auf den Wert des minimalen Stärkeattributs des in Block710 abgerufenen Vorgabenobjekts gesetzt. Der unverschlüsselte Schlüsselwert523 wird vorzugsweise auf einen Nullwert gesetzt, um anzugeben, dass er noch nicht initialisiert ist. Ein Schlüsselklassenobjekt530 wird dann erstellt und verwendet, als Wert des Feldes522 . Der Identifier531 zur Verwendung für die Schlüsselklasse, wird vorzugsweise als ein sequentiell größer werdender numerischer Wert generiert. Die Felder532 ,533 ,534 werden vorzugsweise an diesem Punkt auf Nullwerte gesetzt: die tatsächlichen Werte werden während der Nachbearbeitungsphase bestimmt. Die DN für jedes Gemeinschaftsmitglied wird vorzugsweise verwendet, um bereits erstellte Schlüsselobjekte500 zu suchen. Wenn eine Übereinstimmung lokalisiert wird, wird das vorhandene Schlüsselobjekt500 (mit der DN des Gemeinschaftsmitglieds in Feld501 , dem X.509 Zertifikat des Gemeinschaftsmitglieds und einem Nullwert in Feld503 ) im Schlüsselklassenobjekt530 verwendet. Andernfalls, wenn kein übereinstimmendes Schlüsselobjekt besteht, muss eines erstellt werden. Der DN für das Mitglied wird verwendet, um das X.509 Zertifikat des Mitglieds abzurufen. Das neue Schlüsselobjekt500 wird erstellt, indem das Feld501 auf den DN des Mitglieds gesetzt wird, Feld502 auf das abgerufene Zertifikat und Feld503 auf einen Nullwert. - Bei Erreichen von Block
745 wurde entweder eine neue Vorverarbeitungsschlüsselklasse für die Gemeinschaft erstellt oder es wurde eine vorhandene Vorverarbeitungsschlüsselklasse für die Gemeinschaft lokalisiert. Block745 ordnet dann dieses Vorverarbeitungsschlüsselobjekt520 dem abgerufenen Vorgabenobjekt in Block710 zu. Block750 ersetzt das Feld Verschlüsselungsstärke mit der am meisten eingeschränkten (1) der minimalen erforderlichen Stärke aus dem Vorgabenobjekt und (2) dem vorhandenen Wert des Feldes521 (in Block750 als die Elementstärke und die Verschlüsselungsstärke der Klasse). Die Verschlüsselungsstärken können als numerische Werte dargestellt werden, wobei eine höhere Nummer eine größere Verschlüsselungsstärke wiedergibt (siehe US-Patent Nr.: 09/240,387). In diesem Fall wählt der Block750 die größere der beiden Nummern aus. Das Vorverarbeitungsschlüsselklassenobjekt enthält nun die Verschlüsselungsstärke, die für das Element der Klasse531 benötigt wird, mit der stärksten Verschlüsselungsanforderung. (Dies kann zu einer Überverschlüsselung einiger Elemente führen, was akzeptabel ist). Die Steuerung geht nun zu Block720 über, um zu bestimmen, ob noch weitere Elementdefinitionen zu verarbeiten sind. - Die Verarbeitung in
7B beginnt bei der Beendigung der Verarbeitung von7A . Diese Verarbeitung kann als Teil des erweiterten XSL-Prozessors der vorliegenden Erfindung erfolgen oder durch einen Transcoding Proxy nach Stand der Technik erfolgen (siehe die Beschreibung eines Transcoding Proxys615 in der Erläuterung zu6 oben). Block752 wendet eine Stylesheet-Regel auf das Quelldokument400 an. Wenn das Muster einer Stylesheet-Regel mit einem Element des Quelldokuments übereinstimmt, fragt Block754 , ob diese Vorgabe die vorhandene XSL Wert-von-Methode abruft. Wenn dies nicht der Fall ist, wird die Verarbeitung der Regel nach Stand der Technik fortgesetzt und die Steuerung geht auf Block759 über. Entsprechend der vorliegenden Erfindung wird die Wert-von-Methode vorzugsweise für jedes Element im Quelldokument abgerufen, um eine selektive Verschlüsselung nötigenfalls für jedes Element auszuführen. Dies kann erfolgen, indem ein Stylesheet eingesetzt wird, das alle Input-Werte in ein zu generierendes Output-Dokument kopiert. Wenn die Wert-von- Methode durch die Vorgaberegel aufgerufen wird, empfängt Block756 (d.h. erhält einen Zeiger oder einen Verweis) das zuvor instantiierte Datenvorgabenobjekt für das Datenelement, das mit der Vorgaberegel übereinstimmt. Die überschreibende Wert-von-Methode dieses Datenvorgabenobjekts wird bei Block758 ausgeführt, wobei alle entsprechenden Transformationen ausgeführt werden, die mit dieser Methode codiert wurden. Entsprechend der vorliegenden Erfindung wird der Code der überschriebenen Wert-von-Methode geschrieben, um zu bestimmen, ob das Vorgabenobjekt angibt, ob ein Datenelement verschlüsselt werden soll (wie oben unter Verweis auf Block715 beschrieben), und wenn dies der Fall ist, die Markierungstags zur Verschlüsselung um das Element herum einzufügen. Die Markierungstags zur Verschlüsselung verwenden vorzugsweise eine Syntax, wie etwa "<encrypt:data class="n""> und "<encrypt:data>" (wie in4B bei422 und424 beschrieben), wobei der Wert "n" auf den Identifier des Schlüsselklassenobjekts gesetzt wird, der diesem Vorgabenobjekt in Block745 in7A zugeordnet wird. Dieser Prozess der Anwendung von Stylesheet-Regeln zur Markierung des Quelldokuments400 wird wiederholt, indem die Blöcke752 bis759 wiederholt werden, bis das Quelldokument vollständig verarbeitet wurde (d.h. bis der Test bei Block759 ein positives Ergebnis aufweist), wonach die Verarbeitung in7B endet. -
7B zeigt ein Beispiel für das Ergebnis der beendeten Verarbeitung von7B bei Quelldokument400 . Es ist zu beachten, dass der Inhalt420 von4B Interims-Informationen darstellt, wie intern erstellt und verwendet werden. Die Informationen werden nie in dieser Form zur Verfügung gestellt. (Siehe4C für eine Darstellung der Informationen, die extern zur Verfügung gestellt werden). Markierungstags422 und424 wurden eingefügt, um die schützenswerten Informationen der Dokumentelemente curr_salary und medical condition einzuklammern. Eine erste Schlüsselklasse wird zur Verschlüsselung des Werts curr_salary verwendet und eine zweite Schlüsselklasse wird für den Wert medical condition verwendet, wie in den Markierungstags bei423 und425 entsprechend gezeigt.4B zeigt weiterhin die Organisation dieser Schlüsselklassenobjekte. Wie bei430 gezeigt, verfügt die Schlüsselklasse "1" über einen zugeordneten Algorithmus und eine Schlüssellänge und umfasst die Schlüsselobjekte431 ,432 ,433 für die drei Mitglieder der zugeordneten Gemeinschaft. Schlüsselklasse "2" ist ähnlich, unter Verwendung eines anderen Algorithmus und einer anderen Schlüssellänge (siehe440 ) und unter Angabe von Schlüsselobjekten441 ,442 für zwei Gemeinschaftsmitglieder. - Es ist zu beachten, dass die Elemente "tempkey"
434 ,444 von4B Beispiele des unverschlüsselten symmetrischen Schlüssels zeigen, der verwendet wird, um einen anderen verschlüsselten symmetrischen Schlüssel523 (gezeigt in den4B und4C als Werte von "Ekey") für jedes Gemeinschaftsmitglied der zugeordneten Schlüsselklasse zu erstellen. Es ist ebenfalls zu beachten, dass die Werte KeyIdentifier und diese Werte Ekey, gezeigt in den Schlüsselklassen (in den4B und4C ) nur der bildlichen Darstellung dienen. In einer tatsächlichen Implementierung sind die Informationen vorzugsweise codiert als binäre Werte unter Verwendung von "base 64"-Regeln nach Stand der Technik, so dass das Ergebnis nur druckbare Zeichen enthält, die im Kontext von XML-Attributwerten zulässig sind. -
7C zeigt die Nachbearbeitungsphase des Prozesse der selektiven Verschlüsselung. Diese Logik wird bei Beendigung der Verarbeitung aus7B abgerufen. Ziel der Nachbearbeitungsphase ist das Ersetzen bestimmter DOM-Elemente durch verschlüsselte Elemente und das Einfügen der notwendigen Schlüsselobjekte für die Verschlüsselung in den DOM-Stamm.4B stellt ohne DOM-Baumstruktur das Format des Interims-Dokuments420 dar, mit dem die Nachbearbeitungsphase arbeitet. - Wie in Block
760 angegeben, wird der DOM-Baum entsprechend des zu verschlüsselnden Dokuments auf eine vordefinierte Weise durchsucht. Entsprechend der bevorzugten Ausführungsbeispiele wird diese Reihenfolge definiert, um die Standardsequenz zum Senden der DOM in einem Output-Strom zu bilden. Eine vorbestimmte Reihenfolge ist für die bevorzugten Ausführungsbeispiele erforderlich, die eine Schlüsselblockverkettung verwenden, in der der Output jeder Blockverschlüsselung als Schlüsselmaterial für die nächste Blockverschlüsselung dient. (Wenn die Reihenfolge zum Durchsuchen des DOM variiert und keine vorbestimmte Reihenfolge eingesetzt wird, ist der Empfänger nicht in der Lage, die Daten zu entschlüsseln, da die Interims-Schlüssel nicht gebildet werden können. Der Modus Schlüsselblockverkettung (Cipher Block Chaining = CBC) wird zur Verwendung in der vorliegenden Erfindung gegenüber eines nicht verketteten Modus bevorzugt, um bestimmte Arten von kryptografischen Angriffen abzuwehren. Ähnlich wird CBC gegenüber einer Stromverschlüsselung bevorzugt, um die Länge der verschlüsselten Felder zu verschleiern, wodurch weitere Arten von krypptografischen Angriffen abgewehrt werden können. Alternative Verschlüsselungsmodi, wie etwa Blockverschlüsselung oder Stromverschlüsselung, elementweise ausgeführt, können eingesetzt werden, ohne dass vom Gegenstand der Erfindung abgewichen wird. - Block
765 prüft das Elementtag, das von Block760 analysiert wurde, um festzustellen, ob dieser Tag (von Block758 in7B ) als Verschlüsselung erfordernd markiert wurde. Wenn dies nicht der Fall ist, geht die Steuerung zu Block789 über und umgeht somit die Verschlüsselung durch die Blöcke770 bis795 . Wenn jedoch das Elementtag angibt, dass das Element verschlüsselt werden soll, geht die Verarbeitung an Block770 weiter. Block770 liest die Schlüsselklasse vom Elementtag, wie etwa den Wert "1", angegeben bei423 im Verschlüsselungstag422 in4B . Block770 prüft anschließend, ob dies das erste zu verarbeitende Element für diese Schlüsselklasse ist. Eine Art, in der die diese Bestimmung vorgenommen werden kann, ist die Untersuchung des symmetrischen Schlüsselwerts523 des Vorverarbeitungsschlüssels520 , in dem sich der Identifier531 der aktuellen Klasse befindet (innerhalb von Feld522 ). Wenn der symmetrische Schlüsselwert523 Null ist, wurde diese Schlüsselklasse noch nicht verarbeitet und Block770 verfügt über ein positives Ergebnis. Es können auch alternative Techniken verwendet werden, wie etwa Erstellen einer Suchtabelle der Schlüsselklassen-Identifier für die Schlüsselklassen, die bereits erfasst wurden. - Die Blöcke
775 ,780 und785 führen Setup-Operationen für jede neue auszuführende Schlüsselklasse aus. Diese Initialisierung beginnt mit der Auflösung der erforderlichen Verschlüsselungsstärke521 vom entsprechenden Vorverarbeitungsschlüsselklassenobjekt520 in einen spezifischen Algorithmus und eine Schlüssellänge (falls diese Informationen nicht direkt im Vorgabenobjekt angegeben wurden). Vorzugsweise wird diese Auflösung durch Konsultieren des LDAP-Verzeichnisses, wie zuvor beschrieben im US-Patent Nr.: 09/240,387, ausgeführt, doch das exakte Mittel zum Bestimmen eines Algorithmus und einer Schlüssellänge zum Erhalt einer bestimmten Verschlüsselungslänge ist für die vorliegende Erfindung ohne Bedeutung. Der aufgelöste Algorithmus und die Schlüssellänge werden im Schlüsselklassenobjekt bei532 und533 gespeichert. Als nächstes wird ein zufallsgenerierter symmetrischer Schlüssel523 verwendet, um (siehe Block790 ) die erste Wiederholung der Verschlüsselungsblockverkettung für diese Schlüsselklasse zu initialisieren, unter Verwendung von Techniken, die den Fachleuten bekannt sind. Dieser Prozess kann ebenfalls das Einfügen einer Folge von zufallsgenerierten Bits umfassen, Intitialisierungsvektoren genannt, bevor das erste Bit der Daten verschlüsselt wird. - Block
780 verschlüsselt den generierten symmetrischen Schlüssel523 separat für jedes Gemeinschaftsmitglied (das heißt, für jeden DN innerhalb der Gemeinschaft), das berechtigt ist, das zugehörige Dokumentelement anzuzeigen. Dies wird ausgeführt durch Zugreifen auf jedes Schlüsselobjekt510 (wie in den Feldern535 ,536 , ...539 des Schlüsselklassenobjekts530 ), definiert für die aktuelle Vorverarbeitungsschlüsselklasse und für jedes Schlüsselobjekt, (1) durch Abrufen des öffentlichen Schlüssels505 vom X.509 Zertifikat502a , (2) Verwenden dieses öffentlichen Schlüssels505 zum Verschlüsseln des symmetrischen Schlüssels523 unter Verwendung des Verschlüsselungsalgorithmus und der Schlüssellänge, gespeichert bei532 und533 und (3) Speichern des daraus resultierenden verschlüsselten Schlüssels in Feld503 des Schlüsselobjekts. Dies führt zu einer verschlüsselten Kopie des symmetrischen Schlüssels je Gemeinschaftsmitglied mit einem separaten DN501 und einem X.509 Zertifikat502a . (Mit anderen Worten, es wird dann eine verschlüsselte Kopie des symmetrischen Volltextschlüssels523 für die ganze Gruppe generiert und dem DN der Gruppe zugeordnet.) Um Platz zu sparen, wird dann in den bevorzugten Ausführungsbeispielen das X.509 Zertifikat502a durch den zugehörigen KeyIdentifier502b ersetzt, der in Kombination mit dem Distinguished Name501 eine Identifizierung des spezifischen Zertifikats ermöglicht, dass während der Verschlüsselung verwendet wurde. - Block
785 fügt dann das Schlüsselklassenobjekt530 in den DOM-Stamm ein, wie durch die vorhandenen Schlüsselklassenobjekte461 ,462 dargestellt, die sich in dem befinden, was als Stammbereich460 des Output-Dokuments450 in4C bezeichnet werden kann. - Bei Block
790 wird der von Block760 gelesene Elementwert verschlüsselt, unter Verwendung des symmetrischen Volltextschlüssels523 (d.h. es ist ein ähnlicher Wert wie der für "tempkey"434 in4B gezeigt vorhanden), des Verschlüsselungsalgorithmus, durch523 identifiziert, sowie der Schlüssellänge533 für die Schlüsselklasse des Elements531 . Wenn es sich um das erste Element handelt, das unter Verwendung einer gegebenen Schlüsselklasse verschlüsselt wird, wird der in Block775 erstellte Initialisierungsvektor als Input in den Verschlüsselungsalgorithmus verwendet, andernfalls wird Material verwendet, das aus der vorherigen CBC Operation für diese spezielle Schlüsselklasse resultiert. - Es ist zu beachten, dass es vorkommen kann, dass ein zu verschlüsselndes Element über andere Elemente verfügt (wie etwa Kinderelemente), die ebenfalls über eine Vorgaben angebende Verschlüsselung verfügen. Um diese Situation zu bewältigen, durchsucht der Nachprozessor vorzugsweise den gesamten, zu verschlüsselnden Unterbaum, um festzustellen, ob solche eingebetteten Elemente vorhanden sind. Wenn dies der Fall ist, bestimmt der Nachprozessor vorzugsweise den am meisten beschränkten Typ der Verschlüsselung, der auf alle Elemente des Unterbaums zutrifft. Die anschließenden Tags des Unterbaums stellen die Unterklasse dar, die dieser höchsten Verschlüsselungsstärke zugeordnet sind, und jegliche Verschlüsselungstags, die um eingebettete Elemente eingefügt wurden, werden entfernt. Der gesamte Unterbaum wird dann unter Verwendung dieses höchststufigen Ansatzes verschlüsselt. Zuständig dafür ist der Systemadministrator, der die Sicherheitsvorgaben definiert, um sicherzustellen, dass diese Art der Verarbeitung nicht zur Verschlüsselung der falschen Gemeinschaft oder zur Verschlüsselung des Unterbaums unter Verwendung des falschen Algorithmus führt. Es ist klar, dass der Systemadministrator die Semantik der zu verarbeitenden Daten kennen muss, um die Elementsichtbarkeit ordnungsgemäß zuordnen zu können.
- Während das Beispiel für ein selektiv verschlüsseltes Dokument in
4B die Elementtags als unverschlüsselt gelassene Elemente zeigt, kann es in bestimmten Situationen vorkommen, dass die Tags selbst sowie die von den Tags umschlossenen Datenwerte verschlüsselt werden. Um diese Möglichkeit einzuschließen, kann das zugehörige Vorgabenobjekt so geschrieben werden, dass es die Verschlüsselungstags (siehe422 ,424 aus4B ) um die Elementtags herum anstatt um den Elementwert herum platziert. - Es ist möglich, dass ein zu verschlüsselndes Element kürzer, gleich oder länger als die in einem CBC-Prozess verwendete Blocklänge ist. Wenn die zu verschlüsselnden Daten die Blocklänge überschreiten, werden in diesem Schritt des Algorithmus mehrere Blöcke erstellt. Wenn die zu verschlüsselnden Daten (plus dem Initialisierungsvektor) kein exaktes Vielfaches der Blockgröße sind, können nicht-signifikante Paddingbits an das Ende des Elements eingefügt werden, wodurch der letzte Block für jedes gegebene Element Null oder mehrere Paddingbits enthält. Normalerweise verfügt ein CBC nur am Ende des letzten Datenblocks über Paddingbits. In der vorliegenden Erfindung jedoch können Paddingbits am Ende jedes letzten Blocks für jedes verschlüsselte Element vorhanden sein. Alternativ dazu können bekannte Methoden, wie Ciphertext Stealing, verwendet werden, um einen letzten Verschlüsselungsblock zu erstellen, der kürzer ist als die Blocklänge.
- Das verschlüsselte Element wird dann markiert, um anzugeben, dass es verschlüsselt wurde (Block
795 ), unter Verwendung einer Syntax, wie zuvor beschrieben (siehe452 ,454 von4C ), wobei der Schlüsselklassen-Identifier531 als ein Attribut des Tags eingefügt wird, zur Verwendung in einem nachfolgenden Entschlüsselungsprozess. Wenn das Element Paddingbits enthält, kann die Anzahl an Paddingbits über ein Attribut auf dem verschlüsselten Element angegeben werden oder indem eine Feldlänge vor die Volltextdaten vor der Verschlüsselung gestellt werden. (Es ist zu beachten, dass diese bestimmte Schlüsselklasse notwendigerweise eine der Schlüsselklassen461 ,462 im DOM-Stamm des Dokuments sein muss, die dort von Block785 eingefügt wurden). Die Schlüsselklasseninformationen vom DOM-Stamm sind für den Verschlüsselungsprozess erforderlich. Es ist weiterhin zu beachten, dass wenn das generierte Dokument (wie etwa das Dokument450 in4C ) ein XML-Dokument ist, die neuen Objekte und die dazugehörigen Tags (wie etwa die Schlüsselklassen461 ,462 , die verschlüsselten Datentags452 ,454 usw.), die in dieses Dokument entsprechend der vorliegenden Erfindung übertragen werden, als Elemente des Datenvorgabennamensbereichs (beispielsweise durch Verwenden von "encrypt:data" statt einfach "class" für Schlüsselklassenobjekte461 ,462 ) erscheinen, um eine zweideutige Interpretation oder ein ungewolltes Verarbeiten dieser Objekte und Tags zu verhindern. - Block
798 prüft dann, ob das Ende des DOM-Stroms erreicht wurde. Wenn dies der Fall ist, ist der Prozess der selektiven Verschlüsselung beendet und das Output-Dokument450 ist bereit zum sicheren Speichern oder zur sicheren Übertragung, und7C ist beendet. Andernfalls kehrt die Steuerung zu Block760 zurück, um das nächste Element im DOM-Strom zu lesen. - Eine Anzahl verschiedener bevorzugter Ausführungsbeispiele wird hier definiert, zur Verschlüsselung des selektiv verschlüsselten Dokuments, erstellt durch die Verarbeitung der
7A bis7C . Wie bereits erläutert, arbeitet jede Verschlüsselungsoperation vorzugsweise als Teil des erweiterten XML-Prozessors. Jedes bevorzugte Ausführungsbeispiel zur Verschlüsselung wird nun einzeln beschrieben. - ERSTES BEVORZUGTES AUSFÜHRUNGSBEISPIEL ZUR VERSCHLÜSSELUNG
- In einem bevorzugten Ausführungsbeispiel empfängt ein einzelner Benutzer (oder äquivalent dazu ein einzelnes Anwendungsprogramm oder ein Prozess mit eigenem DN) das verschlüsselte Dokument auf der Client Workstation und führt auf dieser Client Workstation einen Verschlüsselungsprozess aus. Die Logik, mit der dieses bevorzugte Ausführungsbeispiel implementiert werden kann, wird in den
8A und8B gezeigt. (Dieses bevorzugte Ausführungsbeispiel läßt den Fall außer Acht, in dem ein Benutzer ein berechtigtes Gemeinschaftsmitglied aufgrund der Tatsache ist, dass er Mitglied einer Gruppe ist, wobei diese Gruppe als Gemeinschaftsmitglied definiert ist. Die verwendete Logik zur Verarbeitung eines Benutzers als ein Gruppenmitglied wird im folgenden beschrieben, unter Verweis auf die10A bis10C . Obwohl dieses Ausführungsbeispiel die Verarbeitung des Dokumentempfangs für einen Benutzer beschreibt, der kein Gruppenmitglied ist, separat von der Logik zur Verarbeitung eines Gruppenmitglieds, sollte es den Fachleuten klar sein, dass die Logik für diese Fälle mit einer bestimmten Implementierung kombiniert werden kann. Im besonderen kann die Logik, wie jene unten beschriebene, an Block1006 beginnende, einem negativen Ergebnis in Block825 folgend eingefügt werden, auch unten beschrieben, um zu bestimmen, ob es sich bei dem Benutzer um ein Gruppenmitglied handelt.) - Bei Block
800 hat der Benutzer ein Dokument empfangen (wie etwa das Dokument an450 in4C ), das selektiv verschlüsselt wurde. Dieses Dokument kann aufgrund einer Anforderung durch den Benutzer empfangen worden sein. Oder es wurde an diesen Benutzer durch einen anderen Benutzer oder Prozess weitergeleitet, als Teil einer gruppenweise Zusammenarbeit. Vorausgesetzt, dass der öffentliche Schlüssel des Benutzers verwendet wurde, um mindestens eines der verschlüsselten Elemente des Dokuments zu verschlüsseln, ist der Benutzer in der Lage, auf diese schützenswerten Informationen zuzugreifen, auch wenn das Dokument ursprünglich nicht für diesen Benutzer erstellt wurde. Block805 liest ein Schlüsselklassenobjekt (wie etwa das Schlüsselklassenobjekt461 oder462 ) vom DOM-Stamm des empfangenen Dokuments (wobei der erweiterte XML-Prozessor eine DOM-Baumdarstellung des empfangenen Dokuments erstellt hat). Wenn keine solchen Schlüsselklassen vorhanden sind, wurde dieses Dokument nicht selektiv unter Verwendung der vorliegenden Erfindung verschlüsselt, und das Dokument kann ausgegeben werden, unter Verwendung von Prozessen, die nicht Gegenstand der vorliegenden Erfindung sind. Block810 prüft, ob dieser Benutzer-DN in einem der Schlüsselobjekte für diese Schlüsselklasse erscheint. In dem Beispiel des Mitarbeiterdatensatzes, unter der Voraussetzung, dass der DN eines Mitarbeiters seine Seriennummer für den Wert des Feldes CN verwendet, würde der Mitarbeiter namens John Q Smith und mit seiner Seriennummer E135246 (siehe402 ,404 der4A ) seinen DN am Schlüsselobjekt465 lokalisieren und bei Block810 entstünde ein positives Ergebnis. - Wenn Block
810 über ein positives Ergebnis verfügt, wird die Verarbeitung an Block815 fortgesetzt, wobei der verschlüsselte symmetrische Schlüssel von diesem Schlüsselobjekt abgerufen wird, das über einen DN verfügt, der mit dem DN des Benutzers übereinstimmt. (In5A wird der verschlüsselte Schlüssel503 von einem Objekt abgerufen, das über das in510 gezeigte Format verfügt.) Der private Schlüssel des Benutzers wird dann verwendet, um diesen verschlüsselten symmetrischen Schlüssel an Block820 zu entschlüsseln. Der öffentliche Schlüssel des Benutzers wurde verwendet, um diesen Schlüssel an Block790 in7C zu verschlüsseln, und wenn dieser Benutzer also der wirkliche Besitzer des Paares privater und öffentlicher Schlüssel ist, verläuft der Entschlüsselungsprozess erfolgreich; andernfalls, wenn der Benutzer an Block790 nicht über den privaten Schlüssel verfügt, der zum öffentlichen Schlüssel gehört, wird dem Benutzer der Zugriff auf die schützenswerten Elemente innerhalb der verarbeiteten Schlüsselklasse verweigert. - Block
825 wird nach Beendigung von Block820 und gefolgt von einem negativen Ergebnis an Block810 erreicht. Block825 prüft, ob sich noch weitere Schlüsselklassenobjekte im DOM-Stamm des empfangenen Dokuments befinden. Der Benutzer kann zur Entschlüsselung von mehr als einer Schlüsselklasse berechtigt sein, wie in dem Fall des Mitarbeiters im Beispiels des Mitarbeiterdatensatzes, wobei der Mitarbeiter Zugriff auf alle verschlüsselten Informationen erhält (und somit als berechtigtes Gemeinschaftsmitglied für jede zur Dokumentverschlüsselung verwendete Schlüsselklasse eingerichtet wird). Wenn Block825 über ein positives Ergebnis verfügt, kehrt die Steuerung zu Block805 zurück, um das nächste Schlüsselklassenobjekt zu verarbeiten; andernfalls werden alle Schlüssel, für die dieser Benutzer eine Berechtigung hat, wiederhergestellt und das verschlüsselte Dokument wird nun verarbeitet. - Block
830 liest ein Element des DOM, in der gleichen Stromreihenfolge, die für den Verschlüsselungsprozess verwendet wurde, um die Operationen der Verschlüsselungsblockverkettung rückgängig zu machen (d.h. zu entschlüsseln). Block835 fragt, ob das gerade gelesene Element verschlüsselt ist, wie durch das Vorhandensein eines Verschlüsselungs-Tags festgelegt ist, etwa das Tag in452 in4C . Wenn dies nicht der Fall ist, fügt Block840 das Volltextelement zu einem erstellen Output-Puffer hinzu. Block845 prüft, ob das Ende des DOM-Stroms erreicht wurde. Wenn dies nicht der Fall ist, kehrt die Steuerung zu Block830 zurück, um das nächste Dokumentelement zu verarbeiten. Wenn auf der anderen Seite Block845 über ein positives Ergebnis verfügt (d.h. das Dokument vollständig verarbeitet wurde, einschließlich Entschlüsselung der verschlüsselten Elemente, für die der Benutzer den erforderlichen privaten Schlüssel besaß), wird der Inhalt des Output-Puffers verwendet, um die Dokumentelemente aus dem Output-Puffer (Block850 ) zu liefern, unter Verwendung von Techniken, die den Fachleuten bekannt sind. Die Verarbeitung von8A ist dann beendet. - Wenn in Block
835 der Test ein positives Ergebnis aufweist (d.h. das Element verschlüsselt ist), wird ein Versuch unternommen, den Elementwert unter Verwendung der Logik in8B zu entschlüsseln. Zunächst wird er Schlüsselklassen-Identifier vom Schlüsselklassenattribut (Block855 ) empfangen. Dann prüft Block860 , ob dieser Benutzer einen symmetrischen Schlüssel für diese empfangene Schlüsselklasse wiederhergestellt hat. Wenn dies der Fall ist, fragt Block865 , ob dies das erste entschlüsselte Element in dieser Schlüsselklasse ist. Wenn dieser Test ein positives Ergebnis aufweist, gibt Block870 an, dass der Initialisierungsvektor, der entsprechend der CBC nach Stand der Technik eingefügt wurde, entfernt worden ist. Wenn dieser Test ein negatives Ergebnis aufweist, werden die Ergebnisse der vorigen Entschlüsselung für diese Schlüsselklasse verwendet, um den Entschlüsselungsalgorithmus zu initialisieren. Block875 verwendet dann den Schlüssel, der an Block820 für diese Schlüsselklasse entschlüsselt wurde, zusammen mit dem Input der Verschlüsselungsblockverkettung, um das verschlüsselte Element zu entschlüsseln. Die Verarbeitung kehrt zu Block840 von8A zurück, wobei der entschlüsselte Wert an den Output-Puffer angehängt wird. Wenn der Benutzer keinen Schlüssel für diese Schlüsselklasse wiederhergestellt hat, gibt Block880 an, dass ein Ersatzwert verwendet werden kann, wie etwa "Element kann nicht entschlüsselt werden". Die Steuerung kehrt zu Block840 von8A zurück, wo dieser Ersatzwert an den Output-Puffer angehängt wird. - Dieser Ansatz der Verwendung eines Ersatztextes (siehe Block
880 ) wird in den bevorzugten Ausführungsbeispielen verwendet, anstatt verzerrte Informationen an den Benutzer oder unverständliche (d.h. noch verschlüsselte) Daten an ein Anwendungsprogramm auszugeben. Andere Techniken zum Bereitstellen von Ersatztext können ebenfalls verwendet werden. Die Verschlüsselungsstärke beispielsweise (beispielsweise "Classified", "Top Secret" usw.), die dem Element zugeordnet wurde, kann anstelle des Wertes angegeben werden, der nicht entschlüsselt werden konnte. Oder es kann visuell eine Angabe gemacht werden, um anzugeben, dass das Element "zensiert" wurde, unter Verwendung einer entsprechenden visuellen Anzeige, oder der verschlüsselte Wert kann einfach weitergegeben werden, für eine mögliche Entschlüsselung durch eine andere Verarbeitungseinheit. - Alternativ dazu kann es in einer bestimmten Implementierung wünschenswert sein, einfach alle Verweise auf das Element im Ouput-Dokument zu übergehen. Die Verwendung dieser Lösung mit einem Ersatz oder eine bestimmte Darstellung davon ist ein optionales Merkmal der vorliegenden Erfindung und kann gänzlich entfallen, ohne dass vom Gegenstand der vorliegenden Erfindung abgewichen wird.
- ZWEITES BEVORZUGTES AUSFÜHRUNGSBEISPIEL ZUR VERSCHLÜSSELUNG
- Ein weiteres bevorzugtes Ausführungsbeispiel wird für die Situation definiert, in der entweder (1) die Workstation eines Benutzers nicht über die ausreichende Arbeitsleistung verfügt, um den Verschlüsselungsprozess der vorliegenden Erfindung auszuführen, oder (2) es wünschenswert ist, Änderungen im Programmcode auf der Client Workstation zu vermeiden. Somit führt ein Client Proxy den Verschlüsselungsprozess für den Benutzer (oder für eine Anwendung auf der Client Workstation) aus. Die Logik, mit der dieses bevorzugte Ausführungsbeispiel implementiert werden kann, wird in den
9A und9B gezeigt. Der Benutzer in diesem Szenario verwendet eine standardmäßige Web Browser Client Anwendung (wie etwa den Browser Client675 in6 ) auf seiner Workstation oder einen standardmäßigen Programm-Client (wie etwa den Programm-Client680 ) und fordert ein selektiv verschlüsseltes XML-Dokument von einem Proxy (wie etwa dem Client Proxy655 ) an, der für den Browser Client agiert. Durch die Verwendung dieses Client Proxys655 stellt dieses bevorzugte Ausführungsbeispiel selektiv verschlüsselten Dokumentinhalt den Browser Clients675 oder den Programm-Clients680 zur Verfügung, ohne dass Programmänderungen oder zusätzliche Software auf dem Client-Gerät notwendig werden. -
9A zeigt das bevorzugte Ausführungsbeispiel eines Initialisierungsprozesses, der durch den Client Proxy655 (auch als Server bezeichnet) ausgeführt wird, um es dem Proxy655 zu ermöglichen, auf selektiv verschlüsselte Dokumente für einen standardmäßigen Browser Client675 oder einen Programm-Client680 zuzugreifen.9B zeigt dann das bevorzugte Ausführungsbeispiel der Logik, mit der dieser Proxy den Inhalt entschlüsselt (falls die entsprechende Berechtigung dazu vorhanden ist) und der entschlüsselte Inhalt über eine sichere Sitzung (wie etwa eine SSL-Sitzung) diesem Client zur Verfügung gestellt wird. Die Beschreibung der9A und9B behandeln den Proxy, der für den Browser Client675 arbeitet, wenn auch den Fachleuten klar ist, dass diese Logik ebenfalls auf den Programm-Client680 anwendbar ist. (Die Verarbeitung innerhalb des Clients wird für dieses Ausführungsbeispiel nicht gezeigt, da die Client-Verarbeitung bekannte Techniken verwendet. Die neuartigen Funktionen, bei denen ein selektiv verschlüsseltes Dokument entsprechend der vorliegenden Erfindung zur Verfügung gestellt wird, arbeiten auf dem Client Proxy in diesem Ausführungsbeispiel.) - Zunächst versucht der Benutzer des Browsers
675 , auf eine spezifische Web Page zuzugreifen. Der Server655 ermittelt bei Empfang dieser Anforderung bei Block900 die Möglichkeiten des Browsers675 (beispielsweise durch Untersuchen der Kopffelder des Anforderers, wie den Fachleuten bekannt ist). Bei Block902 , falls der Browser zu einer entsprechenden Verschlüsselungsstufe in der Lage ist, wird eine verschlüsselte Verbindung mit gegenseitiger Autorisierung (gezeigt in den9A und9B als eine SSL Sitzung, obwohl alternative Protokolle, wie TLS ebenfalls verwendet werden können) zwischen dem Browser Client und Proxy erstellt. (Zweck der Erstellung einer sicheren Sitzung zwischen Browser und Proxy ist es, den Proxy in die Lage zu versetzen, die Verschlüsselung von schützenswerten Informationen für den Client auszuführen, wobei die verschlüsselten Informationen vor dem Zugriff durch Dritte geschützt werden.) Andernfalls wird eine Verbindung ohne SSL hergestellt. - Block
904 testet, ob eine gegenseitig autorisierte SSL-Sitzung mit Verschlüsselung erstellt wurde. Wenn dies der Fall ist, wird die Verarbeitung an Block906 fortgesetzt; andernfalls wird die Verarbeitung an Block922 fortgesetzt. Bei Block906 untersucht der Proxy655 das Zertifikat des Clients (das während der Erstellung der SSL-Sitzung nach Stand der Technik bereitgestellt wurde). Eine Reihe von Tests kann für dieses Client-Zertifikat ausgeführt werden, unter Verwendung von Techniken, die den Fachleuten bekannt sind, etwa: Prüfen des Ablaufdatums, Prüfen, ob die Kette zurück zur Stammstelle validiert werden kann usw. Wenn das Zertifikat in Ordnung ist, durchsucht der Server655 bei Block908 das LDAP-Verzeichnis640 (oder ein anderes Repository) nach dem Client Zertifikat, um den dazugehörigen DN zu erhalten. Wenn die an Block906 durchgeführten Tests Probleme mit dem Zertifikat anzeigen (das Zertifikat ist beispielsweise abgelaufen), kann die Steuerung optional auf Block920 übergehen, um dort das Problem mit dem Zertifikat zu lösen, wie unten beschrieben. (Alternativ dazu kann der Server655 einfach die Client-Anforderung zurückweisen, wie etwa durch Ausgabe einer Fehlermeldung, wenn Block906 ein negatives Ergebnis aufweist, wobei die Verarbeitung bei9A endet.9B wird in dieser Situation nicht aufgerufen, da der Client Proxy nicht in der Lage ist, dem anfordernden Benutzer ein sicheres Dokument bereitzustellen.) - Block
910 prüft, ob der zugehörige DN gefunden wurde. Wenn dies der Fall ist, kann der Server655 optional die Verarbeitung an den Blöcken912 und914 ausführen. Diese optionale Verarbeitung umfasst zuerst das Testen des Blocks912 , um zu prüfen, ob das Zertifikat bald ablaufen wird ("bald" kann vom Systemadministrator oder durch Installationsvorgaben definiert werden, deren Informationen für Server655 zugänglich sind, beispielsweise da Vorgabeninformationen in einer Datenbank oder in einem LDAP-Verzeichnis640 gespeichert sind). Wenn das Zertifikat bald abläuft, wird diese optionale Verarbeitung an Block914 fortgesetzt, wobei (unter der Voraussetzung, dass das Zertifikat des Benutzers von einer lokalen Zertifikatsstelle ausgegeben wurde und eine Neuautorisierungsanforderung für dieses bald ablaufende Zertifikat noch nicht ausgegeben wurde) setzt der Server655 eine Neuautorisierungsanforderung (siehe1270 in12 ) in die Warteschlange der Administratoranwendung630 , setzt jedoch die Verarbeitung für den Client675 fort. Wenn die optionale Verarbeitung der Blöcke912 und914 beendet wurde oder wenn diese Verarbeitung unterlassen wurde, speichert der Server655 (Block916 ) den DN des Benutzers mit dem Kontext der SSL-Sitzung zum späteren Verweisen (siehe die Beschreibung von Block974 , unten). Block917 prüft dann, ob eine URL für ein selektiv verschlüsseltes Dokument bereits verfügbar ist, beispielsweise aus der Client-Anforderung an Block900 . Wenn dies der Fall ist, geht die Steuerung auf Block942 in9 über. Andernfalls bildet der Server655 vorzugsweise eine benutzerdefinierte "http" Web Page (d.h. eine Web Page mit sicherem Hypertext Transport Protocol zur Übermittlung während der sicheren Sitzung) für den Benutzer675 an Block918 , wie etwa ein Menü mit sicheren Dokumenten, das der Benutzer675 anfordern kann. Alternativ dazu kann der Server655 einfach ein Abfragemenü, etwa ein Datenbank-Frontend, dem Benutzer in Block918 zur Verfügung stellen, wodurch der Benutzer nach bestimmten selektiv verschlüsselten Dokumenten suchen kann, die zur Verfügung stehen. Nach Beendigung der Verarbeitung in Block918 geht die Steuerung auf Block940 in9B über, um dem anfordernden Benutzer eine selektiv verschlüsselte Seite zur Verfügung zu stellen. - Wenn in Block
904 keine SSL-Sitzung erstellt wurde (beispielsweise weil der Client675 kein Zertifikat besitzt), kann eine optionale Prozedur ausgeführt werden, wobei der Server655 versucht, Information zum Erstellen eines Client-Zertifikats zu sammeln. Diese optionale Prozedur umfasst die Blöcke922 bis932 und beginnt mit dem Server, der ein Registrierungsformular anzeigt (Block922 ), um den Eintrag der notwendigen Identifikationsdaten durch den Benutzer zu erfassen. Der Benutzer gibt die angeforderten Informationen an Block924 ein (beispielsweise Name, Unternehmen, Telefonnummer, E-Mail-Adresse, Mitarbeiternummer, Kreditkartennummer), die später unabhängig vom Systemadministrator630 in dem Prozess geprüft werden können, der unten unter Verweis auf12 beschrieben wird. (Es sollte den Fachleuten sein, dass die zu erfassenden und zu validierenden spezifischen Registrierungsidentifikationsdaten entsprechend der Anforderungen bestimmter Installationen variieren können. Es können dahingehend unternehmerische Vorgaben unter Verwendung des LDAP-Verzeichnisses640 erstellt und unterstützt werden). Der Server ordnet dem Benutzer675 einen Distinguished Name und ein Zertifikat (Block926 ) zu. Es ist zu beachten, dass zu diesem Zeitpunkt das neue Zertifikat noch nicht mit Zugriffsprivilegien ausgestattet wurde. Es ermöglicht dem Benutzer675 lediglich, bei späteren Besuchen eindeutig als dem DN zugeordneter Benutzer identifiziert zu werden, indem seine Beziehung zum Zertifikat nachgewiesen wird, das mit diesem DN verbunden ist, unter Verwendung einer digitalen Signatur. Bei Block928 speichert der Server655 (beispielsweise in einem LDAP-Verzeichnis640 ) die Benutzerdateneingaben (aus Block924 ), den DN und das Zertifikat zur späteren Verwendung. - Bei Block
930 erstellt der Server655 eine "neue Benutzerbestätigungsanforderung" (siehe1290 in12 ), unter Verwendung der erhaltenen Registrierungsinformationen und platziert diese Anforderung in die Arbeitswarteschlange des Systemadministrators (siehe1200 in12 ) zur späteren Verarbeitung. Bei der Beendigung dieser optionalen Verarbeitung kann dem neuen Benutzer eine standardmäßige sichere Web Page angezeigt werden (Block932 ), wobei diese standardmäßige Web Page eine Meldung anzeigen kann, wie etwa "Willkommen im sicheren Dokumentserversystem. Sie werden per E-Mail benachrichtigt, wenn Ihnen Zugriffsprivilegien zugewiesen wurden." Die Verarbeitung in9A (und ebenfalls in9B , da der Client Proxy noch kein sicheres Dokument für diesen Benutzer entschlüsseln kann) ist dann beendet. - Wenn in Block
906 eine sichere Sitzung erstellt wurde, jedoch Probleme mit dem Client-Zertifikat entdeckt wurden, kann eine weitere Funktion dieses bevorzugten Ausführungsbeispiels ausgeführt werden, indem die Steuerung von Block906 auf Block920 übergeht. Block920 prüft, ob bereits Registrierungsdaten für diesen Client bestehen (beispielsweise im LDAP-Verzeichnis). Wenn nicht, kann die zuvor für die Blöcke922 bis932 beschriebene optionale Verarbeitung ausgeführt werden (oder aber die Verarbeitung endet einfach). Wenn bereits vorhandene Daten gefunden werden, kann der Server655 entsprechend dieser optionalen Funktion fortfahren, indem eine Neuautorisierungsanforderung unter Verwendung dieser bestehenden Informationen erstellt wird, und die Steuerung geht auf Block930 (oben beschrieben) über, um diese Anforderung zur Verarbeitung in die Warteschlange zu stellen. - Die gerade beschriebene optionale Funktion unter Verweis auf Block
920 kann ebenfalls (optional) von Block910 aus aufgerufen werden, wenn die Suche für den DN des Client nicht erfolgreich ausgeführt werden konnte. Wenn Block910 ein negatives Ergebnis aufweist, ist bekannt, dass der Client über ein gültiges Zertifikat verfügt (Ein Ergebnis "Ja" bei Block906 ), jedoch kein DN im LDAP-Verzeichnis640 oder in einem anderen Repository, durchsucht an Block908 , gefunden wurde, der mit diesem Zertifikat übereinstimmt. - Es ist den Fachleuten bekannt, dass die Verbreitung digitaler Zertifikate zu einem Problem wird, da sie unter den Benutzern Verwirrung stiften und möglicherweise zu Problemen in der Skalierbarkeit führen können, aufgrund der Anzahl an Zertifikaten, die zum Speichern, Zugreifen, Erneuern usw. für jeden Client erforderlich sind. Somit kann die optionale Verarbeitung von Block
920 zum Versuch einer Lokalisierung und Verwendung bereits vorhandener Registrierungsinformationen in einer Implementierung des bevorzugten Ausführungsbeispiels eingesetzt werden, mit dem Ziel, dass ein Benutzer mit einem gültigen Zertifikat (oder einem abgelaufenen Zertifikat, das nur erneuert werden muss, wie es der Fall ist, wenn diese Verarbeitung als Reaktion auf ein negatives Ergebnis bei Block906 aufgerufen wird) zu diesem sicheren Dokumentsystem hinzugefügt werden kann, ohne dem Benutzer notwendigerweise ein neues Zertifikat ausstellen zu müssen. Wenn daher diese optionale Verarbeitung bestehende Registrierungsinformationen lokalisiert (Ein Ergebnis "Ja" in Block920 ), werden diese bestehenden Informationen verwendet, um eine Arbeitsanforderung für den Administrator vorzubereiten (wie oben unter Verweis auf Block930 beschrieben), der die Erstellung einer neuen Einheit anfordert (siehe1290 in12 ). -
9B zeigt die Verarbeitung, mit der der Client Proxy655 ein selektiv verschlüsseltes Dokument entschlüsselt und einem Client675 bereitstellt, nachdem die Verarbeitung von9A ausgeführt wurde. Der Benutzer675 wählt ein selektiv verschlüsseltes Dokument bei Block940 (etwa von dem in Block918 gezeigten Menü). Der Server ruft dann dieses angeforderte Dokument (Block942 ) ab. (Es ist zu beachten, dass die Steuerung ebenfalls Block942 erreicht, als Folge eines positiven Ergebnisses bei Block917 in9A ). Der erweiterte XML-Preparser660 auf dem Server655 liest nun die DOM-Darstellung des Dokuments (Block944 ) in der Strom-Reihenfolge (um sie mit der Reihenfolge abzugleichen, in der das Dokument während der Verschlüsselung analysiert wurde) für ein Element, das entsprechend der vorliegenden Erfindung verschlüsselt wurde. Wenn das an Block944 befindliche Element nicht verschlüsselt ist (Ein Ergebnis "Nein" bei Block946 ), setzt der Server die Verarbeitung an Block966 fort, wobei die Volltextdaten an einen Output-Puffer angehängt werden. Wenn andernfalls das Element verschlüsselt ist, (ein "Ja"-Ergebnis bei Block946 ) versucht der Proxy655 eine Entschlüsselung dieses Elements für den Client675 . - Der Prozess der Entschlüsselung eines Elements für den Client
675 beginnt bei Block948 , wobei der Proxy655 die Gruppenmitgliedschaft auf die DNs erweitert, die Gruppen in der Schlüsselklasse dieses Elements darstellen. Im Beispieldokument in4C umfasst die Verarbeitung von Block948 das Lokalisieren des Schlüsselklassen-Identifiers456 beim Verarbeiten des verschlüsselten Elements452 , das Auffinden der DNs von Gruppen471 ,473 von den Schlüsselobjekten innerhalb der Schlüsselklasse461 mit dem Identifier453 (siehe463 ), der sich im verschlüsselten Element-Tag befindet und anschließend Bestimmen der Mitgliedschaft dieser Gruppen mit dem gemeinsamen Namen "managers"470 und "hr"472 . Wenn ein LDAP-Verzeichnis zum Speichern von Informationen zur Gruppenmitgliedschaft verwendet wird, wie bereits beschrieben, umfasst das Bestimmen der Mitgliedshaft die Ausgabe eines LDAP-Befehls für jeden DN, der einer Gruppe zugeordnet wurde, wobei dieser Befehl die DNs der einzelnen Gruppenmitglieder abruft. (Es ist klar, wenn ein Daten-Repository anstelle eines Verzeichnisses verwendet wird, um die Informationen zur Gruppenmitgliedschaft zu speichern, wird der Befehl entsprechend diesem Repository verwendet.) Alternativ dazu kann eine Abfrage durchgeführt werden, in der Form "Ist dieser (einzelner DN) ein Mitglied dieser (Gruppen-DN)?". - Nach Ausweitung der Gruppen in dieser Schlüsselklasse fragt Block
950 , ob der Benutzer, für den der Proxy arbeitet, ein Mitglied einer dieser Gruppen ist. Wenn nicht, geht die Steuerung zu Block964 über, wo vorzugsweise eine Nachricht generiert wird (anstelle der Verwendung des immer noch verschlüsselten Elements, wie oben unter Verweis auf Block880 beschrieben) und an einen Output-Puffer angehängt (Block966 ), um anzuzeigen, dass das Element nicht entschlüsselt werden kann. Wenn der Benutzer ein Mitglied von mindestens einer autorisierten Gruppe ist, fährt die Steuerung an Block960 fort. - Block
960 lokalisiert den Verwalter für die Gruppe (oder wenn der Benutzer Mitglied mehrerer Gruppen mit Berechtigung für diese Schlüsselklasse ist, den Verwalter für jede der Gruppen), wobei der Verwalter der Besitzer des privaten Schlüssels für die Gruppe ist. Bei der Verwendung des LDAP-Verzeichnisses ist die Abfrage des LDAP-Verzeichnisses vorgesehen, unter Verwendung des Gruppen-DN, der für die Gruppe im Schlüsselobjekt identifiziert ist und den DN für den Gruppenverwalter anfordert. Wenn der Gruppenverwalter gefunden wurde (Block962 ), geht die Steuerung zu Block972 über; andernfalls gibt die Abwesenheit eines Gruppenverwalters vor, dass das Element für ein Gruppenmitglied nicht entschlüsselt werden kann und ein Ersatzelement zu diesem Zweck an den Output-Puffer in den Blöcken964 und966 angehängt wird. - Bei Block
972 erstellt der Proxy vorzugsweise eine sichere SSL (oder ein anderes gegenseitig autorisiertes Protokoll)-Sitzung für den Gruppenverwalter. Block973 fordert dann beim Gruppenverwalter die Verschlüsselung des entschlüsselten symmetrischen Schlüssels vom Schlüsselobjekt an, wobei dieser Benutzer als ein autorisiertes Gemeinschaftsmitglied erstellt wird. Diese Anforderung an den Verwalter umfasst die Weiterleitung des Schlüsselobjekts mit dem verschlüsselten symmetrischen Schlüssel, dem Proxy Server-Zertifikat und dem DN des Benutzers. (Es ist zu beachten, dass der Proxy nur einmal für eine bestimmte Schlüsselklasse kontaktiert werden sollte, für die ein symmetrischer Schlüssel während der Verschlüsselung eines Dokuments benötigt wird.) Vorzugsweise werden diese Informationen digital gekennzeichnet, bevor sie vom Proxy zum Verwalter übergehen, wie etwa durch Signieren einer Nachricht mit dem privaten Schlüssel des Benutzers entsprechend dem X.509 Zertifikat des Benutzers. Die Signatur kann vor Angriffen durch Zwischenstationen oder Wiederabspielen schützen. (Verschiedene Methoden zum Signieren sind den Fachleuten bekannt und können verwendet werden, ohne dass vom Gegenstand der vorliegenden Erfindung abgewichen wird.) Wenn eine gegenseitig autorisierte, sichere Sitzung (wie etwa eine SSL- oder TSL-Sitzung) zwischen dem Proxy und dem Verwalter verwendet wird, ist die digitale Signatur der übertragenen Informationen nicht zwingend notwendig, da die verschlüsselte Sitzung äquivalente Datenintegrität bietet. In einem Aspekt dieses bevorzugten Ausführungsbeispiels (weiterhin beschrieben unter Verweis auf Block982 unten) ist das zu entschlüsselnde Element ebenfalls Teil der signierten Informationen, die an den Verwalter weitergegeben werden. (Der DN des Benutzers wurde ja während der Verarbeitung von Block916 gesichert.) Gehen wir nun bei Dokument450 in4C davon aus, dass der Benutzer als Mitglied der Gruppe "managers"470 ,471 festgelegt wurde. In diesem Fall wird das Schlüsselobjekt464 durch Block974 an den Verwalter der Gruppe Vorgesetzte (managers) weitergegeben, wobei der Verwalter angewiesen wird, Schlüssel475 zu entschlüsseln. - Block
976 zeigt die Verarbeitung durch den Gruppenverwalter, wobei der Verwalter prüft, ob der Benutzer und der Proxy Server beide Mitglieder der berechtigten Gruppe sind. (Es ist zu beachten, dass der Proxy Server ein berechtigtes Gruppenmitglied sein soll, da er Zugriff auf die verschlüsselten schützenswerten Informationen hat, wenn der Entschlüsselungsprozess erfolgreich ausgeführt werden kann. Weiterhin kann der Proxy als ein Gruppenmitglied einer Gemeinschaft angegeben werden, unter Verwendung einer Syntax, ähnlich der in470 ,471 von4C , wobei der Wert "managers"470 durch einen Wert wie "proxy" oder "proxies" ersetzt wird. Wenn der Verwalter während Block976 entdeckt, dass diese Gruppensyntax verwendet wurde, um den Proxy anzugeben, muss die Proxygruppe erweitert werden, wie oben für Block948 beschrieben, um zu sicherzustellen, dass der Proxy tatsächlich ein berechtigtes Gemeinschaftsmitglied ist.) Wenn die an den Verwalter weitergegebenen Informationen digital signiert wurden (während der Verarbeitung von Block974 ) umfasst der Überprüfungsprozess in Block976 durch den Verwalter vorzugsweise auch die Überprüfung der digitalen Signatur (unter Verwendung von Techniken, die den Fachleuten bekannt sind), um sicherzustellen, dass der Anforderer die tatsächliche Quelle der Anforderung ist und dass die Informationen seit der Signatur nicht geändert worden sind, auch wenn diese Überprüfung ausgelassen werden kann, wenn die Informationen bei einer gegenseitig autorisierten, sicheren Sitzung empfangen wurden. Wenn Block976 ein negatives Ergebnis ausgibt, wird ein Fehlercode oder ein anderer Indikator für einen aufgetretenen Fehler an den Proxy durch den Verwalter ausgegeben, um anzugeben, dass der Verwalter kein Element für diesen Proxy im Namen dieses Benutzers entschlüsseln wird. Die Steuerung geht dann zu Block964 über, wo eine entsprechende Textnachricht im Output-Puffer platziert wird. - Wenn der Test in Block
976 erfolgreich ist, entschlüsselt der Verwalter anschließend (Block978 ) den symmetrischen Schlüssel vom Schlüsselobjekt, das er in Block974 erhalten hat. Der Verwalter besitzt einen privaten Schlüssel für jede Gruppe, für die er eine Verwalterfunktion ausführt. Somit wird der private Schlüssel für die im Schlüsselobjekt angegebene Gruppe für diesen Entschlüsselungsprozess verwendet. Block980 prüft, ob die Entschlüsselung erfolgreich war. Wenn nicht, wird eine Fehlerbehandlung (wie für ein Ergebnis "Nein" in Block976 beschrieben) ausgeführt. Wenn die Entschlüsselung erfolgreich war, hat der Verwalter den symmetrischen Schlüssel wiederhergestellt, der zum Entschlüsseln aller Dokumentelemente verwendet wurde, die auf dieses bestimmte Schlüsselobjekt verweisen (d.h. die für diese Gruppe autorisierten Dokumentelemente innerhalb der bestimmten Schlüsselklasse), und die Verarbeitung wird an Block982 fortgesetzt. - In einem ersten Aspekt des bevorzugten Ausführungsbeispiels (wobei das in Block
944 lokalisierte Element nicht an den Verwalter in Block974 weitergegeben wurde), nachdem der Verwalter den verschlüsselten symmetrischen Schlüssel entschlüsselt hat (Block978 oben), unter Verwendung des privaten Schlüssels der Gruppe, kann der Verwalter den nun als Volltextschlüssel vorhandenen Schlüssel erneut verschlüsseln, unter Verwendung des öffentlichen Schlüssels des Proxys (der dem Proxy Zertifikat in Block974 entnommen werden kann). Diese neue Version des symmetrischen Schlüssels wird dann durch den Verwalter digital signiert, unter Verwendung des privaten Schlüssels des Verwalters und an den Proxy (nicht gezeigt) zurückgegeben. Beim Empfangen dieses erneut verschlüsselten, signierten Schlüssels prüft der Proxy die digitale Signatur, um sicherzustellen, dass die Übertragung nicht von einem betrügerischen Verwalter gesendet wurde und dass sie nicht geändert wurde. Bei Block982 wird dieser entschlüsselte Schlüssel dann vom Proxy verwendet, um das Element zu entschlüsseln, das von Block944 lokalisiert wurde, und dieses Element wird dann an den Output-Puffer (Block966 ) angehängt. In diesem Aspekt wird die Sicherheit der empfindlichen Informationen weiterhin sichergestellt, indem nur ein Prozess (beispielsweise der Proxy) auf den verschlüsselten Elementwert für den Benutzer zugreift, anstelle von zwei Prozessen (beispielsweise Proxy und der Verwalter, wie unten in einem alternativen Aspekt beschrieben). Optional dazu kann der Verwalter auch das Proxy Zertifikat (oder den entsprechenden Schlüssel-Identifier) ausgeben, wenn der erneut verschlüsselte Schlüssel ausgegeben wird, so dass der Proxy den entsprechenden privaten Schlüssel einfach auf seinem lokalen Schlüsselring oder der Schlüsselkette lokalisieren kann (vorausgesetzt, dass der Proxy über mehrere Zertifikate und mehrere private Schlüssel verfügen kann). - Es ist zu beachten, dass in diesem ersten Aspekt, da der Verwalter die empfindlichen Informationen entschlüsselt (der erneut verschlüsselte symmetrische Schlüssel zur Verwendung bei der Verschlüsselung des Dokumentelements), und die Informationen an den Proxy zurückgehen, es nicht unbedingt erforderlich ist, über eine gegenseitig autorisierte, sichere Sitzung zwischen diesen Parteien zu verfügen. Der Verwalter kann dann einfach den in Block
978 entschlüsselten Schlüssel an den Proxy über diese sichere Sitzung zurückgeben anstatt den Schlüssel erneut zu verschlüsseln und diese erneut verschlüsselte Version weiterzugeben. - In einem alternativen Aspekt dieses bevorzugten Ausführungsbeispiels wurde das zu entschlüsselnde Element an den Verwalter während der Operation von Block
974 weitergegeben. Der Verwalter verwendet den symmetrischen Schlüssel, den er an Block978 entschlüsselt hat, um dieses Dokumentelement an Block982 zu entschlüsseln. Das entschlüsselte Element kann dann unverschlüsselt vom Verwalter an den Proxy ausgegeben (nicht gezeigt) werden, vorausgesetzt, dass eine gegenseitig autorisierte, sichere Sitzung zwischen ihnen besteht. (Andernfalls, ähnlich wie die oben beschriebene Technik für den ersten Aspekt dieses Ausführungsbeispiels, wenn eine gegenseitig autorisierte, sichere Sitzung nicht verfügbar ist, muss der Verwalter das entschlüsselte Dokumentelement mit dem öffentlichen Schlüssel des Proxys erneut verschlüsseln, bevor das Element über eine nicht sichere Sitzung an den Proxy zurückgeht. Beim Empfangen dieses erneut verschlüsselten Elements überprüft der Proxy die digitale Signatur des Verwalters, um sicherzustellen, dass die Übertragung nicht von einem betrügerischen Verwalter gesendet und dass sie nicht verändert wurde. Der Proxy verwendet dann seinen eigenen privaten Schlüssel zum Entschlüsseln des erneut verschlüsselten Elements.) Das ausgegebene Element wird dann durch den Proxy an den Output-Puffer (Block966 ) angehängt. Diese Art des optimierten Ausführungsbeispiels kann für eine Implementierung geeignet sein, in der die Verwalter- und die Proxyfunktion auf dem gleichen Rechner ausgeführt werden. - Nachdem Block
966 ein Element an den Output-Puffer angehängt hat (je nachdem, ob es sich um ein entschlüsseltes Element, eine Volltextversion eines Elements, das keine Verschlüsselung notwendig macht oder um eine Fehlernachricht handelt, die angibt, dass ein Element nicht verschlüsselt werden kann), überprüft Block986 , ob das verarbeitete Dokument weitere Elemente enthält. wenn dies der Fall ist, kehrt die Steuerung zu Block944 zurück, um das nächste Element abzurufen. Andernfalls gibt Block970 den nun vollständigen Output-Puffer mit dem Dokumentinhalt zurück an den anfordernden Benutzer in der sicheren Sitzung, für lokale Bereitstellung auf dem Gerät des Benutzers oder durch den Programm-Client und die Verarbeitung wird in9B beendet. (Alternativ dazu kann die Steuerung nach Beendigung von Block970 zu Block940 zurückkehren, um dort auf eine erneute Auswahl durch diesen Benutzer zu warten.) - Es sollte klar sein, dass der Proxy
655 ebenfalls das entschlüsselte Dokument in ein oder mehrere andere getagte Formate konvertieren kann, die für einen bestimmten Client geeignet sind, beispielsweise HTML, Wireless Markup Language ("WML"), Standard Generalized Markup Language ("SGML") oder auch das interne Dateiformat, das von einem Wortprozessor oder Drucker verwendet, bevor der Dokumentinhalt bei Block970 ausgegeben wird. - DRITTES BEVORZUGTES AUSFÜHRUNGSBEISPIEL ZUR VERSCHLÜSSELUNG
- In einem weiteren bevorzugten Ausführungsbeispiel wird das verschlüsselte Dokument von einem Mitglied einer Gruppe angefordert und empfangen, wobei die Gruppe ein berechtigtes Mitglied einer Gemeinschaft sein kann, die Zugriff auf mindestens ein Element des selektiv verschlüsselten Dokuments hat. Das Gruppenmitglied verwendet dann einen Verwalterprozess zur Entschlüsselung des symmetrischen Schlüssels, damit das Gruppenmitglied bestimmte Felder des Dokuments entschlüsseln kann. Die Logik, mit der dieses bevorzugte Ausführungsbeispiel implementiert werden kann, wird in den
10A bis10C gezeigt. - Die Verarbeitung in
10A beginnt mit einem Gruppenmitglied, das ein selektiv verschlüsseltes Dokument von einem Dokument Server bei Block1000 anfordert (beispielsweise durch Auswahl eines Dokument-Identifiers aus einem Menü, durch Ausgabe einer Datenbankabfrage mit Auswahl und Abruf des Dokuments usw.). Block1002 zeigt an, dass das Gruppenmitglied (auch als Benutzer für die restliche Beschreibung der10A bis10C bezeichnet) das angeforderte Dokument empfängt. Der Entschlüsselungsprozess beginnt. (Es ist zu beachten, dass während die Verarbeitung des Dokumentempfangs für ein Gruppenmitglied und für eine Einzelperson, die kein Gruppenmitglied ist, als separate Logik in den10A bis10C sowie in den8A an8B gezeigt wird, es den Fachleuten klar ist, dass die Logik für diese Fälle mit einer bestimmten Implementierung kombiniert werden kann. Ähnlich kann die Logik zur Verwendung eines Client Proxy beim Entschlüsseln eines Dokuments für einen Benutzer, wie in den9A und9B gezeigt, mit einem oder beiden Ansätzen kombiniert werden. Weiterhin kann die Technik zur Schlüsselwiederherstellung, wie sie unten unter Verweis auf11 beschrieben wird, mit jeder beliebigen Kombination anderer Funktionen kombiniert werden.) - Block
1004 liest eine Schlüsselklasse (wie etwa461 ,462 von4C ) vom Stamm der DOM-Darstellung des abgerufenen Dokuments. Alle DNs in dieser Schlüsselklasse, die Gruppen darstellen, werden an Block1006 erweitert (beispielsweise durch Ausgabe von LDAP-Abfragen zum Aufrufen der DNs der Gruppenmitglieder oder einer anderen äquivalenten Technik, wenn ein anderes Speicher-Repository verwendet wird). Block1008 prüft, ob dieser Benutzer ein Mitglied einer dieser erweiterten Gruppen ist. (Alternativ dazu kann der Benutzer lokal gespeicherte Informationen konsultieren, um festzulegen, ob er selbst sich als Mitglied einer der Gruppen sieht. Diese lokal gespeicherten Informationen können aus dem Hinweis stammen, der unter Verweis auf die Blöcke1240 und1287 beschrieben wird.) Wenn dies der Fall ist, wird die Schlüsselklasse vorzugsweise zu einer Liste mit Schlüsselklassenobjekten in Block1010 hinzugefügt, wobei die Liste aller zu entschlüsselnden Schlüsselklassen zur späteren Verarbeitung erstellt werden, entsprechend der Logik der Blöcke1014 bis1022 , wie es beschrieben wird. Dieser Ansatz reduziert die Anzahl an sicheren Sitzungen und Netzwerkarbeit, wenn ein gegebener Verwalter für mehrere Gruppen zuständig ist. Alternativ dazu kann die Logik der Blöcke1014 bis1022 umgehend aufgerufen werden, wenn ein positives Ergebnis in Block1008 festgestellt wird, mit der Möglichkeit zum Kontaktieren eines bestimmten Verwalters öfter als einmal. (Wenn ein bestimmter Benutzer Mitglied von mehr als einer Gruppe für eine beliebige gegebene Schlüsselklasse ist, kann eine Implementierungs-spezifische Entscheidung getroffen werden, welche Gruppe zu verarbeiten ist, welcher Verwalter zu kontaktieren ist und ob eine Lokalisierung des Verwalters fehlschlägt und die für diese ausgewählte Gruppe erfolgreich entschlüsselten Schlüsselobjekte verfolgt werden sollen, indem die Verarbeitung des Prozesses für jede nachfolgende Gruppe oder alternative Verwalter für die gleiche Gruppe, falls vorhanden, versucht werden.) - Die Steuerung erreicht
1012 , wenn der Benutzer kein Mitglied einer erweiterten Gruppe ist (ein Ergebnis "Nein" bei Block1008 ) und ebenfalls nach der Verarbeitung von Block1010 . Block1012 prüft, ob mehr als eine Schlüsselklasse im DOM-Stamm besteht. Wenn dies der Fall ist, kehrt die Steuerung zu Block1004 zurück, um die nächste Schlüsselklasse zu verarbeiten; andernfalls wird die Verarbeitung an Block1014 fortgeführt. - Die in den Blöcken
1014 bis1024 gezeigte Verarbeitung wird für jeden weiteren Verwalter wiederholt, der für die von Block1010 erfassten Schlüsselklassen zuständig ist. Block1014 lokalisiert den für eine Gruppe zuständigen Verwalter. Ein Gruppenverwalter muss kontaktiert werden, um den symmetrischen verschlüsselten Schlüssel einer Gruppe (wie etwa Schlüssel475 von4C ) zu lokalisieren, da Benutzer, die Gruppenmitglieder sind, keinen lokalen Zugriff zum privaten Schlüssel der Gruppe haben. Stattdessen besitzt der Verwalter diesen privaten Schlüssel. Vorzugsweise wird der Gruppenverwalter lokalisiert, indem auf die Informationen für die Gruppe im LDAP-Verzeichnis (oder in einem anderen Repository) zugegriffen wird, wobei diese Informationen die Identifikation des Verwalters umfassen. Block1016 fragt, ob der Gruppenverwalter gefunden wurde. Wenn nicht, wird die restliche Logik von10a für diese Gruppe (oder Gruppen, wenn mehrere Gruppen den gleichen Verwalter verwenden) umgangen und die Verarbeitung wird an Block1028 von10B fortgeführt. (Alle verschlüsselten Elemente in Schlüsselklassen, für die dieses Umgehen der Logik erfolgt, können nicht entschlüsselt werden, wie unter Verweis auf10B beschrieben werden wird.) - Nach dem erfolgreichen Lokalisieren eines Gruppenverwalters erstellt Block
1018 vorzugsweise eine SSL- oder eine andere gegenseitig autorisierte, sichere Sitzung zwischen dem Benutzer und dem Verwalter. Vorzugsweise signiert der Benutzer dann digital jedes Schlüsselklassenobjekt, das an den Verwalter (Block1020 ) übertragen wird. (Wie zuvor unter Verweis auf Block974 von9B beschrieben, ist es nicht zwingend notwendig, die Schlüsselklassenobjekte digital zu signieren, wenn sie bei einer gegenseitig autorisierten, sicheren Sitzung übertragen werden sollen.) Die Schlüsselklassenobjekte und das entsprechende Signaturzertifikat des Benutzers (oder sein entsprechender Schlüssel-Identifier) werden dann an den Verwalter übertragen (Block1022 ). (Es ist zu beachten, dass wenn eine gegenseitig autorisierte, sichere Sitzung nicht erstellt wurde, das Zertifikat des Benutzers an den Verwalter übertragen werden muss; andernfalls kann der Schlüssel-Identifier stattdessen übertragen werden.) Die Verarbeitung, die beim Gruppenverwalter erfolgt, in Reaktion auf den Empfang dieser Informationen, wird in10C gezeigt und im folgenden beschrieben. - Bei Block
1060 von10C hat der Verwalterprozess ein oder mehrere Schlüsselklassenobjekte empfangen, die für den Benutzer entschlüsselt werden müssen, zusammen mit dem Zertifikat des Benutzers (oder äquivalent dazu der DN des Benutzers und der Schlüssel-Identifier). Jedes Schlüsselklassenobjekt wird entsprechend der Logik der Blöcke1060 bis1070 verarbeitet. Danach ist der Verwalter fertig und wartet auf die nächste Anforderung. Block1060 erhält ein Schlüsselklassenobjekt von den weitergegebenen Informationen. Wenn die Informationen digital signiert wurden, überprüft der Verwalter vorzugsweise diese digitale Signatur. (Wie zuvor unter Verweis auf Block976 von9B beschrieben, kann die Erstellung digitaler Signaturen und deren Überprüfung umgangen werden, wenn Informationen in einer gegenseitig autorisierten, sicheren Sitzung übertragen werden). Bei Block1062 prüft der Verwalter, ob der Anforderer ein berechtigtes Mitglied der Gruppe ist, dessen DN im Schlüsselklassenobjekt erscheint, durch Abfrage des Verzeichnisses oder eines anderen Repositories zur Bestimmung der Gruppenmitglieder. Wenn der Anforderer kein berechtigtes Gruppenmitglied ist, geht die Steuerung zu Block1068 über, ohne weitere Verarbeitung dieses Schlüsselklassenobjekts. Andernfalls, wenn Block1062 ein positives Ergebnis aufweist, entschlüsselt der Verwalter den symmetrischen verschlüsselten Schlüssel des Schlüsselklassenobjekts unter Verwendung der lokalen Kopie des privaten Schlüssels der Gruppe. (Der öffentliche Schlüssel der Gruppe wurde verwendet, um dieses Feld zu verschlüsseln, entsprechend Block780 von7C .) Der Verwalter verschlüsselt dann erneut das Ergebnis (Block1066 ), unter Verwendung des öffentlichen Schlüssels des Anforderers, wie vom Zertifikat bestimmt, das mit der Entschlüsselungsanforderung weitergegeben wurde. (Alternativ dazu, wenn ein DN und ein Schlüssel-Identifier mit der Entschlüsselungsanforderung weitergegeben wurden anstelle eines Zertifikats, verwendet der Verwalter den DN, um eine Liste der Zertifikate vom LDAP-Verzeichnis oder einem anderen Repository zu erhalten, die diesem DN entsprechen. Der Verwalter wählt dann ein bestimmtes Zertifikat aus den ausgegebenen Zertifikaten aus, unter Verwendung des weitergegebenen Schlüssel-Identifiers und der öffentliche Schlüssel aus diesem bestimmten Zertifikat wird in Block1066 verwendet.) Der Verwalter kann alternativ dazu die erneute Verschlüsselung des Ergebnisses in Block1066 umgehen, vorausgesetzt, dass eine gegenseitig autorisierte, sichere Sitzung während Block1018 erstellt wurde. - Wenn sich mehrere Schlüsselklassenobjekte in dieser Anforderung (Block
1068 ) befinden, wird der nächste Schlüssel verarbeitet, indem die Steuerung zu Block1060 zurückkehrt; andernfalls werden die Schlüsselklassenobjekte und die erneut verschlüsselten symmetrischen Schlüssel (oder abhängig von der gerade beschriebenen alternativen Verarbeitung ein oder mehrerer Volltextschlüssel und/oder Volltextdokumentelemente oder erneut verschlüsselte Dokumentelemente) vom Verwalter digital verschlüsselt (wenn die Sitzung zwischen dem Anforderer und dem Verwalter keine gegenseitig autorisierte, sichere Sitzung ist) und an den Anforderer (Block1070 ) ausgegeben, wonach die Verarbeitung von10C endet. - In
10A wird in Block1024 die Verarbeitung des Benutzers fortgeführt, nachdem die Verarbeitung des Verwalters in10C beendet wurde, durch den Empfang der weitergeleiteten Schlüsselobjekte. Optional kann das weitergegebene Zertifikat (oder der Schlüssel-Identifier) ebenfalls ausgegeben werden, so dass der Anforderer auf einfache Weise den entsprechenden privaten Schlüssel auf seinem privaten Schlüsselring oder Kette lokalisieren kann (vorausgesetzt, ein Anforderer kann mehr als ein Zertifikat und privaten Schlüssel haben). Wenn die ausgegebenen Informationen digital durch den Verwalter signiert wurden, überprüft der Benutzer als erstes die digitale Signatur, um sicherzustellen, dass die Informationen nicht von einem Betrüger erstellt oder geändert wurden. (Wenn die Sitzung zwischen dem Benutzer und dem Verwalter eine gegenseitig autorisierte, sichere Sitzung ist, ist die Signatur durch den Verwalter und die Überprüfung durch den Benutzer nicht erforderlich.) Der Benutzer entschlüsselt dann den symmetrischen Schlüssel aus jedem Schlüsselklassenobjekt, das von einem Gruppenverwalter (Block1026 ) ausgegeben wurde, unter Verwendung des privaten Schlüssels des Benutzers. (Oder wenn die Schlüssel unverschlüsselt bei einer gegenseitig autorisierten, sicheren Sitzung ausgegeben wurden, ist diese Entschlüsselung in Block1026 nicht erforderlich: diese nicht verschlüsselten Schlüssel werden direkt zum Entschlüsseln der Elemente der zugehörigen Klasse verwendet.) Der Benutzer ist nun in der Lage, die Elemente für diese Schlüsselklasse zu entschlüsseln, wie unter Verweis auf10B beschrieben. - Die Elemente des DOM werden in der Stromreihenfolge (Block
928 ) gelesen, um mit der Reihenfolge übereinzustimmen, in der sie während der Verschlüsselung gelesen und verarbeitet werden. Block1030 fragt, ob das gerade lokalisierte Element verschlüsselt ist. Wenn nicht, geht die Steuerung zu Block1038 über, wobei das unverschlüsselte Element an einen zu erstellenden Output-Puffer angehängt wird. Andernfalls, wenn das Element verschlüsselt ist, prüft Block1032 , ob ein entschlüsselter symmetrischer Schlüssel für die Schlüsselklasse besteht, die diesem Element zugeordnet ist. Wenn kein solcher entschlüsselter symmetrischer Schlüssel vorhanden ist (beispielsweise weil der Benutzer kein Mitglied einer berechtigten Gruppe für dieses Element ist oder der Gruppenverwalter nicht lokalisiert werden konnte usw.), dann ist dieser Benutzer nicht berechtigt, das verschlüsselte Element anzuzeigen, und eine entsprechende Nachricht wird anstelle des verschlüsselten Elements an Block1034 ausgegeben. Wenn der symmetrische Schlüssel für diese Schlüsselklasse erfolgreich entschlüsselt wurde, weist Block1032 ein positives Ergebnis aus und Block1036 verwendet diesen entschlüsselten Schlüssel, um das Element zu entschlüsseln. Block1038 hängt dann das Ergebnis an den Output-Puffer an. Wenn noch weitere zu verarbeitende Elemente vorhanden sind (Ein Ergebnis "Ja" bei Block1040 ), kehrt die Verarbeitung zu Block1028 zurück; andernfalls ist der Output-Puffer vollständig und sein Inhalt wird dem Benutzer an Block1042 bereitgestellt. Die Verarbeitung des verschlüsselten Dokuments sowie10B sind nun beendet. - VIERTES BEVORZUGTES AUSFÜHRUNGSBEISPIEL ZUR VERSCHLÜSSELUNG
- Es kann notwendig werden, den gesamten Inhalt des Dokuments wiederherzustellen (beispielsweise dann, wenn ein in einem firmeneigenen Repository gespeichertes verschlüsseltes Dokument Gegenstand eines Interessenkonflikts wird) unabhängig davon, wie das Dokument in verschiedene Schlüsselklassen während des Verschlüsselungsprozesses aufgeteilt wurde. Ein weiteres bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung definiert eine Technik, mit der ein berechtigter Benutzer (wie etwa ein Systemadministrator usw.) alle Schlüssel wiederherstellen kann, die zum Verschlüsseln eines solchen Dokuments verwendet wurden. Die Logik für diese Technik zur Schlüsselwiederherstellung wird in den
11A und11B gezeigt. - Entsprechend einem bevorzugten Ausführungsbeispiel wird die Partei mit der Berechtigung zur Wiederherstellung aller Schlüssel (im folgenden als "Key Recovery Agent" bezeichnet) als ein berechtigtes Gemeinschaftsmitglied für jede Schlüsselklasse jedes Dokuments definiert. Dadurch wird ein Schlüsselobjekt für den Key Recovery Agent im Dokument für jede Schlüsselklasse eingefügt, wobei das Schlüsselobjekt einen symmetrischen Schlüssel umfasst, der mit dem öffentlichen Schlüssel des Key Recovery Agents verschlüsselt wurde. Somit kann der private Schlüssel des Key Recovery Agents verwendet werden, um den symmetrischen Schlüssel zu entschlüsseln, falls dies notwendig wird, und so Zugriff auf die verschlüsselten Elemente der Schlüsselklasse zu gewähren.
- Es ist zu beachten, dass diese Technik zur Schlüsselwiederherstellung auch in anderen Situationen von Vorteil sein kann, beispielsweise: Der private Schlüssel, der andernfalls zur Entschlüsselung eines Dokumentelements verwendet würde, ginge verloren; ein Benutzer mit einem privaten Schlüssel verläßt das Unternehmen, ohne den privaten Schlüsselwert anzugeben; ein Benutzer mit einem privaten Schlüssel als Gruppenmitglied wird neu zugeordnet und ist nicht länger ein Gruppenmitglied usw.
-
11A zeigt zusätzlich eine Logik, die in den Logikfluss von7A oben für den Verschlüsselungsprozess eingefügt werden kann. (Es ist zu beachten, dass diese zusätzliche Logik nicht unbedingt erforderlich ist, wenn sicher festgestellt werden kann, das der Key Recovery Agent in die Gemeinschaft für jedes gespeicherte Vorgabenobjekt eingefügt wurde. Die Verwendung dieser zusätzlichen Logik bietet jedoch eine Technik zur Sicherstellung, dass der Key Recovery Agent Zugriff auf die Elemente in jeder Schlüsselklasse erhält.) - Die Logik von
11A ändert den Steuerungsfluss von Block725 zu Block730 von7A und so werden diese Ersatzblöcke in11A als Blöcke725' bis730' dargestellt. Entsprechend der Operation von Block725' fragt Block726 ob der Key Recovery Agent ein Mitglied der abgerufenen Gemeinschaft ist. Wenn nicht, fügt Block727 den DN (oder einen anderen ähnlichen Identifier bei Verwendung eines Speicher-Repositories, das kein LDAP-Verzeichnis ist) für den Key Recovery Agent hinzu. Somit, wenn die verschlüsselten symmetrischen Schlüssel später erstellt werden (siehe Block780 in7C ), wird der öffentliche Schlüssel des Key Recovery Agents in einem Schlüsselobjekt mit dem DN des Agents verwendet, und der Agent wird nachfolgend in der Lage sein, diesen symmetrischen Schlüssel (und seine zugehörigen Elemente) unter Verwendung seines privaten Schlüssels zu entschlüsseln. -
11B zeigt, wie der Logikfluss von8B optional geändert werden kann, um den Key Recovery Agent einzubeziehen. Die Blöcke855' ,865' und875' der11B stellen die gleiche Funktion dar, wie die Blöcke855 ,865 ,870 und875 der8B . (Eine detaillierte Beschreibung dieser Verarbeitung finden Sie in der Beschreibung von8B .) Da es sich jedoch beim Key Recovery Agent immer um ein berechtigtes Gemeinschaftsmitglied handelt, weist der vorhandene Test an Block860 von8B immer ein positives Ergebnis auf, weshalb dieser Test sowie Block880 (für die Verarbeitung bei einem negativen Ergebnis) ausgelassen werden können. Es ist klar, dass die in11B gezeigte Änderung nur gemacht werden sollte, wenn die Implementierung speziell auf den Key Recovery Agent zugeschnitten wird. - ADMINISTRATION
-
12 zeigt das bevorzugte Ausführungsbeispiel der Logik, mit der ein Administrator oder ein Administrationsprozess das sichere Dokumentsystem der vorliegenden Erfindung einrichten und verwalten können. Diese Logik beginnt an der Arbeitsanforderungswarteschlange1200 , wobei einer der Prozessoren1210 ,1220 ,1250 ,1270 oder1290 entsprechend der Art von Arbeitsanforderung verteilt wird. - In Block
1210 erstellt der Administrator630 eine neue Gruppe durch1215 , wodurch ein Eintrag für die Gruppe in das LDAP-Verzeichnis640 gestellt wird. Block1219 zeigt an, dass keine weitere Verarbeitung für diese Art von Arbeitsanforderung notwendig ist. Es ist zu beachten, dass nach der Erstellung einer Gruppe diese nicht funktional ist, bis mindestens eine Verwalter-Einheit und mindestens Benutzer-Einheit der Gruppe zugeordnet wurden. Eine Gruppe kann über mehr als einen Verwalter verfügen. Sie kann über Null oder mehrere autorisierte Agents (Proxies) verfügen. - In Block
1220 fügt der Administrator630 eine Einheit zu einer Gruppe hinzu. In Block1225 wird ein Test darüber durchgeführt, ob die Gruppe im LDAP-Verzeichnis640 bereits vorhanden ist, als Ergebnis einer vorherigen Gruppenerstellung1210 . Wenn nicht, liegt ein Fehler vor (Block1245 ). In Block1230 wird ein Test darüber durchgeführt, ob die hinzuzufügende Einheit im LDAP-Verzeichnis640 (als Ergebnis einer vorherigen Einheitenerstellung1290 ) bereits besteht. Wenn nicht, liegt hier ebenfalls ein Fehler vor (Block1245 ). Wenn beide Tests bestanden sind, wird die Einheit in Block1235 zur Gruppe hinzugefügt. Dann wird die Einheit optional informiert (Block1240 ). Dabei kann es sich beispielsweise um eine E-Mail-Nachricht handeln, die den Benutzer auffordert, sich im sicheren Dokumentsystem anzumelden, da nun auf sichere Dokumente zugegriffen werden kann. Block1249 zeigt an, dass keine weitere Verarbeitung für diese Art von Arbeitsanforderung erforderlich ist. Eine solche Mitteilung kann ebenfalls eine optimierte Implementierung ermöglichen, in der ein Gruppenmitglied lokal entscheidet, dass es einen Kontakt zum Verwalter versuchen sollte, ohne zuvor eine, möglicherweise sehr lange, Liste aller Gruppenmitglieder aus einem LDAP-Verzeichnis abzurufen, um seine eigene Gruppenmitgliedschaft festzustellen. - In Block
1250 entfernt der Administrator630 eine Einheit aus einer Gruppe. In Block1255 wird ein Test darüber durchgeführt, ob die Gruppe bereits im LDAP-Verzeichnis vorhanden ist. Wenn nicht, liegt ein Fehler vor (Block1245 ). In Block1260 wird ein Test darüber durchgeführt, ob die zu entfernende Einheit im LDAP-Verzeichnis640 bereits vorhanden ist. Wenn nicht, liegt hier ebenfalls ein Fehler vor (Block1245 ). Wenn die Einheit ein Mitglied mehrerer Gruppen ist und die Einheit vollständig aus allen Gruppen entfernt werden soll, wird Block1265 für jede einzelne Gruppe wiederholt. Wenn das Zertifikat der Einheit nicht im entsprechenden Block1280 erstellt wurde, wird die Liste der Zertifikatswiederrufe aktualisiert (Block1267 ), beispielsweise durch eine Eingabe im LDAP-Verzeichnis640 und/oder durch Kontaktieren der Zertifikatsstelle (Certificate Authority = CA)635 . Block1269 gibt an, dass keine weitere Verarbeitung für diese Art von Arbeitsanforderung erforderlich ist. - In Block
1270 gibt der Administrator630 erneut eine Berechtigung für eine Einheit aus, die derzeit Mitglied einer Gruppe ist, wie etwa nach dem Empfang einer Anforderung zur Neuvergabe einer Berechtigung (siehe Block914 von9A ). In Block1275 wird ein Test darüber durchgeführt, ob die Zugriffsprivilegien oder das Zertifikat der Einheit zurückgezogen wurden. Wenn dies der Fall ist, wird der Prozess an1278 weitergeführt, wo eine Arbeitsanforderung zum Rückgängigmachen einer Einheit verarbeitet wird (Block1250 ), über den Eingabepunkt1205 . Wenn nicht, untersucht der Administrator630 in Block1277 die Registrierungsdaten, die vom Benutzer675 (in Block924 von9A ) gegeben wurden. Wenn die Daten zufriedenstellend sind, gibt der Administrator630 ein aktualisiertes Zertifikat mit einem neuen Fälligkeitsdatum aus (Block1280 ), aktualisiert das Verzeichnis (Block1285 ) und gibt optional eine Mitteilung an die Einheit (Block1287 ) aus. Block1289 zeigt an, dass keine weitere Verarbeitung für diese Art der Arbeitsanforderung notwendig ist. Wenn die Registrierungsdaten (ein Ergebnis "Nein" in Block1277 ) nicht in Ordnung sind, wird die Verarbeitung an Block1278 weitergeführt, wobei eine Arbeitsanforderung Anforderung rückgängig machen (Block1250 ) verarbeitet wird. - In Block
1290 verarbeitet der Administrator630 eine Anforderung zum Erstellen einer neuen Einheit655 ,670 ,675 oder680 . Zunächst untersucht der Administrator630 die Registrierungsdaten (aus Block924 von9A ) an Block1292 . Wenn die an Block1294 vorhandenen Daten zufriedenstellend sind, gibt der Administrator630 ein neues Zertifikat aus, falls notwendig, auf eine Art, ähnlich der Blöcke1280 bis1287 , andernfalls wird das vorhandene Zertifikat der Einheit verwendet, festgestellt, (Block1298 ) welche Gruppen zur Einheit hinzugefügt werden sollen, diese Gruppenzusätze verarbeitet, wie etwa durch Erstellen mehrerer Arbeitsanforderungen (Block1300 ) und dieser als Input in Block1200 in eine Warteschlange gestellt und anschließend mehrmals zum Block1202 zum Verarbeiten dieser Anforderungen in der Warteschlange verzweigt. Block1309 zeigt an, dass keine weitere Verarbeitung für diese Art der Arbeitsanforderung erforderlich ist. - Somit kann am Ende der Administrationsverarbeitung in Block
1220 bis1249 und den notwendigen Vorgängern ein Client die Logik der Blöcke902 bis918 von9A durchführen (Erstellen einer SSL-Sitzung auf dem sicheren Dokument Server655 ) und die Logik der9B ausführen, um ein verschlüsseltes Dokument auszufüllen, es zu entschlüsseln und die Elemente des Dokuments anzuzeigen, für die der Benutzer675 über eine Berechtigung verfügt. - Wie gezeigt, bietet das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung einen einfach zu handhabenden Ansatz zur Unterstützung der Sicherheitsvorgaben. Die Informationen der Sicherheitsvorgaben können sich je nach Datenelement unterscheiden und werden spezifiziert, indem der Datenvorgabe-Identifier (d.h. die URI, in der die Vorgabe gespeichert ist) an das Datenelement in der Dokument-DTD gebunden wird. Die vorliegende Erfindung ist rückwärts kompatibel, es können XML-Dokumente mit XSL-Prozessoren verwendet werden, die zur Verwendung der Vorgabeninstrumentierung entsprechend der vorliegenden Erfindung geändert wurden, oder die Dokumente können mit XSL-Prozessoren verwendet werden, die nicht auf diese Art verändert wurden. (Solche unveränderten XSL-Prozessoren führen einfach die Einheitenersetzung der Datenvorgaben-URIs innerhalb der DTD aus, rufen aber die Vorgabenobjekte nicht ab oder verarbeiten sie, auf die durch die URIs verwiesen wird.)
- Ein weiterer Vorteil der vorliegenden Erfindung ist es, dass keine Änderung im Stylesheet erforderlich ist, das die Transformation steuert. Die Stylesheet-Verweise auf die Wert-von-Methode bleiben unverändert. Die vorliegende Erfindung unterstützt die Sicherheitsvorgaben durch Überschreiben des Codes, der beim Aufrufen einer Wert-von-Methode vom (unveränderten) Stylesheet abgerufen wird. (Es wäre natürlich möglich, einen Stylesheet zu ändern, um die Vorteile des Vorgaben-Markups des XML-Dokuments zu nutzen, falls gewünscht.)
- Die vorliegende Erfindung ist gegenüber dem Format der Sicherheitsvorgabe selbst neutral. Erforderlich zur Unterstützung einer Sicherheitsvorgabe ist nur, dass auf die Vorgabe durch eine URI zugegriffen werden kann (wie etwa die Verweise auf Vorgabenobjekte in einem LDAP-Verzeichnis, wie in
3 gezeigt) und natürlich, dass die Vorgaben von der Instrumentierung erkannt werden, die die Vorgaben im XSL-Prozessor unterstützen. Dies hat den weiteren Vorteil der Langlebigkeit dieser Lösungsimplementierung, da die Implementierung des bevorzugten Ausführungsbeispiels nicht angepasst werden muss, da neue Anforderungen an die unternehmenseigenen Sicherheitsvorgaben eine Änderung in der Vorgabencodierung und Instrumentierung nach sich ziehen: Die gespeicherten Sicherheitsvorgaben werden dann einfach aktualisiert, um die neuen Sicherheitsanforderungen zu unterstützen und die Verweise auf die gespeicherte Vorgabe können nötigenfalls aktualisiert werden (falls beispielsweise die aktualisierte Vorgabe an einem anderen Speicherort gespeichert wurde). - Obwohl das bevorzugte Ausführungsbeispiel unter Verwendung von Stylesheets beschrieben wurde, können auch Stylesheets anderer Mitteilungen als XSL verwendet werden (beispielsweise Dokument Style Semantics und Specification Language oder DSSSL, was internationaler Standard ISO/IEC 10179: 1996 ist), ohne dass vom Gegenstand der vorliegenden Erfindung abgewichen wird. Zusätzlich kann der beschriebene vorgabenorientierte XSL-Prozessor verwendet werden, um verschlüsselte Dokumente in Nicht-XML-Formaten zu generieren, die SGML-abgeleitete Markierungen, wie etwa HTML, verwenden, es muss jedoch für ein solches Format ein Decoder unter Verwendung der hier definierten Logik für den erweiterten XML-Prozessor geändert werden, so dass das Dokument entschlüsselt werden kann. Dieser Prozess jedoch kann kein verwendbares Dokument liefern, wenn der Benutzer zur Anzeige aller Dokumentdaten keine Berechtigung hat, aufgrund vorausgesetzter Beziehungsregeln in den Nicht-XML-Language-Tags.
- Während das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung beschrieben wurde, sind zusätzliche Varianten und Änderungen an diesem Ausführungsbeispiel denkbar, was den Fachleuten klar sein dürfte. Somit sind die angehängten Ansprüche so angelegt, das bevorzugte Ausführungsbeispiel sowie denkbare Varianten und Änderungen zu umfassen, die Gegenstand der vorliegenden Erfindung sein können.
Claims (24)
- Eine Methode zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung in einer Computerumgebung, folgende Schritte umfassend: Bereitstellen eines Input-Dokuments; Bereitstellen eines oder mehrerer Vorgabenunterstützungsobjekte, wobei jedes der genannten Vorgabenunterstützungsobjekte eine Sicherheitsvorgabe angibt, die Null oder mehreren Elementen des genannten Input-Dokuments zugeordnet werden kann; Bereitstellen einer Document Type Definition (DTD) entsprechend dem genannten Input-Dokument, wobei die genannte DTD mit einem oder mehreren Verweisen auf die ausgewählten gespeicherten Vorgabenunterstützungsobjekte erweitert wurde; Ausführen eines erweiterten Stylesheet-Prozessors, weiterhin folgende Schritte umfassend: Laden der genannten DTD; Auflösen der genannten einen oder mehreren Verweise in der genannten geladenen DTD; Instantiieren der genannten Vorgabenunterstützungsobjekte, die den genannten aufgelösten Verweisen zugeordnet sind; Ausführen von ausgewählten der instantiierten Vorgabenunterstützungsobjekte während der Anwendung von einem oder mehreren Stylesheets auf das genannte Input-Dokument, wobei ein Ergebnis der genannten Ausführung der ausgewählten Schritte ein Interims-Dokument ist, das die genannte Ausführung wiedergibt; Generieren eines oder mehrerer zufallsgenerierter Verschlüsselungsschlüssel; Verschlüsseln ausgewählter Elemente des genannten Interims-Dokuments, wobei ein spezieller der genannten erstellten, zufallsgenerierten, verschlüsselten Verschlüsselungsschlüssel verwendet werden kann, um eines oder mehrere der ausgewählten Elemente zu verschlüsseln, während Null oder mehr Elemente des genannten Interims-Dokuments unverschlüsselt bleiben; Verschlüsseln jedes zufallsgenerierten Verschlüsselungsschlüssels; und Erstellen eines verschlüsselten Output-Dokuments mit Null oder mehreren unverschlüsselten Elementen, den genannten ausgewählten verschlüsselten Elementen und den genannten verschlüsselten Verschlüsselungsschlüsseln; Empfang des genannten verschlüsselten Output-Dokuments an einem Client-Gerät; Ausführen eines erweiterten Dokumentprozessors, einschließlich des Schritts zum Entschlüsseln des genannten empfangenen Dokuments für einen einzelnen Benutzer oder Prozess auf dem genannten Client-Gerät, wobei ein Ergebnisdokument erstellt wird; und Bereitstellen des genannten Ergebnisdokuments auf dem genannten Client-Gerät.
- Die Methode nach Anspruch 1, wobei das genannte Interims-Dokument einen oder mehrere Verschlüsselungs-Tags umfasst, die die zu verschlüsselnden Elemente angeben.
- Die Methode nach Anspruch 1, wobei das genannte Input-Dokument in einer Extensible Markup Language (XML)-Schreibweise angegeben wird.
- Die Methode nach Anspruch 3, wobei das genannte Output-Dokument in der genannten XML-Schreibweise angegeben wird.
- Die Methode nach Anspruch 1, wobei die genannten gespeicherten Vorgabenunterstützungsobjekte weiterhin einen ausführbaren Code zum Überschreiben einer Methode zur Auswertung der genannten Elemente des genannten Input-Dokuments umfassen, und wobei die Ausführung der genannten ausgewählten Schritte weiterhin das Überschreiben der genannten Methode zur Auswertung umfasst.
- Die Methode nach Anspruch 5, wobei die genannten Stylesheets in einer Extensible Markup Language (XSL)-Schreibweise angegeben werden.
- Die Methode nach Anspruch 6, wobei die genannte Methode eine Wert-von-Methode der genannten XSL-Schreibweise ist und wobei der genannte Schritt zum Überschreiben der genannten Wert-von-Methode in der Unterklassenbildung der genannten Wert-von-Methode besteht.
- Die Methode nach Anspruch 2 oder Anspruch 7, wobei Der genannte Schritt zum Überschreiben weiterhin folgende Schritte umfasst: Generieren von Verschlüsselungs-Tags; und Einfügen der genannten generierten Verschlüsselungs-Tags in das genannte Interims-Dokument, um die Elemente des genannten Interims-Dokument einzukreisen, die als zu verschlüsselnd bestimmt wurden; und Der genannte Schritt zum verschlüsseln ausgewählter Elemente die Elemente verschlüsselt, die von den genannten Verschlüsselungs-Tags umkreist sind.
- Die Methode nach Anspruch 1, wobei jedes genannte instantiierte Vorgabenunterstützungsobjekt weiterhin folgendes umfasst: Eine Spezifikation der Gemeinschaft, die zur Anzeige der genannten Elemente berechtigt ist, welche mit der Sicherheitsvorgabe verbunden sind; und Eine Verschlüsselungsanforderung für die genannten Elemente, die mit der genannten Sicherheitsvorgabe verbunden sind.
- Die Methode nach Anspruch 9, wobei die genannte Verschlüsselungsanforderung weiterhin die Spezifikation eines Verschlüsselungsalgorithmus umfasst.
- Die Methode nach Anspruch 9, wobei die Verschlüsselungsanforderung weiterhin die Spezifikation eines Wertes für die Stärke des Verschlüsselungsalgorithmus umfasst.
- Die Methode nach Anspruch 9, wobei: Der genannte Schritt zum Verschlüsseln der genannten Verschlüsselungsschlüssel weiterhin folgenden Schritt umfasst: Verschlüsseln einer anderen Version jedes zufallsgenerierten Verschlüsselungsschlüssels für jedes der Mitglieder jeder der Gemeinschaften, die den genannten Verschlüsselungsschlüssel verwenden und wobei jede der genannten unterschiedlichen Versionen unter Verwendung eines öffentlichen Schlüssels des genannten Gemeinschaftsmitglieds verschlüsselt wird, für den eine unterschiedliche Version verschlüsselt wurde.
- Die Methode nach Anspruch 9, wobei die genannte Verschlüsselungsanforderung über einen Nullwert verfügen kann, um anzuzeigen, dass die genannte spezifizierte Sicherheitsvorgabe keine Verschlüsselung erfordert.
- Die Methode nach Anspruch 1, wobei der genannte Schritt zum Verschlüsseln ausgewählter Elemente einen Verschlüsselungsprozess im Modus Verschlüsselungsblockverkettung verwendet.
- Die Methode nach Anspruch 12, weiterhin folgenden Schritt umfassend: Erstellen einer Schlüsselklasse für jede eindeutige Gemeinschaft, wobei die genannte Schlüsselklasse jedem der genannten verschlüsselten Elemente zugeordnet wird, für das diese eindeutige Gemeinschaft zur Anzeige berechtigt ist und wobei die genannte Schlüsselklasse folgendes umfasst: (1) eine stärkste Verschlüsselungsanforderung der genannten zugeordneten verschlüsselten Elemente; (2) einen Identifier für jedes Mitglied der genannten eindeutigen Gemeinschaft und (3) eine genannte unterschiedliche Version der genannten verschlüsselten Verschlüsselungsschlüssel für jedes der genannten Gemeinschaftsmitglieder; und wobei: Der genannte Schritt zum Generieren der genannten einen oder mehrere zufallsgenerierten Verschlüsselungsschlüssel einen bestimmten der genannten zufallsgenerierten Verschlüsselungsschlüssel für jede der genannten Schlüsselklassen generiert und wobei jede der unterschiedlichen Versionen in einer bestimmten Schlüsselklasse vom genannten generierten Schlüssel für die genannte Schlüsselklasse verschlüsselt wird; und Der genannte Schritt zum Verschlüsseln ausgewählter Elemente den einen bestimmten zufallsgenerierten Verschlüsselungsschlüssel verwendet, der für die genannte Schlüsselklasse generiert wurde, mit der das genannte Element verbunden wurde.
- Die Methode nach Anspruch 12, wobei Der genannte Schritt zum Entschlüsseln des genannten Output-Dokuments weiterhin folgende Schritte umfasst: Bestimmen von Null bis mehreren der genannten Gemeinschaften, deren Mitglied der genannte einzelne Benutzer oder Prozess ist; Entschlüsseln für jede der genannten Gemeinschaften die genannte andere Version des genannten zufallsgenerierten Verschlüsselungsschlüssels, der mit Hilfe des öffentlichen Schlüssels des Mitglieds verschlüsselt worden ist, wobei der genannte Schritt zum Entschlüsseln einen privaten Schlüssel des genannten Benutzers verwendet, der dem öffentlichen Schlüssel zugeordnet ist, welcher zum Verschlüsseln eingesetzt wurde, wobei ein entschlüsselter Schlüssel erstellt wird; und Entschlüsseln der ausgewählten genannten verschlüsselten Elemente im genannten Output-Dokument unter Verwendung der genannten entschlüsselten Schlüssel, wobei die genannten ausgewählten entschlüsselten Elemente jene sind, die für eine bestimmte Gemeinschaft verschlüsselt wurden; und Der genannte Schritt zur Bereitstellung weiterhin folgenden Schritt umfasst: Bereitstellen der ausgewählten entschlüsselten und der genannten anderen nicht entschlüsselten Elemente.
- Die Methode nach Anspruch 15, wobei: Der genannte Schritt zum Entschlüsseln des genannten Output-Dokuments weiterhin folgende Schritte umfasst: Bestimmen von Null bis mehreren der genannten Schlüsselklassen, die den genannten einzelnen Benutzer oder Prozess als Mitglied identifizieren; Entschlüsseln für jede der genannten Schlüsselklassen die genannte andere Version des genannten zufallsgenerierten Verschlüsselungsschlüssels in der genannten Schlüsselklasse, der mit Hilfe des öffentlichen Schlüssels des Mitglieds verschlüsselt worden ist, wobei der genannte Schritt zum Entschlüsseln einen privaten Schlüssel des genannten Benutzers verwendet, der dem öffentlichen Schlüssel zugeordnet ist, welcher zum Verschlüsseln eingesetzt wurde, wobei ein entschlüsselter Schlüssel erstellt wird; und Entschlüsseln der ausgewählten genannten verschlüsselten Elemente im genannten Output-Dokument unter Verwendung der genannten entschlüsselten Schlüssel, wobei die genannten ausgewählten verschlüsselten Elemente jene sind, die für eine bestimmte Schlüsselklasse verschlüsselt wurden; und Der genannte Schritt zur Bereitstellung weiterhin folgenden Schritt umfasst: Bereitstellen der ausgewählten entschlüsselten und der genannten anderen nicht entschlüsselten Elemente.
- Die Methode nach den Ansprüchen 16 oder 17, wobei der genannte Schritt zur Bereitstellung weiterhin folgenden Schritt umfasst: den Schritt zur Bereitstellung einer Ersatztextnachricht für jedes der ausgewählten verschlüsselten Elemente im genannten Output-Dokument, das nicht durch den genannten Schritt zum Entschlüsseln des genannten Output-Dokuments entschlüsselt werden kann.
- Die Methode nach Anspruch 1, wobei die genannte DTD durch ein Schema ersetzt wird.
- Die Methode nach Anspruch 9, wobei die genannte Verschlüsselungsanforderung weiterhin die Spezifikation einer Verschlüsselungsschlüssellänge umfasst.
- Die Methode nach Anspruch 8, wobei die eingefügten Verschlüsselungs-Tags entweder die Werte der genannten Elemente oder die Werte und Tags der genannten Elemente umrunden können.
- Ein System zur Unterstützung der Sicherheitsvorgaben unter Verwendung von Stylesheet-Verarbeitung in einer Computerumgebung, wobei das genannte Computersystem Mittel umfasst, um die Schritte der Methode nach einem der vorangegangenen Ansprüche 1 bis 21 auszuführen.
- Ein Computerprogramm, das direkt in den internen Speicher eines digitalen Computers geladen werden kann, das Softwarecode-Teile zur Ausführung der Methode nach jedem der vorangegangenen Ansprüche 1 bis 21 umfasst, wenn das genannte Programm auf dem genannten Computer ausgeführt wird.
- Ein Computerprogramm, das auf einem computerverwendbaren Medium gespeichert ist und das ein computerlesbares Programm umfasst, das einen Computer dazu veranlasst eine Methode nach jedem der Ansprüche 1 bis 21 auszuführen, wenn das genannte Programm auf dem genannten Computer ausgeführt wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/422,430 | 1999-10-21 | ||
US09/422,430 US6931532B1 (en) | 1999-10-21 | 1999-10-21 | Selective data encryption using style sheet processing |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10051571A1 DE10051571A1 (de) | 2001-04-26 |
DE10051571B4 true DE10051571B4 (de) | 2006-06-29 |
Family
ID=23674848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10051571A Expired - Fee Related DE10051571B4 (de) | 1999-10-21 | 2000-10-18 | Methode und System zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung |
Country Status (2)
Country | Link |
---|---|
US (1) | US6931532B1 (de) |
DE (1) | DE10051571B4 (de) |
Families Citing this family (181)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7212632B2 (en) | 1998-02-13 | 2007-05-01 | Tecsec, Inc. | Cryptographic key split combiner |
US6694433B1 (en) * | 1997-05-08 | 2004-02-17 | Tecsec, Inc. | XML encryption scheme |
US8077870B2 (en) * | 1998-02-13 | 2011-12-13 | Tecsec, Inc. | Cryptographic key split binder for use with tagged data elements |
US20010029582A1 (en) * | 1999-05-17 | 2001-10-11 | Goodman Daniel Isaac | Method and system for copy protection of data content |
US6298446B1 (en) * | 1998-06-14 | 2001-10-02 | Alchemedia Ltd. | Method and system for copyright protection of digital images transmitted over networks |
US7249318B1 (en) * | 1999-11-08 | 2007-07-24 | Adobe Systems Incorporated | Style sheet generation |
US7590644B2 (en) * | 1999-12-21 | 2009-09-15 | International Business Machine Corporation | Method and apparatus of streaming data transformation using code generator and translator |
US7155667B1 (en) | 2000-06-21 | 2006-12-26 | Microsoft Corporation | User interface for integrated spreadsheets and word processing tables |
US6948135B1 (en) | 2000-06-21 | 2005-09-20 | Microsoft Corporation | Method and systems of providing information to computer users |
US7624356B1 (en) | 2000-06-21 | 2009-11-24 | Microsoft Corporation | Task-sensitive methods and systems for displaying command sets |
US7346848B1 (en) | 2000-06-21 | 2008-03-18 | Microsoft Corporation | Single window navigation methods and systems |
US7000230B1 (en) | 2000-06-21 | 2006-02-14 | Microsoft Corporation | Network-based software extensions |
US6883168B1 (en) | 2000-06-21 | 2005-04-19 | Microsoft Corporation | Methods, systems, architectures and data structures for delivering software via a network |
US7117435B1 (en) | 2000-06-21 | 2006-10-03 | Microsoft Corporation | Spreadsheet fields in text |
US7191394B1 (en) | 2000-06-21 | 2007-03-13 | Microsoft Corporation | Authoring arbitrary XML documents using DHTML and XSLT |
JP4003203B2 (ja) * | 2000-08-10 | 2007-11-07 | サイファーゲート株式会社 | 暗号化プログラムを記録した記録媒体及び復号化プログラムを記録した記録媒体 |
US7165175B1 (en) * | 2000-09-06 | 2007-01-16 | Widevine Technologies, Inc. | Apparatus, system and method for selectively encrypting different portions of data sent over a network |
US7428583B1 (en) * | 2000-10-31 | 2008-09-23 | Intel Corporation | Network policy distribution |
EP1211588B1 (de) * | 2000-12-04 | 2005-09-21 | Siemens Aktiengesellschaft | Verfahren zum Nutzen einer Datenverarbeitungsanlage abhängig von einer Berechtigung, zugehörige Datenverarbeitungsanlage und zugehöriges Programm |
US20020116633A1 (en) * | 2001-01-19 | 2002-08-22 | Takuya Kobayashi | Data processor |
US7240285B2 (en) * | 2001-03-01 | 2007-07-03 | Sony Corporation | Encoding and distribution of schema for multimedia content descriptions |
CN1653459B (zh) | 2001-06-12 | 2010-12-15 | 捷讯研究有限公司 | 处理与移动数据通信设备交换的编码消息的系统和方法 |
CA2450601C (en) * | 2001-06-12 | 2012-10-16 | Research In Motion Limited | System and method for compressing secure e-mail for exchange with a mobile data communication device |
KR20040015272A (ko) | 2001-06-12 | 2004-02-18 | 리서치 인 모션 리미티드 | 인증서 관리 및 전송 시스템 및 방법 |
US20020187828A1 (en) * | 2001-06-12 | 2002-12-12 | Jamal Benbrahim | Method and apparatus for securing gaming machine operating data |
EP1410601B1 (de) | 2001-07-10 | 2017-02-08 | BlackBerry Limited | System und methode zum sicheren speichern von verschlüsselungsschlüsseln in einem mobilen kommunikationsgerät |
US20030018668A1 (en) * | 2001-07-20 | 2003-01-23 | International Business Machines Corporation | Enhanced transcoding of structured documents through use of annotation techniques |
BRPI0211756B1 (pt) * | 2001-08-06 | 2016-09-06 | Blackberry Ltd | sistema e método para processar mensagens codificadas |
US20030046532A1 (en) * | 2001-08-31 | 2003-03-06 | Matthew Gast | System and method for accelerating cryptographically secured transactions |
WO2003029981A1 (fr) * | 2001-09-28 | 2003-04-10 | Sony Corporation | Appareil de limitation d'acces, procede de limitation d'acces, programme lisible par ordinateur comprenant un support comportant un programme de limitation d'acces, et programme de limitation d'acces |
EP1300842B1 (de) * | 2001-10-05 | 2007-07-25 | Stefan Krempl | Verfahren und System zur autorisierten Entschlüsselung von verschlüsselten Daten mit mindestens zwei Zertifikaten |
JP4045777B2 (ja) * | 2001-10-30 | 2008-02-13 | 株式会社日立製作所 | 情報処理装置 |
US7412720B1 (en) * | 2001-11-02 | 2008-08-12 | Bea Systems, Inc. | Delegated authentication using a generic application-layer network protocol |
US7318238B2 (en) * | 2002-01-14 | 2008-01-08 | Microsoft Corporation | Security settings for markup language elements |
US20050005116A1 (en) * | 2002-09-18 | 2005-01-06 | Commerce One Operations, Inc. | Dynamic interoperability contract for web services |
JP3914861B2 (ja) * | 2002-11-29 | 2007-05-16 | Necインフロンティア株式会社 | 通信システム |
US7774831B2 (en) * | 2002-12-24 | 2010-08-10 | International Business Machines Corporation | Methods and apparatus for processing markup language messages in a network |
US7370066B1 (en) | 2003-03-24 | 2008-05-06 | Microsoft Corporation | System and method for offline editing of data files |
US7415672B1 (en) | 2003-03-24 | 2008-08-19 | Microsoft Corporation | System and method for designing electronic forms |
US7913159B2 (en) | 2003-03-28 | 2011-03-22 | Microsoft Corporation | System and method for real-time validation of structured data files |
US7296017B2 (en) | 2003-03-28 | 2007-11-13 | Microsoft Corporation | Validation of XML data files |
US7516145B2 (en) * | 2003-03-31 | 2009-04-07 | Microsoft Corporation | System and method for incrementally transforming and rendering hierarchical data files |
KR100548354B1 (ko) * | 2003-06-14 | 2006-02-02 | 엘지전자 주식회사 | 동기화 프로토콜에서의 사용자 인증 방법 |
JP4504099B2 (ja) * | 2003-06-25 | 2010-07-14 | 株式会社リコー | デジタル証明書管理システム、デジタル証明書管理装置、デジタル証明書管理方法、更新手順決定方法およびプログラム |
US7451392B1 (en) | 2003-06-30 | 2008-11-11 | Microsoft Corporation | Rendering an HTML electronic form by applying XSLT to XML using a solution |
US8200775B2 (en) | 2005-02-01 | 2012-06-12 | Newsilike Media Group, Inc | Enhanced syndication |
US7406660B1 (en) | 2003-08-01 | 2008-07-29 | Microsoft Corporation | Mapping between structured data and a visual surface |
US7334187B1 (en) | 2003-08-06 | 2008-02-19 | Microsoft Corporation | Electronic form aggregation |
US7788485B2 (en) * | 2003-08-07 | 2010-08-31 | Connell John M | Method and system for secure transfer of electronic information |
US7657741B2 (en) * | 2003-08-12 | 2010-02-02 | Research In Motion Limited | System and method of indicating the strength of encryption |
US7930757B2 (en) * | 2003-10-31 | 2011-04-19 | Adobe Systems Incorporated | Offline access in a document control system |
US8627489B2 (en) | 2003-10-31 | 2014-01-07 | Adobe Systems Incorporated | Distributed document version control |
US7512976B2 (en) * | 2003-11-06 | 2009-03-31 | International Business Machines Corporation | Method and apparatus for XSL/XML based authorization rules policy implementation |
US9489687B2 (en) * | 2003-12-04 | 2016-11-08 | Black Duck Software, Inc. | Methods and systems for managing software development |
US8700533B2 (en) * | 2003-12-04 | 2014-04-15 | Black Duck Software, Inc. | Authenticating licenses for legally-protectable content based on license profiles and content identifiers |
US7552093B2 (en) * | 2003-12-04 | 2009-06-23 | Black Duck Software, Inc. | Resolving license dependencies for aggregations of legally-protectable content |
US7602903B2 (en) * | 2004-01-16 | 2009-10-13 | Microsoft Corporation | Cryptography correctness detection methods and apparatuses |
JP3945708B2 (ja) * | 2004-01-23 | 2007-07-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理システム、変換処理システム、逆変換処理システム、変換方法、変換プログラム、及び記録媒体 |
US9461825B2 (en) * | 2004-01-30 | 2016-10-04 | Broadcom Corporation | Method and system for preventing revocation denial of service attacks |
US20050172132A1 (en) | 2004-01-30 | 2005-08-04 | Chen Sherman (. | Secure key authentication and ladder system |
US8819072B1 (en) | 2004-02-02 | 2014-08-26 | Microsoft Corporation | Promoting data from structured data files |
US7716728B2 (en) * | 2004-02-16 | 2010-05-11 | Microsoft Corproation | Security scopes and profiles |
US7640573B2 (en) * | 2004-02-16 | 2009-12-29 | Microsoft Corporation | Generic security claim processing model |
WO2005082102A2 (en) * | 2004-02-26 | 2005-09-09 | Datapower Technology, Inc. | Method and apparatus of streaming data transformation using code generator and translator |
US7873831B2 (en) * | 2004-02-26 | 2011-01-18 | Microsoft Corporation | Digests to identify elements in a signature process |
US7496500B2 (en) * | 2004-03-01 | 2009-02-24 | Microsoft Corporation | Systems and methods that determine intent of data and respond to the data based on the intent |
US20060184790A1 (en) * | 2004-03-26 | 2006-08-17 | Microsoft Corporation | Protecting elementary stream content |
US20060036551A1 (en) * | 2004-03-26 | 2006-02-16 | Microsoft Corporation | Protecting elementary stream content |
KR101043336B1 (ko) * | 2004-03-29 | 2011-06-22 | 삼성전자주식회사 | 디바이스와 휴대형 저장장치간의 디지털 권리객체에 관한정보의 획득 및 제거를 위한 방법 및 장치 |
US7496837B1 (en) | 2004-04-29 | 2009-02-24 | Microsoft Corporation | Structural editing with schema awareness |
US7743425B2 (en) * | 2004-04-29 | 2010-06-22 | Microsoft Corporation | Security restrictions on binary behaviors |
EP1747640B1 (de) * | 2004-04-30 | 2012-05-23 | Research In Motion Limited | Nachrichtendienst-anzeigesystem und -verfahren |
CN1951074B (zh) * | 2004-04-30 | 2012-05-23 | 捷讯研究有限公司 | 处理安全消息的系统和方法 |
US7281018B1 (en) | 2004-05-26 | 2007-10-09 | Microsoft Corporation | Form template data source change |
US7774620B1 (en) | 2004-05-27 | 2010-08-10 | Microsoft Corporation | Executing applications at appropriate trust levels |
KR101169021B1 (ko) * | 2004-05-31 | 2012-07-26 | 삼성전자주식회사 | 디바이스와 휴대형 저장장치간의 권리객체 정보 전달 방법및 장치 |
JP4587162B2 (ja) * | 2004-06-04 | 2010-11-24 | キヤノン株式会社 | 情報処理装置、情報処理方法及びそのプログラム |
US20060036849A1 (en) * | 2004-08-09 | 2006-02-16 | Research In Motion Limited | System and method for certificate searching and retrieval |
US9094429B2 (en) | 2004-08-10 | 2015-07-28 | Blackberry Limited | Server verification of secure electronic messages |
US7549043B2 (en) | 2004-09-01 | 2009-06-16 | Research In Motion Limited | Providing certificate matching in a system and method for searching and retrieving certificates |
US7631183B2 (en) | 2004-09-01 | 2009-12-08 | Research In Motion Limited | System and method for retrieving related certificates |
US7640428B2 (en) * | 2004-09-02 | 2009-12-29 | Research In Motion Limited | System and method for searching and retrieving certificates |
GB0419889D0 (en) * | 2004-09-08 | 2004-10-13 | Ibm | Accessing a data item in a memory of a computer system |
JP2006094241A (ja) * | 2004-09-24 | 2006-04-06 | Fuji Xerox Co Ltd | 暗号化装置、暗号化処理方法及びプログラム、並びに該暗号化装置を用いた情報保護システム |
US7692636B2 (en) | 2004-09-30 | 2010-04-06 | Microsoft Corporation | Systems and methods for handwriting to a screen |
US8487879B2 (en) | 2004-10-29 | 2013-07-16 | Microsoft Corporation | Systems and methods for interacting with a computer through handwriting to a screen |
US7712022B2 (en) | 2004-11-15 | 2010-05-04 | Microsoft Corporation | Mutually exclusive options in electronic forms |
US7721190B2 (en) | 2004-11-16 | 2010-05-18 | Microsoft Corporation | Methods and systems for server side form processing |
US7533420B2 (en) * | 2004-12-09 | 2009-05-12 | Microsoft Corporation | System and method for restricting user access to a network document |
US7904801B2 (en) | 2004-12-15 | 2011-03-08 | Microsoft Corporation | Recursive sections in electronic forms |
US7937651B2 (en) | 2005-01-14 | 2011-05-03 | Microsoft Corporation | Structural editing operations for network forms |
US20070050446A1 (en) | 2005-02-01 | 2007-03-01 | Moore James F | Managing network-accessible resources |
US8140482B2 (en) | 2007-09-19 | 2012-03-20 | Moore James F | Using RSS archives |
US9202084B2 (en) * | 2006-02-01 | 2015-12-01 | Newsilike Media Group, Inc. | Security facility for maintaining health care data pools |
US8700738B2 (en) | 2005-02-01 | 2014-04-15 | Newsilike Media Group, Inc. | Dynamic feed generation |
US8347088B2 (en) | 2005-02-01 | 2013-01-01 | Newsilike Media Group, Inc | Security systems and methods for use with structured and unstructured data |
US7725834B2 (en) | 2005-03-04 | 2010-05-25 | Microsoft Corporation | Designer-created aspect for an electronic form template |
US7797245B2 (en) | 2005-03-18 | 2010-09-14 | Black Duck Software, Inc. | Methods and systems for identifying an area of interest in protectable content |
US8010515B2 (en) | 2005-04-15 | 2011-08-30 | Microsoft Corporation | Query to an electronic form |
US8078740B2 (en) | 2005-06-03 | 2011-12-13 | Microsoft Corporation | Running internet applications with low rights |
US20060288207A1 (en) * | 2005-06-17 | 2006-12-21 | Research In Motion Limited | Encoding messages for use in a communication system based on classificaiton status |
US8200975B2 (en) | 2005-06-29 | 2012-06-12 | Microsoft Corporation | Digital signatures for network forms |
US8832047B2 (en) | 2005-07-27 | 2014-09-09 | Adobe Systems Incorporated | Distributed document version control |
JP4596538B2 (ja) * | 2005-09-05 | 2010-12-08 | 京セラミタ株式会社 | 情報処理装置、記録媒体、およびプログラム |
WO2007030920A2 (en) * | 2005-09-12 | 2007-03-22 | Sand Box Technologies Inc. | System and method for controlling distribution of electronic information |
EP1803249B1 (de) * | 2005-10-14 | 2010-04-07 | Research In Motion Limited | System und verfahren zum schutz von schlüsseln für masterverschlüsselung |
US7987509B2 (en) * | 2005-11-10 | 2011-07-26 | International Business Machines Corporation | Generation of unique significant key from URL get/post content |
US7921165B2 (en) * | 2005-11-30 | 2011-04-05 | Microsoft Corporation | Retaining mail for availability after relay |
JP4684872B2 (ja) * | 2005-12-05 | 2011-05-18 | キヤノン株式会社 | 情報処理装置、データ通信装置及びそれらの制御方法、アドレス管理システム、プログラム |
US8001459B2 (en) | 2005-12-05 | 2011-08-16 | Microsoft Corporation | Enabling electronic documents for limited-capability computing devices |
DE102005062042A1 (de) * | 2005-12-22 | 2007-06-28 | Applied Security Gmbh | Datenobjektverarbeitungssystem und Verfahren zur Bearbeitung von elektronischen Datenobjekten |
US7810160B2 (en) * | 2005-12-28 | 2010-10-05 | Microsoft Corporation | Combining communication policies into common rules store |
US7734754B2 (en) * | 2005-12-28 | 2010-06-08 | Microsoft Corporation | Reviewing effectiveness of communication rules system |
US20100235924A1 (en) * | 2006-01-20 | 2010-09-16 | Bulot Earl J | Secure Personal Medical Process |
US7779343B2 (en) | 2006-01-30 | 2010-08-17 | Microsoft Corporation | Opening network-enabled electronic documents |
US7292160B1 (en) | 2006-04-19 | 2007-11-06 | Microsoft Corporation | Context sensitive encoding and decoding |
US20070255704A1 (en) * | 2006-04-26 | 2007-11-01 | Baek Ock K | Method and system of de-identification of a record |
CN100507818C (zh) * | 2006-04-30 | 2009-07-01 | 国际商业机器公司 | 使用户能够在一个文档中选择多个对象的方法及装置 |
US8549295B2 (en) | 2006-05-31 | 2013-10-01 | Microsoft Corporation | Establishing secure, mutually authenticated communication credentials |
US8028026B2 (en) * | 2006-05-31 | 2011-09-27 | Microsoft Corporation | Perimeter message filtering with extracted user-specific preferences |
US8726020B2 (en) * | 2006-05-31 | 2014-05-13 | Microsoft Corporation | Updating configuration information to a perimeter network |
US7814161B2 (en) | 2006-06-23 | 2010-10-12 | Research In Motion Limited | System and method for handling electronic mail mismatches |
US8185737B2 (en) | 2006-06-23 | 2012-05-22 | Microsoft Corporation | Communication across domains |
US7861096B2 (en) * | 2006-07-12 | 2010-12-28 | Palo Alto Research Center Incorporated | Method, apparatus, and program product for revealing redacted information |
US7873838B2 (en) * | 2006-07-12 | 2011-01-18 | Palo Alto Research Center Incorporated | Method, apparatus, and program product for flexible redaction of content |
US7865742B2 (en) * | 2006-07-12 | 2011-01-04 | Palo Alto Research Center Incorporated | Method, apparatus, and program product for enabling access to flexibly redacted content |
US8352999B1 (en) * | 2006-07-21 | 2013-01-08 | Cadence Design Systems, Inc. | Method for managing data in a shared computing environment |
US8166113B2 (en) * | 2006-08-02 | 2012-04-24 | Microsoft Corporation | Access limited EMM distribution lists |
JP4983165B2 (ja) * | 2006-09-05 | 2012-07-25 | ソニー株式会社 | 通信システムおよび通信方法、情報処理装置および方法、デバイス、プログラム、並びに記録媒体 |
US7934247B2 (en) * | 2006-09-07 | 2011-04-26 | International Business Machines Corporation | Encryption policy based on data context recognition |
US8230235B2 (en) * | 2006-09-07 | 2012-07-24 | International Business Machines Corporation | Selective encryption of data stored on removable media in an automated data storage library |
US7681045B2 (en) * | 2006-10-12 | 2010-03-16 | Black Duck Software, Inc. | Software algorithm identification |
US8010803B2 (en) | 2006-10-12 | 2011-08-30 | Black Duck Software, Inc. | Methods and apparatus for automated export compliance |
US8504846B2 (en) * | 2007-05-25 | 2013-08-06 | Samsung Electronics Co., Ltd. | Method and apparatus for secure storing of private data on user devices in telecommunications networks |
US10019570B2 (en) | 2007-06-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Protection and communication abstractions for web browsers |
JP5196883B2 (ja) * | 2007-06-25 | 2013-05-15 | パナソニック株式会社 | 情報セキュリティ装置および情報セキュリティシステム |
US9237148B2 (en) * | 2007-08-20 | 2016-01-12 | Blackberry Limited | System and method for displaying a security encoding indicator associated with a message attachment |
US8266630B2 (en) * | 2007-09-03 | 2012-09-11 | International Business Machines Corporation | High-performance XML processing in a common event infrastructure |
US8295486B2 (en) * | 2007-09-28 | 2012-10-23 | Research In Motion Limited | Systems, devices, and methods for outputting alerts to indicate the use of a weak hash function |
US7949934B2 (en) * | 2007-10-24 | 2011-05-24 | Microsoft Corporation | Enabling pseudo-class styles without revealing personal information |
US8824684B2 (en) * | 2007-12-08 | 2014-09-02 | International Business Machines Corporation | Dynamic, selective obfuscation of information for multi-party transmission |
US20090216678A1 (en) * | 2008-02-25 | 2009-08-27 | Research In Motion Limited | System and method for facilitating secure communication of messages associated with a project |
US8341141B2 (en) * | 2008-12-16 | 2012-12-25 | Krislov Clinton A | Method and system for automated document registration |
US8914351B2 (en) | 2008-12-16 | 2014-12-16 | Clinton A. Krislov | Method and system for secure automated document registration from social media networks |
US8589372B2 (en) | 2008-12-16 | 2013-11-19 | Clinton A. Krislov | Method and system for automated document registration with cloud computing |
US8751826B2 (en) * | 2009-04-01 | 2014-06-10 | Salesforce.Com, Inc. | Enhanced system security |
US8468345B2 (en) | 2009-11-16 | 2013-06-18 | Microsoft Corporation | Containerless data for trustworthy computing and data services |
US10348693B2 (en) * | 2009-12-15 | 2019-07-09 | Microsoft Technology Licensing, Llc | Trustworthy extensible markup language for trustworthy computing and data services |
US9537650B2 (en) | 2009-12-15 | 2017-01-03 | Microsoft Technology Licensing, Llc | Verifiable trust for data through wrapper composition |
US20110197144A1 (en) * | 2010-01-06 | 2011-08-11 | Terry Coatta | Method And System Of Providing A Viewing Experience With Respect To A Document Having Read-only Content |
US8584213B2 (en) | 2010-09-29 | 2013-11-12 | Xerox Corporation | Automated encryption and password protection for downloaded documents |
US8869259B1 (en) * | 2011-05-19 | 2014-10-21 | Zscaler, Inc. | Cloud based inspection of secure content avoiding man-in-the-middle attacks |
US9251143B2 (en) | 2012-01-13 | 2016-02-02 | International Business Machines Corporation | Converting data into natural language form |
US9350714B2 (en) * | 2013-11-19 | 2016-05-24 | Globalfoundries Inc. | Data encryption at the client and server level |
US9152812B2 (en) * | 2013-12-03 | 2015-10-06 | Paypal, Inc. | Sensitive data protection during user interface automation testing systems and methods |
US9241004B1 (en) * | 2014-03-11 | 2016-01-19 | Trend Micro Incorporated | Alteration of web documents for protection against web-injection attacks |
US9928241B2 (en) * | 2014-03-18 | 2018-03-27 | Smartsheet Inc. | Systems and methods for analyzing electronic communications to dynamically improve efficiency and visualization of collaborative work environments |
WO2016043700A1 (en) | 2014-09-15 | 2016-03-24 | Demandware, Inc. | Secure storage and access to sensitive data |
US10176153B1 (en) * | 2014-09-25 | 2019-01-08 | Amazon Technologies, Inc. | Generating custom markup content to deter robots |
US20170046531A1 (en) * | 2015-08-14 | 2017-02-16 | Strong Bear Llc | Data encryption method and system for use with cloud storage |
US9467435B1 (en) * | 2015-09-15 | 2016-10-11 | Mimecast North America, Inc. | Electronic message threat protection system for authorized users |
US10728239B2 (en) | 2015-09-15 | 2020-07-28 | Mimecast Services Ltd. | Mediated access to resources |
US10536449B2 (en) | 2015-09-15 | 2020-01-14 | Mimecast Services Ltd. | User login credential warning system |
US11595417B2 (en) | 2015-09-15 | 2023-02-28 | Mimecast Services Ltd. | Systems and methods for mediating access to resources |
US9654492B2 (en) | 2015-09-15 | 2017-05-16 | Mimecast North America, Inc. | Malware detection system based on stored data |
US20170346639A1 (en) * | 2016-05-24 | 2017-11-30 | Business Information Exchange System Corp. | Public Key Infrastructure based on the Public Certificates Ledger |
US10158611B2 (en) | 2016-11-17 | 2018-12-18 | Bank Of America Corporation | System for multiplexing and demultiplexing blockchain ledgers via a cryptographic hash |
US9934138B1 (en) * | 2016-12-07 | 2018-04-03 | International Business Machines Corporation | Application testing on a blockchain |
US10642987B2 (en) | 2017-01-19 | 2020-05-05 | Ebay Inc. | Cryptography based fraud tracking |
US10791196B2 (en) | 2017-08-29 | 2020-09-29 | Wickr Inc. | Directory lookup for federated messaging with a user from a different secure communication network |
US11095662B2 (en) | 2017-08-29 | 2021-08-17 | Amazon Technologies, Inc. | Federated messaging |
US11368442B2 (en) * | 2017-08-29 | 2022-06-21 | Amazon Technologies, Inc. | Receiving an encrypted communication from a user in a second secure communication network |
US11349659B2 (en) * | 2017-08-29 | 2022-05-31 | Amazon Technologies, Inc. | Transmitting an encrypted communication to a user in a second secure communication network |
US20190272538A1 (en) * | 2018-03-01 | 2019-09-05 | Matrics2, Inc. | Using a nested random number-based security ecosystem for block chains for electronic cash tokens and other embodiments |
US11722470B2 (en) * | 2018-08-29 | 2023-08-08 | International Business Machines Corporation | Encrypted data according to a schema |
US11960623B2 (en) * | 2020-03-27 | 2024-04-16 | EMC IP Holding Company LLC | Intelligent and reversible data masking of computing environment information shared with external systems |
KR102382850B1 (ko) * | 2020-04-29 | 2022-04-05 | 주식회사 쓰리케이소프트 | Xml 웹문서 보안 방법 |
CN112422494B (zh) * | 2020-08-06 | 2022-09-23 | 上海幻电信息科技有限公司 | 数据传输方法、数据安全验证方法及数据传输系统 |
CN112822255B (zh) * | 2020-12-31 | 2023-02-28 | 平安科技(深圳)有限公司 | 基于区块链的邮件处理方法、邮件发送端、接收端及设备 |
CN112818388B (zh) * | 2021-01-25 | 2023-04-14 | 北方工业大学 | 一种基于区块链的云服务隐私保护信誉系统 |
US11880488B2 (en) * | 2021-04-30 | 2024-01-23 | Capital One Services, Llc | Fast and flexible remediation of sensitive information using document object model structures |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3982848B2 (ja) * | 1995-10-19 | 2007-09-26 | 富士通株式会社 | セキュリティレベル制御装置及びネットワーク通信システム |
US5787175A (en) * | 1995-10-23 | 1998-07-28 | Novell, Inc. | Method and apparatus for collaborative document control |
EP0880840A4 (de) * | 1996-01-11 | 2002-10-23 | Mrj Inc | Vorrichtung zur steuerung des zugriffs und der verteilung von digitalem eigentum |
US5937066A (en) * | 1996-10-02 | 1999-08-10 | International Business Machines Corporation | Two-phase cryptographic key recovery system |
US6236727B1 (en) * | 1997-06-24 | 2001-05-22 | International Business Machines Corporation | Apparatus, method and computer program product for protecting copyright data within a computer system |
US6154840A (en) * | 1998-05-01 | 2000-11-28 | Northern Telecom Limited | System and method for transferring encrypted sections of documents across a computer network |
US6327574B1 (en) * | 1998-07-07 | 2001-12-04 | Encirq Corporation | Hierarchical models of consumer attributes for targeting content in a privacy-preserving manner |
US6507856B1 (en) * | 1999-01-05 | 2003-01-14 | International Business Machines Corporation | Dynamic business process automation system using XML documents |
US6476833B1 (en) * | 1999-03-30 | 2002-11-05 | Koninklijke Philips Electronics N.V. | Method and apparatus for controlling browser functionality in the context of an application |
US6463440B1 (en) * | 1999-04-08 | 2002-10-08 | International Business Machines Corporation | Retrieval of style sheets from directories based upon partial characteristic matching |
US6330569B1 (en) * | 1999-06-30 | 2001-12-11 | Unisys Corp. | Method for versioning a UML model in a repository in accordance with an updated XML representation of the UML model |
US6446256B1 (en) * | 1999-06-30 | 2002-09-03 | Microsoft Corporation | Extension of parsable structures |
US6585778B1 (en) * | 1999-08-30 | 2003-07-01 | International Business Machines Corporation | Enforcing data policy using style sheet processing |
-
1999
- 1999-10-21 US US09/422,430 patent/US6931532B1/en not_active Expired - Fee Related
-
2000
- 2000-10-18 DE DE10051571A patent/DE10051571B4/de not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
Widergren, S.: XML for Data Exchange. In: IEEE Power Engineering Society Summer Meeting, July 1999, S. 840-842 * |
Also Published As
Publication number | Publication date |
---|---|
US6931532B1 (en) | 2005-08-16 |
DE10051571A1 (de) | 2001-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10051571B4 (de) | Methode und System zur Unterstützung von Sicherheitsvorgaben unter Verwendung einer Stylesheet-Verarbeitung | |
DE69921455T2 (de) | System und verfahren zur zugriffssteuerung auf gespeicherte dokumente | |
DE60218615T2 (de) | Verfahren und Architektur zur durchdringenden Absicherung von digitalen Gütern | |
DE69818008T2 (de) | Datenzugriffssteuerung | |
DE60116903T2 (de) | Gesicherte sitzungverwaltung und authentifizierung für websites | |
DE10084964B3 (de) | Verfahren zum sicheren Speichern, Übertragen und Wiedergewinnen inhaltsadresssierbarer Informationen | |
DE69805403T2 (de) | Datenkopierschutz | |
DE60315914T2 (de) | Ad hoc Sicherheitszugriff auf Dokumente und Dienste | |
DE60214632T2 (de) | Multidomäne Berechtigung und Authentifizierung | |
DE60024696T2 (de) | System und Verfahren zur Manipulation eines Rechnersbestandes und/oder eines Programms | |
DE69735486T2 (de) | Werkzeug zur sicherheit und zum austauch von persönlichen daten | |
DE60130037T2 (de) | Verfahren und system zur web-basierten cross-domain berechtigung mit einmaliger anmeldung | |
DE69619136T2 (de) | Sichere durchgangsystemschnittstelle | |
DE60221451T2 (de) | System und Verfahren für Erstellung des transparenten Zugangs auf WebDAV Dateien inklusive verschlüsselte Dateien | |
DE60200451T2 (de) | Herstellung einer gesicherten Verbindung mit einem privaten Unternehmensnetz über ein öffentliches Netz | |
DE60308692T2 (de) | Verfahren und system für benutzerbestimmte authentifizierung und einmalige anmeldung in einer föderalisierten umgebung | |
DE602004012870T2 (de) | Verfahren und system zur benutzerauthentifizierung in einer benutzer-anbieterumgebung | |
DE60200093T2 (de) | Sichere Benutzerauthenifizierung über ein Kommunikationsnetzwerk | |
CN104767834B (zh) | 用于加速计算环境到远程用户的传送的系统和方法 | |
EP1628184A1 (de) | Verfahren und Computersystem zur Durchführung eines netzwerkgestützten Geschäftsprozesses | |
DE10224743A1 (de) | Verwendung von Auftragsetiketten, um einen Ressourcenzugriff zu sichern | |
DE10212620A1 (de) | Sichere Benutzer- und Datenauthentisierung über ein Kommunikationsnetzwerk | |
DE10148357A1 (de) | System und Verfahren zur gemeinsamen Nutzung digitaler Literaturwerke mit einem Schutz gegen illegale Kopien durch Kommunikationsnetze | |
DE102011077218B4 (de) | Zugriff auf in einer Cloud gespeicherte Daten | |
WO2003025758A2 (de) | Vorrichtung und verfahren zur etablierung einer sicherheitspolitik in einem verteilten system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |