Secure key exchange with mutual authentication
59 claims: 59 independent, 0 dependent
- 1A method, implemented in a client device (102, 402(1)-402(n), 502, 601) establishing a key to be used in subsequent secure communications between the client device and a server device (106, 404, 502), the method comprising:generating (202) a key exchange initiator message;computing (204) a digest of the key exchange initiator message;generating (206), based at least in part on the digest, an authenticator;encrypting (208) the authenticator;generating (210) a key exchange initiator packet that includes the key exchange initiator message, the encrypted authenticator, and a security ticket;sending (212) the key exchange initiator packet to the server device;receiving (352), from the server device, a key exchange response packet;decrypting (354) a reply message included in the key exchange response packet;checking (356) whether a timestamp in the reply message is the same as a timestamp previously sent by the client device to the server device;computing (360) a digest value of a key exchange response message included in the key exchange response packet;anddetermining (356, 362) that the key exchange response packet is valid only if the timestamp in the reply message is the same as the timestamp previously sent by the client device to the server device, and if the computed digest value of the key exchange response packet is the same as a digest value included in the key exchange response packet. Procédé, mis en oeuvre dans un dispositif client (102, 402(1)-402(n), 502, 601) permettant d'établir une clé destinée à être utilisée dans des communications sécurisées ultérieures entre le dispositif client et un dispositif serveur (106, 404, 502), le procédé comprenant les étapes consistant à : générer (202) un message initiateur d'échange de clé ;calculer (204) un résumé du message initiateur d'échange de clé ;générer (206), en se basant au moins en partie sur le résumé, un élément d'authentification ;coder (208) l'élément d'authentification ;générer (210) un paquet initiateur d'échange de clé qui inclut le message initiateur d'échange de clé, l'élément d'authentification codé et un ticket de sécurité ;émettre (212) le paquet initiateur d'échange de clé à destination du dispositif serveur ;recevoir (352), du dispositif serveur, un paquet de réponse d'échange de clé ;décoder (354) un message de réponse inclus dans le paquet de réponse d'échange de clé ;vérifier (356) si un horodatage contenu dans le message de réponse est identique à un horodatage précédemment envoyé par le dispositif client au dispositif serveur ;calculer (360) une valeur de résumé d'un message de réponse d'échange de clé inclus dans le paquet de réponse d'échange de clé ;déterminer (356, 362) que le paquet de réponse d'échange de clé n'est valide que si l'horodatage contenu dans le message de réponse est identique à l'horodatage précédemment émis par le dispositif client vers le dispositif serveur, et si la valeur de résumé calculée du paquet de réponse d'échange de clé est identique à une valeur de résumé incluse dans le paquet de réponse d'échange de clé. Verfahren, das in einem Clientgerät (102, 402(1)-402(n), 502, 601) implementiert ist, welches einen in nachfolgenden sicheren Kommunikationen zwischen dem Clientgerät und einem Servergerät (106, 404, 502) zu benutzenden Schlüssel etabliert, wobei das Verfahren folgende Schritte umfasst: Generieren (202) einer Schlüsselaustauschinitiatornachricht;Berechnen (204) eines Auszugs (digest) der Schlüsselaustauschinitiatornachricht;Generieren (206) eines Authentifikators zumindest teilweise auf Basis des Auszugs;Verschlüsseln (208) des Authentifikators;Generieren (210) eines Schlüsselaustauschinitiatorpakets, das die Schlüsselaustauschinitiatornachricht, den verschlüsselten Authentifikator und ein Sicherheitsticket enthält;Senden (212) des Schlüsselaustauschinitiatorpakets an das Servergerät;Empfangen (352) eines Schlüsselaustauschantwortpakets von dem Servergerät;Entschlüsseln (354) einer in dem Schlüsselaustauschantwortpaket enthaltenen Antwortnachricht;Überprüfen (356), ob eine Zeitmarke in der Antwortnachricht die gleiche wie eine zuvor durch das Clientgerät an das Servergerät gesandte Zeitmarke ist;Berechnen (360) eines Auszugwertes (digest value) einer in dem Schlüsselaustauschantwortpaket enthaltenen Schlüsselaustauschantwortnachricht;undFeststellen (356, 362), dass das Schlüsselaustauschantwortpaket gültig ist, nur dann, wenn die Zeitmarke in der Antwortnachricht die gleiche wie die zuvor durch das Clientgerät an das Servergerät gesandte Zeitmarke ist und wenn der berechnete Auszugswert des Schlüsselaustauschantwortpakets der gleiche wie ein in dem Schlüsselaustauschantwortpaket enthaltener Auszugswert ist.
- 2Procédé selon la revendication 1, dans lequel l'étape consistant à générer le message initiateur d'échange de clé comprend les étapes consistant à :générer une première valeur NonceInit ;générer une seconde valeur X ;utiliser la seconde valeur X pour générer une valeur Diffie-Hellman gx mod N ;etinclure, dans le message initiateur d'échange de clé, la première valeur NonceInit et la valeur Diffie-Hellman gx mod N. The method as recited in claim 1, wherein generating the key exchange initiator message comprises: generating a first value Noncelnit;generating a second value X;using the second value X to generate a Diffie-Hellman value gX mod N;andincluding, in the key exchange initiator message, the first value Noncelnit and the Diffie-Hellman value gX mod N. Verfahren nach Anspruch 1, wob die Generierung der Schlüsselaustauschinitiatornachricht umfasst: Generieren eines ersten Wertes Noncelnit;Generieren eines zweiten Wertes X;Verwenden des zweiten Wertes X, um einen Diffie-Hellman-Wert gX mod N zu generieren;undEinfügen des ersten Wertes NonceInit und des Diffie-Hellman-Wertes gX mod N in die Schlüsselaustauschinitiatornachricht.
- 3Procédé selon la revendication 1 ou 2, dans lequel le calcul du résumé du message initiateur d'échange de clé comprend l'étape consistant à :utiliser une clé de session Kerberos KCA, précédemment reçue d'un centre de distribution de clés (104,502) et une fonction de hachage destinée à calculer le résumé. The method as recited in claim 1 or 2, wherein computing the digest of the key exchange initiator message comprises: using a Kerberos session key KCA, previously received from a key distribution center (104, 502), and a hashing function to compute the digest. Verfahren nach Anspruch 1 oder 2, wobei die Berechnung des Auszugs der Schlüsselaustauschinitiatornachricht umfasst: Verwenden eines Kerberos-Sitzungsschlüssels KCA, welcher zuvor von einem Schlüsselverteilungscenter (104, 502) empfangen wurde, und einer Hash-Funktion, um den Auszug zu berechnen.
- 4Procédé selon l'une des revendications 1 à 3, dans lequel l'étape consistant à générer l'élément d'authentification comprend l'étape consistant à :générer un horodatage présent ;etinclure, dans l'élément d'authentification, l'horodatage présent et le résumé du message initiateur d'échange de clé. The method as recited in one of claims 1 to 3, wherein generating the authenticator comprises: generating a current timestamp;andincluding, in the authenticator, the current timestamp and the digest of the key exchange initiator message. Verfahren nach einem der Ansprüche 1 bis 3, wobei die Generierung des Authentifikators umfasst: Generieren einer aktuellen Zeitmarke;undEinfügen der aktuellen Zeitmarke und des Auszugs der Schlüsselaustauschinitiatornachricht in den Authentifikator.
- 5Procédé selon l'une des revendications 1 à 4, dans lequel l'étape consistant à coder l'élément d'authentification comprend l'étape consistant à coder l'élément d'authentification en se basant au moins en partie sur une clé de session Kerberos KCA, précédemment reçue d'un centre de distribution de clés (104, 502). The method as recited in one of claims 1 to 4, wherein encrypting the authenticator comprises encrypting the authenticator based at least in part on a Kerberos session key KCA, previously received from a key distribution center (104, 502). Verfahren nach einem der Ansprüche 1 bis 4, wobei die Verschlüsselung des Authentifikators ein Verschlüsseln des Authentifikators zumindest teilweise auf Basis eines zuvor von einem Schlüsselverteilungscenter (104, 502) empfangenen Kerberos-Sitzungsschlüssels KCA umfasst.
- 6Procédé selon l'une des revendications 1 à 5, dans lequel l'étape consistant à générer le paquet initiateur d'échange de clé comprend, dans le paquet initiateur d'échange de clé, les éléments suivants :le message initiateur d'échange de clé ;une valeur prédéterminée d'index de paramètres de sécurité pour indiquer que l'établissement d'une nouvelle association de sécurité est en cours de déclenchement ;l'élément d'authentification codé ;etle ticket de sécurité. The method as recited in one of claims 1 to 5, wherein generating the key exchange initiator packet comprises including, in the key exchange initiator packet, the following: the key exchange initiator message;a predetermined Security Parameters Index value to indicate that establishment of a new security association is being initiated;the encrypted authenticator;andthe security ticket. Verfahren nach einem der Ansprüche 1 bis 5, wobei die Generierung des Schlüsselaustauschinitiatorpakets ein Einfügen folgender Elemente in das Schlüsselaustauschinitiatorpaket umfasst: der Schlüsselaustauschinitiatornachricht;eines vorbestimmten Sicherheitsparameter-Index-Wertes, um anzugeben, dass eine Etablierung einer neuen Sicherheitsassoziation initiiert wird;des verschlüsselten Authentifikators;unddes Sicherheitstickets.
- 7Procédé selon l'une des revendications 1 à 6, dans lequel le ticket de sécurité comprend un ticket Kerberos. The method as recited in one of claims 1 to 6, wherein the security ticket comprises a Kerberos ticket. Verfahren nach einem der Ansprüche 1 bis 6, wobei das Sicherheitsticket ein Kerberos-Ticket umfasst.
- 8Procédé selon l'une des revendications 1 à 7, consistant en outre à établir une clé mutuelle destinée à être utilisée dans lesdites communications avec le dispositif serveur, dans lequel l'étape consistant à émettre le paquet initiateur d'échange de clé vers le dispositif serveur comprend l'étape consistant à émettre le paquet initiateur d'échange de clé vers le dispositif serveur via un réseau (406, 550, 552), dans lequel le paquet initiateur d'échange de clé n'inclut pas la clé mutuelle ; dans lequel l'étape consistant à recevoir, du dispositif serveur, ledit paquet de réponse d'échange de clé comprend l'étape consistant à recevoir (352), du dispositif serveur via le réseau, un paquet de réponse d'échange de clé qui n'inclut pas la clé mutuelle ; et dans lequel le procédé comprend en outre les étapes consistant à :valider (354-362) le paquet de réponse d'échange de clé;etgénérer (162, 364) la clé mutuelle, en se basant au moins en partie sur des données présentes dans le paquet de réponse d'échange de clé, sans qu'il y ait nécessité d'émettre vers le dispositif serveur ou de recevoir depuis le dispositif serveur de paquets supplémentaires pour générer la clé mutuelle. The method as recited in one of claims 1 to 7, further being for establishing a mutual key for use in said communications with the server device, wherein sending the key exchange initiator packet to the server device comprises sending the key exchange initiator packet to the server device via a network (406, 550, 552), wherein the key exchange initiator packet does not include the mutual key;wherein receiving, from the server device, said key exchange response packet comprises receiving (352), from the server device via the network, a key exchange response packet that does not include the mutual key;and wherein the method further comprises: validating (354-362) the key exchange response packet;andgenerating (162, 364), based at least in part on data in the key exchange response packet, the mutual key without requiring any additional packets to be sent to the server device or received from the server device in order to generate the mutual key. Verfahren nach einem der Ansprüche 1 bis 7, das ferner der Etablierung eines wechselseitigen Schlüssels zur Benutzung in den Kommunikationen mit dem Servergerät dient, wobei das Senden des Schlüsselaustauschinitiatorpakets an das Servergerät ein Senden des Schlüsselaustauschinitiatorpakets an das Servergerät über ein Netzwerk (406, 550, 552) umfasst, wobei das Schlüsselaustauschinitiatorpaket den wechselseitigen Schlüssel nicht enthält;wobei das Empfangen des Schlüsselaustauantwortpakets von dem Servergerät ein Empfangen (352) eines Schlüsselaustauschantwortpakets, das den wechselseitigen Schlüssel nicht enthält, von dem Servergerät über das Netzwerk umfasst;und wobei das Verfahren ferner umfasst: Validieren (354-362) des Schlüsselaustauschantwortpakets;undGenerieren (162, 364) des wechselseitigen Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschantwortpaket, ohne das Erfordernis, dass zusätzliche Pakete an das Servergerät gesandt werden oder von dem Servergerät empfangen werden, um den wechselseitigen Schlüssel zu generieren.
- 9Procédé selon la revendication 8, dans lequel le paquet initiateur d'échange de clé permet au dispositif serveur qui émet le paquet de réponse d'échange de clé de générer (158, 302) la même clé mutuelle sans nécessité d'émission vers le dispositif serveur de paquets additionnels pour générer la clé. The method as recited in claim 8, wherein the key exchange initiator packet allows the server device that sends the key exchange response packet to generate (158, 302) the same mutual key without requiring any additional packets to be sent to the server device in order to generate the key. Verfahren nach Anspruch 8, wobei das Schlüsselaustauschinitiatorpaket dem Servergerät, das das Schlüsselaustauschantwortpaket sendet, erlaubt, den gleichen wechselseitigen Schlüssel zu generieren (158, 302), ohne dass es erforderlich ist, zusätzliche Pakete an das Servergerät zu senden, um den Schlüssel zu generieren.
- 10Procédé selon la revendication 8 ou 9, dans lequel l'étape consistant à générer le paquet initiateur d'échange de clé comprend les étapes consistant à :générer le message initiateur d'échange de clé ;calculer le résumé du message initiateur d'échange de clé ;générer, en se basant au moins en partie sur le résumé, l'élément d'authentification ;etcoder l'élément d'authentification. The method as recited in claim 8 or 9, wherein generating the key exchange initiator packet comprises: generating the key exchange initiator message;computing the digest of the key exchange initiator message;generating, based at least in part on the digest, the authenticator;andencrypting the authenticator. Verfahren nach Anspruch 8 oder 9, wobei die Generierung des Schlüsselaustauschinitiatorpakets umfasst: Generieren der Schlüsselaustauschinitiatornachricht;Berechnen des Auszugs der Schlüsselaustauschinitiatornachricht;Generieren des Authentifikators zumindest teilweise auf Basis des Auszugs;undVerschlüsseln des Authentifikators.
- 11Procédé selon l'une des revendications 8 à 10, dans lequel l'étape consistant à valider le paquet de réponse d'échange de clé comprend les étapes consistant à :recevoir, du dispositif serveur, le paquet de réponse d'échange de clé ;décoder le message de réponse inclus dans le paquet de réponse d'échange de clé ;vérifier si l'horodatage contenu dans le message de réponse est identique à l'horodatage précédemment envoyé au dispositif serveur ;calculer la valeur de résumé du message de réponse d'échange de clé inclus dans le paquet de réponse d'échange de clé ;déterminer que le paquet de réponse d'échange de clé n'est valide que si l'horodatage contenu dans le message de réponse est identique à l'horodatage précédemment émis vers le dispositif serveur, et si la valeur de résumé calculée du paquet de réponse d'échange de clé est identique à la valeur de résumé incluse dans le paquet de réponse d'échange de clé. The method as recited in one of claims 8 to 10, wherein validating the key exchange response packet comprises the steps of: receiving, from the server device, the key exchange response packet;decrypting the reply message included in the key exchange response packet;checking whether the timestamp in the reply message is the same as the timestamp previously sent to the server device;computing the digest value of the key exchange response message included in the key exchange response packet;anddetermining that the key exchange response packet is valid only if the timestamp in the reply message is the same as the timestamp previously sent to the device, and if the computed digest value of the key exchange response packet is the same as the digest value included in the key exchange response packet. Verfahren nach einem der Ansprüche 8 bis 10, wobei die Validierung des Schlüsselaustauschantwortpakets folgende Schritte umfasst: Empfangen des Schlüsselaustauschantwortpakets von dem Servergerät;Entschlüsseln der in dem Schlüsselaustauschantwortpaket enthaltenen Antwortnachricht;Überprüfen, ob die Zeitmarke in der Antwortnachricht die gleiche wie die zuvor an das Servergerät gesandte Zeitmarke ist;Berechnen des Auszugswertes der in dem Schlüsselaustauschantwortpaket enthaltenen Schlüsselaustauschantwortnachricht;undFeststellen, dass das Schlüsselaustauschantwortpaket gültig ist, nur dann, wenn die Zeitmarke in der Antwortnachricht die gleiche wie die zuvor an das Gerät gesandte Zeitmarke ist und wenn der berechnete Auszugswert des Schlüsselaustauschantwortpakets der gleiche wie der in dem Schlüsselaustauschantwortpaket enthaltene Auszugswert ist.
- 12Procédé selon l'une des revendications 8 à 11, dans lequel l'étape consistant à générer la clé comprend les étapes consistant à :extraire, du paquet de réponse d'échange de clé, une valeur Diffie-Hellman gY mod N ;obtenir une valeur X qui a été auparavant générée de manière aléatoire ;calculer une valeur Diffie-Hellman gXY mod N ;etgénérer la clé en se basant au moins en partie sur la valeur Diffie-Hellman gXY mod N. The method as recited in one of claims 8 to 11, wherein generating the key comprises: retrieving, from the key exchange response packet, a Diffie-Hellman value gY mod N;obtaining a value X that was randomly generated earlier;calculating a Diffie-Hellman value gXY mod N;andgenerating the key based at least in part on the Diffie-Hellman value gXY mod N. Verfahren nach einem der Ansprüche 8 bis 11, wobei die Generierung des Schlüssels umfasst: Wiedergewinnen (retrieving) eines Diffie-Hellman-Wertes gY mod N aus dem Schlüsselaustauschantwortpaket;Erhalten eines Wertes X, welcher früher zufällig generiert wurde;Berechnen eines Diffie-Hellman-Wertes gXY mod N;undGenerieren des Schlüssels zumindest teilweise auf Basis des Diffie-Hellman-Wertes gXY mod N.
- 13Procédé selon l'une des revendications 1 à 12, dans lequel l'étape consistant à décoder le message de réponse comprend l'étape consistant à décoder le message de réponse en utilisant une clé Kerberos préalablement obtenue par le dispositif client auprès d'un centre de distribution de clés (104, 502). The method as recited in one of claims 1 to 12, wherein decrypting the reply message comprises decrypting the reply message using a Kerberos session key previously obtained by the client device from a key distribution center (104, 502). Verfahren nach einem der Ansprüche 1 bis 12, wobei das Entschlüsseln der Antwortnachricht ein Entschlüsseln der Antwortnachricht unter Benutzung eines zuvor durch das Clientgerät von einem Schlüsselverteilungscenter (104, 502) erhaltenen Kerberos-Sitzungsschlüssels umfasst.
- 14Procédé selon l'une des revendications 1 à 13, comprenant en outre les étapes consistant à :extraire, du paquet de réponse d'échange de clé, une valeur Diffie-Hellman gY mod N ;en utilisant une valeur X précédemment générée, calculer une valeur Diffie-Hellman gXY mod N ;etgénérer la clé en se basant au moins en partie sur la valeur Diffie-Hellman gXY mod N. The method as recited in one of claims 1 to 13, further comprising: retrieving, from the key exchange response packet, a Diffie-Hellman value gY mod N;using a previously generated value X, calculating a Diffie-Hellman value gXY mod N;andgenerating the key based at least in part on the Diffie-Hellman value gXY mod N. Verfahren nach einem der Ansprüche 1 bis 13, ferner umfassend: Wiedergewinnen (retrieving) eines Diffie-Hellman-Wertes gY mod N aus dem Schlüsselaustauschantwortpaket;Berechnen eines Diffie-Hellman-Wertes gXY mod N unter Benutzung eines zuvor generierten Wertes X;undGenerieren des Schlüssels zumindest teilweise auf Basis des Diffie-Hellman-Wertes gXY mod N.
- 15A method, implemented in a server device (106, 404, 502) establishing a key to be used in subsequent secure communications between the server device and a client device (102, 402(1)-402(n), 502, 601), the method comprising:receiving (252), from the client device, a key exchange initiator packet;decrypting (254) a security ticket in the key exchange initiator packet;decrypting (260) an authenticator in the key exchange initiator packet;computing (264) a digest of a key exchange message in the key exchange initiator packet;determining (256, 262, 266, 268) that the key exchange initiator packet is valid only if all of the following conditions are satisfied: the security ticket is not stale,a timestamp in the authenticator is acceptable,the computed digest of the key exchange message is equal to a digest value included as part of the authenticator, andthe authenticator has not been replayed;generating (304) a key exchange response message;computing (306) a digest of the key exchange response message;generating (308) a reply message;encrypting (310) the reply message;generating (312) a key exchange response packet including both the key exchange response message and the encrypted reply message;andsending (314) the key exchange response packet to the client device. Procédé, mis en oeuvre dans un dispositif serveur (106, 404, 502), permettant d'établir une clé destinée à être utilisée dans des communications sécurisées ultérieures entre le dispositif serveur et un dispositif client (102, 402(1)-402(n), 502, 601), le procédé comprenant les étapes consistant à : recevoir (252), du dispositif client, un paquet initiateur d'échange de clé ;décoder (254) un ticket de sécurité dans le paquet initiateur d'échange de clé ;décoder (260) un élément d'authentification dans le paquet initiateur d'échange de clé ;calculer (264) un résumé d'un message d'échange de clé dans le paquet initiateur d'échange de clé ;déterminer (256, 262, 266, 268) que le paquet initiateur d'échange de clé est valide uniquement si toutes les conditions suivantes sont satisfaites : le ticket de sécurité n'est pas périmé ;un horodatage présent dans l'élément d'authentification est acceptable ;le résumé calculé du message d'échange de clé est égal à une valeur de résumé incluse dans l'élément d'authentification, etl'élément d'authentification n'a pas été réutilisé ;générer (304) un message de réponse d'échange de clé ;calculer (306) un résumé du message de réponse d'échange de clé ;générer (308) un message de réponse ;coder (310) le message de réponse ;générer (312) un paquet de réponse d'échange de clé incluant à la fois le message de réponse d'échange de clé et le message de réponse codé ;etémettre (314) le paquet de réponse d'échange de clé vers le dispositif client. Verfahren, das in einem Servergerät (106, 404, 502) implementiert ist, welches einen in nachfolgenden sicheren Kommunikationen zwischen dem Servergerät und einem Clientgerät (102, 402(1)-402(n), 502, 601) zu benutzenden Schlüssel etabliert, wobei das Verfahren folgende Schritte umfasst: Empfangen (252) eines Schlüsselaustauschinitiatorpakets von dem Clientgerät;Entschlüsseln (254) eines Sicherheitstickets in dem Schlüsselaustauschinitiatorpaket;Entschlüsseln (260) eines Authentifikators in dem Schlüsselaustauschinitiatorpaket;Berechnen (264) eines Auszugs (digest) einer Schlüsselaustauschnachricht in dem Schlüsselaustauschinitiatorpaket;Feststellen (256, 262, 266, 268), dass das Schlüsselaustauschinitiatorpaket gültig ist, nur dann, wenn alle der folgenden Bedingungen erfüllt sind: das Sicherheitsticket ist nicht abgelaufen (stale),eine Zeitmarke in dem Authentifikator ist akzeptabel,der berechnete Auszug der Schlüsselaustauschnachricht gleicht einem als Teil des Authentifikators enthaltenen Auszugswert (digest value), undder Authentifikator wurde nicht wiederverwendet (replayed);Generieren (304) einer Schlüsselaustauschantwortnachricht;Berechnen (306) eines Auszugs der Schlüsselaustauschantwortnachricht;Generieren (308) einer Antwortnachricht;Verschlüsseln (310) der Antwortnachricht;Generieren (312) eines Schlüsselaustauschantwortpakets, welches sowohl die Schlüsselaustauschantwortnachricht als auch die verschlüsselte Antwortnachricht enthält;undSenden (314) des Schlüsselaustauschantwortpakets an das Clientgerät.
- 16Procédé selon la revendication 15, dans lequel l'étape consistant à décoder le ticket de sécurité comprend l'étape consistant à :décoder le ticket de sécurité en utilisant une clé partagée par le dispositif serveur et un centre de distribution de clés qui a donné le ticket de sécurité au dispositif client. The method as recited in claim 15, wherein decrypting the security ticket comprises: decrypting the security ticket using a key shared by the server device and a key distribution center that gave the security ticket to the client device. Verfahren nach Anspruch 15, wobei die Entschlüsselung des Sicherheitstickets umfasst: Entschlüsseln des Sicherheitstickets unter Benutzung eines gemeinsamen (shared) Schlüssels des Servergeräts und eines Schlüsselverteilungscenters, welches dem Clientgerät das Sicherheitsticket gegeben hat.
- 17Procédé selon la revendication 15 ou 16, comprenant en outre l'étape consistant à déterminer (256) que le ticket de sécurité est périmé si une heure présente n'appartient pas à un intervalle de temps identifié dans le ticket de sécurité. The method as recited in claim 15 or 16, further comprising determining (256) the security ticket is stale if a current time is not included in a range of times identified in the security ticket. Verfahren nach Anspruch 15 oder 16, ferner umfassend die Feststellung (256), dass das Sicherheitsticket abgelaufen ist, wenn eine aktuelle Zeit nicht in einer in dem Sicherheitsticket identifizierten Zeitspanne enthalten ist.
- 18Procédé selon l'une des revendications 15 à 17, comprend en outre l'étape consistant à déterminer (262) que l'horodatage présent dans l'élément d'authentification est acceptable si l'horodatage se trouve dans une durée seuil d'une heure présente. The method as recited in one of claims 15 to 17, further comprising determining (262) the timestamp in the authenticator is acceptable if the timestamp is within a threshold amount of time of a current time. Verfahren nach einem der Ansprüche 15 bis 17, ferner umfassend die Feststellung (262), dass die Zeitmarke in dem Authentifikator akzeptable ist, wenn die Zeitmarke innerhalb einer Zeitschwelle einer aktuellen Zeit liegt.
- 19Procédé selon l'une des revendications 15 à 18, comprenant en outre l'étape consistant à déterminer (268) que l'élément d'authentification a été réutilisé si l'horodatage n'est pas plus récent qu'un dernier horodatage reçu par le dispositif serveur du dispositif client. The method as recited in one of claims 15 to 18, further comprising determining (268) that the authenticator has been replayed if the timestamp is not newer than a last timestamp received by the server device from the client device. Verfahren nach einem der Ansprüche 15 bis 18, ferner umfassend die Feststellung (268), dass der Authentifikator wiederverwendet wurde, wenn die Zeitmarke nicht neuer als eine letzte durch das Servergerät von dem Clientgerät empfangene Zeitmarke ist.
- 20Procédé selon l'une des revendications 15 à 19, comprenant en outre les étapes consistant à :extraire, du paquet initiateur d'échange de clé, une valeur Diffie-Hellman gX mod N ;générer une valeur aléatoire Y ;émettre une valeur Diffie-Hellman gY mod N dans une réponse au paquet initiateur d'échange de clé ;calculer une valeur Diffie-Hellman gXY mod N ;etgénérer la clé en se basant au moins en partie sur la valeur Diffie-Hellman gXY mod N. The method as recited in one of claims 15 to 19, further comprising: retrieving, from the key exchange initiator packet, a Diffie-Hellman value gX mod N;generating a random value Y;sending a Diffie-Hellman value gY mod N in a response to the key exchange initiator packet;calculating a Diffie-Hellman value gXY mod N;andgenerating the key based at least in part on the Diffie-Hellman value gXY mod N. Verfahren nach einem der Ansprüche 15 bis 19, ferner umfassend: Wiedergewinnen (retrieving) eines Diffie-Hellman-Wertes gX mod N aus dem Schlüsselaustauschinitiatorpaket;Generieren eines Zufallswertes Y;Senden eines Diffie-Hellman-Wertes gY mod N in einer Antwort auf das Schlüsselaustauschinitiatorpaket;Berechnen eines Diffie-Hellman-Wertes gXY mod N;undGenerieren des Schlüssels zumindest teilweise auf Basis des Diffie-Hellman-Wertes gXY mod N.
- 21Procédé selon l'une des revendications 15 à 20, dans lequel l'étape consistant à recevoir le paquet initiateur d'échange de clé comprend l'étape consistant à recevoir le paquet initiateur d'échange de clé du dispositif client via un réseau (406, 550, 552), dans lequel le paquet initiateur d'échange de clé n'inclut pas la clé ; dans lequel le procédé comprend en outre les étapes consistant à :valider (254-270) le paquet initiateur d'échange de clé ;etgénérer (156, 302) la clé, en se basant au moins en partie sur des données présentes dans le paquet initiateur d'échange de clé, sans qu'il y ait nécessité de recevoir du dispositif client des paquets supplémentaires pour générer la clé ;et dans lequel l'étape consistant à émettre le paquet de réponse d'échange de clé vers le dispositif client comprend l'étape consistant à émettre (314), vers le dispositif client, via le réseau, un paquet de réponse d'échange de clé qui n'inclut pas la clé. The method as recited in one of claims 15 to 20, wherein receiving the key exchange initiator packet comprises receiving the key exchange initiator packet from the client device via a network (406, 550, 552), wherein the key exchange initiator packet does not include the key;wherein the method further comprises: validating (254-270) the key exchange initiator packet;andgenerating (156, 302), based at least in part on data in the key exchange initiator packet, the key without requiring any additional packets to be received from the client device in order to generate the key;and wherein sending the key exchange response packet to the client device comprises sending (314), to the client device via the network, a key exchange response packet that does not include the key. Verfahren nach einem der Ansprüche 15 bis 20, wobei das Empfangen des Schlüsselaustauschinitiatorpakets ein Empfangen des Schlüsselaustauschinitiatorpakets von dem Clientgerät über ein Netzwerk (406, 550, 552) umfasst, wobei das Schlüsselaustauschinitiatorpaket den Schlüssel nicht enthält;wobei das Verfahren ferner umfasst: Validieren (254-270) des Schlüsselaustauschinitiatorpakets;undGenerieren (156, 302) des Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschinitiatorpaket ohne das Erfordernis, dass zusätzliche Pakete von dem Clientgerät empfangen werden, um den Schlüssel zu generieren;und wobei das Senden des Schlüsselaustauschantwortpakets an das Clientgerät ein Senden (314) eines Schlüsselaustauschantwortpakets, das den Schlüssel nicht enthält, an das Clientgerät über das Netzwerk umfasst.
- 22Procédé selon la revendication 21, dans lequel le paquet de réponse d'échange de clé inclut des informations qui permettent au dispositif client de générer la clé sans qu'il y ait nécessité d'émettre des paquets supplémentaires vers le dispositif client pour générer la clé. The method as recited in claim 21, wherein the key exchange response packet includes information that allows the client device to generate the key without requiring any additional packets to be sent to the client device in order to generate the key. Verfahren nach Anspruch 21, wobei das Schlüsselaustauschantwortpaket Informationen enthält, die es dem Clientgerät erlauben, den Schlüssel zu generieren, ohne dass es erforderlich ist, zusätzliche Pakete an das Clientgerät zu senden, um den Schlüssel zu generieren.
- 23Procédé selon la revendication 21 ou 22, dans lequel l'étape consistant à valider le paquet initiateur d'échange de clé comprend les étapes consistant à :décoder le ticket de sécurité dans le paquet initiateur d'échange de clé ;décoder l'élément d'authentification dans le paquet initiateur d'échange de clé ;calculer le résumé du message d'échange de clé dans le paquet initiateur d'échange de clé ;etdéterminer que le paquet initiateur d'échange de clé est valide uniquement si toutes les conditions suivantes sont satisfaites: le ticket de sécurité n'est pas périmé;l'horodatage présent dans l'élément d'authentification est acceptable ;le résumé calculé du message d'échange de clé est égal à une valeur de résumé incluse dans l'élément d'authentification, etl'élément d'authentification n'a pas été réutilisé. The method as recited in claim 21 or 22, wherein validating the key exchange initiator packet comprises: decrypting the security ticket in the key exchange initiator packet;decrypting the authenticator in the key exchange initiator packet;computing the digest of the key exchange message in the key exchange initiator packet;anddetermining that the key exchange initiator packet is valid only if all of the following conditions are satisfied: the security ticket is not stale,the timestamp in the authenticator is acceptable,the computed digest of the key exchange message is equal to the digest value included as part of the authenticator, andthe authenticator has not been replayed. Verfahren nach Anspruch 21 oder 22, wobei die Validierung des Schlüsselaustauschinitiatorpakets umfasst: Entschlüsseln des Sicherheitstickets in dem Schlüsselaustauschinitiatorpaket;Entschlüsseln des Authentifikators in dem Schlüsselaustauschinitiatorpaket;Berechnen des Auszugs der Schlüsselaustauschnachricht in dem Schlüsselaustauschinitiatorpaket;undFeststellen, dass das Schlüsselaustauschinitiatorpaket gültig ist, nur dann, wenn alle der folgenden Bedingungen erfüllt sind: das Sicherheitsticket ist nicht abgelaufen,die Zeitmarke in dem Authentifikator ist akzeptabel,der berechnete Auszug der Schlüsselaustauschnachricht gleicht dem als Teil des Authentifikators enthaltenen Auszugswert, undder Authentifikator wurde nicht wiederverwendet.
- 24Procédé selon l'une des revendications 21 à 23, dans lequel l'étape consistant à générer la clé comprend les étapes consistant à :extraire, du paquet initiateur d'échange de clé, une valeur Diffie-Hellman gX mod N ;générer une valeur Diffie-Hellman Y ;inclure la valeur gY mod N dans la réponse d'échange de clé ;calculer une valeur Diffie-Hellman gXY mod N ;etgénérer la clé en se basant au moins en partie sur la valeur Diffie-Hellman gXY mod N. The method as recited in one of claims 21 to 23, wherein generating the key comprises: retrieving, from the key exchange initiator packet, a Diffie-Hellman value gx mod N;generating a random Diffie-Hellman value Y;including gY mod N as part of the key exchange response;calculating a Diffie-Hellman value gXY mod N;andgenerating the key based at least in part on the Diffie-Hellman value gXY mod N. Verfahren nach einem der Ansprüche 21 bis 23, wobei die Generierung des Schlüssels umfasst: Wiedergewinnen (retrieving) eines Diffie-Hellman-Wertes gX mod N aus dem Schlüsselaustauschinitiatorpaket;Generieren eines zufälligen Diffie-Hellman-Wertes Y;Einfügen von gY mod N als Teil der Schlüsselaustauschantwort;Berechnen eines Diffie-Hellman-Wertes gXY mod N;undGenerieren des Schlüssels zumindest teilweise auf Basis des Diffie-Hellman-Wertes gXY mod N.
- 25Procédé selon l'une des revendications 15 à 24, dans lequel l'étape consistant à générer le message de réponse d'échange de clé comprend les étapes consistant à :générer une première valeur NonceResp ;générer une seconde valeur Y ;utiliser le seconde valeur Y pour générer une valeur Diffie-Hellman gY mod N ;etinclure, dans le message de réponse d'échange de clé, les éléments suivants : une valeur NonceInit précédemment reçue du dispositif client,la première valeur NonceResp,la valeur Diffie-Hellman gY mod N, etune valeur d'horodatage précédemment reçue du dispositif client. The method as recited in one of claims 15 to 24, wherein generating the key exchange response message comprises: generating a first value NonceResp;generating a second value Y;using the second value Y to generate a Diffie-Hellman value gY mod N;andincluding, in the key exchange response message, the following: a Noncelnit value previously received from the client device,the first value NonceResp,the Diffie-Hellman value gY mod N, anda timestamp value previously received from the client device. Verfahren nach einem der Ansprüche 15 bis 24, wobei die Generierung der Schlüsselaustauschantwortnachricht umfasst: Generieren eines ersten Wertes NonceResp;Generieren eines zweiten Wertes Y;Verwenden des zweiten Wertes Y, um einen Diffie-Hellman-Wert gY mod N zu generieren;undEinfügen folgender Elemente in die Schlüsselaustauschantwortnachricht: eines zuvor von dem Clientgerät empfangenen Noncelnit-Wertes,des ersten Wertes NonceResp,des Diffie-Hellman-Wertes gY mod N, undeines zuvor von dem Clientgerät empfangenen Zeitmarkenwertes.
- 26Procédé selon l'une des revendications 15 à 25, dans lequel l'étape consistant à calculer le résumé du message de réponse d'échange de clé comprend l'étape consistant à :utiliser une clé de session Kerberos KCA, précédemment reçue du dispositif client et constituant une partie d'un ticket Kerberos, et une fonction de hachage pour calculer le résumé. The method as recited in one of claims 15 to 25, wherein computing the digest of the key exchange response message comprises: using a Kerberos session key KCA, previously received from the client device as part of a Kerberos ticket, and a hashing function to compute the digest. Verfahren nach einem der Ansprüche 15 bis 25, wobei die Berechnung des Auszugs der Schlüsselaustauschantwortnachricht umfasst: Verwenden eines Kerberos-Sitzungsschlüssels KCA, der zuvor von dem Clientgerät als Teil eines Kerberos-Tickets empfangen wurde, und einer Hash-Funktion, um den Auszug zu berechnen.
- 27Procédé selon l'une des revendications 15 à 26, dans lequel l'étape consistant à générer le message de réponse comprend l'étape consistant à inclure, dans le message de réponse, à la fois un horodatage précédemment reçu du dispositif client et le résumé du message de réponse d'échange de clé. The method as recited in one of claims 15 to 26, wherein generating the reply message comprises including, in the reply message, both a timestamp previously received from the client device and the digest of the key exchange response message. Verfahren nach einem der Ansprüche 15 bis 26, wobei die Generierung der Antwortnachricht ein Einfügen sowohl einer zuvor von dem Clientgerät empfangenen Zeitmarke als auch des Auszugs der Schlüsselaustauschantwortnachricht in die Antwortnachricht umfasst.
- 28Procédé selon l'une des revendications 15 à 27, dans lequel l'étape consistant à coder le message de réponse comprend l'étape consistant à coder le message de réponse en se basant au moins en partie sur une clé de session Kerberos KCA, précédemment reçue du dispositif client et constituant une partie d'un ticket Kerberos. The method as recited in one of claims 15 to 27, wherein encrypting the reply message comprises encrypting the reply message based at least in part on a Kerberos session key KCA, previously received from the client device as part of a Kerberos ticket. Verfahren nach einem der Ansprüche 15 bis 27, wobei die Verschlüsselung der Antwortnachricht ein Verschlüsseln der Antwortnachricht zumindest teilweise auf Basis eines Kerberos-Sitzungsschlüssels KCA der zuvor als Teil eines Kerberos-Tickets von dem Clientgerät empfangen wurde, umfasst.
- 29Procédé selon l'une des revendications 15 à 28, dans lequel l'étape consistant à générer le paquet de réponse d'échange de clé comprend l'étape consistant à inclure, dans le paquet de réponse d'échange de clé, les éléments suivants :le message de réponse d'échange de clé ;le message de réponse codé ;etune valeur d'index de paramètres de sécurité utilisée pour identifier les communications sécurisées ultérieures entre le dispositif serveur et le dispositif client. The method as recited in one of claims 15 to 28, wherein generating the key exchange response packet comprises including, in the key exchange response packet, the following: the key exchange response message;the encrypted reply message;anda Security Parameters Index value used to identify the subsequent secure communications from the server device to the client device. Verfahren nach einem der Ansprüche 15 bis 28, wobei die Generierung des Schlüsselaustauschantwortpakets ein Einfügen folgender Elemente in das Schlüsselaustauschantwortpaket umfasst: der Schlüsselaustauschantwortnachricht;der verschlüsselten Antwortnachricht;undeines Sicherheitsparameter-Index-Wertes, der verwendet wird, um die nachfolgenden sicheren Kommunikationen von dem Servergerät an das Clientgerät zu identifizieren.
- 30Procédé selon l'une des revendications 1 à 29, dans lequel le paquet initiateur d'échange de clé et/ou le paquet de réponse d'échange de clé, respectivement, permettent d'obtenir une sécurité préalable parfaite. The method as recited in one of claims 1 to 29, wherein the key exchange initiator packet and/or the key exchange response packet, respectively, allows perfect forward secrecy to be achieved. Verfahren nach einem der Ansprüche 1 bis 29, wobei das Schlüsselaustauschinitiatorpaket und/oder das Schlüsselaustauschantwortpaket das Erreichen perfekter Vorwärtsgeheimhaltung (perfect forward secrecy) erlaubt.
- 31Procédé selon l'une des revendications 1 à 30, comprenant en outre l'étape consistant à :assurer la communication mutuelle entre le dispositif client et le dispositif serveur par un échange aller-retour unique sur un réseau (406, 550, 552), pour assurer un échange sécurisé d'une clé de sécurité et pour authentifier mutuellement les dispositifs, et pour obtenir également une sécurité préalable parfaite. The method as recited in one of claims 1 to 30, further comprising: communicating by the client device and the server device with each other via a single roundtrip over a network (406, 550, 552), to securely exchange a security key and to mutually authenticate the devices as well as achieve perfect forward secrecy. Verfahren nach einem der Ansprüche 1 bis 30, ferner umfassend: Kommunizieren des Clientgeräts und des Servergeräts miteinander über einen einzigen Rundlauf (roundtrip) über ein Netzwerk (406, 550, 552), um einen Sicherheitsschlüssel sicher auszutauschen und die Geräte wechselseitig zu authentifizieren sowie perfekte Vorwärtsgeheimhaltung (perfect forward secrecy) zu erreichen.
- 32Procédé selon la revendication 31, dans lequel un autre dispositif présent sur le réseau n'est pas capable de déduire la clé de l'échange aller-retour unique sur le réseau. The method as recited in claim 31, wherein another device on the network is not able to deduce the key from the single roundtrip over the network. Verfahren nach Anspruch 31, wobei ein anderes Gerät in dem Netzwerk nicht in der Lage ist, den Schlüssel aus dem einzigen Rundlauf über das Netzwerk abzuleiten.
- 33Procédé selon l'une des revendications 1 à 32, dans lequel le dispositif client comprend une console de jeu (402 (1)-402 (n), 601). The method as recited in one of claims 1 to 32, wherein the client device comprises a game console (402(1)-402(n), 601). Verfahren nach einem der Ansprüche 1 bis 32, wobei das Clientgerät eine Spielekonsole (402(1)-402(n), 601) umfasst.
- 34Procédé selon l'une des revendications 1 à 33, dans lequel le dispositif serveur comprend une passerelle de sécurité de centre de données (404). The method as recited in one of claims 1 to 33, wherein the server device comprises a data center security gateway (404). Verfahren nach einem der Ansprüche 1 bis 33, wobei das Servergerät ein Datencenter-Sicherheitsgateway (404) umfasst.
- 35Ein oder mehrere computerlesbare Medien (506, 510, 512, 516, 520, 524, 548), die eine Vielzahl von Befehlen gespeichert haben, welche, wenn sie durch einen oder mehrere Prozessoren (504) eines Servergeräts (106, 404, 502) beim Etablieren eines in nachfolgenden sicheren Kommunikationen zwischen dem Servergerät und einem Clientgerät (102, 402(1)-402(n), 502, 601) zu verwendenden Schlüssels ausgeführt werden, die einen oder mehrere Prozessoren zu folgenden Schritten veranlassen:Empfangen (252) eines Schlüsselaustauschinitiatorpakets;Entschlüsseln (254) eines Sicherheitstickets in dem Schlüsselaustauschinitiatorpaket;Überprüfen (256), ob eine aktuelle Zeit innerhalb einer in dem Sicherheitsticket identifizierten Zeitspanne liegt, und Angeben (258), dass der Schlüssel nicht etabliert werden kann, wenn die aktuelle Zeit nicht innerhalb der in dem Sicherheitsticket identifizierten Zeitspanne liegt;Entschlüsseln (260) eines Authentifikators in dem Schlüsselaustauschinitiatorpaket;Überprüfen (262), ob eine Zeitmarke in dem Authentifikator innerhalb einer Zeitschwelle der aktuellen Zeit liegt, und Angeben (258), dass der Schlüssel nicht etabliert werden kann, wenn die Zeitmarke nicht innerhalb der Zeitschwelle der aktuellen Zeit liegt;Berechnen (264) eines Auszugswertes (digest value) einer Schlüsselaustauschnachricht in dem Schlüsselaustauschinitiatorpaket;Überprüfen (266), ob der berechnete Auszugswert einem als Teil des Authentifikators enthaltenen Auszugswert gleicht, und Angeben (258), dass der Schlüssel nicht etabliert werden kann, wenn der berechnete Auszugswert dem als Teil des Authentifikators enthaltenen Auszugswert nicht gleicht;Generieren (304) einer Schlüsselaustauschantwortnachricht;Berechnen (306) eines Auszugs (digest) der Schlüsselaustauschantwortnachricht;Generieren (308) einer Antwortnachricht, die den Auszug und eine zuvor von dem Clientgerät empfangene Zeitmarke enthält;Verschlüsseln (310) der Antwortnachricht;Generieren (312) eines Schlüsselaustauschantwortpakets, das sowohl die Schlüsselaustauschantwortnachricht als auch die verschlüsselte Antwortnachricht enthält;undSenden (314) des Schlüsselaustauschantwortpakets an das Clientgerät. One or more computer readable media (506, 510, 512, 516, 520, 524, 548) having stored thereon a plurality of instructions that, when executed by one or more processors (504) of a server device (106, 404, 502) in establishing a key to be used in subsequent secure communications between the server device and a client device (102, 402(1)-402(n), 502, 601), causes the one or more processors to: receive (252) a key exchange initiator packet;decrypt (254) a security ticket in the key exchange initiator packet;check (256) whether a current time is within a range of times identified in the security ticket, and indicate (258) the key cannot be established if the current time is not within the range of times identified in the security ticket;decrypt (260) an authenticator in the key exchange initiator packet;check (262) whether a timestamp in the authenticator is within a threshold amount of time of the current time, and indicate (258) the key cannot be established if the timestamp is not within the threshold amount of time of the current time;compute (264) a digest value of a key exchange message in the key exchange initiator packet;check (266) whether the computed digest value is equal to a digest value included as part of the authenticator, and indicate (258) that the key cannot be established if the computed digest value is not equal to the digest value included as part of the authenticator;generate (304) a key exchange response message;compute (306) a digest of the key exchange response message;generate (308) a reply message that includes the digest and a timestamp previously received from the client device;encrypt (310) the reply message;generate (312) a key exchange response packet including both the key exchange response message and the encrypted reply message;andsend (314) the key exchange response packet to the client device. Un ou plusieurs supports lisibles par ordinateur (506, 510, 512, 516, 520, 524, 548) portant une pluralité d'instructions qui, lorsqu'elles sont exécutées par un ou plusieurs processeurs (504) d'un dispositif serveur (106, 404, 502) pour l'établissement d'une clé destinée à être utilisée dans des communications sécurisées ultérieures entre le dispositif serveur et un dispositif client (102, 402(1)-402(n), 502, 601), induisent le fait que lesdits un ou plusieurs processeurs procèdent aux étapes consistant à : recevoir (252) un paquet initiateur d'échange de clé ;décoder (254) un ticket de sécurité dans le paquet initiateur d'échange de clé ;vérifier (256) si une heure présente appartient à un intervalle de temps identifié dans le ticket de sécurité, et indiquer (258) que la clé ne peut pas être établie si l'heure présente n'appartient pas à l'intervalle de temps identifié dans le ticket de sécurité ;décoder (260) un élément d'authentification dans le paquet initiateur d'échange de clé ;vérifier (262) si un horodatage présent dans l'élément d'authentification appartient à une durée seuil de l'heure présente, et indiquer (258) que la clé ne peut pas être établie si l'horodatage n'appartient pas à la durée seuil de l'heure présente ;calculer (264) une valeur de résumé d'un message d'échange de clé dans le paquet initiateur d'échange de clé ;vérifier (266) si la valeur de résumé calculée est égale à une valeur de résumé incluse dans l'élément d'authentification et indiquer (258) que la clé ne peut pas être établie si la valeur de résumé calculé n'est pas égale à la valeur de résumé incluse dans l'élément d'authentification ;générer (304) un message de réponse d'échange de clé ;calculer (306) un résumé du message de réponse d'échange de clé ;générer (308) un message de réponse qui inclut le résumé et un horodatage précédemment reçu du dispositif client ;coder (310) le message de réponse ;générer (312) un paquet de réponse d'échange de clé incluant à la fois le message de réponse d'échange de clé et le message de réponse codé ;etémettre (314) le paquet de réponse d'échange de clé vers le dispositif client.
- 36Ein oder mehrere computerlesbare Medien nach Anspruch 35, wobei die Befehle ferner die ein oder mehreren Prozessoren zu folgenden Schritten veranlassen:Überprüfen (268), ob die Zeitmarke neuer als eine letzte durch das Servergerät von dem Clientgerät empfangene Zeitmarke ist, und Angeben (258), dass der Schlüssel nicht etabliert werden kann, wenn die Zeitmarke nicht neuer als die letzte Zeitmarke ist. The one or more computer readable media as recited in claim 35, wherein the instructions further cause the one or more processors to: check (268) whether the timestamp is newer than a last timestamp received by the server device from the client device, and indicate (258) that the key cannot be established if the timestamp is not newer than the last timestamp. Un ou plusieurs supports lisibles par ordinateur selon la revendication 35, dans lesquels les instructions induisent en outre le fait que lesdits un ou plusieurs processeurs procèdent à l'étape consistant à : vérifier (268) si l'horodatage est plus récent qu'un dernier horodatage reçu du dispositif serveur en provenance du dispositif client, et indiquer (258) que la clé ne peut pas être établie si l'horodatage n'est pas plus récent que le dernière horodatage.
- 37Ein oder mehrere computerlesbare Medien nach Anspruch 35 oder 36, wobei die Befehle ferner die ein oder mehreren Prozessoren zu folgenden Schritten veranlassen:Wiedergewinnen (retrieve) eines Diffie-Hellman-Wertes gx mod N aus dem Schlüsselaustauschinitiatorpaket;Generieren eines Zufallswertes Y;Senden eines Diffie-Hellman-Wertes gY mod N als Teil einer Antwort auf das Schlüsselaustauschinitiatorpaket;Berechnen eines Diffie-Hellman-Wertes gXY mod N;undGenerieren des Schlüssels zumindest teilweise auf Basis des Diffie-Hellman-Wertes gXY mod N. The one or more computer readable media as recited in claim 35 or 36, wherein the instructions further cause the one or more processors to: retrieve, from the key exchange initiator packet, a Diffie-Hellman value gx mod N;generate a random value Y;send a Diffie-Hellman value gY mod N as part of a response to the key exchange initiator packet;calculate a Diffie-Hellman value gXY mod N;andgenerate the key based at least in part on the Diffie-Hellman value gXY mod N. Un ou plusieurs supports lisibles par ordinateur selon la revendication 35 ou 36, dans lesquels les instructions induisent en outre le fait que lesdits un ou plusieurs processeurs procèdent aux étapes consistant à : extraire, du paquet initiateur d'échange de clé, une valeur Diffie-Hellman gX mod N ;générer une valeur aléatoire Y ;émettre une valeur Diffie-Hellman gY mod N dans une réponse au paquet initiateur d'échange de clé ;calculer une valeur Diffie-Hellman gXY mod N ;etgénérer la clé en se basant au moins en partie sur la valeur Diffie-Hellman gXY mod N.
- 38Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 37, wobei das Schlüsselaustauschinitiatorpaket das Erreichen perfekter Vorwärtsgeheimhaltung (perfect forward secrecy) erlaubt. The one or more computer readable media as recited in one of claims 35 to 37, wherein the key exchange initiator packet allows perfect forward secrecy to be achieved. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 37, dans lesquels le paquet initiateur d'échange de clé permet d'obtenir une sécurité préalable parfaite.
- 39Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 38, wobei die Befehle, die die ein oder mehreren Prozessoren zum Berechnen des Auszugs der Schlüsselaustauschantwortnachricht veranlassen, Befehle umfassen, die die ein oder mehreren Prozessen dazu veranlassen, den Auszug der Schlüsselaustauschantwortnachricht zumindest teilweise auf Basis eines Kerberos-Sitzungsschlüssels zu berechnen. The one or more computer readable media as recited in one of claims 35 to 38, wherein the instructions that cause the one or more processors to compute the digest of the key exchange response message include instructions that cause the one or more processors to compute, based at least in part on a Kerberos session key, the digest of the key exchange response message. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 38, dans lesquels les instructions qui induisent le fait que lesdits un ou plusieurs processeurs calculent le résumé du message de réponse d'échange de clé incluent des instructions qui induisent le fait que lesdits un ou plusieurs processeurs calculent, en se basant au moins en partie sur une clé de session Kerberos, le résumé du message de réponse d'échange de clé.
- 40Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 39, wobei die Befehle, die die ein oder mehreren Prozessoren zum Generieren der Schlüsselaustauschantwortnachricht veranlassen, Befehle umfassen, die die ein oder mehreren Prozessoren zu folgenden Schritten veranlassen:Generieren eines ersten Wertes NonceResp;Generieren eines zweiten Wertes Y;Verwenden des zweiten Wertes Y, um einen Diffie-Hellman-Wert gY mod N zu erzeugen;undEinfügen der folgenden Elemente in die Schlüsselaustauschantwortnachricht: eines zuvor von dem Clientgerät empfangenen Noncelnit-Wertes,des ersten Wertes NonceResp,des Diffie-Hellman-Wertes gY mod N, unddes Zeitmarkenwertes. The one or more computer readable media as recited in one of claims 35 to 39, wherein the instructions that cause the one or more processors to generate the key exchange response message comprise instructions that cause the one or more processors to: generate a first value NonceResp;generate a second value Y;use the second value Y to generate a Diffie-Hellman value gY mod N;andinclude, in the key exchange response message, the following: a Noncelnit value previously received from the client device,the first value NonceResp,the Diffie-Hellman value gY mod N, andthe timestamp value. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 39, dans lesquels les instructions qui induisent le fait que lesdits un ou plusieurs processeurs génèrent le message de réponse d'échange de clé comprennent des instructions qui induisent le fait que lesdits un ou plusieurs processeurs procèdent aux étapes consistant à : générer une première valeur NonceResp ;générer une seconde valeur Y ;utiliser la seconde valeur Y pour générer une valeur Diffie-Hellman gY mod N ;etinclure, dans le message de réponse d'échange de clé, les éléments suivants : une valeur NonceInit précédemment reçue du dispositif client,la première valeur NonceResp,la valeur Diffie-Hellman gY mod N, etla valeur d'horodatage.
- 41Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 40, wobei die Befehle, die die ein oder mehreren Prozessoren zum Verschlüsseln der Antwortnachricht veranlassen, Befehle umfassen, die die ein oder mehreren Prozessoren zum Verschlüsseln der Antwortnachricht zumindest teilweise auf Basis des Kerberos-Sitzungsschlüssels veranlassen. The one or more computer readable media as recited in one of claims 35 to 40, wherein the instructions that cause the one or more processors to encrypt the reply message comprise instructions that cause the one or more processors to encrypt the reply message based at least in part on the Kerberos session key. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 40, dans lesquels les instructions qui induisent le fait que lesdits un ou plusieurs processeurs codent le message de réponse comprennent des instructions qui induisent le fait que lesdits un ou plusieurs processeurs codent le message de réponse en se basant au moins en partie sur la clé de session Kerberos.
- 42Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 41, wobei die Befehle, die die ein oder mehreren Prozessoren zur Generierung des Schlüsselaustauschantwortpakets veranlassen, Befehle umfassen, die die ein oder mehreren Prozessoren zum Einfügen folgender Elemente in das Schlüsselaustauschantwortpaket veranlassen:der Schlüsselaustauschantwortnachricht;der verschlüsselten Antwortnachricht;undeines Sicherheitsparameter-Index-Wertes, der verwendet wird, um die nachfolgenden sicheren Kommunikationen von dem Servergerät an das Clientgerät zu identifizieren. The one or more computer readable media as recited in one of claims 35 to 41, wherein the instructions that cause the one or more processors to generate the key exchange response packet comprise instructions that cause the one or more processors to include, in the key exchange response packet, the following: the key exchange response message;the encrypted reply message;anda Security Parameters Index value used to identify the subsequent secure communications from the server device to the client device. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 41, dans lesquels les instructions qui induisent le fait que lesdits un ou plusieurs processeurs génèrent le paquet de réponse d'échange de clé comprennent des instructions qui induisent le fait que lesdits un ou plusieurs processeurs incluent, dans le paquet de réponse d'échange de clé, les éléments suivants : le message de réponse d'échange de clé ;le message de réponse codé ;etune valeur d'index de paramètres de sécurité utilisée pour identifier les communications sécurisées ultérieures entre le dispositif serveur et le dispositif client.
- 43Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 42, wobei das Schlüsselaustauschantwortpaket das Erreichen perfekter Vorwärtsgeheimhaltung (perfect forward secrecy) erlaubt. The one or more computer readable media as recited in one of claims 35 to 42, wherein the key exchange response packet allows perfect forward secrecy to be achieved. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 42, dans lequel le paquet de réponse d'échange de clé permet d'obtenir une sécurité préalable parfaite.
- 44Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 35 bis 43, wobei die Befehle die ein oder mehreren Prozessoren ferner zu folgendem Schritt veranlassen:Durchführen eines Schlüsselaustauschs mit dem Clientgerät in einem einzigen Rundlauf (roundtrip) über ein Netzwerk (406, 550, 552), wobei sowohl wechselseitige Authentifikation mit dem Clientgerät als auch perfekte Vorwärtsgeheimhaltung (perfect forward secrecy) erreicht wird. The one or more computer readable media as recited in one of claims 35 to 43, wherein the instructions further cause the one or more processors to: perform, in a single roundtrip over a network (406, 550, 552), a key exchange with the client device on the network achieving both mutual authentication with the client device and perfect forward secrecy. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 35 à 43, dans lesquels les instructions induisent en outre le fait que lesdits un ou plusieurs processeurs procèdent à l'étape suivante : mettre en oeuvre, par un échange aller-retour unique sur un réseau (406, 550, 552), un échange de clé avec le dispositif client sur le réseau en obtenant à la fois une authentification mutuelle avec le dispositif client et une sécurité préalable parfaite.
- 45Ein oder mehrere computerlesbare Medien nach Anspruch 44, wobei die wechselseitige Authentifikation auf Basis eines Kerberos-Authentifikationsprotokolls erreicht wird. The one or more computer readable media as recited in claim 44, wherein the mutual authentication is achieved based on a Kerberos authentication protocol. Un ou plusieurs supports lisibles par ordinateur selon la revendication 44, dans lequel l'authentification mutuelle est obtenue en se basant sur le protocole d'authentification Kerberos.
- 46Ein oder mehrere computerlesbare Medien nach Anspruch 44 oder 45, wobei die perfekte Vorwärtsgeheimhaltung auf Basis von in dem einzigen Rundlauf über das Netzwerk enthaltenen Diffie-Hellman-Werten erreicht wird. The one or more computer readable media as recited in claim 44 or 45, wherein the perfect forward secrecy is achieved based on Diffie-Hellman values included in the single roundtrip over the network. Un ou plusieurs supports lisibles par ordinateur selon la revendication 44 ou 45, dans lesquels la sécurité préalable parfaite est obtenue en se basant sur des valeurs Diffie-Hellman incluses dans l'échange aller-retour unique sur le réseau.
- 47Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 46, wobei der einzige Rundlauf über das Netzwerk eine Schlüsselaustauschinitiatornachricht enthält und wobei die Befehle, wenn sie durch die ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren zum Verifizieren (266) eines Auszugs der Schlüsselaustauschinitiatornachricht veranlassen, um zu verifizieren, dass die Schlüsselaustauschinitiatornachricht nicht verfälscht (tampered with) wurde. The one or more computer readable media as recited in one of claims 44 to 46, wherein the single roundtrip over the network includes a key exchange initiator message, and wherein the instructions, when executed by the one or more processors, cause the one or more processors to verify (266) a digest of the key exchange initiator message to verify that the key exchange initiator message has not been tampered with. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 46, dans lesquels l'échange aller-retour unique sur le réseau inclut un message initiateur d'échange de clé, et dans lesquels les instructions, lorsqu'elles sont exécutées par lesdits un ou plusieurs processeurs, induisent le fait que lesdits un ou plusieurs processeurs vérifient (266) un résumé du message initiateur d'échange de clé pour vérifier si le message initiateur d'échange de clé n'a pas été falsifié.
- 48Ein oder mehrere computerlesbare Medien nach Anspruch 47, wobei die Befehle, wenn sie durch die ein oder mehreren Prozessoren ausgeführt werden, ferner die ein oder mehreren Prozessoren zum Generieren (264) des Auszugs der Schlüsselaustauschinitiatornachricht unter Benutzung einer schlüsselbasierten (keyed) Hash-Funktion veranlassen. The one or more computer readable media as recited in claim 47, wherein the instructions, when executed by the one or more processors, further cause the one or more processors to generate (264) the digest of the key exchange initiator message using a keyed hash. Un ou plusieurs supports lisibles par ordinateur selon la revendication 47, dans lesquels les instructions, lorsqu'elles sont exécutées par lesdits un ou plusieurs processeurs, induisent en outre le fait que lesdits un ou plusieurs processeurs génèrent (264) le résumé du message initiateur d'échange de clé en utilisant une valeur de hachage à clé.
- 49Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 48, wobei der einzige Rundlauf über das Netzwerk eine Schlüsselaustauschinitiatornachricht enthält und wobei die Befehle, wenn sie durch die ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren zum Überprüfen (262), ob eine in der Schlüsselaustauschinitiatornachricht enthaltene Zeitmarke innerhalb einer Zeitschwelle der aktuellen Zeit liegt, und zum Beantworten der Schlüsselaustauschinitiatornachricht nur dann, wenn die Zeitmarke innerhalb der Zeitschwelle der aktuellen Zeit liegt, veranlassen. The one or more computer readable media as recited in one of claims 44 to 48, wherein the single roundtrip over the network includes a key exchange initiator message, and wherein the instructions, when executed by the one or more processors, cause the one or more processors to check (262) whether a timestamp included in the key exchange initiator message is within a threshold amount of time of the current time, and respond to the key exchange initiator message only if the timestamp is within the threshold amount of time of the current time. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 48, dans lesquels l'échange aller-retour unique sur le réseau inclut un message initiateur d'échange de clé, dans lesquels les instructions, lorsqu'elles sont exécutées par lesdits un ou plusieurs processeurs, induisent le fait que lesdits un ou plusieurs processeurs vérifient (262) si un horodatage inclus dans le message initiateur d'échange de clé appartient à la durée seuil de l'heure présente, et répondent au message initiateur d'échange de clé uniquement si l'horodatage appartient à la durée seuil de l'heure présente.
- 50Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 49, wobei der einzige Rundlauf über das Netzwerk eine Schlüsselaustauschinitiatornachricht umfasst und wobei die Befehle, wenn sie durch die ein oder mehreren Prozessoren ausgeführt werden, die ein oder mehreren Prozessoren zum Überprüfen (268), ob eine in der Schlüsselaustauschinitiatornachricht enthaltene Zeitmarke neuer ist als eine letzte von dem Clientgerät empfangene Zeitmarke ist, und zum Beantworten der Schlüsselaustauschinitiatornachricht nur dann, wenn die Zeitmarke neuer als die letzte von dem Clientgerät empfangene Zeitmarke ist, veranlassen. The one or more computer readable media as recited in one of claims 44 to 49, wherein the single roundtrip over the network includes a key exchange initiator message, and wherein the instructions, when executed by the one or more processors, cause the one or more processors to check (268) whether a timestamp included in the key exchange initiator message is newer than a last timestamp received from the client device, and respond to the key exchange initiator message only if the timestamp is newer than the last timestamp received from the client device. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 49, dans lesquels l'échange aller-retour unique sur le réseau inclut un message initiateur d'échange de clé, dans lesquels les instructions, lorsqu'elles sont exécutées par lesdits un ou plusieurs processeurs, induisent le fait que lesdits un ou plusieurs processeurs vérifient (268) si un horodatage inclus dans le message initiateur d'échange de clé est plus récent qu'un dernière horodatage reçu du dispositif client, et répondent au message initiateur d'échange de clé uniquement si l'horodatage est plus récent que le dernier horodatage reçu du dispositif client.
- 51Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 50, wobei das Netzwerk das Internet (552) umfasst. The one or more computer readable media as recited in one of claims 44 to 50, wherein the network comprises the Internet (552). Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 50, dans lesquels le réseau comprend l'Internet (552).
- 52Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 51, wobei die Vielzahl von Befehlen die ein oder mehreren Prozessoren ferner zu folgenden Schritten veranlassen:Empfangen (252) eines Schlüsselaustauschinitiatorpakets, das den Schlüssel nicht enthält, von dem Clientgerät;Validieren (254-270) des Schlüsselaustauschinitiatorpakets;Generieren (302) des Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschinitiatorpaket, ohne das Erfordernis, dass zusätzliche Pakete von dem Clientgerät empfangen werden, um den Schlüssel zu generieren;undSenden (314) eines Schlüsselaustauschantwortpakets, das den Schlüssel nicht enthält, an das Clientgerät. The one or more computer readable media as recited in one of claims 44 to 51, wherein the plurality of instructions further causes the one or more processors to: receive (252), from the client device, a key exchange initiator packet that does not include the key;validate (254-270) the key exchange initiator packet;generate (302), based at least in part on data in the key exchange initiator packet, the key without requiring any additional packets to be received from the client device in order to generate the key;andsend (314), to the client device, a key exchange response packet that does not include the key. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 51, dans lesquels la pluralité d'instructions induit en outre le fait que lesdits un ou plusieurs processeurs procèdent aux étapes consistant à : recevoir (252), du dispositif client, un paquet initiateur d'échange de clé qui n'inclut pas la clé ;valider (254-270) le paquet initiateur d'échange de clé ;générer (302) la clé, en se basant au moins en partie sur des données présentes dans le paquet initiateur d'échange de clé, sans nécessiter la réception de paquets additionnels du dispositif client afin de générer la clé ;etémettre (314), vers le dispositif client, un paquet de réponse d'échange de clé qui n'inclut pas la clé.
- 53Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 52, wobei der einzige Rundlauf über das Netzwerk eine Schlüsselaustauschantwortnachricht enthält und wobei die ein oder mehreren computerlesbaren Medien ferner Befehle haben, die, wenn sie durch einen oder mehrere Prozessoren (504, 600) des Clientgeräts ausgeführt werden, die ein oder mehreren Prozessoren des Clientgeräts zum Verifizieren (362) eines Auszugs der Schlüsselaustauschantwortnachricht und zum Verifizieren, dass die Schlüsselaustauschantwortnachricht nicht verfälscht (tampered with) wurde, veranlassen. The one or more computer readable media as recited in one of claims 44 to 52, wherein the single roundtrip over the network includes a key exchange response message, and wherein the one or more computer readable media further has instructions that, when executed by one or more processors (504, 600) of the client device, cause the one or more processors of the client device to verify (362) a digest of the key exchange response message to verify that the key exchange response message has not been tampered with. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 52, dans lesquels l'échange aller-retour unique sur le réseau inclut un message de réponse d'échange de clé, et dans lesquels lesdits un ou plusieurs supports lisibles par ordinateur incluent en outre des instructions qui, lorsqu'elles sont exécutées par un ou plusieurs processeurs (504, 600) du dispositif client, induisent le fait que lesdits un ou plusieurs processeurs du dispositif client vérifient (362) un résumé du message de réponse d'échange de clé pour vérifier que le message de réponse d'échange de clé n'a pas été falsifié.
- 54Ein oder mehrere computerlesbare Medien nach Anspruch 53, wobei die Befehle, wenn sie durch die ein oder mehreren Prozessoren des Clientgeräts ausgeführt werden, ferner die ein oder mehreren Prozessoren des Clientgeräts zum Generieren (360) des Auszugs der Schlüsselaustauschantwortnachricht unter Benutzung einer schlüsselbasierten (keyed) Hash-Funktion veranlassen. The one or more computer readable media as recited in claim 53, wherein the instructions, when executed by the one or more processors of the client device, further cause the one or more processors of the client device to generate (360) the digest of the key exchange response message using a keyed hash. Un ou plusieurs supports lisibles par ordinateur selon la revendication 53, dans lesquels les instructions, lorsqu'elles sont exécutées par lesdits un ou plusieurs processeurs du dispositif client, induisent en outre le fait que lesdits un ou plusieurs processeurs du dispositif client génèrent (360) le résumé du message de réponse d'échange de clé en utilisant une valeur de hachage à clé.
- 55Ein oder mehrere computerlesbare Medien nach einem der Ansprüche 44 bis 54, wobei die ein oder mehreren computerlesbaren Medien ferner Befehle haben, die, wenn sie durch einen oder mehrere Prozessoren (504, 600) des Clientgeräts ausgeführt werden, die ein oder mehreren Prozessoren des Clientgeräts zu folgenden Schritten veranlassen:Senden (212) eines Schlüsselaustauschinitiatorpakets, das den Schlüssel nicht enthält, an das Servergerät;Empfangen (352) eines Schlüsselaustauschantwortpakets, das den Schlüssel nicht enthält, von dem Servergerät;Validieren (354-362) des Schlüsselaustauschantwortpakets;undGenerieren (364) des Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschantwortpaket, ohne das Erfordernis, dass zusätzliche Pakete an das Servergerät gesandt oder von dem Servergerät empfangen werden, um den Schlüssel zu generieren. The one or more computer readable media as recited in one of claims 44 to 54, wherein the one or more computer readable media further has instructions that, when executed by one or more processors (504, 600) of the client device, cause the one or more processors of the client device to: send (212), to the server device, a key exchange initiator packet that does not include the key;receive (352), from the server device, a key exchange response packet that does not include the key;validate (354-362) the key exchange response packet;andgenerate (364), based at least in part on data in the key exchange response packet, the key without requiring any additional packets to be sent to the server device or received from the server device in order to generate the key. Un ou plusieurs supports lisibles par ordinateur selon l'une des revendications 44 à 54, dans lesquels lesdits un ou plusieurs supports lisibles par ordinateur ont en outre des instructions qui, lorsqu'elles sont exécutées par un ou plusieurs processeurs (504, 600) du dispositif client, induisent le fait que lesdits un ou plusieurs processeurs du dispositif client procèdent aux étapes consistant à : émettre (212), vers le dispositif serveur, un paquet initiateur d'échange de clé qui n'inclut pas la clé ;recevoir (352), du dispositif serveur, un paquet de réponse d'échange de clé qui n'inclut pas la clé ;valider (354-362) le paquet de réponse d'échange de clé;etgénérer (364), en se basant au moins en partie sur des données présentes dans le paquet de réponse d'échange de clé, la clé sans nécessité d'émettre vers le dispositif serveur ou de recevoir depuis le dispositif serveur de paquets supplémentaires pour générer la clé.
- 56Ein oder mehrere computerlesbare Medien (506, 510, 512, 516, 520, 524, 548), die eine Vielzahl von Befehlen gespeichert haben, welche, wenn sie durch ein oder mehrere Prozessoren (504, 600) eines Clientgeräts (102, 402(1)-402(n), 502, 601) beim Etablieren eines in nachfolgenden sicheren Kommunikationen zwischen dem Clientgerät und einem Servergerät (106, 404, 502) zu benutzenden Schlüssels ausgeführt werden, die ein oder mehrere Prozessoren zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 14 veranlassen. One or more computer readable media (506, 510, 512, 516, 520, 524, 548) having stored thereon a plurality of instructions that, when executed by one or more processors (504, 600) of a client device (102, 402(1)-402(n), 502, 601) in establishing a key to be used in subsequent secure communications between the client device and a server device (106, 404, 502), causes the one or more processors to perform the method recited in one of claims 1 to 14. Un ou plusieurs supports lisibles par ordinateur (506, 510, 512, 516, 520, 524, 548) mémorisant une pluralité d'instructions qui, lorsqu'elles sont exécutées par un ou plusieurs processeurs (504, 600) d'un dispositif client (102,402(1)-402(n), 502, 601) lors de l'établissement d'une clé destinée à être utilisée dans des communications sécurisées ultérieures entre le dispositif client et le dispositif serveur (106, 404, 502), induisent le fait que lesdits un ou plusieurs processeurs mettent en oeuvre le procédé selon l'une des revendications 1 à 14.
- 57A system (100, 500) comprising:a client device (102, 402(1)-402(n), 502, 601) configured to obtain a session key from a key distribution center (104, 428);anda server device (106, 404, 502), coupled to the client device via a network (406, 550, 552), configured to communicate with the client device and, in a single roundtrip over the network, securely exchange a key and mutually authenticate one another as well as achieve perfect forward secrecy;and wherein the client device and the server device are configured to perform respectively the method recited in one of claims 1 to 14 and in one of claims 15 to 34. System (100, 500) umfassend: ein Clientgerät (102, 402(1)-402(n), 502, 601), das dazu konfiguriert ist, einen Sitzungsschlüssel von einem Schlüsselverteilungscenter (104, 428) zu erhalten;undein Servergerät (106, 404, 502), das über ein Netzwerk (406, 550, 552) an das Clientgerät gekoppelt ist und dazu konfiguriert ist, mit dem Clientgerät zu kommunizieren und in einem einzigen Rundlauf (roundtrip) über das Netzwerk sicher einen Schlüssel auszutauschen und sich wechselseitig zu authentifizieren sowie perfekte Vorwärtsgeheimhaltung (perfect forward secrecy) zu erreichen;und wobei das Clientgerät und das Servergerät dazu konfiguriert sind, das Verfahren nach einem der Ansprüche 1 bis 14 bzw. nach einem der Ansprüche 15 bis 34 durchzuführen. Système (100, 500) comprenant : un dispositif client (102, 402(1)-402(n), 502, 601)configuré pour obtenir une clé de session auprès d'un centre de distribution de clés (104, 428) ;etun dispositif serveur (106, 404, 502), couplé au dispositif client via un réseau (406, 550, 552), configuré pour communiquer avec le dispositif client et, lors d'un échange aller-retour unique sur le réseau, à échanger de manière sécurisée une clé et à assurer une authentification mutuelle pour obtenir une sécurité préalable parfaite ;et dans lesquels le dispositif client et le dispositif serveur sont configurés pour mettre en oeuvre le procédé selon l'une des revendications 1 à 14 et selon l'une des revendications 15 à 34, respectivement.
- 58System nach Anspruch 57, wobei das Clientgerät ferner zu folgenden Schritten konfiguriert ist:Senden (212) eines Schlüsselaustauschinitiatorpakets, das den Schlüssel nicht enthält, an das Servergerät;Empfangen (352) eines Schlüsselaustauschantwortpakets, das den Schlüssel nicht enthält, von dem Servergerät;Validieren (354-362) des Schlüsselaustauschantwortpakets;undGenerieren (364) des Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschantwortpaket ohne das Erfordernis, dass zusätzliche Pakete an das Servergerät gesandt oder von dem Servergerät empfangen werden, um den Schlüssel zu generieren. Système selon la revendication 57, dans lequel le dispositif client est en outre configuré pour procéder aux étapes suivantes : émettre (212), vers le dispositif serveur, un paquet initiateur d'échange de clé qui n'inclut pas la clé ;recevoir (352), du dispositif serveur, un paquet de réponse d'échange de clé qui n'inclut pas la clé;valider (354-362) le paquet de réponse d'échange de clé ;etgénérer (364) la clé, en se basant au moins en partie sur des données présentes dans le paquet de réponse d'échange de clé, sans qu'il y ait nécessité d'émettre vers le dispositif serveur ou de recevoir du dispositif serveur des paquets supplémentaires pour générer la clé. The system as recited in claim 57, wherein the client device is further configured to: send (212), to the server device, a key exchange initiator packet that does not include the key;receive (352), from the server device, a key exchange response packet that does not include the key;validate (354-362) the key exchange response packet;andgenerate (364), based at least in part on data in the key exchange response packet, the key without requiring any additional packets to be sent to the server device or received from the server device in order to generate the key.
- 59System nach Anspruch 57 oder 58, wobei das Servergerät ferner zu folgenden Schritten konfiguriert ist:Empfangen (252) eines Schlüsselaustauschinitiatorpakets, das den Schlüssel nicht enthält, von dem Clientgerät;Validieren (254-270) des Schlüsselaustauschinitiatorpakets;Generieren (302) des Schlüssels zumindest teilweise auf Basis von Daten in dem Schlüsselaustauschinitiatorpaket, ohne das Erfordernis, dass zusätzliche Pakete von dem Clientgerät empfangen werden, um den Schlüssel zu generieren;undSenden (314) eines Schlüsselaustauschantwortpakets, das den Schlüssel nicht enthält, an das Clientgerät. Système selon la revendication 57 ou 58, dans lequel le dispositif serveur est en outre configuré pour procéder aux étapes suivantes : recevoir (252), du dispositif client, un paquet initiateur d'échange de clé qui n'inclut pas la clé ;valider (254-270) le paquet initiateur d'échange de clé ;générer (302) la clé, en se basant au moins en partie sur des données présentes dans le paquet initiateur d'échange de clé, sans qu'il y ait nécessité de recevoir des paquets supplémentaires du dispositif client pour générer la clé ;etémettre (314), vers le dispositif client, un paquet de réponse d'échange de clé qui n'inclut pas la clé. The system as recited in claim 57 or 58, wherein the server device is further configured to: receive (252), from the client device, a key exchange initiator packet that does not include the key;validate (254-270) the key exchange initiator packet;generate (302), based at least in part on data in the key exchange initiator packet, the key without requiring any additional packets to be received from the client device in order to generate the key;andsend (314), to the client device, a key exchange response packet that does not include the key.
Independent claims59
125 paragraphs, as filed
<u style="single">TECHNICAL FIELD</u>
This invention relates to security and establishing secure network communications, and particularly to secure key exchange with mutual authentication.
<u style="single">BACKGROUND</u>
Traditionally, gaming systems with a dedicated console were standalone machines that accommodated a limited number of players (e.g., 2-4 players). Personal computer-based gaming grew in popularity in part due to the ability to play games online with many remote players over the Internet. Thus, one trend for dedicated gaming systems is to provide capabilities to facilitate gaming over a network, such as Internet-based online gaming.
Online gaming can be implemented in a centralized-server approach or a peer-to-peer approach. In the centralized-server approach, gaming systems connect to one or more centralized-servers and interact with one another via this centralized-server(s). In the peer-to-peer approach, gaming systems connect to one another and interact with one another directly. However, even in the peer-to-peer approach, a centralized server(s) may be employed to assist in the communication, such as an initial match-making service to help gaming systems find one another.
One problem encountered in employing such a centralized server(s) is to protect network traffic between the server(s) and the gaming systems from tampering or observation by other devices on the network. Gamers are notorious for developing creative cheating mechanisms, making the network traffic a ripe target for such users. Unfortunately, previous console-based gaming systems typically did not provide for secure communications with a centralized server(s). An additional problem is that any mechanism used to protect the network traffic should not require a significant amount of the gaming system's resources, as it should devote those resources to the games being played. The mechanism also should not require a significant amount of the centralized server's resources, in order to enable more gaming systems to be handled by fewer centralized server(s).
KRAWCZYK H: "SKEME: a versatile secure key exchange mechanism for Internet" NETWORK AND DISTRIBUTED SYSTEM SECURITY, 1,996, PROCEEDINGS OF THE SYMPOSIUM ON SAN DIEGO; CA; USA 22-23 FEB. 1996, LOS ALAMITOS, CA, USA, IEEE COMPUT. SOC, US, 22 February 1996 relates to a secure key exchange protocol for key management over Internet. The protocol supports key exchange based on key distribution centers and selectively provides perfect forward secrecy. There are three basic phases in the protocol: SHARE, EXCH and AUTH. In SHARE, the parties exchange half-keys encrypted under each other's public key and then combine half-keys via a hash function to produce a shared key. The next phase, EXCH, is used to exchange Diffie-Hellman exponents <i>g</i><sup><i>x</i></sup> mod <i>p</i> and <i>g</i><sup><i>y</i></sup> mod <i>p</i>. The authentication of this Diffie-Hellman exchange is accomplished in the following phase, AUTH, which uses the shared key from the SHARE phase to authenticate the Diffie-Hellman exponents. The session key, which is the key shared between the parties as the result of the protocol, is computed by the parties as a hash of the Diffie-Hellman exponent <i>g</i><sup><i>xy</i></sup> mod <i>p</i>. The value itself of the session key is not used in the key exchange protocol. For the sake of communication efficiency, the above phases can be combined into three messages.
EP 1 134 929 A relates to a secure password-only mutual network authentication protocol. Typically, the parties are a client computer and a server computer. The client chooses a random value for an index <i>x</i>. Then, the client computes a parameter <i>m</i> as <i>m</i> = <i>g</i><sup><i>x</i></sup><i>(H</i><sub>1</sub><i>(A,B,π))</i><sup><i>r</i></sup> mod <i>p</i>, where <i>A</i> is a unique identifier of the client, <i>B</i> is a unique identifier of the server, π is the client's password for this particular server, <i>H</i><sub>1</sub> is a random hash function, <i>H</i><sub>1</sub><i>(A,B,π)</i> is raised to the <i>r</i> power, and <i>g</i><sup><i>x</i></sup> is a Diffie-Hellman value. The client transmits the parameter <i>m</i> to the server. Upon receipt of the parameter <i>m</i>, the server tests the parameter value to ensure that the value is not 0 mod <i>p.</i> If the value is 0 mod <i>p</i>, the server terminates the protocol. Otherwise, the server chooses a random value for an index <i>y</i>. Then, the server computes a parameter µ as µ = <i>g</i><sup><i>y</i></sup>(<i>H</i><sub>2</sub>(<i>A,B,π</i>))<sup><i>r</i></sup> mod <i>p</i>. Next, the server extracts the Diffie-Hellman value <i>g</i><sup><i>x</i></sup> and computes the Diffie-Hellman shared secrete <i>g</i><sup><i>xy</i></sup>. Then, the server computes a session key <i>K</i> as <i>K</i> = <i>H</i><sub>3</sub><i>(A,B,m,µ,σ,π),</i> wherein σ is the Diffie-Hellman shared secret <i>g</i><sup><i>xy</i></sup> The server then transmits parameter µ to the client. Upon receipt of parameter µ, the client tests the parameter µ value to ensure that the value is not 0 mod <i>p</i>. If the value is 0 mod <i>p</i>, the client terminates the protocol. Otherwise, using the value of µ, the client extracts the Diffie-Hellman value <i>g</i><sup><i>y</i></sup> and computes the Diffie-Hellman shared secret <i>g</i><sup><i>xy</i></sup>. Then, the client computes the session key <i>K</i> as <i>K</i> = <i>H</i><sub>3</sub><i>(A,B,m,µ,σ,π).</i>
MOLVA R. "Internet security architecture" COMPUTER NETWORKS, ELSEVIER SCIENCE PUBLISHERS B.V., AMSTERDAM, NL, vol. 31, no. 8, 23 April 1999, pages 787-804 relates to an Internet security architecture in which a client initiates a connection with a server using a TLS protocol. The client and server run the protocol to negotiate security algorithms, authenticate each other, and establish shared cryptographic secrets. The outcome of the protocol comprises a master secret from which various encryption and MAC keys are derived. The protocol supports key generation with Diffie-Hellman: the server and client generate a shared secret key using the Diffe-Hellman algorithm and each other's public Diffie-Hellman component. First, the client and server send each other a message containing a random number and negotiate the set of attributes and algorithms that will apply to the current session. The server may also send its certificate containing its public Diffie-Hellman component. For the purpose of key exchange, the server may provide temporary public values signed under the secret key matching with the public key contained in its certificate. The temporary values may be a Diffie-Hellman public component. The server indicates the end of its response by sending a <i>ServerHelloDone</i> message. The client's first reply message <i>Certificate</i> may contain the client's public key certificate. Next is a key exchange message containing the client's public Diffie-Hellman component. At this point, the client and server can retrieve the shared pre-master key (PMK) by computing it as the Diffie-Hellman shared secret. The client may then send a <i>Certificate Verify</i> message including its signature on the hash value of PMK combined with all past messages exchanged in the current session. The handshake process terminates with the exchange of the <i>Finished</i> message that confirms that the key exchange and the authentication were successful.
WO 00/48358 describes an authentication method for authenticating communication between a first and a second party using a third party which is trusted by the first and second parties. The third party calculates the value of a first authentication output using a parameter of the first party and a second authentication output using the first authentication output. The second authentication output is sent to the second party. The first party calculates the first authentication output and sends the first authentication output to the second party. The second party calculates the second authentication output based on the first authentication output received from the first party and compares the calculated second authentication output with the second authentication output received from the trusted third party. Thereby, if the two second authentication outputs are the same, the first party is authenticated.
Summary
Secure key exchange with mutual authentication is described herein.
It is the object of the present invention to reduce latency as well as bandwidth overhead in establishing a key between a client device and a server device and mutually authenticating the devices.
This object is solved by the invention as defined in the independent claims. Embodiments are given in the dependent claims.
In accordance with certain embodiments, a key exchange with a device on the network is performed in a single roundtrip over the network, achieving both mutual authentication with the device and perfect forward secrecy.
In accordance with certain embodiments, a key exchange initiator packet that does not include the key to be established is sent to a device via a network. A key exchange response packet that also does not include the key is received from the device. The key exchange response packet is validated, and the key is generated, based at least in part on data in the key exchange response packet, without requiring any additional packets to be sent to the device or received from the device in order to generate the key.
In accordance with certain embodiments, a key exchange initiator packet that does not include a key to be established is received from a device via a network and is validated. The key is generated, based at least in part on data in the key exchange initiator packet, without requiring any additional packets to be received from the device in order to generate the key. Additionally, a key exchange response packet that does not include the key is sent to the device over the network.
<u style="single">BRIEF DESCRIPTION OF THE DRAWINGS</u>
The same numbers are used throughout the document to reference like components and/or features. <ul id="ul0001" list-style="none" compact="compact"><li>Fig. 1 is a block diagram illustrating an exemplary environment in which the secure key exchange with mutual authentication can be used.</li><li>Fig. 2 is a flowchart illustrating an exemplary process for performing the secure key exchange with mutual authentication between a client and server device.</li><li>Fig. 3 is a flowchart illustrating an exemplary process for generating and sending a key exchange initiator packet.</li><li>Fig. 4 is a flowchart illustrating an exemplary process for receiving and validating the key exchange initiator packet.</li><li>Fig. 5 is a flowchart illustrating an exemplary process for generating cryptographic keys, as well as generating and sending a key exchange response packet.</li><li>Fig. 6 is a flowchart illustrating an exemplary process for receiving and validating the key exchange response packet, and for generating cryptographic keys</li><li>Fig. 7 is a block diagram of an exemplary online gaming environment in which the secure key exchange with mutual authentication can be used.</li><li>Fig. 8 illustrates a general computer environment, which can be used to implement the techniques described herein.</li><li>Fig. 9 shows functional components of a game console in more detail, which can be used to implement the techniques described-herein.</li></ul>
<u style="single">DETAILED DESCRIPTION</u>
The following discussion is directed to a secure key exchange mechanism with mutual authentication for networked devices. The discussion assumes that the reader is familiar with basic cryptography principles, such as encryption, decryption, authentication, hashing, and digital signatures. For a basic introduction to cryptography, the reader is directed to a text written by Bruce Schneier and entitled, "Applied Cryptography: Protocols, Algorithms, and Source Code in C," published by John Wiley & Sons, copyright 1994 (second edition 1996).
Fig. 1 is a block diagram illustrating an exemplary environment 100 in which the secure key exchange with mutual authentication can be used. A client device 102 is coupled to a key distribution center 104 and a server device 106. The coupling between device 102 and key distribution center 104 can be any of a variety of couplings allowing communication between the device 102 and center 104. Similarly, the coupling between devices 102 and 106 can be any of a variety of couplings allowing communication between the device 102 and device 106. In one implementation, the couplings include the Internet, and may also optionally include one or more other networks (e.g., a local area network (LAN) and/or wide area network (WAN)).
Although only a single client device 102, a single center 104, and a single server device 106 are shown in Fig. 1, multiple such devices and centers may be included in environment 100. For example, multiple client devices 102 may communicate with one or more key distribution centers 104 and one or more server devices 106.
Communications between client device 102 and server device 106, as well as communications between client device 102 and key distribution center 104, can be in any of a variety of different packet formats. In one exemplary implementation, the communications are in the User Datagram Protocol (UDP) format.
Key distribution center 104 distributes keys and security tickets to client device 102 that may then be used in the secure key exchange with server device 106. Server device 106 provides services, or operates as a gateway to other devices (not shown in Fig. 1) that provide services, to client device 102.
Client device 102 can be any of a wide variety of devices. In some of the discussions herein, client device 102 is referred to as a game console. Such a game console may be a dedicated game console, or alternatively may include additional functionality. For example, the game console may include digital video recording functionality so that it can operate as a digital VCR, the game console may include channel tuning functionality so that it can tune and decode television signals (whether they be broadcast signals, cable signals, satellite signals, etc.), and so forth. Client device 102 may also be other types of computing devices, such as a desktop PC, a portable computer, a cellular telephone, an Internet appliance, a server computer, etc.
In environment 100, a secure key exchange with mutual authentication between client device 102 and server device 106 is desired. This allows devices 102 and 106 to authenticate one another, and further allows one or more cryptographic keys to be established and used as a basis for devices 102 and 106 to securely communicate with one another over an insecure network (e.g., the Internet).
In order to perform the secure key exchange with mutual authentication, a security ticket is obtained from key distribution center 104. In one exemplary implementation, the security ticket is a Kerberos ticket obtained by client device 102 using a Kerberos-like authentication protocol that authenticates, in a single ticket, the identities of the particular client device 102 and user identities of one or more users of the client device 102. Client device 102 obtains the Kerberos ticket as follows.
For discussion purposes, assume client device 102 is a game console and further assume that there are four users of the game console. Each user is given an identity U<sub>1</sub>, U<sub>2</sub>, U<sub>3</sub>, and U<sub>4</sub> and is assigned a user key K<sub>1</sub>, K<sub>2</sub>, K<sub>3</sub>, and K<sub>4</sub>. The game console is also assigned its own identity C and a game console key K<sub>C</sub>. Additionally, a game title being played on the game console, such as a game disc, is assigned a separate identity G. In a similar manner, server device 106 is assigned its own identity A and a key K<sub>A</sub>. It should be noted that the authentication described herein is dependent in part on the keys K<sub>1</sub>, K<sub>2</sub>, K<sub>3</sub>, and K<sub>4</sub>, K<sub>C</sub>, and key K<sub>A</sub>. Therefore, care should be taken in selecting and storing these keys so that only the entities that they are assigned to are able to use them.
The game console generates validated user identities based on the user identities U<sub>1</sub>, U<sub>2</sub>, U<sub>3</sub>, and U<sub>4</sub> and user keys K<sub>1</sub>, K<sub>2</sub>, K<sub>3</sub>, and K<sub>4</sub>. More specifically, the validated user identities include the user identities and values derived from the user keys. The validated user identities will be submitted with a request to the key distribution center 104 and used to demonstrate to the key distribution center that the game console has knowledge of the user key and hence, implicitly authenticates the users.
In order to simplify the description of the way various messages and keys are computed, we will introduce the following notation:
H = H<sub>Kx</sub>(M) : H is a keyed one way hash (MAC) of the message M using the key K<sub>X</sub>. Any MAC algorithm can be used. One example of such a MAC algorithm is the HMAC algorithm according to IETF RFC 2104.
EncryptedM = E<sub>Kx</sub>(M) : EncryptedM is the encrypted form of message M using the key K<sub>X</sub>. Any encryption algorithm can be used. Examples of such encryption algorithms include DES, triple DES, and RC4-HMAC.
One way to generate the key derivative value is to compute a cryptographic hash of the user key using the key of the game console. For user U<sub>1</sub> with key K<sub>1</sub>, a hash H<sub>1</sub> is computed as follows : <maths id="math0001" num=""><math display="block"><mrow><msub><mi mathvariant="normal">H</mi><mn>1</mn></msub><mo>=</mo><msub><mi mathvariant="normal">H</mi><mrow><mi mathvariant="normal">K</mi><mi mathvariant="normal">c</mi></mrow></msub><mrow><mo>(</mo><mrow><msub><mi mathvariant="normal">K</mi><mn>1</mn></msub></mrow><mo>)</mo></mrow></mrow></math><img file="EP1372292B1_D0001.tif" /></maths>
The hash H<sub>1</sub> forms the key derivative value. Another way is to encrypt the current time using the user key K<sub>1</sub>, as follows: <maths id="math0002" num=""><math display="block"><mrow><msub><mi mathvariant="normal">H</mi><mn>1</mn></msub><mo>=</mo><msub><mi mathvariant="normal">E</mi><mrow><msub><mi mathvariant="normal">K</mi><mn>1</mn></msub></mrow></msub><mrow><mo>(</mo><mi mathvariant="normal">T</mi><mo>)</mo></mrow></mrow></math><img file="EP1372292B1_D0002.tif" /></maths>
Once again, the resulting value H<sub>1</sub> forms the key derivative value. The validated user identity is the combination of the user identity U<sub>1</sub> and the corresponding key derivative value H<sub>1</sub>: <maths id="math0003" num=""><math display="block"><mrow><mi mathvariant="normal">Validated User Identity</mi><mo>=</mo><mrow><mo>(</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>)</mo><mn>.</mn></mrow></mrow></math><img file="EP1372292B1_D0003.tif" /></maths>
The game console constructs a request containing the game console identity C, the game title identity G, the server identity A of server device 106, and multiple validated user identities (U<sub>1</sub>, H<sub>1</sub>), (U<sub>2</sub>, H<sub>2</sub>), (U<sub>3</sub>, H<sub>3</sub>), and (U<sub>4</sub>, H<sub>4</sub>). The request has the following identity string: <maths id="math0004" num=""><math display="block"><mrow><mi mathvariant="normal">Request</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">C</mi><mo>,</mo><mi mathvariant="normal">G</mi><mo>,</mo><mi mathvariant="normal">A</mi><mo>,</mo><mrow><mo>(</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>)</mo><mo>,</mo></mrow><mo>(</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>)</mo><mo>,</mo><mo>(</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>3</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><mn>3</mn></mrow></msub><mo>)</mo><mo>,</mo><mo>(</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>4</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><mn>4</mn></mrow></msub><mo>)</mo><mo>]</mo></mrow></mrow></math><img file="EP1372292B1_D0004.tif" /></maths>
Additionally, the request may include a version of the authentication protocol and a random nonce generated by the game console to resist replay attacks. The request may further include a checksum value to be used to verify receipt of the entire identity string. The game console submits the request over the coupling to the key distribution center 104.
Key distribution center 104 evaluates the request as well as the identities contained in the request. Key distribution center 104 generates a random session key to be used for server device 106. In this example, the key distribution center generates a random session key K<sub>CA</sub> to be used by game console 102 in communicating with server device 106. This random session key K<sub>CA</sub> is also referred to herein as the Kerberos session key.
The key distribution center generates a ticket that will subsequently be presented by the game console to server device 106. There is one ticket issued for server device 106, but the ticket is effective for multiple users. The ticket contains the identity string submitted in the request. It also includes a time T<sub>G</sub> that the ticket is generated, a time T<sub>L</sub> identifying the time length before expiration of the ticket, and the randomly generated Kerberos session key K<sub>CA</sub> for server device 106. The ticket may also optionally include a service map S<sub>m</sub> identifying the service(s) and/or service devices available via server device 106 that the users of the game console are permitted to access. The key distribution center maintains a record, or accesses another device or center that maintains a record, of which users are permitted to access which services (e.g., which users have paid a premium to access one or more premium services). The ticket contents are encrypted via a symmetric key cipher (e.g., Triple DES) that utilizes the server device's key K<sub>A</sub>, as follows: <maths id="math0005" num=""><math display="block"><mrow><mi mathvariant="normal">Ticket</mi><mo>=</mo><msub><mrow><mi mathvariant="normal">E</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">A</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><msub><mrow><mi mathvariant="normal">T</mi></mrow><mrow><mi mathvariant="normal">G</mi></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">T</mi></mrow><mrow><mi mathvariant="normal">L</mi></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">CA</mi></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">S</mi></mrow><mrow><mi mathvariant="normal">m</mi></mrow></msub><mo>,</mo><mi mathvariant="normal">C</mi><mo>,</mo><mi mathvariant="normal">G</mi><mo>,</mo><mi mathvariant="normal">A</mi><mo>,</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>3</mn></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">U</mi></mrow><mrow><mn>4</mn></mrow></msub><mo>]</mo></mrow></mrow></math><img file="EP1372292B1_D0005.tif" /></maths>
Notice that the ticket does not carry the corresponding key derivative values H<sub>i</sub>. Once the key distribution center reads the key derivative values and believes the game console knows the user keys, the key distribution center places the identities of the users within the issued tickets. Server device 106 will subsequently believe in whatever the ticket tells it and hence does not need to see the key derivative values H<sub>i</sub>.
The key distribution center returns the generated ticket to the game console. Since the game console does not know the server device's key K<sub>A</sub>, the game console cannot open the ticket and alter the contents. The key distribution center also returns a session security key in an attached encrypted message. The session key message contains the ticket generation time T<sub>G</sub>, the ticket expiration length T<sub>L</sub>, and the session security key K<sub>CA</sub>, and all contents are encrypted using the game console's key K<sub>C</sub>, as follows: <maths id="math0006" num=""><math display="block"><mrow><mi mathvariant="normal">Session Key Mesage</mi><mo>=</mo><msub><mrow><mi mathvariant="normal">E</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">C</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><msub><mrow><mi mathvariant="normal">T</mi></mrow><mrow><mi mathvariant="normal">G</mi></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">T</mi></mrow><mrow><mi mathvariant="normal">L</mi></mrow></msub><mo>,</mo><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">C</mi></mrow><mrow><mi mathvariant="normal">A</mi></mrow></msub></mrow></msub><mo>]</mo></mrow></mrow></math><img file="EP1372292B1_D0006.tif" /></maths>
Since the session key message is encrypted with the game console's key K<sub>C</sub>, the game console is able to open the session key message and recover the session time parameters and session keys.
Referring still to Fig. 1, once client device 102 (e.g., a game console) receives the ticket from key distribution center 104, client device 102 can use the ticket to perform the secure key exchange with mutual authentication with server device 106. The secure key exchange with mutual authentication allows client device 102 and server device 106 to authenticate each other - client device 102 can verify that server device 106 is the server device it claims to be, and server device 106 can verify that client device 102 is the client device it claims to be. Further, each of devices 102 and 106 can verify that the other has knowledge of a particular key.
The key exchange also allows a new secret to be derived by the two devices 102 and 106 that is shared between those two devices but is not transmitted between the two devices and cannot be deduced by a third party (e.g., another device on the same network as devices 102 and 106) based on the roundtrip traffic between the devices. In one exemplary implementation, the devices use Diffie-Hellman exponentiation operations to derive the new secret. Additional information regarding Diffie-Hellman can be found in W. Diffie and M. E. Hellman, "New directions in Cryptography", IEEE Transactions on Information Theory v. IT-12, n. 6 Nov 1976, pp. 644-654. Communications between devices 102 and 106 may be protected by encrypting the communications, or alternatively they may be performed without encryption.
Fig. 2 is a flowchart illustrating an exemplary process 150 for performing the secure key exchange with mutual authentication between a client and server device. The process of Fig. 2 is implemented by both a client device and a server device, with operations performed by the client device being shown on the lefthand side of Fig. 2 and operations performed by the server device being shown on the right-hand side of Fig. 2. The process of Fig. 2 may be performed in software, firmware, hardware, or combinations thereof. The process of Fig. 2 is discussed with reference to components of Fig. 1. Additionally, although illustrated as a process between a client and server device, the process may be performed by any two devices desiring to establish a secure communication channel between each other (e.g., the process may be performed by two client devices or two server devices).
Initially, client device 102 generates a key exchange initiator packet and sends the packet to server device 106 (act 152). Server device 106 receives the key exchange initiator packet and validates the received packet (act 154). Once the packet is validated, server device 106 generates the cryptographic keys to be used to secure communications with client device 102 (act 156). In an exemplary implementation, these cryptographic keys are security association keys used to secure point-to-point communication between two devices.
Server device 106 then generates a key exchange response packet and sends the generated packet to client device 102 (act 158). Client device 102 receives the key exchange response packet and validates the received packet (act 160). Once the packet is validated, client device 102 generates the cryptographic keys to be used to secure communications with server device 106 (act 162). The cryptographic keys are the same as those generated by server device 106 in act 156. Thus, both client device 102 and server device 106 end up with the same cryptographic keys, but do so without actually transmitting the keys between them.
It should be noted that process 150 maintains perfect forward secrecy. Perfect forward secrecy refers to the inability of a third party to deduce a new secret even though the third party may have knowledge of a previous secret. Thus, for example, if a third party (e.g., another device) were to discover the session security key K<sub>CA</sub>, or a previously established key between client device 102 and server device 106, then the third party would not be able to deduce the new key generated from the secure key exchange process 150. This is, for example, because the third party would not have knowledge of the Diffie-Hellman values (discussed in more detail below) being used in process 150.
Additionally, it can be seen that only two packets need be communicated between client device 102 and server device 106 - the key exchange initiator packet and the key exchange response packet. Thus, a single roundtrip (a packet from client device 102 to server device 106, and a return packet from server device 106 to client device 102) is all that is needed to perform the secure key exchange with mutual authentication. This single roundtrip, by reducing the number of packets used, serves to reduce latency as well as reduce bandwidth overhead in establishing the key(s) and mutually authenticating the devices.
Process 150 is discussed in more detail below with reference to Figs. 3-6. Fig. 3 illustrates act 152 in additional detail, Fig. 4 illustrates act 154 in additional detail, Fig. 5 illustrates acts 156 and 158 in additional detail, and Fig. 6 illustrates acts 160 and 162 in additional detail.
Fig. 3 is a flowchart illustrating an exemplary process 200 for generating and sending a key exchange initiator packet. Fig. 3 illustrates act 152 of Fig. 2 in additional detail. The process of Fig. 3 is implemented by a client device, and may be performed in software, firmware, hardware, or combinations thereof. The process of Fig. 3 is discussed with reference to components of Fig. 1.
Initially, client device 102 generates a key exchange initiator message (act 202). The key exchange initiator message includes a random (or pseudo-random) value generated by client device 102 referred to as NonceInit, and also includes the Diffie-Hellman (g<sup>X</sup> mod N) value, where X is also a random (or pseudo-random) number generated by client device 102, and a Security Parameters Index value (SPI<sub>1</sub>) that will be used to uniquely define this client/server communication channel once the key exchange process is complete, as follows:<maths id="math0007" num=""><math display="block"><mrow><mi mathvariant="normal">InitMess</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">NonceInit</mi><mo>,</mo><msub><mrow><mi mathvariant="normal">SPI</mi></mrow><mrow><mn>1</mn></mrow></msub><mo>,</mo><mrow><mo>(</mo><msup><mrow><mi mathvariant="normal">g</mi></mrow><mrow><mi mathvariant="normal">x</mi></mrow></msup><mi mathvariant="normal"> mod N</mi><mo>)</mo></mrow><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0007.tif" /></maths> Client device 102 then computes a digest of the key exchange initiator message using the Kerberos session key K<sub>CA</sub> received from key distribution center 104 (act 204). The digest is generated as follows:<maths id="math0008" num=""><math display="block"><mrow><mi mathvariant="normal">HashInitMess</mi><mo>=</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">CA</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><mi mathvariant="normal">InitMess</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0008.tif" /></maths>
Alternatively, a generic one way hash (that is not keyed) could also be used in the computation of HashlnitMess. The security of the key exchange does not rely on whether this hash is keyed or not.
Client device 102 then generates a Kerberos authenticator (act 206). The Kerberos authenticator includes a timestamp (e.g., the current time of client device 102) and the HashInitMess digest computed in act 204. The timestamp is incremented by client device 102 every time device 102 generates a Kerberos authenticator, thereby allowing server device 106 to better detect replay attacks. Client device 102 encrypts the Kerberos authenticator (act 208) using the Kerberos session key K<sub>CA</sub>, as follows:<maths id="math0009" num=""><math display="block"><mrow><msub><mrow><mi mathvariant="normal">Auth</mi></mrow><mrow><mi mathvariant="normal">T</mi></mrow></msub><mo>=</mo><msub><mrow><mi mathvariant="normal">E</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">CA</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><mi mathvariant="normal">Time</mi><mo>,</mo><mi mathvariant="normal">HashInitMess</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0009.tif" /></maths>
Client device 102 then generates a key exchange initiator packet (act 210). The key exchange initiator packet includes the key exchange initiator message InitMess, the encrypted Kerberos authenticator Auth<sub>T</sub>, and the Kerberos ticket for server device 106 received from key distribution center 104. As discussed above, the Kerberos ticket includes at least the Kerberos session key (K<sub>CA</sub>), a range of time during which the ticket is valid, and a unique number that identifies client device 102, all encrypted using a secret key shared by key distribution center 104 and server device 106. The SPI value identifies the security association or communication channel between client device 102 and server device 106. The SPI<sub>1</sub> value is associated with communications from server device 106 to client device 102, and an SPI<sub>2</sub> value is associated with communications from client device 102 to server device 106. The key exchange initiator packet is thus as follows:<maths id="math0010" num=""><math display="block"><mrow><mi mathvariant="normal">InitPacket</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">InitMess</mi><mo>,</mo><msub><mrow><mi mathvariant="normal">Auth</mi></mrow><mrow><mi mathvariant="normal">T</mi></mrow></msub><mo>,</mo><mi mathvariant="normal">Ticket</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0010.tif" /></maths>
It should be noted that the combination of the authenticator and the ticket is referred to as the AP Request in Kerberos terminology. Client device 102 then sends the key exchange initiator packet to server device 106 (act 212).
Fig. 4 is a flowchart illustrating an exemplary process 250 for receiving and validating the key exchange initiator packet. Fig. 4 illustrates act 154 of Fig. 2 in additional detail. The process of Fig. 4 is implemented by a server device, and may be performed in software, firmware, hardware, or combinations thereof. The process of Fig. 4 is discussed with reference to components of Fig. 1.
Initially, server device 106 receives the key exchange initiator packet InitPacket (act 252). In one implementation, server device 106 expects all key exchange initiator packets to be in a predetermined format and of a predetermined size. Any key exchange initiator packet not in this predetermined format or of the predetermined size is ignored by server device 106. Alternatively, server device 106 may allow key exchange initiator packets to be in a variety of formats and/or of a variety of sizes.
Once the key exchange initiator packet is received, server device 106 decrypts the Kerberos ticket (act 254), using the key that server device 106 shares with key distribution center 104. Server device 106 then checks the decrypted ticket to determine whether ticket is stale (act 256). If the current time is included in the range of times during which the ticket is valid (as identified in the ticket), then the ticket is not stale. However, if the current time is not included in the range of times during which the ticket is valid, then the ticket is stale. If the Kerberos ticket is stale, then the key exchange process fails (act 258), resulting in no security association being established between client device 102 and server device 106. As part of act 258, server device 106 may notify client device 102 that the key exchange process has failed, or alternatively server device 106 may just delete the received InitPacket and not notify client device 102.
However, if the Kerberos ticket is not stale, then server device 106 decrypts the Kerberos authenticator Auth<sub>T</sub> (act 260), using the Kerberos session key K<sub>CA</sub> recovered from the decrypted Kerberos ticket. Server device 106 then accesses the timestamp Time in the Kerberos authenticator and checks whether the timestamp is acceptable (act 262). The timestamp is acceptable if it is not too far out of synchronization with the current time on server device 106. In an exemplary implementation, if the timestamp is within a threshold amount of time (e.g., 5 minutes, which is the recommended Kerberos time skew) from the current time on server device 106, then the timestamp is acceptable. If the timestamp is not acceptable, then the key exchange process fails (act 258).
If the timestamp is acceptable, then server device 106 computes the digest of the key exchange message InitMess (act 264). Server device 106 computes the digest in the same manner as client device 102 computed the digest in act 204 of Fig. 3. Server device 106 then checks whether the digest value it computed in act 264 matches (is equal to) the digest value received from client device 102 as part of the encrypted Kerberos authenticator Auth<sub>T</sub> (act 266). If the two digest values are the same then it serves to confirm that the key exchange message InitMess has not been altered between client device 102 and server device 106 (e.g., the key exchange message InitMess has not been tampered with). If the two digest values do not match (in other words, if the two digest values are not equal), then the key exchange process fails (act 258).
However, if the received and computed digest values match, then server device 106 checks whether the Kerberos authenticator has been replayed (act 268). Server device 106 keeps a record of the timestamps from each Kerberos authenticator it receives from each client device C (which is revealed in the Kerberos ticket). If server device 106 receives a Kerberos authenticator with a timestamp Time that is not newer than the last timestamp recorded by server device 106, then server device 106 knows that the Kerberos authenticator has been replayed. If the Kerberos authenticator has been replayed, then the key exchange initiator packet is not valid and the key exchange process fails (act 258). However, if the Kerberos authenticator has not been replayed, then the key exchange initiator packet has been validated by server device 106 (act 270). If all these tests are satisfied and the key exchange initiator packet is validated in act 270, then server device 106 has authenticated client device 102 as really being the device it claims to be - server device 106 has verified that client device 102 has knowledge of the Kerberos session key K<sub>CA</sub> and has (indirectly through trust of the key distribution center) also verified that the client has knowledge of K<sub>C</sub>.
Fig. 5 is a flowchart illustrating an exemplary process 300 for generating cryptographic keys, as well as generating and sending a key exchange response packet. Fig. 5 illustrates acts 156 and 158 of Fig. 2 in additional detail. The process of Fig. 5 is implemented by a server device, and may be performed in software, firmware, hardware, or combinations thereof. The process of Fig. 5 is discussed with reference to components of Fig. 1.
Initially, server device 106 generates cryptographic keys based on the key exchange initiator message InitMess, the Kerberos session key K<sub>CA</sub>, the nonce from client device 102 (Noncelnit), and a nonce generated by server device 106 (NonceResp) (act 302). Server device 106 generates a random (or pseudo-random) number Y, as well as a random value referred to as NonceResp. Server device 106 further computes the Diffie-Hellman value (g<sup>XY</sup> mod N) as well as the Diffie-Hellman value (g<sup>Y</sup> mod N). At this point, server device 106 has enough data to compute security association keys. The security association keys are used to secure point-to-point communication between two consoles. In an exemplary implementation, server device 106 uses the two Diffie-Hellman values ((g<sup>X</sup> mod N) and (Y)) to compute the function (g<sup>XY</sup> mod N). Server device 106 can then compute various digests using various algorithms based on the values NonceInit, NonceResp, (g<sup>XY</sup> mod N), and the Kerberos session key K<sub>CA</sub>. These digests are then used to form the security association keys. In one exemplary implementation, server device 106 computes four different digests using NonceInit, NonceResp, and (g<sup>XY</sup> mod N) as input, as well as the Kerberos session key K<sub>CA</sub>, to be used as the security keys for authenticating and encrypting/decrypting all secure packets in both directions (one key for authentication, one key for encryption, times two for each direction totals four).
Server device 106 then generates a key exchange response message (act 304). The key exchange response message contains Noncelnit, the timestamp Time received from client device 102, NonceResp, the Diffie-Hellman value (g<sup>Y</sup> mod N), and an SPI<sub>2</sub> value as follows:<maths id="math0011" num=""><math display="block"><mrow><mi mathvariant="normal">RespMess</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">NonceInit</mi><mo>,</mo><msub><mrow><mi mathvariant="normal">SPI</mi></mrow><mrow><mn>2</mn></mrow></msub><mo>,</mo><mi mathvariant="normal">NonceResp</mi><mo>,</mo><mrow><mo>(</mo><msup><mrow><mi mathvariant="normal">g</mi></mrow><mrow><mi mathvariant="normal">x</mi></mrow></msup><mi mathvariant="normal"> mod N</mi><mo>)</mo></mrow><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0011.tif" /></maths>
The SPI<sub>2</sub> value is generated by server device 106 and is associated with all communications from client device 102 to server device 106. Server device 106 then computes a digest of the response message using the Kerberos session key (act 306) and a hash function H, as follows:<maths id="math0012" num=""><math display="block"><mrow><mi mathvariant="normal">HashRespMess</mi><mo>=</mo><msub><mrow><mi mathvariant="normal">H</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">CA</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><mi mathvariant="normal">RespMess</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0012.tif" /></maths> The hash function H in act 306 may be the same as the hash function H in act 204, or alternatively a different hash function.
Server device 106 then generates a Kerberos reply message including both the computed hash digest and the timestamp Time from the Kerberos authenticator (act 308), as follows: <maths id="math0013" num=""><math display="block"><mrow><mi mathvariant="normal">ReplyMess</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">HashRespMess</mi><mo>,</mo><mi mathvariant="normal">Time</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0013.tif" /></maths> Server device 106 then encrypts the Kerberos reply message ReplyMess using an encryption algorithm E (e.g., Triple DES) and the Kerberos session key K<sub>CA</sub> (act 310), as follows:<maths id="math0014" num=""><math display="block"><mrow><mi mathvariant="normal">EncryptedReplyMess</mi><mo>=</mo><msub><mrow><mi mathvariant="normal">E</mi></mrow><mrow><msub><mrow><mi mathvariant="normal">K</mi></mrow><mrow><mi mathvariant="normal">CA</mi></mrow></msub></mrow></msub><mrow><mo>[</mo><mi mathvariant="normal">ReplyMess</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0014.tif" /></maths> The encryption algorithm E in act 308 may be the same encryption algorithm as used in act 206 of Fig. 3, or alternatively a different encryption algorithm.
Server device 106 then generates a key exchange response packet that includes the key exchange response message RespMess, and the encrypted Kerberos reply message EncryptedReplyMess, as follows:<maths id="math0015" num=""><math display="block"><mrow><mi mathvariant="normal">RespPacket</mi><mo>=</mo><mrow><mo>[</mo><mi mathvariant="normal">RespMess</mi><mo>,</mo><mi mathvariant="normal">EncryptedReplyMess</mi><mo>]</mo></mrow><mn>.</mn></mrow></math><img file="EP1372292B1_D0015.tif" /></maths> Server device 106 then sends the key exchange response packet RespPacket to client device 102 (act 314).
Fig. 6 is a flowchart illustrating an exemplary process 350 for receiving and validating the key exchange response packet, and for generating cryptographic keys. Fig. 6 illustrates acts 160 and 162 of Fig. 2 in additional detail. The process of Fig. 6 is implemented by a client device, and may be performed in software, firmware, hardware, or combinations thereof. The process of Fig. 6 is discussed with reference to components of Fig. 1.
Initially, client device 102 receives the key exchange response packet RespPacket from server device 106 (act 352). Client device 102 decrypts the Kerberos reply message EncryptedReplyMess using the Kerberos session key K<sub>CA</sub> (act 354). Client device 102 then checks whether the timestamp Time in the decrypted reply message matches the timestamp Time that client device 102 sent to server device 106 (act 356). If the timestamps match (in other words, if the timestamps are equal), then the matching confirms that server device 106 was able to decrypt the Kerberos ticket (thus proving knowledge of K<sub>A</sub>) and the Kerberos authenticator (and thus has knowledge of the Kerberos session key K<sub>CA</sub>), and therefore really is the server device 106 that it claims to be. Server device 106 is thus authenticated to client device 102 if these timestamp values match, and at this point, full mutual authentication has been achieved (the server has proven to the client knowledge of K<sub>A</sub>, and the client has proven to the server knowledge of K<sub>C</sub>).
If the timestamp values do not match, then the key exchange process fails (act 358), analogous to act 258 of Fig. 4. However, if the timestamp values do match, then server device 106 is authenticated to client device 102 and client device 102 proceeds to compute the digest of the key exchange response message RespMess using the Kerberos session key K<sub>CA</sub> (act 360). Client device 102 computes the digest in the same manner as server device 106 computed the digest in act 306 of Fig. 5. Client device 102 then checks whether the digest value it computed in act 360 matches (is equal to) the digest value received from server device 106 as part of the encrypted Kerberos reply message EncryptedReplyMess (act 362). If the two digest values are the same then it serves to confirm that the key exchange response message RespMess has not been altered between server device 106 and client device 102 (e.g., the key exchange response message RespMess has not been tampered with). If the two digest values do not match (in other words, if the two digest values are not equal), then the key exchange process fails (act 358).
However, if the two digest values do match, then client device 102 generates the cryptographic keys based on the Kerberos session key K<sub>CA</sub>, Noncelnit, NonceResp, and g<sup>XY</sup> mod N (act 364). Analogous to the discussion above regarding act 302 of Fig. 5, client device 102 now has enough data to calculate the Diffie-Hellman value (g<sup>XY</sup> mod N), and to compute the security association keys. The security association keys computed in act 364 by client device 102 are the same as, and are calculated in the same manner as, those calculated by server device 104 in act 302 of Fig. 5. Note that g<sup>XY</sup> mod N is computed from g<sup>Y</sup> mod N and X on the client device.
Once client device 102 has the security association keys, device 102 is free to transmit any packets that have been waiting for key exchange to complete. Server device 104, however, is not free to do so even though it has the same set of keys because it cannot be sure that its response message RespMess was not lost. Server device 104 waits until it receives a packet authenticated with the computed security association key from client device 102, or optionally until it receives an Acknowledge packet (AckPack) from client device 102.
In the common case, client device 102 sends a packet to server device 106 and thus, the key exchange process consists of just two packets - InitPacket and RespPacket. Alternatively, should client device 102 not have a packet to send, client device 102 will send an artificial acknowledge packet (denoted as "AckPack"). This packet differs from the two other key exchange packets in that the AckPack is hashed using the computed security association key instead of the Kerberos session key K<sub>CA</sub>.
From this point forward, the two devices 102 and 104 use the security association keys to secure communications. All network packets that need to be transmitted to the other device are authenticated after optionally being encrypted, with the receiving device verifying the authentication data before decrypting the packet contents. Any of device 102 and 104 can disregard key-exchange packets from the other side containing the same Nonces.
Fig. 7 is a block diagram of an exemplary online gaming environment 400. Multiple game consoles 402(1), 402(2), ..., 402(n) are coupled to a security gateway 404 via a network 406. Network 406 represents any one or more of a variety of conventional data communications networks. Network 406 will typically include packet switched networks, but may also include circuit switched networks. Network 406 can include wire and/or wireless portions. In one exemplary implementation, network 406 includes the Internet and may optionally include one or more local area networks (LANs) and/or wide area networks (WANs). At least a part of network 406 is a public network, which refers to a network that is publicly-accessible. Virtually anyone can access the public network.
In some situations, network 406 includes a LAN (e.g., a home network), with a routing device situated between game console 402 and security gateway 404. This routing device may perform network address translation (NAT), allowing the multiple devices on the LAN to share the same IP address on the Internet, and also operating as a firewall to protect the device(s) on the LAN from access by malicious or mischievous users via the Internet.
Security gateway 404 operates as a gateway between public network 406 and a private network 408. Private network 408 can be any of a wide variety of conventional networks, such as a local area network. Private network 408, as well as other devices discussed in more detail below, is within a data center 410 that operates as a secure zone. Data center 410 is made up of trusted devices communicating via trusted communications. Thus, encryption and authentication within secure zone 410 is not necessary. The private nature of network 408 refers to the restricted accessibility of network 408 - access to network 408 is restricted to only certain individuals (e.g., restricted by the owner or operator of data center 410).
Security gateway 404 is a cluster of one or more security gateway computing devices. These security gateway computing devices collectively implement security gateway 404. Security gateway 404 may optionally include one or more conventional load balancing devices that operate to direct requests to be handled by the security gateway computing devices to appropriate ones of those computing devices. This directing or load balancing is performed in a manner that attempts to balance the load on the various security gateway computing devices approximately equally (or alternatively in accordance with some other criteria).
Also within data center 410 are: one or more monitoring servers 412; one or more presence and notification front doors 414, one or more presence servers 416, and one or more notification servers 418 (collectively implementing a presence and notification service); one or more match front doors 420 and one or more match servers 422 (collectively implementing a match service); and one or more statistics front doors 424 and one or more statistics servers 426 (collectively implementing a statistics service). The servers 416, 418, 422, and 426 provide services to game consoles 402, and thus can be referred to as service devices. Other service devices may also be included in addition to, and/or in place of, one or more of the servers 416, 418, 422, and 426. Additionally, although only one data center is shown in Fig. 7, alternatively multiple data centers may exist with which game consoles 402 can communicate. These data centers may operate independently, or alternatively may operate collectively (e.g., to make one large data center available to game consoles 102).
Game consoles 402 are situated remotely from data center 410, and access data center 410 via network 406. A game console 402 desiring to communicate with one or more devices in the data center establishes a secure communication channel between the console 402 and security gateway 404. Game console 402 and security gateway 404 encrypt and authenticate data packets being passed back and forth, thereby allowing the data packets to be securely transmitted between them without being understood by any other device that may capture or copy the data packets without breaking the encryption. Each data packet communicated from game console 402 to security gateway 404, or from security gateway 404 to game console 402 can have data embedded therein. This embedded data is referred to as the content or data content of the packet. Additional information may also be inherently included in the packet based on the packet type.
The secure communication channel between a console 402 and security gateway 404 is established using the secure key exchange with mutual authentication described herein. Console 402 authenticates itself and the current user(s) of console 402 to a key distribution center 428 and obtains, from key distribution center 428, a security ticket. Console 402 then uses this security ticket to establish the secure communication channel with security gateway 404. In establishing the secure communication channel with security gateway 404, the game console 402 and security gateway 404 authenticate themselves to one another and establish one or more session security keys that are known only to that particular game console 402 and the security gateway 404. This session security key(s) is used to encrypt data transferred between the game console 402 and the security gateway cluster 404, so no other devices (including other game consoles 402) can read the data. The session security key(s) is also used to authenticate a data packet as being from the security gateway 404 or game console 402 that the data packet alleges to be from. Thus, using such session security keys, secure communication channels can be established between the security gateway 404 and the various game consoles 402.
Once the secure communication channel is established between a game console 402 and the security gateway 404, encrypted data packets can be securely transmitted between the two. When the game console 402 desires to send data to a particular service device in data center 410, the game console 402 encrypts the data and sends it to security gateway 404 requesting that it be forwarded to the particular service device(s) targeted by the data packet. Security gateway 404 receives the data packet and, after authenticating and decrypting the data packet, encapsulates the data content of the packet into another message to be sent to the appropriate service via private network 408. Security gateway 404 determines the appropriate service for the message based on the requested service(s) targeted by the data packet.
Although discussed herein as primarily communicating encrypted data packets between security gateway 404 and a game console 402, alternatively some data packets may be partially encrypted (some portions of the data packets are encrypted while other portions are not encrypted). Which portions of the data packets are encrypted and which are not can vary based on the desires of the designers of data center 410 and/or game consoles 402. For example, the designers may choose to allow voice data to be communicated among consoles 402 so that users of the consoles 402 can talk to one another - the designers may further choose to allow the voice data to be unencrypted while any other data in the packets is encrypted. Additionally, in another alternative, some data packets may have no portions that are encrypted (that is, the entire data packet is unencrypted). It should be noted that, even if a data packet is unencrypted or only partially encrypted, all of the data packet is still authenticated.
Similarly, when a service device in data center 410 desires to communicate data to a game console 402, the data center sends a message to security gateway 404, via private network 408, including the data content to be sent to the game console 402 as well as an indication of the particular game console 402 to which the data content is to be sent. Security gateway 404 embeds the data content into a data packet, and then encrypts the data packet so it can only be decrypted by the particular game console 402 and also authenticates the data packet as being from the security gateway 404.
Each security gateway device in security gateway 404 is responsible for the secure communication channel with typically one or more game consoles 402, and thus each security gateway device can be viewed as being responsible for managing or handling one or more game consoles. The various security gateway devices may be in communication with each other and communicate messages to one another. For example, a security gateway device that needs to send a data packet to a game console that it is not responsible for managing may send a message to all the other security gateway devices with the data to be sent to that game console. This message is received by the security gateway device that is responsible for managing that game console and sends the appropriate data to that game console. Alternatively, the security gateway devices may be aware of which game consoles are being handled by which security gateway devices - this may be explicit, such as each security gateway device maintaining a table of game consoles handled by the other security gateway devices, or alternatively implicit, such as determining which security gateway device is responsible for a particular game console based on an identifier of the game console.
Monitoring server(s) 412 operate to inform devices in data center 410 of an unavailable game console 402 or an unavailable security gateway device of security gateway 404. Game consoles 402 can become unavailable for a variety of different reasons, such as a hardware or software failure, the console being powered-down without logging out of data center 410, the network connection cable to console 402 being disconnected from console 402, other network problems (e.g., the LAN that the console 402 is on malfunctioning), etc. Similarly, a security gateway device of security gateway 404 can become unavailable for a variety of different reasons, such as hardware or software failure, the device being powered-down, the network connection cable to the device being disconnected from the device, other network problems, etc.
Each of the security gateway devices in security gateway 404 is monitored by one or more monitoring servers 412, which detect when one of the security gateway devices becomes unavailable. In the event a security gateway device becomes unavailable, monitoring server 412 sends a message to each of the other devices in data center 410 (servers, front doors, etc.) that the security gateway device is no longer available. Each of the other devices can operate based on this information as it sees fit (e.g., it may assume that particular game consoles being managed by the security gateway device are no longer in communication with data center 410 and perform various clean-up operations accordingly). Alternatively, only certain devices may receive such a message from the monitoring server 412 (e.g., only those devices that are concerned with whether security gateway devices are available).
Security gateway 404 monitors the individual game consoles 402 and detects when one of the game consoles 402 becomes unavailable. When security gateway 104 detects that a game console is no longer available, security gateway 104 sends a message to monitoring server 112 identifying the unavailable game console. In response, monitoring server 412 sends a message to each of the other devices in data center 410 (or alternatively only selected devices) that the game console is no longer available. Each of the other devices can then operate based on this information as it sees fit.
Presence server(s) 416 hold and process data concerning the status or presence of a given user logged in to data center 410 for online gaming. Notification server(s) 418 maintains multiple queues of outgoing messages destined for a player logged in to data center 410. Presence and notification front door 414 is one or more server devices that operate as an intermediary between security gateway 404 and servers 416 and 418. One or more load balancing devices (not shown) may be included in presence and notification front door 414 to balance the load among the multiple server devices operating as front door 414. Security gateway 404 communicates messages for servers 416 and 418 to the front door 414, and the front door 414 identifies which particular server 416 or particular server 418 the message is to be communicated to. By using front door 414, the actual implementation of servers 416 and 418, such as which servers are responsible for managing data regarding which users, is abstracted from security gateway 404. Security gateway 404 can simply forward messages that target the presence and notification service to presence and notification front door 414 and rely on front door 414 to route the messages to the appropriate one of server(s) 416 and server(s) 418.
Match server(s) 422 hold and process data concerning the matching of online players to one another. An online user is able to advertise a game available for play along with various characteristics of the game (e.g., the location where a football game will be played, whether a game is to be played during the day or at night, the user's skill level, etc.). These various characteristics can then be used as a basis to match up different online users to play games together. Match front door 420 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract match server(s) 422 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
Statistics server(s) 426 hold and process data concerning various statistics for online games. The specific statistics used can vary based on the game designer's desires (e.g., the top ten scores or times, a world ranking for all online players of the game, a list of users who have found the most items or spent the most time playing, etc.). Statistics front door 426 includes one or more server devices (and optionally a load balancing device(s)) and operates to abstract statistics server(s) 426 from security gateway 404 in a manner analogous to front door 414 abstracting server(s) 416 and server(s) 418.
Thus, it can be seen that security gateway 404 operates to shield devices in the secure zone of data center 410 from the untrusted, public network 406. Communications within the secure zone of data center 410 need not be encrypted, as all devices within data center 410 are trusted. However, any information to be communicated from a device within data center 410 to a game console 402 passes through security gateway cluster 404, where it is encrypted in such a manner that it can be decrypted by only the game console 402 targeted by the information.
Fig. 8 illustrates a general computer environment 500, which can be used to implement the techniques described herein. The computer environment 500 is only one example of a computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the computer and network architectures. Neither should the computer environment 500 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computer environment 500.
Computer environment 500 includes a general-purpose computing device in the form of a computer 502. Computer 502 can be, for example, a client device 102, server device 106, and/or device that is part of key distribution center 104 of Fig. 1; a security gateway device 404, a server 412, 416, 418, 422, and/or 426 of Fig. 1, and/or a front door 414, 420, or 424 of Fig. 7. The components of computer 502 can include, but are not limited to, one or more processors or processing units 504, a system memory 506, and a system bus 508 that couples various system components including the processor 504 to the system memory 506. Computer 502 may also include a cryptographic processor(s) or co-processor(s) (not shown in Fig. 8). Such a cryptographic processor(s) or co-processor(s) is designed to perform cryptographic operations (such as encryption, decryption, and hashing) and alleviate other processor(s) (e.g., processing unit(s) 504) from computationally-expensive cryptographic operations.
The system bus 508 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
Computer 502 typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer 502 and includes both volatile and non-volatile media, removable and non-removable media.
The system memory 506 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 510, and/or non-volatile memory, such as read only memory (ROM) 512. A basic input/output system (BIOS) 514, containing the basic routines that help to transfer information between elements within Computer 502, such as during start-up, is stored in ROM 512. RAM 510 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit 504.
Computer 502 may also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, Fig. 8 illustrates a hard disk drive 516 for reading from and writing to a non-removable, non-volatile magnetic media (not shown), a magnetic disk drive 518 for reading from and writing to a removable, non-volatile magnetic disk 520 (e.g., a "floppy disk"), and an optical disk drive 522 for reading from and/or writing to a removable, non-volatile optical disk 524 such as a CD-ROM, DVD-ROM, or other optical media. The hard disk- drive 516, magnetic disk drive 518, and optical disk drive 522 are each connected to the system bus 508 by one or more data media interfaces 526. Alternatively, the hard disk drive 516, magnetic disk drive 518, and optical disk drive 522 can be connected to the system bus 508 by one or more interfaces (not shown).
The disk drives and their associated computer-readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computer 502. Although the example illustrates a hard disk 516, a removable magnetic disk 520, and a removable optical disk 524, it is to be appreciated that other types of computer readable media which can store data that is accessible by a computer, such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement the exemplary computing system and environment.
Any number of program modules can be stored on the hard disk 516, magnetic disk 520, optical disk 524, ROM 512, and/or RAM 510, including by way of example, an operating system 526, one or more application programs 528, other program modules 530, and program data 532. Each of such operating system 526, one or more application programs 528, other program modules 530, and program data 532 (or some combination thereof) may implement all or part of the resident components that support the distributed file system.
A user can enter commands and information into computer 502 via input devices such as a keyboard 534 and a pointing device 536 (e.g., a "mouse"). Other input devices 538 (not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to the processing unit 504 via input/output interfaces 540 that are coupled to the system bus 508, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).
A monitor 542 or other type of display device can also be connected to the system bus 508 via an interface, such as a video adapter 544. In addition to the monitor 542, other output peripheral devices can include components such as speakers (not shown) and a printer 546 which can be connected to computer 502 via the input/output interfaces 540.
Computer 502 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device 548. By way of example, the remote computing device 548 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, game console; and the like. The remote computing device 548 is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer 502.
Logical connections between computer 502 and the remote computer 548 are depicted as a local area network (LAN) 550 and a general wide area network (WAN) 552. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
When implemented in a LAN networking environment, the computer 502 is connected to a local network 550 via a network interface or adapter 554. When implemented in a WAN networking environment, the computer 502 typically includes a modem 556 or other means for establishing communications over the wide network 552. The modem 556, which can be internal or external to computer 502, can be connected to the system bus 508 via the input/output interfaces 540 or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers 502 and 548 can be employed.
In a networked environment, such as that illustrated with computing environment 500, program modules depicted relative to the computer 502, or portions thereof, may be stored in a remote memory storage device. By way of example, remote application programs 558 reside on a memory device of remote computer 548. For purposes of illustration, application programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 502, and are executed by the data processor (s) of the computer.
Fig. 9 shows functional components of a game console 601 in more detail. Game console 601 may be, for example, a client device 102 of Fig. 1. Game console 601 has a central processing unit (CPU) 600 and a memory controller 602 that facilitates processor access to various types of memory, including a flash ROM (Read Only Memory) 604, a RAM (Random Access Memory) 606, a hard disk drive 608, and a portable media drive 609. CPU 600 is equipped with a level 1 cache 610 and a level 2 cache 612 to temporarily store data and hence reduce the number of memory access cycles, thereby improving processing speed and throughput.
CPU 600, memory controller 602, and various memory devices are interconnected via one or more buses, including serial and parallel buses, a memory bus, a peripheral bus, and a processor or local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
As one suitable implementation, CPU 600, memory controller 602, ROM 604, and RAM 606 are integrated onto a common module 614. In this implementation, ROM 604 is configured as a flash ROM that is connected to the memory controller 602 via a PCI (Peripheral Component Interconnect) bus and a ROM bus (neither of which are shown). RAM 606 is configured as multiple DDR SDRAM (Double Data Rate Synchronous Dynamic RAM) that are independently controlled by the memory controller 602 via separate buses (not shown). The hard disk drive 608 and portable media drive 609 are connected to the memory controller via the PCI bus and an ATA (AT Attachment) bus 616.
A 3D graphics processing unit 620 and a video encoder 622 form a video processing pipeline for high speed and high resolution graphics processing. Data is carried from the graphics processing unit 620 to the video encoder 622 via a digital video bus (not shown). An audio processing unit 624 and an audio codec (coder/decoder) 626 form a corresponding audio processing pipeline with high fidelity and stereo processing. Audio data is carried between the audio processing unit 624 and the audio codec 626 via a communication link (not shown). The video and audio processing pipelines output data to an A/V (audio/video) port 628 for transmission to the television or other display. In the illustrated implementation, the video and audio processing components 620-628 are mounted on the module 614.
Also implemented on the module 614 are a USB host controller 630 and a network interface 632. The USB host controller 630 is coupled to the CPU 600 and the memory controller 602 via a bus (e.g., PCI bus) and serves as host for the peripheral controllers 636(1)-636(4). The network interface 632 provides access to a network (e.g., Internet, home network, etc.) and may be any of a wide variety of various wire or wireless interface components including an Ethernet card, a modem, a Bluetooth module, a cable modem, and the like.
The game console 601 has two dual controller support subassemblies 640(1) and 640(2), with each subassembly supporting two game controllers 636(1)-636(4). A front panel I/O subassembly 642 supports the functionality of a power button 631 and a media drive eject button 633, as well as any LEDs (light emitting diodes) or other indicators exposed on the outer surface of the game console. The subassemblies 640(1), 640(2), and 642 are coupled to the module 614 via one or more cable assemblies 644.
Eight memory units 634(1)-634(8) are illustrated as being connectable to the four controllers 636(1)-636(4), i.e., two memory units for each controller. Each memory unit 634 offers additional storage on which games, game parameters, and other data may be stored. When inserted into a controller, the memory unit 634 can be accessed by the memory controller 602.
A system power supply module 650 provides power to the components of the game console 601. A fan 652 cools the circuitry within the game console 601.
A console user interface (UI) application 660 is stored on the hard disk drive 608. When the game console is powered on, various portions of the console application 660 are loaded into RAM 606 and/or caches 610, 612 and executed on the CPU 600. Console application 660 presents a graphical user interface that provides a consistent user experience when navigating to different media types available on the game console.
Game console 601 implements a cryptography engine to perform common cryptographic functions, such as encryption, decryption, authentication, digital signing, hashing, and the like. The cryptography engine may be implemented as part of the CPU 600, or in software stored on the hard disk drive 608 that executes on the CPU, so that the CPU is configured to perform the cryptographic functions. Alternatively, a cryptographic processor or co-processor designed to perform the cryptographic functions may be included in game console 601.
Game console 601 may be operated as a standalone system by simply connecting the system to a television or other display. In this standalone mode, game console 601 allows one or more players to play games, watch movies, or listen to music. However, with the integration of broadband connectivity made available through the network interface 632, game console 601 may further be operated as a participant in online gaming, as discussed above.
Various modules and techniques may be described herein in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
An implementation of these modules and techniques may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example, and not limitation, computer readable media may comprise "computer storage media" and "communications media."
"Computer storage media" includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
"Communication media" typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier wave or other transport mechanism. Communication media also includes any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
The secure key exchange with mutual authentication discussed herein is discussed with reference to the Diffie-Hellman exponentiation operations to derive a secret. Alternatively, other cryptographic operations or methods may be used in place of Diffie-Hellman.
Although the description above uses language that is specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the invention.
24 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23 Sheet 24
Every citation, both waysCites: the store holds 2 of 3
| Document | Relation | Office |
|---|---|---|
| EP1134929A | Cites | European Patent Office (EPO) |
| WO0048358A | Cites | World Intellectual Property Organization (WIPO) |
9 members in 5 offices
Priority claims5
| Document | Office | Kind | Date |
|---|---|---|---|
| 170002 | United States of America | – | |
| 17000202 | United States of America | A | |
| 17000202 | United States of America | A | |
| 170002 | – | – | – |
| US20020170002 | – | – | – |
Members9
| Document | Office | Kind | |
|---|---|---|---|
| US2003229789A1 | United States of America | A1 | |
| EP1372292A1 | European Patent Office (EPO) | A1 | |
| JP2004015813A | Japan | A | |
| EP1372292B1This record | European Patent Office (EPO) | B1 | |
| AT339042T | Austria | T | |
| ATE339042T1 | Austria | T1 | |
| DE60308099D1 | Germany | D1 | |
| DE60308099T2 | Germany | T2 | |
| US7565537B2 | United States of America | B2 |
61 legal events, as 6 offices reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | Office | |
|---|---|---|---|
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Opt-out of the competence of the unified patent court (upc) registeredP01 | P01 | EP | |
| Patent expired after termination of 20 yearsExpiredPE20 | PE20 | GB | |
| Expiry of rightR071 | R071 | DE | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Annual fee paid to national office [announced via postgrant information from national office to epo]GrantedPGFP | PGFP | EP | |
| Fee paymentPLFP | PLFP | FR | |
| Fee paymentPLFP | PLFP | FR | |
| Fee paymentPLFP | PLFP | FR | |
| Transmission of propertyTP | TP | FR | |
| Change of applicant/patenteeR081 | R081 | DE | |
| Change of representativeR082 | R082 | DE | |
| Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)REGISTERED BETWEEN 20150108 AND 20150114732E | 732E | GB | |
| Change of representativeR082 | R082 | DE | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| No opposition filedOpposition26N | 26N | EP | |
| No opposition filed within time limitOppositionORIGINAL CODE: 0009261PLBE | PLBE | EP | |
| Information on the status of an ep patent application or granted ep patentGrantedSTATUS: NO OPPOSITION FILED WITHIN TIME LIMITSTAA | STAA | EP | |
| Fr: translation filedET | ET | EP | |
| Patent ceasedCeasedPL | PL | CH | |
| Nl: lapsed or annulled due to failure to fulfill the requirements of art. 29p and 29m of the patents actLapsedNLV1 | NLV1 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Corresponds to:REF | REF | EP | |
| European patents granted designating irelandGrantedFG4D | FG4D | IE | |
| European patent takes effect as a national patent in ch/liEP | EP | CH | |
| Designated contracting statesAK | AK | EP | |
| European patent grantedGrantedFG4D | FG4D | GB | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| Lapsed in a contracting state [announced via postgrant information from national office to epo]LapsedPG25 | PG25 | EP | |
| (expected) grantORIGINAL CODE: 0009210GRAA | GRAA | EP | |
| Grant fee paidORIGINAL CODE: EPIDOSNIGR3GRAS | GRAS | EP | |
| Despatch of communication of intention to grant a patentORIGINAL CODE: EPIDOSNIGR1GRAP | GRAP | EP | |
| Designation fees paidAKX | AKX | EP | |
| First examination report despatched17Q | 17Q | EP | |
| Request for examination filed17P | 17P | EP | |
| Designated contracting statesAK | AK | EP | |
| Request for extension of the european patentAX | AX | EP | |
| Public reference made under article 153(3) epc to a published international application that has entered the european phaseORIGINAL CODE: 0009012PUAI | PUAI | EP |
Numbers
- Publication
- 1372292
- Publication, DOCDB
- 1372292
- Publication, EPODOC
- EP1372292
- Application
- 3009720
- Application, DOCDB
- 03009720
- Application, EPODOC
- EP20030009720
Titles3
- German
- Gesicherter Schlüsselaustausch mit gegenseitigen Authentifizierung
- English
- Secure key exchange with mutual authentication
- French
- Echange de clé sécurisé avec authentification mutuelle
Classification
- CPC, 4
- H04L9/3213
- H04L9/083
- H04L9/0841
- H04L9/3297
- IPC, 3
- H04L9 08
- H04L9 32
- G09C1 00
Designated states27
- Contracting states, 27
- Austria
- Belgium
- Bulgaria
- Switzerland
- Cyprus
- Czechia
- Germany
- Denmark
- Estonia
- Spain
- Finland
- France
- United Kingdom
- Greece
- Hungary
- Ireland
- Italy
- Liechtenstein
- Luxembourg
- Monaco
- Netherlands (Kingdom of the)
- Portugal
- Romania
- Sweden
and 3 moreShow fewer
- Slovenia
- Slovakia
- Türkiye
