DE60031304T2 - Verfahren zur authentifizierung von softwarebenutzern - Google Patents

Verfahren zur authentifizierung von softwarebenutzern Download PDF

Info

Publication number
DE60031304T2
DE60031304T2 DE60031304T DE60031304T DE60031304T2 DE 60031304 T2 DE60031304 T2 DE 60031304T2 DE 60031304 T DE60031304 T DE 60031304T DE 60031304 T DE60031304 T DE 60031304T DE 60031304 T2 DE60031304 T2 DE 60031304T2
Authority
DE
Germany
Prior art keywords
puzzle
user
information
value
software
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 - Lifetime
Application number
DE60031304T
Other languages
English (en)
Other versions
DE60031304D1 (de
DE60031304T3 (de
Inventor
G. Gregory Mortlake ROSE
Philip Burwood HAWKES
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23860287&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60031304(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of DE60031304D1 publication Critical patent/DE60031304D1/de
Publication of DE60031304T2 publication Critical patent/DE60031304T2/de
Application granted granted Critical
Publication of DE60031304T3 publication Critical patent/DE60031304T3/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3674Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Storage Device Security (AREA)
  • Saccharide Compounds (AREA)
  • Time Recorders, Dirve Recorders, Access Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Pinball Game Machines (AREA)

Description

  • Hintergrund der Erfindung
  • I. Gebiet der Erfindung
  • Die vorliegende Erfindung gehört im Allgemeinen zum Gebiet der Verschlüsselung und im Speziellen zu den Verfahren zur Authentifizierung bzw. Authentisierung von anonymen Anwendern, welche das Potential des Betruges durch „Mittelsmänner" verringern.
  • II. Hintergrund
  • Software für Computer (Rechner) wird im Allgemeinen im Internet über Vertriebsvertreter oder „Mittelsmänner" an die Endanwender (d.h. die Konsumenten) verteilt. Somit sind drei Parteien an dem Vorgang beteiligt. Die erste Partei ist der Provider (Anbieter) von Software und Inhalten (d.h. der Autor), der ein Einkommen daraus erzielt, dass er Endanwendern Inhalte liefert, und der den Vertriebsvertretern eine kleine Vermittlungsgebühr dafür bezahlt, dass diese für die Software werben und diese verteilen. Die zweite Partei ist eine Anzahl von Vertriebsvertretern, die dem Anwender die Software (die einen Mechanismus zum Betrachten des Inhaltes sowie einigen vom Inhalt unabhängigen Wert, wie z.B. Funktionen für den elektronischen Schriftverkehr (Mail) bietet) zur Verfügung stellt. Der Mittelsmann erzielt Einkommen von Anwendern, die Inhalte erhalten, also liegt es in seinem oder ihrem Interesse, die Software an einen großen Kreis zu verteilen. Die dritte Partei ist der Anwender, der als Gegenleistung für das Betrachten des Inhaltes die Software frei erhält. Der Anwender erhält keine andere Vergütung, in erster Linie, weil die Anwender anonym sind. Die Anwender sind anonym, weil Tracking-Details (elektronisch verfolgbare Spuren) normalerweise nicht aufbewahrt werden, und die Anwender nicht individuell identifiziert wurden. Anwender mögen freiwillig Informationen zur Verfügung stellen, wenn sie Inhalt abrufen, aber diese freiwillig zur Verfügung gestellte Information wird im Allgemeinen verwendet und verworfen, anstatt gespeichert und getrackt (verfolgt) zu werden. Die Par teien werden nachstehend generell als der Provider, der Mittelsmann, und der Anwender bzw. Nutzer bezeichnet.
  • Der Mittelsmann kann ein als Internet „Cookie" bekanntes Hilfsmittel verwenden, um demographische Informationen über Anwender zu beziehen, wenn diese sich mit dem Internet verbinden und die entsprechende Website (Angebotsstandort im Internet) besuchen. Wenn ein Anwender beispielweise Verbindungen zu bestimmten Orten im Internet herstellt, verbindet sich der Computer des Anwenders über das Internet mit einen Hostcomputer (Leitrechner), der vom Mittelsmann betrieben wird. Der Host sendet eine kleine Datei mit Daten (das Cookie), die auf dem Computer des Anwenders gespeichert wird. Wenn der Anwender und der Host miteinander kommunizieren, werden einige Daten in dem Cookie gespeichert. Wenn der Anwender die Verbindung beendet, verbleibt das Cookie auf seinem oder ihrem Computer. Nachfolgende Daten über die Internetnutzung des Anwenders werden in dem Cookie gespeichert. Wenn der Anwender sich das nächste Mal mit dem Host verbindet, liest der Host die Informationen über den Anwender aus dem Cookie aus. Die Informationen über den Anwender können vom Betreiber des Hosts verarbeitet und an Internethändler verkauft werden.
  • Da die Anwender anonym sind, kann der Mittelsmann einfach durch das Durchreichen von mehr Inhalten dem Provider gegenüber unnachweisbaren Betrug begehen. Dieses wiederum kann entweder durch Anfordern von mehr Inhalten im Namen eines realen Anwenders oder durch das Erzeugen von „Fake-Anwendern" (gefälschten Anwendern) erreicht werden. Es gibt eine Reihe von statistischen Verfahren zur Feststellung des Ausmaßes der Lieferung von Inhalten an bestimmte Anwender, welche die Anonymität der Details bewahren. Solche statistischen Verfahren lösen das Problem von Mittelsmännern, die durch das Anfordern von mehr Inhalten im Namen eines realen Anwenders Betrug begehen. Diese Verfahren adressieren jedoch nicht die Situation, in der der Mittelsmann dadurch betrügt, dass er eine signifikante Anzahl von gefälschten Anwendern erzeugt. Daher besteht Bedarf für ein Verfahren, welches die Vertriebsvertreter für Software daran hindert dadurch zu betrügen, dass sie eine signifikante Anzahl von nicht existierenden Anwendern vorgaukeln.
  • US-A-5,790,667 offenbart ein Verfahren zur personengebundenen Authentifizierung, in welchem ein Anwender i eine Nachricht bzw. Information für die Authentifizierungsanfrage unter Zuhilfenahme eines Parameters, der eine Zufallszahl enthält, berechnet und diese an eine Verkaufsgesellschaft A sendet. Bei der Verkaufsgesellschaft A wird die empfangene Nachricht mit der Authentifizierungsanfrage nicht rückkalkulierbar bzw. einweg (one-way) transformiert unter Zuhilfenahme eines Parameters, der eine Zufallszahl enthält und wird als Nachricht zur Authentifizierungsaufforderung an den Anwender i gesendet. Bei dem Anwender i werden eine Identifikationsnummer über die Mitgliedschaft des Anwenders bei einem Kreditinstitut und ein Passwort eingegeben, und die empfangene Nachricht zur Authentifizierungsaufforderung wird unter Zuhilfenahme des Passwortes transformiert, um die Nachricht zur Authentifizierungsantwort zu erzeugen. Dann werden die Identifikationsnummer des Anwenders i und die Nachricht zur Authentifizierungsantwort an die Verkaufsgesellschaft A gesendet. Bei der Verkaufsgesellschaft A wird die empfangene Nachricht zur Authentifizierungsantwort einweg transformiert, so dass der Parameter mit der Zufallszahl annulliert wird, um die Nachricht mit der Authentifizierungsreferenz zu erzeugen. Dann werden die empfangene Indentifikationsnummer und die Nachricht mit der Authentifizierungsreferenz an das Kreditinstitut b gesendet. Bei dem Kreditinstitut b wird mit Hilfe der empfangenen Identifikationsnummer, die als Schlüssel verwendet wird, eine transformierte geheime Nachricht, die zuvor gespeichert wurde, abgerufen und es wird ermittelt, ob die transformierte geheime Nachricht und die Nachricht mit der Authentifizierungsreferenz gleich sind. Wenn sie gleich sind, sendet das Kreditinstitut b der Verkaufsgesellschaft A eine Authentifizierungsnachricht, die die Richtigkeit des Anwenders i anzeigt, und wenn sie nicht gleich sind, sendet das Kreditinstitut b eine Authentifizierungsnachricht, die anzeigt, dass der Anwender i nicht als korrekter Anwender authentifiziert werden kann. Von der Verkaufsgesellschaft A wird die Authentifizierungsnachricht, die vom Kreditinstitut b gesendet wurde an den Anwender i geschickt.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren mit dem Vertriebsvertreter von Software daran gehindert werden dadurch zu betrügen, dass sie eine signifikante Anzahl von nicht existierenden Anwendern vorgaukeln. Entsprechend ist in einem Aspekt der Erfindung ein Verfahren für einen Softwareprovider zur Authentifizierung von Anwendern der Software vorgesehen, wie in Anspruch 1 beansprucht. Das Verfahren beinhaltet vorteilshafterweise die Schritte des Konstruierens eines Rätsels als Antwort auf Information bzw. Informationen, die vom Anwender empfangen wurden, wobei das Rätsel diese Informationen enthält; des Sendens des Rätsels an den Anwender; und des Rücklieferns einer Lösung des Rätsels an den Provider.
  • In einem anderen Aspekt der Erfindung ist eine Vorrichtung, die einen Softwareprovider zur Authentifizierung von Anwendern der Software befähigt, vorgesehen, wie in Anspruch 4 beansprucht. Die Vorrichtung beinhaltet vorteilshafterweise Mittel zum Konstruieren eines Rätsels als Antwort auf Informationen, die vom Anwender empfangen wurden, wobei das Rätsel diese Informationen enthält; Mittel um das Rätsel an den Anwender zu senden; und Mittel um eine Lösung des Rätsels an den Provider zurückzuschicken.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Systems, in welchem Information zwischen einem Provider und einem Anwender ausgetauscht wird.
  • 2 ist ein Blockdiagramm, welches die Passung von Bits eines verschlüsselten „Cookies" in eine Potenzierungsoperation eines „Rätsels" darstellt.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • In den untenstehenden Ausführungsbeispielen werden neue Anwender eines Systems auf eine Art und Weise registriert, bei der ein knappes Betriebsmittel so verbraucht wird, dass ein einzelner Anwender sich registrieren und die Kosten nicht zur Kenntnis nehmen wird, aber jede Partei, und insbesondere ein Mittelsmann, sich bei jedem Versuch, das System zu missbrauchen, mit signifikanten Kosten belasten würde. In einem Ausführungsbeispiel ist das signifikante Betriebsmittel Rechenarbeitszeit. Andere knappe Betriebsmittel könnten verwendet werden, wie z.B. Speicherplatz, Netzwerk-Bandbreite oder die Zeitspanne der Aufmerksamkeit des Anwenders (d.h., vom Anwender zu verlangen, über eine Zeitspanne hinweg zu interagieren). Rechenarbeitszeit wird bevorzugt, da sie tatsächlich für den Anwender frei zur Verfügung steht. Im Allgemeinen ist der Personal-Computer bzw. Arbeitsplatzrechner des Anwenders die meiste Zeit untätig, die Berechnung kann auf eine unaufdringliche Art und Weise ausgeführt werden, und es gibt keinen permanenten Overhead (Mehraufwand) sobald die Berechnung abgeschlossen ist. Der exakte Umfang der Berechnung kann Parametern wie z.B. den Kosten und der Rechenleistung von typischen Computern der Zeit und dem Umfang des involvierten Betrugspotentials entsprechend angepasst werden.
  • In 1 wird in Übereinstimmung mit einem Ausführungsbeispiel ein System 100 dargestellt, in welchem ein Anwender 102 durch Kommunikation mit einem Provider 104 Registrierung beantragt. Es sollte klar sein, dass der Anwender 102 und der Provider 104 sich auf Geräte beziehen, die vom Anwender und dem Provider verwendet werden, und zwar Geräte wie z.B. Personal-Computer oder tragbare Rechenvorrichtungen (handheld computing devices) wie persönliche digitale Assistenten (personal digital assistants) oder schnurlose Telefone für den Anwender 102, bis hin zu großen Webservern für den Provider 104. In einer Nachricht 106 sendet der Anwender 102 demographische Daten an den Provider 104. In anderen Ausführungsbeispielen könnte der Anwender 102 andere Daten, wie z.B. die Anwenderidentität anstelle von oder zusammen mit demographischen Daten in der Nachricht 106 schicken. Die Nachricht 106 an den Provider 104 kann in einer verschlüsselten Ausführung sein, um sensitive Informationen über den Anwender 102 zu schützen, oder die Nachricht kann in unverschlüsselter Ausführung sein. Die Software bei dem Anwender 102 beinhaltet irgendein Identifizierungsmerkmal des Mittelsmannes, welches wiederum ebenfalls in der Nachricht 106 enthalten ist. Der Anwender 102 kann auch Informationen zur Verfügung stellen, um anschließend inhaltliche Materialien treffsicherer auswählen zu können. Die vom Anwender 102 zur Verfügung gestellten Daten 106 werden vom Provider 104 in die Antwort auf ein Rätsel 108 hineincodiert. Die Antwort, d.h. das entschlüsselte Rätsel 110, wird vom Anwender 102 zu einem späteren Zeitpunkt, wenn der Anwender 102 Inhalt anfordert, zu dem Provider 104 zurückgeschickt.
  • In einem Ausführungsbeispiel wird die Antwort 110 auf das Rätsel 108 wie folgt aufgebaut. Die zur Verfügung gestellte Information 106 und ein zufälliger Identifikator (nicht dargestellt), der ausreichend lang ist, um von seiner Einzigartigkeit ausgehen zu können, werden in einem Puffer (ebenfalls nicht dargestellt) platziert. Eine verschlüsselte Hash-Funktion (Streuwertfunktion) des Inhaltes des Puffers wird berechnet. Eine beispielhafte sichere Has-Funktion ist der Secure Hash Standard (sicherer Hash Standard), der im Federal Information Processing Standard (FIPS) 180-1 spezifiziert ist, welcher vom National Institute for Standards and Technology entwickelt wurde. Der im FIPS 180-1 Dokument beschriebene Algorithmus wird nachstehend als sicherer Hash-Algorithmus (Secure Hash Algorithm, SHA) bezeichnet. Das Ergebnis der Hash-Funktion kann 160 Bits lang sein. In einem speziellen Ausführungsbeispiel werden nur die ersten vierundsechzig Bits der Hash-Funktion verwendet. In einem anderen Ausführungsbeispiel werden die ersten achtzig Bits der Hash-Funktion verwendet. Die Hash-Funktion wird in den Puffer am Anfang des Puffers eingefügt. Der gesamte Puffer wird dann mit einer symmetrischen Blockverschlüsselung (symmetric block cipher), wie z.B. dem Algorithmus nach dem Datenverschlüsselungs-Standard (Data Encryption Standrad, DES) (FIPS 46-2) unter Verwendung eines in einem Schlüssel im Provider 104 enthaltenen Geheimnisses (nicht dargestellt) verschlüsselt. In einem speziellen Ausführungsbeispiel wird der Dreifach-DES (triple-DES, 3DES) Algorithmus, wie im Entwurfstext des FIPS 46-3 spezifiziert, verwendet.
  • Für jeden außer dem Provider 104 ist das Resultat der Verschlüsselung vorteilshafterweise nicht von zufälligen Daten unterscheidbar. Insbesondere wenn ein Teil der Daten öffentlich zugänglich gemacht wird, kann keine Partei den Teil, der nicht offen ist, rekonstruieren. Wenn der Provider 104 nachfolgend ein verschlüsseltes Objekt empfängt, kann der Provider 104 sicher sein, dass es exakt die Daten sind, die der Provider 104 zu einer früheren Zeit er zeugte, indem er das Objekt entschlüsselt und verifiziert, ob die in dem Objekt eingebettete Hash-Funktion mit dem Ergebnis einer neuen Berechnung übereinstimmt. Der verschlüsselte Datenpuffer wird üblicherweise von Fachleuten als ein „Cookie" bezeichnet.
  • Es sollte klar sein, dass das Cookie länger als ein einzelner Cipher Block sein wird, also muss die Verschlüsselung im Cipher Block Chaining Modus bzw. Verkettungsmodus der Blockverschlüsselung, wie in FIPS beschrieben, erfolgen. Der Cipher Block Chaining Modus erfordert normalerweise eine Zufallszahl als Initialisierungsvektor. Der Initialisierungsvektor kann jedoch auf einen konstanten Nullwert gesetzt werden, da der erste zu verschlüsselnde Block einen Hash-Wert enthält, was ausreichend ist, um die erwarteten Angriffe zu verhindern.
  • Das Rätsel 108 wird aus dem Cookie konstruiert, anstatt das Cookie selber zu senden. Das Rätsel 108 ist vorteilshafterweise so konstruiert, dass ein gewisser (d.h. erwarteter) Umfang von Rechenarbeit benötigt wird, um das Rätsel 108 zu lösen und das Cookie zurückzugewinnen. Da der Provider 104 diese Funktion für viele Anwender ausführen muss, muss der Provider 104 rechnerseitig effizient sein, das Rätsel 108 zu konstruieren, während die Lösung des Rätsels 108 absichtlich ineffizient gestaltet sein muss. Diese Kombination aus rechnerseitiger Effizienz bei der Konstruktion und Ineffizienz bei der Lösung kann mit einer neuen Verwendung von bekannten Verfahren der Asymmetrischen Verschlüsselung (public-key cryptography) erreicht werden.
  • Für Zwecke der nachfolgenden Erläuterung kann das Cookie mit C bezeichnet werden, und andere Parameter P und g sind in der Software enthalten und so allen Beteiligten bekannt. Der Parameter P ist vorteilshafterweise eine große Primzahl. Die untere Grenze der Anzahl von Bits in P wird durch die gewünschte Komplexität der Berechnung des Rätsels 108 bestimmt. In einem speziellen Ausführungsbeispiel ist die Anzahl von Bits in P 1024. Der Parameter P hat vorteilshafterweise die zusätzliche Eigenschaft, dass ein Parameter Q, der die Gleichung Q = (P – 1)/2 erfüllt, ebenfalls eine Primzahl ist. Der Parameter g ist vorteilshafterweise ein Erzeugerelement bzw. Generator der Untergruppe der Ordnung (Kardinalität) Q der multiplikativen Gruppe der ganzen Zahlen modulo P. Die Parameter P, g und Q sind typische Parameter, die in dem bekannten Diffie-Hellman-Schlüsselaustausch-(Diffie-Hellman key agreement)-Protokoll verwendet werden. Wenn das Cookie, C, größer als Q ist, wird dem Anwender 102 ein Teil des Cookies unverschlüsselt gegeben und ein kleinerer Teil wird verwendet um das Rätsel 108 zu konstruieren. Hier wird generell angenommen, dass gilt |C| < |Q|.
  • Das Rätsel 108 wird zunächst durch die Berechnung von Z = gK modulo P konstruiert. Derzeit erfordert das beste bekannte Verfahren zur Berechung von K aus einem gegebenen Z (d.h. zum Lösen des diskreten Logarithmus-Problems) sehr viel Rechenarbeit und, mit einer Länge von 1024 Bit für P wird das Verfahren als etwa gleichwertig betrachtet, wie das Entschlüsseln einer Nachricht unter Verwendung eines Block Ciphers (Verschlüsselungsblocks) mit einem unbekannten Schlüssel von 128 Bit. Solch eine Berechnung auszuführen, ist für den Anwender 102 zu aufwändig. Weil der Anwender 102 in der Lage sein soll, C zurückzugewinnen, gibt der Provider 104 dem Anwender 102 den größten Teil der Anwort 110. Das Rätsel 108 enthält somit Z und einen Rätsellösungshinweis. Der Rätsellösungshinweis beinhaltet die meisten (aber nicht alle) Informationen über C. Die Anzahl der variablen Bits in dem übermittelten Wert bestimmt den Schwierigkeitsgrad des Rätsels 108. Der für den Anwender 102 effizienteste Weg das Rätsel 108 zu lösen ist, Versuchswerte für die unbekannte Information auszuprobieren bis der Anwender 102 den Versuchswert findet, der die korrekte Antwort 110 liefert. Jeden Versuchswert zu überprüfen erfordert die Berechnung der modularen (diskreten) Exponentialfunktion für den Kandidaten K.
  • Es kann angenommen werden, dass die Berechnung einer solchen modularen Exponentiation etwa 1/100stel einer Sekunde dauert (die genaue Dauer hängt von der Schnelligkeit des Prozessors (nicht dargestellt) und der Größe von P ab). Wenn gewünscht ist, dass die Berechnung eine durchschnittliche Dauer von zwölf Stunden im Hintergrund ablaufender Verarbeitung benötigt, müssen näherungsweise vier Millionen (oder 222) Probelauf-Kandidaten verwendet werden. Da die Lösung im Schnitt etwa auf dem halben Weg durch die Menge der Möglichkeiten gefunden werden wird, sollte der Rätsellösungshinweis aus allen, bis auf dreiundzwanzig, der Bits der Antwort 110 bestehen.
  • Um sicherzustellen, dass das Rätsel 108 nicht auf eine Weise gelöst werden kann, die die probeweise Exponentiation vermeidet, kann wiederum eine Einweg-Hash-Funktion verwendet werden. Wir gehen davon aus (wie dies für den Secure Hash Standard der Fall ist), dass die Ausgabe der Hash-Funktion H()160 Bits lang ist. Es ist wichtig sicherzustellen, dass |C| ein bisschen größer ist als |H|/2, so dass |C| in zwei Teile geteilt werden kann. Wenn nötig, kann C vor der Verschlüsselung aufgefüllt werden um sicherzustellen, dass |C| groß genug ist. Das Ergebnis der Hash-Funktion wird zum Teil verwendet, um C unkenntlich zu machen, und zum Teil, um den Eingabewert des Vorgangs der Exponentation zu variieren.
  • Ein Zwischenergebnis K wird aus C auf die folgende Weise konstruiert. Das Cookie C wird in zwei Teile, L und R, so geteilt, dass |R| achtzig Bits lang ist. Eine Zufallszahl r wird im Bereich 0, ..., N gewählt, wobei N den durchschnittlichen Schwierigkeitsgrad des Rätsels 108 bestimmt. In einem Ausführungsbeispiel gilt N = 223. Dann wird K mit Hilfe der folgenden Gleichung ermittelt: K = L||((R||080) ⊕ H(L||r)), wobei || eine Operation der Konkatenation (Verkettung) bezeichnet, ⊕ eine bitweise Exklusiv-Oder (XOR) Operation bezeichnet und 080 achtzig Null-Bits bezeichnet.
  • Es sollte zur Kenntnis genommen werden, dass in dem hier beschriebenen speziellen Ausführungsbeispiel das Ergebnis einer einzelnen Hash-Funktion vorteilshafterweise in zwei Teile geteilt und für unabhängige Zwecke genutzt wird. Es wäre für einen Fachmann leicht ersichtlich, dass zwei unabhängige Hash-Funktionen für diese Zwecke verwendet werden könnten.
  • Das Rätsel 108 besteht dann aus dem Ergebnis der Exponentiation Z und allen außer den letzten achtzig Bits von K. Um C zurückzugewinnen und das Rätsel 108 zu lösen, beginnt der Anwender 102 Werte von r auszuprobieren, H(L||r) zu berechnen, achtzig Bits des Ergebnisses an den gegebenen Teil von K anzuhängen, und zu überprüfen, ob das resultierende gK gleich der Antwort Z ist. Wenn das korrekte r gefunden ist, können die linken achtzig Bits der Hash-Ausgabe in einer XOR Operation mit dem partiellen K verknüpft werden, um C zurückzugewinnen.
  • Folglich genügt die oben beschriebenen Technik den Anforderungen wie beschrieben. Die möglichen Lösungen des diskreten Logarithmus-Problems vari ieren in 160 Bits, viel zu viele um irgendeine Form der Vorberechnung sinnvoll anwenden zu können. Achtzig Bits von C sind unkenntlich bis K mittels probeweiser Exponentiation verifiziert werden kann. Achtzig Bits von K sind solange nicht erkenntlich, bis sie aus r abgeleitet wurden. Da K von L abhängt gibt es keinen Weg, die begrenzte Menge der sinnvollen Hash-Werte vorzuberechnen. Der Bereich der Zufallszahl r bestimmt die durchschnittliche Zeit, die zur Lösung des Rätsels 108 durch Ausprobieren gebraucht wird, während die obigen Eigenschaften sicherstellen, dass andere Abkürzungen nicht funktionieren.
  • Es wäre für Fachleute leicht einsichtig, dass das Rätsel 108 auch durch Senden von Versuchswerten an den Provider 104 und Warten auf Bestätigung gelöst werden könnte. Das begleitende Protokoll sollte sicherstellen, dass dies nicht effizienter ist, als die modulare Exponentiation durchzuführen (mit welcher in der Praxis vorlieb genommen werden wird).
  • Sobald der Anwender 102 das Rätsel 108 gelöst hat, ist der Anwender 102 im Besitz eines gültigen Cookies, das genügend Informationen enthält, um den Provider 104 in der Folge zu überzeugen, dass der Anwender 102 sich registriert hat. Das Cookie trägt ebenfalls alle ergänzenden Daten, die vom Provider 104 benötigt werden, um den Inhalt zu bestimmen.
  • Es sollte klar sein, dass manche der Informationen in der initialen Registrierungsanfrage 106 potentiell die Privatsphäre betreffen und zu schützen sind (privacy-sensitive). In ähnlicher Weise könnte ein Lauscher, wenn das Cookie zum Provider 104 für nachfolgende Anfragen nach Inhalt zurückgeschickt wird, die Anfragen basierend auf dem Cookie verfolgen. Daher ist es wünschenswert, dass die Kommunikation 106 zwischen dem Anwender 102 und dem Provider 104 verschlüsselt ist, und es ist relativ einfach, solch eine Verschlüsselung durch Verwendung eines auf dem diskreten Logarithmus basierenden, asymetrischen Verschlüsselungsalgorithmus, wie z.B. dem Diffie-Hellman Algorithmus, zu bewerkstelligen. Der öffentliche Schlüssel des Providers 104 könnte in der Anwendung enthalten sein, und die gemeinsamen Parameter P und g könnten verwendet werden. Trotzdem würde von Fachleuten verstanden werden, dass die Nachricht 106 vom Anwender 102 zum Provider 104 nicht verschlüsselt sein muss und, dass, falls die Kommunikation 106 verschlüsselt ist, jeder asymetrische Verschlüsselungsalgorithmus verwendet werden könnte.
  • In einem Ausführungsbeispiel wird ein verschlüsseltes Cookie erzeugt und dann entschlüsselt, und ein Rätsel wird aus dem verschlüsselten Cookie erzeugt und dann gelöst, wie untenstehend und mit Bezug auf 2 beschrieben. In Übereinstimmung mit diesem speziellen Ausführungsbeispiel ist die äußere Umgebung wie folgt. Von bestimmten Daten und Funktionalitäten wird angenommen, dass sie in der aufrufenden Umgebung vorhanden sind. Im speziellen wird von dem Provider mehr Funktionalität verlangt als von dem Anwender.
  • Die primären gemeinsamen Parameter des Rätselsystems sind P, welches 1024 Bit lang ist und eine Primzahl ist, und g, ein Erzeugerelement, dessen Wert zwei ist. Die Primzahl P ist durch 21024 – 2960 – 1 + 264·{[2894π] + 129093 gegeben. Der hexadezimale Wert von P ist der Folgende:
    FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 FFFFFFFF FFFFFFFF.
  • Die folgende gemeinsame Funktionalität wird vorteilshafterweise verwendet. Beide, der Anwender und der Provider, benötigen Zugriff auf einen SHA-1 Hash-Algorithmus und eine Funktion zur modularen Exponentiation im Bereich großer ganzer Zahlen. Der SHA-1 Hash-Algorithmus, welcher mit H(.) bezeichnet wird, erzeugt vorteilshafterweise von jeder Eingabe, unabhängig von der Länge der Eingabe, 160 Bit Ergebnisse. Die Funktion zur modularen Exponentiation im Bereich großer ganzer Zahlen referenziert die oben beschriebenen g und P implizit und berechnet gx modulo P effizient für einen gegebenen Wert x. Andere Funktionen der modularen Arithmetik im Bereich großer ganzer Zahlen, wie z.B. Addition, Multiplikation, usw. können anstelle der Imp lementierung der Funktionalität der modularen Exponentiation verwendet werden.
  • Die folgenden, nur providerseitigen Parameter und Funktionalitäten werden vorteilshafterweise angewendet. Zusätzlich zu den oben beschriebenen gemeinsamen Anforderungen an Funktionalitäten benötigt der Provider zusätzlich die Fähigkeit Cookies in einer verschlüsselungstechnisch sicheren Weise zu erzeugen und zu verifizieren. Um dies zu tun benötigt der Provider folgende Dinge: (1) den 3DES Verschlüsselungsalgorithmus; (2) einen Authentifizierungsschlüssel Ka; (3) einen Schlüssel Kp, der verwendet wird um Cookies zu verschlüsseln; und (4) eine Quelle hochqualitativer geheimer Pseudozufallszahlen. In einem Ausführungsbeispiel ist der Authentifizierungsschlüssel Ka 128 Bit lang. Es sollte klar sein, dass andere Verschlüsselungsalgorithmen als der 3DES Verschlüsselungsalgorithmus verwendet werden können. In dem Ausführungsbeispiel, in welchem der 3DES Verschlüsselungsalgorithmus verwendet wird, sollte der Schlüssel Kp zur Verschlüsselung des Cookies vorteilshafterweise 112 Bits lang sein.
  • In Übereinstimmung mit diesem speziellen Ausführungsbeispiel kann ein verschlüsseltes Cookie wie folgt erzeugt werden. In dem speziellen, beschriebenen Ausführungsbeispiel ist das Cookie ein Byte (Oktett)-Puffer. Es wird davon ausgegangen, dass die maximale Länge des Eingabe-Cookies von der 1024 Bitlänge der Primzahl P plus den achtzig schlussendlich angehängten Bits abhängt. Das Cookie wird mit einem oder mehreren Oktetts gefüllt, um ein Vielfaches von acht Oktetts zu sein, und hat acht Oktetts mit Authentifizierungsinformationen vorangestellt. Mit den achtzig zusätzlichen Bits, die angehängt werden, muss die Länge des Cookies kleiner als 1023 Bits bleiben. In diesem speziellen Ausführungsbeispiel darf deshalb das Eingabe-Cookie höchstens 101 Oktetts, oder 808 Bits, lang sein. Es würde von Fachleuten verstanden werden, dass längere Cookies, wenn erforderlich, mit leichten Modifikationen bewältigt werden können. Das Cookie sollte vorteilshafterweise eine minimale Länge von acht Oktetts haben. Die folgenden Pseudocode-Parameter können verwendet werden, um ein Cookie in Übereinstimmung mit diesem speziellen Ausführungsbeispiel zu verschlüsseln:
  • Figure 00130001
  • In den obigen Pseudocode-Parametern, zeigt der Parameter cookie auf einen Puffer mit cookieLength bzw. Cookielänge (höchstens 101) Oktetts mit Informationen. Der Parameter encryptedCookie bzw. verschlüsseltes Cookie zeigt auf einen Puffer mit mindestens ((cookieLength + 16) &0xF8) Oktetts verfügbarem Speicherplatz, der mit dem Ergebnis überschrieben werden wird. Die global verwendete Information beinhaltet die Parameter Ka und Kp.
  • Die folgenden Verfahrensschritte können verwendet werden, um ein Cookie in Übereinstimmung mit diesem speziellen Ausführungsbeispiel zu verschlüsseln. Erstens wird der SHA Hashwert H(Ka, cookie) berechnet und dann auf acht Oktetts gekürzt. Der gekürzte Hashwert wird dann in eine encryptedCookie genannte Datei kopiert. Zweitens wird eine cookie genannte Datei an die Datei encryptedCookie angehängt. Drittens wird die Anzahl der für das Auffüllen erforderlichen Oktetts, 1 <= n <= 8, berechnet, und dann wird die Anzahl von Oktetts, die den Wert n enthalten, angehängt. Dieser dritte Verfahrensschritt kann unzweideutig rückgängig gemacht werden. Viertens wird die Datei encryptedCookie verschlüsselt, dazu wird der 3DES Verschlüsselungsalgorithmus mit dem Schlüssel Kp im Cipher Block Chaining (CBC) Modus und einem Initialisierungsvektor von Null verwendet.
  • In Übereinstimmung mit diesem speziellen Ausführungsbeispiel kann ein verschlüsseltes Cookie unter Verwendung der folgenden Pseudocode-Parameter entschlüsselt werden:
  • Figure 00130002
  • In den obigen Pseudocode-Parametern, zeigt die Datei encryptedCookie auf einen Puffer mit cookieLength (höchstens 112) Oktetts mit Informationen. Die Datei cookie zeigt auf einen Puffer mit mindestens (cookieLength – 8) Oktetts verfügbarem Speicherplatz, der mit dem Ergebnis überschrieben werden wird. Der Rückgabewert ist die Länge des entschlüsselten Cookies, wenn die Authentifizierung erfolgreich ist. Ansonsten ist der Rückgabewert Null. Die global verwendete Information beinhaltet die Parameter Ka und Kp.
  • Die folgenden Verfahrensschritte können verwendet werden, um ein Cookie in Übereinstimmung mit diesem speziellen Ausführungsbeispiel zu entschlüsseln. Erstens wird eine encryptedCookie genannte Datei in einen temporären Puffer kopiert und dann entschlüsselt unter Verwendung des 3DES Verschlüsselungsalgorithmus mit dem Schlüssel Kp im CBC Modus und einem Initialisierungsvektor von Null. Zweitens wird der SHA Hashwert H(Ka, buffer + 8) nach Entfernen der Auffüllung berechnet. Der SHA Hashwert wird dann auf acht Oktetts gekürzt. Drittens wird die acht Oktett lange Ausgabe mit den ersten acht Oktetts des Puffers verglichen. Der Wert Null wird zurückgegeben, wenn die beiden verglichenen Mengen von acht Oktetts ungleich sind. Viertens, wenn der Vergleich Gleichheit ergibt, wird der temporäre Puffer plus acht Oktetts in die Datei cookie kopiert, und die nicht aufgefüllte Länge der Datei cookie wird zurückgegeben.
  • In Übereinstimmung mit diesem speziellen Ausführungsbeispiel kann ein Rätsel aus einem verschlüsselten Cookie erzeugt werden, wie in 2 dargestellt. Ein verschlüsseltes Cookie 200 wird konzeptionell in linke (L) und rechte (R) Komponente geteilt. Die rechte Komponente ist achtzig Bits lang. Ein Zufallszahlengenerator 202 wählt pseudo-zufällig eine Zahl in dem Bereich von Null bis 223. Das verschlüsselte Cookie 200 wird in einen 1024 Bit Puffer 204 kopiert und auf der linken Seite mit Nullwerten 206 aufgefüllt und auf der rechten Seite mit zehn Oktetts von Nullen (achtzig Null Bits) aufgefüllt. Eine 160 Bit SHA Hash-Funktion 208 wird über die Verkettung von der linken Komponente des verschlüsselten Cookies 200 und der Zufallszahl, die vom Zufallszahlengenerator 202 ausgewählt wurde, ausgeführt. Das Ergebnis der Hash-Funktion 208, welches zwanzig Oktetts lang ist, wird durch eine bitweise XOR Operation in die zwanzig ganz rechts gelegenen Oktetts des Puffers 204 eingebracht, wodurch die zehn ganz rechts gelegenen Oktetts des verschlüsselten Cookies 200 und die zehn Oktetts von Nullen modifiziert werden. Der Puffer 204 wird zum Exponenten erhoben, um ein Ergebnis Z der Exponentiation zu erzeugen. Das Ergebnis der Exponentiation Z wird in dem Rätsel 210, welches das Ergebnis Z und alle Bits, außer den ganz rechts gelegenen achtzig Bits (welche verworfen werden) des Puffers 204 enthält, an den Anwender, oder Client, geschickt.
  • In Übereinstimmung mit einem Ausführungsbeispiel kann die folgende Pseudocode-Struktur verwendet werden, um ein Rätsel aus einem verschlüsselten Cookie zu erzeugen.
  • Figure 00150001
  • Die Eingabe difficulty bzw. Schwierigkeit bestimmt die Größe der verwendeten Zufallszahl, welche wiederum die erwartete Anzahl von versuchsweisen Exponentiationen, die zur Lösung des Rätsels ausgeführt werden müssen, beeinflusst. Wenn difficulty zum Beispiel zwanzig ist, dann müssen im Durchschnitt 219 Hash-Wert-Berechungen und Versuchsexponentiationen vom Anwender durchgeführt werden, um das Rätsel zu knacken. Der eingegebene verschlüsselte Cookie hat die Länge cookieLength. Diese Funktion kehrt zurück nach der Befüllung der Struktur, auf die p zeigt. Das encryptedCookie in der Struktur unterscheidet sich von dem eingebenen verschlüsselten Cookie und wird daher bei einer Authentifizierung scheitern.
  • Das verschlüsselte Cookie wird konzeptionell in zwei Teile L und R so geteilt, dass R zehn Oktetts (achtzig Bits) lang ist. Eine Zufallszahl wird im Bereich 0..2difficulty – 1 erzeugt. Das verschlüsselte Cookie wird dann in einen temporären 1024 Bit Puffer K kopiert, der auf der linken Seite mit Nullen aufgefüllt ist und an dem rechten Ende mit zehn Oktetts von Nullen aufgefüllt ist. Eine Hash-Funktion wird über L, r ausgeführt, um den Wert h, welcher zwanzig Oktetts lang ist, zu erzeugen. Der Wert h wird durch eine XOR Operation in die letzten zwanzig Oktetts des Puffers eingebracht, wodurch die zehn letzten Oketetts des ursprünglichen verschlüsselten Cookies und die anderen zehn Oktetts von Nullen modifiziert werden. Der temporäre Puffer K wird als 1024 Bit Ganzzahl behandelt und zum Exponenten erhoben, um Z entsprechend der folgenden Gleichung zu erzeugen: Z = gK mod P. Die Pseudocode-Struktur wird, wie in den folgenden Pseudocode-Schritten gezeigt, durch Zuweisung der entsprechenden Felder befüllt:
    p->difficulty = difficulty;
    p->cookieLength = cookieLength;
    p->answer = Z;
    p->encryptedCookie = the middle part of K.
  • In Übereinstimmung mit einem Ausführungsbeispiel kann ein Rätsel durch Aufruf einer mit solvePuzzle bzw. Rätsellösen bezeichneten Softwareroutine gelöst werden. Die Funktion zur Lösung des Rätsels muss wiederholt aufgerufen werden, um das Rätsel tatsächlich zu lösen. Jeder Aufruf führt eine versuchsweise Exponentiation aus. Das aufrufende Programm hat vorteilshafterweise die Verantwortung für Funktionen wie, z.B., Erzeugen von Threads (Aktivitätsträgern) im Hintergrund, periodisches Speichern von Zwischenzuständen, usw., so wie es von Fachleuten verstanden würde. Die folgende Pseudocode-Struktur definiert vollständig den Stand des Suchprozesses, und ist diejenige Information, die gespeichert und für das Weiterführen wiederhergestellt werden muss:
  • Figure 00170001
  • Die Routine solvePuzzle sollte einen Wert von Eins zurückgeben, wenn die Rountine solvePuzzle die Lösung zu dem Rätsel gefunden hat, in welchem Fall das encryptedCookie Feld der puzzlestate (Status des Rätsels) Struktur ein gültiges verschlüsseltes Cookie enthalten wird. Während die Suche andauert, soll die Routine solvePuzzle einen Wert von Null zurückgeben. In dem „unmöglichen" Fall, in dem die Routine solvePuzzle das gültige verschlüsselte Cookie nicht gefunden hat, bevor sie den gesamten Bereich durchsucht hat, soll die Routine solvePuzzle den Wert einer negativen Eins zurückgeben. Solch ein Ergebnis könnte nur in dem Fall, in dem die Übermittlung des Rätsels gestört wird oder in dem ein Fehler in dem Programm auf der Seite des Anwenders oder auf der Seite des Providers auftritt, auftreten.
  • Es sollte aufgezeigt werden, dass der Anwender, vor dem ersten Aufruf von solvePuzzle, das Rätsel, welches er vom Provider erhalten hat, in die oben gezeigte Struktur puzzlestate kopieren sollte. Ebenfalls vor dem ersten Aufruf von solvePuzzle sollte der Anwender das Feld upto auf null setzen.
  • Es sollte außerdem bemerkt werden, und würde von Fachleuten verstanden, dass verschiedene alternative Verfahren verwendet werden könnten, um das Rätsel zu lösen und die Korrektheit des Cookies zu verifizieren. Ein solches Verfahren ist die Verwendung von ,keyed message authentication codes' (verschlüsselten Codes zur Authentifizierung von Nachrichten).
  • Es ist wichtig, dass das Verfahren zur Lösung des Rätsels effizient ist. Obwohl das Ziel ist, Rechnerzeit zu verbrauchen, ist es wichtig, dass der Zeitverbrauch unvermeidbar und nicht Gegenstand von simpler Optimierung sein soll. Aus diesem Grund muss der erste Aufruf von solvePuzzle ein Zwischenergebnis berechnen und das Ergebnis speichern, um nachfolgende Berechnung zu vermeiden (was sicherlich das ist, was jemand, der das System kna cken wollte, tun würde). Da g(x+y) == gxgy ist es möglich, den Ratewert in feste und variable Teile aufzubrechen und die Exponentiation nur für den kleineren, variablen Teil zu berechnen. Tatsächlich ist es, durch Teilung (Multiplikation mit dem Kehrwert) der Antwort durch den festen Teil nur notwendig, den 160 Bit langen variablen Teil zum Exponenten zu erheben und dann zu vergleichen, um zu prüfen, ob das Problem gelöst ist.
  • In Übereinstimmung mit diesem speziellen Ausführungsbeispiel kann das Rätsel durch Ausführung der folgenden Schritte gelöst werden: Erstens, wenn das upto bzw. ,bis zu' Feld null ist, wird das intermediate bzw. Zwischenwert Feld initialisiert. Die Initialisierungsprozedur wird ausgeführt durch Teilung des encryptedCookie Feldes in linke und rechte Teile (L und R), so dass R zehn Oktetts lang ist, und dann durch Berechnung des multiplikativen Kehrwertes von (L·2160) und Multiplikation mit dem answer bzw. Antwort Feld, um den resultierenden Wert für das intermediate Feld zu erhalten. Zweitens wird eine Hash-Funktion über die L und upto Felder ausgeführt und ein 160 Bit langes Ergebnis wird aus R und den zehn ganz rechts liegenden Oktetts des Hash-Wertes geformt. Drittens wird das 160 Bit Ergebnis zum Exponenten erhoben, um das Ergebnis einer Exponentiation zu erhalten. Viertens wird das Ergebnis der Exponentiation mit dem Wert im intermediate Feld verglichen. Wenn die verglichenen Werte unterschiedlich sind, wird das upto Feld inkrementiert und ein Wert von Null wird zurückgegeben. (Oder, wenn der Wert des upto Feldes größer oder gleich 2difficulty ist (d.h. wenn etwas schiefgelaufen ist), wird der Wert einer negativen Eins zurückgegeben.) Fünftens, andernfalls (d.h., wenn die im vierten Schritt verglichenen Werte die gleichen sind) werden die achtzig ganz links gelegenen Bits des Hash-Wertes von L und upto durch eine XOR Operation in die ganz rechts gelegenen Bits des encryptedCookie Feldes (welches jetzt korrekt ist) eingebracht, und ein Wert von Eins, der den Erfolg indiziert, wird zurückgegeben.
  • Folglich wurde ein neues und verbessertes Verfahren zur Authentifizierung von anonymen Anwendern beschrieben, in welchem das Potential des Betruges durch „Mittelsmänner" verringert wird. Fachleute würden verstehen, dass die vielfachen erläuternden logischen Blöcke, Module, Schaltungen und Schritte von Algorithmen, die in Verbindung mit den hierin offenbarten Ausfüh rungsbeispielen beschrieben wurden, als elektronische Hardware, Computersoftware oder einer Kombination aus beidem implementiert werden können. Die vielfachen erläuternden Komponenten, Blöcke, Module, Schaltungen und Schritte wurden allgemein bezüglich ihrer Funktionalität beschrieben. Ob die Funktionalität als Hardware oder Software implementiert ist, hängt von der speziellen Anwendung und den konzeptionellen Einschränkungen ab, die dem Gesamtsystem auferlegt sind. Fachleute verstehen die Austauschbarkeit von Hardware und Software unter diesen Bedingungen, und verstehen wie die beschriebenen Funktionalitäten für jede einzelne Anwendung am besten zu implementieren sind. Als Beispiele können die vielfachen erläuternden logischen Blöcke, Module, Schaltungen und Schritte von Algorithmen, die in Verbindung mit den hierin offenbarten Ausführungsbeispielen beschrieben wurden, implementiert werden mit oder ausgeführt werden mit: einem digitalen Signalprozessor (digital signal processor, DSP), einer anwendungsspezifischen integrierten Schaltung (application specific integrated circuit, ASIC), diskreter Gatter- oder Transitorlogik, diskreten Hardwarekomponenten wie, z.B., Registern und FIFO-Speichern, einem Prozessor, der ein Set von Firmware-Befehlen ausführt, jedem herkömmlichen programmierbaren Softwaremodul und einen Prozessor oder jeder Kombination hiervon. Der Prozessor kann vorteilshafterweise ein Microprozessor sein, aber alternativ kann der Prozessor jeder herkömmliche Prozessor, Controller, Microcontroller oder Zustandsautomat sein. Das Softwaremodul könnte sich im RAM-Speicher, Flash-Speicher, ROM-Speicher, in Registern, auf Festplatte, einer Wechselplatte, einer CD-ROM oder jeder anderen Form von, im Fachgebiet bekannten, Speichermedien befinden. Fachleute würden desweiteren einsehen, dass die Daten, Befehle, Kommandos, Informationen, Signale, Bits, Symbole und Chips, auf die ggf. in der obigen Beschreibung Bezug genommen wurde, vorteilshafterweise durch Spannungen, Ströme, elektromagnetische Wellen, magnetische Felder oder Partikel, optische Felder oder Partikel oder jeder Kombination hiervon dargestellt werden.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung wurden somit aufgezeigt und beschrieben. Es wäre jedoch für einen Fachmann einsichtig, dass vielfache Veränderungen an den hierin offenbarten Ausführungsbeispie len gemacht werden könnten, ohne von dem Umfang der Erfindung, wie in den folgenden Ansprüchen definiert, abzuweichen.

Claims (12)

  1. Ein Verfahren für eine Rechenvorrichtung, verwendet durch einen Softwareprovider, wobei die Software elektronisch durch einen Vertreter vertrieben wird, und zwar zum Authentisieren bzw. Authentifizieren von Rechenvorrichtungen, die von Benutzern der Software verwendet werden, wobei das Verfahren folgende Schritte aufweist: Konstruieren eines Rätsels bei der Rechenvorrichtung, die von dem Provider verwendet wird ansprechend auf Informationen, die von einer Rechenvorrichtung verwendet von einem Benutzer empfangen wird, wobei das Rätsel die Informationen enthält; Senden des Rätsels an den Benutzer; Empfangen an der Rechenvorrichtung, die von dem Provider verwendet wird, eine Antwort zu dem Rätsel und eine Anfrage nach der Software; und Authentifizieren der Anfrage nach der Software als von der Rechenvorrichtung verwendet durch einen Benutzer abstammend, wenn die Antwort auf das Rätsel verifiziert wird, dadurch gekennzeichnet, dass das Rätsel mit einem Schwierigkeitseingabeparameter konstruiert ist, der eine erwartete Anzahl von Versuchskandidaten bestimmt, die benötigt werden, um das Rätsel zu lösen.
  2. Verfahren nach Anspruch 1, wobei die Information eine demografische Information über den Benutzer aufweist.
  3. Verfahren nach Anspruch 1, wobei die Information eine Identität des Benutzers aufweist.
  4. Verfahren nach Anspruch 1, wobei der Schritt des Konstruierens folgende Schritte aufweist: Herleiten eines Werts von der Information, um einen hergeleiteten Wert zu erzeugen, Potenzieren des hergeleiteten Wertes, um einen potenzierten Wert zu erzeugen und Kombi nieren des potenzierten Wertes mit einem Teil des hergeleiteten Wertes.
  5. Verfahren nach Anspruch 4, das weiterhin folgende Schritte aufweist: Speichern der Informationen und einer Zufallszahl, Ausführen einer Hash-Funktion auf die Information und die Zufallszahl, um ein erstes Hash-Ergebnis zu generieren und Verschlüsseln des ersten Hash-Ergebnisses, wobei der Herleitungsschritt folgende Schritte aufweist: Partitionieren des verschlüsselten Hash-Ergebnisses in erste und zweite Komponenten, Ausführen einer Hash-Funktion auf eine Verknüpfung der ersten Komponente und der Zufallszahl, um ein zweites Hash-Ergebnis zu erzeugen, Hinzufügen einer Vielzahl von Null-Werten an die zweite Komponente, um eine verlängerte zweite Komponente zu erzeugen, Ausführen einer Exklusiv-Oder-Operation zwischen der verlängerten zweiten Komponente und dem zweiten Hash-Ergebnis, um ein Exklusiv-Oder-Ergebnis zu generieren, und Verknüpfen bzw. Verketten der ersten Komponente und des Exklusiv-Oder-Ergebnisses, um den hergeleiteten Wert zu erzeugen.
  6. Verfahren nach Anspruch 4, wobei der Potenzierung-Schritt folgende Schritte aufweist: Potenzieren eines Generators bzw. Erhöhen eines Generators zu einer Potenz, wobei der hergeleitete Wert der Exponent ist, Teilen des Generators potenziert mit dem hergeleiteten Wert als Exponenten durch eine Primzahl, und Erlangen des Rests der Teilungsoperation.
  7. Eine Vorrichtung zum Ermöglichen, dass eine Rechenvorrichtung, die von einem Provider einer durch einen Vertreter elektronisch authentisiert bzw. vertriebenen Software verwendet wird, Rechenvorrichtungen authentifiziert, die von Benutzern der Software verwendet werden, wobei die Vorrichtung Folgendes aufweist: Mittel zum Konstruieren eines Rätsel bei der Rechenvorrichtung, die von dem Provider verwendet wird, ansprechen auf Informationen, Empfangen von einem Rechengerät, verwendet von einem Benutzer, wobei das Rätsel die Informationen enthält; Mittel zum Senden des Rätsels an die Rechenvorrichtung, die von einem Benutzer verwendet wird; und Mittel zum Empfangen bei der Rechenvorrichtung, die von dem Provider verwendet wird, um ein Rätsel zu beantworten und eine Anfrage nach der Software und zum Authentifizieren der Anfrage nach der Software als der von dem Benutzer verwendeten Rechenvorrichtung abstammend, wenn die Antwort zu dem Rätsel verifiziert wird, dadurch gekennzeichnet, dass die Mittel zum Konstruieren des Rätsels konfiguriert sind, zum Konstruieren des Rätsels mit einem Schwierigkeitseingabeparameter, der eine erwartete Anzahl von Lösungsversuchen bestimmt, die benötigt wird, um das Rätsel zu lösen.
  8. Vorrichtung gemäß Anspruch 7, wobei die Information demografische Informationen über den Benutzer aufweist.
  9. Vorrichtung nach Anspruch 7, wobei die Information eine Identität des Benutzers aufweist.
  10. Vorrichtung nach Anspruch 7, wobei die Mittel zum Konstruieren eines Rätsels Folgendes aufweisen: Mittel zum Herleiten eines Wertes von der Information, um einen hergeleiteten Wert zu erzeugen, Mittel zum Potenzieren des hergeleiteten Wertes, um einen potenzierten Wert zu erzeugen, und Mittel zum Kombinieren des potenzierten Wertes mit einem Teil des hergeleiteten Wertes.
  11. Vorrichtung nach Anspruch 10, die weiterhin Folgendes aufweist: Mittel zum Speichern der Information und einer Zufallszahl, Mittel zum Ausführen einer Hash-Funktion auf die Information und die Zufallszahl, um ein erstes Hash-Ergebnis zu generieren, und Mittel zum Verschlüsseln des ersten Hash-Ergebnisses, wobei die Mittel zum Herleiten Mittel aufweisen zum Partitionieren des verschlüsselten Hash-Ergebnisses in erste und zweite Komponenten, zum Ausführen einer Hash-Funktion auf eine Verkettung der ersten Komponente und der zweiten Zufallszahl, um ein zweites Hash-Ergebnis zu generieren, zum Hinzufügen einer Vielzahl von Null-Werten an die zweite Komponente, um eine verlängerte zweite Komponente zu erzeugen, zum Ausführen einer Exklusiv-Oder-Operation zwischen der verlängerten zweiten Komponente und dem zweiten Hash-Ergebnis, um ein Exklusiv-Oder-Ergebnis zu generieren, und zum Verknüpfen der ersten Komponente und dem zweiten Exklusiv-Oder-Ergebnis, um den hergeleiteten Wert zu erzeugen.
  12. Vorrichtung nach Anspruch 10, wobei die Mittel zum Potenzieren Mittel aufweisen zum Potenzieren eines Generators zu bzw. mit einer Potenz, wobei die Potenz der hergeleitete Wert ist, Mittel zum Teilen des Generators potenziert mit der Potenz des hergeleiteten Werts, um eine Primzahl, und Mittel zum Erlangen des Rests der Teilungsoperation.
DE60031304T 1999-12-21 2000-12-21 Verfahren zur authentifizierung von softwarebenutzern Expired - Lifetime DE60031304T3 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US468557 1999-12-21
US09/468,557 US6944765B1 (en) 1999-12-21 1999-12-21 Method of authentication anonymous users while reducing potential for “middleman” fraud
PCT/US2000/034981 WO2001046787A2 (en) 1999-12-21 2000-12-21 Method of authenticating users of software

Publications (3)

Publication Number Publication Date
DE60031304D1 DE60031304D1 (de) 2006-11-23
DE60031304T2 true DE60031304T2 (de) 2007-05-24
DE60031304T3 DE60031304T3 (de) 2010-07-01

Family

ID=23860287

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60031304T Expired - Lifetime DE60031304T3 (de) 1999-12-21 2000-12-21 Verfahren zur authentifizierung von softwarebenutzern

Country Status (12)

Country Link
US (1) US6944765B1 (de)
EP (1) EP1261903B2 (de)
JP (1) JP4782343B2 (de)
KR (1) KR100833828B1 (de)
CN (1) CN1413320B (de)
AT (1) ATE342539T1 (de)
AU (1) AU2592201A (de)
BR (1) BRPI0016507B1 (de)
DE (1) DE60031304T3 (de)
HK (1) HK1052570A1 (de)
TW (1) TW498233B (de)
WO (1) WO2001046787A2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143163B1 (en) * 2000-07-26 2006-11-28 Lucent Technologies Inc. System and method for exacting a system resource access cost
US7356696B1 (en) * 2000-08-01 2008-04-08 Lucent Technologies Inc. Proofs of work and bread pudding protocols
GB2375970B (en) * 2001-05-31 2005-11-23 Nokia Corp Electronic gaming
JP3668175B2 (ja) * 2001-10-24 2005-07-06 株式会社東芝 個人認証方法、個人認証装置および個人認証システム
US7603452B1 (en) 2002-03-26 2009-10-13 Symantec Corporation Networked computer environment assurance system and method
US20030233584A1 (en) * 2002-06-14 2003-12-18 Microsoft Corporation Method and system using combinable computational puzzles as challenges to network entities for identity check
AU2003293381A1 (en) * 2002-12-03 2004-06-23 Funk Software, Inc. Tunneled authentication protocol for preventing man-in-the-middle attacks
US7606915B1 (en) * 2003-02-25 2009-10-20 Microsoft Corporation Prevention of unauthorized scripts
US8892673B1 (en) * 2003-08-08 2014-11-18 Radix Holdings, Llc Hybrid challenge-response
US7694335B1 (en) * 2004-03-09 2010-04-06 Cisco Technology, Inc. Server preventing attacks by generating a challenge having a computational request and a secure cookie for processing by a client
US7549718B2 (en) * 2004-05-27 2009-06-23 Silverbrook Research Pty Ltd Printhead module having operation controllable on basis of thermal sensors
US7757086B2 (en) * 2004-05-27 2010-07-13 Silverbrook Research Pty Ltd Key transportation
US7427117B2 (en) * 2004-05-27 2008-09-23 Silverbrook Research Pty Ltd Method of expelling ink from nozzles in groups, alternately, starting at outside nozzles of each group
US7848501B2 (en) * 2005-01-25 2010-12-07 Microsoft Corporation Storage abuse prevention
KR100786796B1 (ko) * 2005-03-25 2007-12-18 주식회사 다음커뮤니케이션 인터넷 광고 과금 방법 및 시스템
US7730532B1 (en) * 2005-06-13 2010-06-01 Symantec Corporation Automatic tracking cookie detection
KR20060028463A (ko) * 2006-03-09 2006-03-29 정성욱 온라인 광고 시스템에서의 이용자 부정 클릭 추적과 방지시스템 및 그 방법
KR20080026856A (ko) * 2006-09-21 2008-03-26 삼성전자주식회사 휴대 단말기의 메시지 송수신 방법
US8683549B2 (en) * 2007-03-23 2014-03-25 Microsoft Corporation Secure data storage and retrieval incorporating human participation
US8793497B2 (en) * 2008-05-09 2014-07-29 Qualcomm Incorporated Puzzle-based authentication between a token and verifiers
US8892881B2 (en) * 2009-03-03 2014-11-18 The Governing Council Of The University Of Toronto Split key secure access system
US9306905B2 (en) * 2011-12-20 2016-04-05 Tata Consultancy Services Ltd. Secure access to application servers using out-of-band communication
EP2736213B1 (de) * 2012-11-21 2015-10-21 Mitsubishi Electric R&D Centre Europe B.V. Verfahren und System zur Authentifizierung von mindestens eines Endgeräts, das Zugriff zu mindestens einer Ressource anfordert
US9265458B2 (en) 2012-12-04 2016-02-23 Sync-Think, Inc. Application of smooth pursuit cognitive testing paradigms to clinical drug development
US9380976B2 (en) 2013-03-11 2016-07-05 Sync-Think, Inc. Optical neuroinformatics
CN107835077B (zh) * 2017-09-22 2020-10-02 中国人民解放军国防科技大学 一种面向车载网匿名认证的互信簇协同验证方法
EP3716570B1 (de) * 2019-03-29 2022-07-27 Mitsubishi Electric R&D Centre Europe B.V. Rechenrätsel gegen dos-angriffe
RU2722925C1 (ru) * 2019-10-09 2020-06-04 Общество с ограниченной ответственностью "Доверенные Решения" (ООО "Доверенные Решения") Способ защищенного информационного обмена данными

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4964163A (en) * 1988-04-04 1990-10-16 Motorola, Inc. Method and apparatus for controlling access to a communication system
US5241599A (en) * 1991-10-02 1993-08-31 At&T Bell Laboratories Cryptographic protocol for secure communications
US5311596A (en) * 1992-08-31 1994-05-10 At&T Bell Laboratories Continuous authentication using an in-band or out-of-band side channel
TW237588B (de) * 1993-06-07 1995-01-01 Microsoft Corp
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5757907A (en) * 1994-04-25 1998-05-26 International Business Machines Corporation Method and apparatus for enabling trial period use of software products: method and apparatus for generating a machine-dependent identification
US5724425A (en) * 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
JP3497936B2 (ja) * 1995-01-20 2004-02-16 松下電器産業株式会社 個人認証方法
US5790667A (en) * 1995-01-20 1998-08-04 Matsushita Electric Industrial Co., Ltd. Personal authentication method
US5768382A (en) * 1995-11-22 1998-06-16 Walker Asset Management Limited Partnership Remote-auditing of computer generated outcomes and authenticated biling and access control system using cryptographic and other protocols
US5970143A (en) * 1995-11-22 1999-10-19 Walker Asset Management Lp Remote-auditing of computer generated outcomes, authenticated billing and access control, and software metering system using cryptographic and other protocols
US6073236A (en) * 1996-06-28 2000-06-06 Sony Corporation Authentication method, communication method, and information processing apparatus
US6148083A (en) * 1996-08-23 2000-11-14 Hewlett-Packard Company Application certification for an international cryptography framework
US5841870A (en) * 1996-11-12 1998-11-24 Cheyenne Property Trust Dynamic classes of service for an international cryptography framework
US5796952A (en) * 1997-03-21 1998-08-18 Dot Com Development, Inc. Method and apparatus for tracking client interaction with a network resource and creating client profiles and resource database
DE69724947T2 (de) * 1997-07-31 2004-05-19 Siemens Ag Rechnersystem und Verfahren zur Sicherung einer Datei
US6151676A (en) * 1997-12-24 2000-11-21 Philips Electronics North America Corporation Administration and utilization of secret fresh random numbers in a networked environment
US6141010A (en) * 1998-07-17 2000-10-31 B. E. Technology, Llc Computer interface method and apparatus with targeted advertising
JP4651212B2 (ja) * 2001-03-22 2011-03-16 大日本印刷株式会社 携帯可能情報記憶媒体およびその認証方法
US8055910B2 (en) * 2003-07-07 2011-11-08 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content

Also Published As

Publication number Publication date
DE60031304D1 (de) 2006-11-23
BR0016507A (pt) 2002-12-24
AU2592201A (en) 2001-07-03
KR100833828B1 (ko) 2008-06-02
JP4782343B2 (ja) 2011-09-28
EP1261903A2 (de) 2002-12-04
EP1261903B2 (de) 2009-10-07
BRPI0016507B1 (pt) 2016-02-10
HK1052570A1 (zh) 2003-09-19
WO2001046787A3 (en) 2002-09-26
TW498233B (en) 2002-08-11
ATE342539T1 (de) 2006-11-15
WO2001046787A2 (en) 2001-06-28
DE60031304T3 (de) 2010-07-01
CN1413320B (zh) 2010-05-12
JP2003520467A (ja) 2003-07-02
EP1261903B1 (de) 2006-10-11
CN1413320A (zh) 2003-04-23
KR20020091059A (ko) 2002-12-05
US6944765B1 (en) 2005-09-13

Similar Documents

Publication Publication Date Title
DE60031304T2 (de) Verfahren zur authentifizierung von softwarebenutzern
DE19804054B4 (de) System zur Verifizierung von Datenkarten
DE69935913T2 (de) Leckresistente aktualisierung eines indexierten kryptographischen schlüssels
DE112011100182B4 (de) Datensicherheitsvorrichtung, Rechenprogramm, Endgerät und System für Transaktionsprüfung
DE102012206341B4 (de) Gemeinsame Verschlüsselung von Daten
DE69825479T2 (de) Verfahren zum Betrieb eines Datenkommunikationssystems, Datenkommunikationssystem und Kundenendgerät
DE69724235T2 (de) Computersystem und Verfahren zum Schutz von Software
DE60036112T2 (de) Serverunterstützte wiedergewinnung eines starken geheimnisses aus einem schwachen geheimnis
DE69830902T2 (de) Zweiweg-authentifizierung-protokoll
DE69633590T2 (de) Verfahren zur Unterschrift und zur Sitzungsschlüsselerzeugung
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE102009001718B4 (de) Verfahren zur Bereitstellung von kryptografischen Schlüsselpaaren
DE69630331T2 (de) Verfahren zur gesicherten Sitzungsschlüsselerzeugung und zur Authentifizierung
DE60302276T2 (de) Verfahren zur ferngesteuerten Änderung eines Kommunikationspasswortes
DE60124011T2 (de) Verfahren und system zur autorisierung der erzeugung asymmetrischer kryptoschlüssel
EP2340502B1 (de) Datenverarbeitungssystem zur bereitstellung von berechtigungsschlüsseln
DE60026868T2 (de) Ein einfaches implementierungsverfahren für kryptographische primitiva mittels elementar-register-operationen
DE112018000779T5 (de) Tokenbereitstellung für Daten
DE102008061483A1 (de) Verfahren und Vorrichtung zum Verarbeiten von Daten
DE69838258T2 (de) Public-Key-Datenübertragungssysteme
CH711133B1 (de) Protokoll zur Signaturerzeugung
DE60109805T2 (de) Verfahren und system zur benützung eines ungesicherten krypto-beschleunigers
DE10143728A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation
EP3899844A1 (de) Verfahren zum erzeugen einer blinden signatur
DE60202149T2 (de) Verfahren zur kryptographischen authentifizierung

Legal Events

Date Code Title Description
8363 Opposition against the patent
8366 Restricted maintained after opposition proceedings
8332 No legal effect for de