IP Library Granted Patent US 8,966,266
Granted Patent B2
US 8,966,266 · App. 13/699,043 · Granted Feb 24, 2015

Method for obtaining encryption keys corresponding terminals, server and computer program products

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,966,266
App. No.
13/699,043
Granted
Feb 24, 2015
Kind
B2
Abstract

A method and apparatus for obtaining an encryption key for an item of data transmitted from a client to a server. The method includes: determining a number R of registers available within the client for carrying out a plurality of calculations of encryption keys; determining a maximum number N of iterations necessary for obtaining at least one encryption key at the server; obtaining a structure of data representative of a key calculation state effected within the R available registers; calculating the at least one encryption key as a function: —of the number of available registers R, by performing at most N calls to a pseudo-random function F and —of the data structure; so that the at least one encryption key can be obtained from a combination of at most T=C R+N N −1 encryption keys based on a secret previously shared between the server and client.

Claims (50)

1. A method for obtaining at least one key for encrypting at least one piece of data transmitted from a client to a server, wherein the method comprises:

determining a number R of registers available within said client to carry out a plurality of computations of encryption keys;

determining a maximum number N of iterations needed to obtain at least one encryption key from said server;

obtaining a structure of data pieces representative of a key computation state achieved within said R available registers;

computing said at least one encryption key as a function of:

said number of R available registers of said client, in performing at most N calls to a pseudo-random function F, and

said structure of data pieces;

and obtaining said at least one encryption key from a combination of at most T=C R+N N −1 encryption keys on a basis of a secret preliminarily shared between said server and said client.

2. The method according to claim 1 , wherein the number R of available registers and the maximum number N of iterations are defined as a function of constraints of the server and constraints of the client and security constraints.

3. The method according to claim 1 , wherein the method further comprises, when implemented within said client, sending a piece of data representing said structure of data pieces representative of a key computation state achieved within said R available registers, registers denoted as R R , . . . R 1 .

4. The method according to claim 3 , wherein said structure of data pieces representative of a key computation state achieved within said R available registers is a concatenation of R integers, st=D=D R . . . D 1 each integer D i representing a distance between said secret preliminarily shared between said server and said client and a key stored in a register R of said client, said distance corresponding to a number of iterations of said pseudo-random function F.

5. The method according to claim 4 wherein said method comprises

determining, starting from the register R 1 up to a maximum at the register R R , a position p of the smallest register R p , for which an associated distance D p is strictly smaller than the number N+1, said register R p comprising an encryption key K, used for a given transaction;

updating said structure of data pieces comprising:

when D p <N:

updating the p registers R p . . . R 1 by computing them on the basis of said register key K, said pseudo-random function F, said data structure D and an integer i, such that R i =F(K, D, i) for 1<=i<=p;

updating said data structure so that D i =D p +1 with 1<=i<=p;

when D p =N, erasing the content of said register R p and updating the number D p =D p +1=N+1.

6. The method according to claim 1 wherein, when the method is implemented within said server, said obtaining comprises:

receiving a piece of data representing said structure of data pieces representative of a key computation state performed within said R available registers;

reading said received piece of data delivering said structure of representative data pieces;

computing said structure of data pieces representative of a key computation state achieved within said R available registers when said structure of representative data pieces is not directly read in said data received.

7. The method according to claim 6 , wherein said structure of data pieces is defined as being a concatenation of R integers: st=D=D R . . . D 1 where each integer D i represents a distance between said secret preliminarily shared between said server and said client, and a key stored in a register R i of said client and wherein computing said at least one encryption key comprises:

initializing a local distance d at 1 and a register position p such that p=p′, with p′ being a number corresponding to the most significant position starting from the register R R up to the register R 1 , such that D p′ >1;

a first step of computation to obtain a key K=F (preliminarily shared secret, 0 R , p′) where 0 R corresponds to R times 0,

and at least one iteration:

of a computation to obtain a key K=F(K, g p,d (D), p) where g p, v (D)=D′ R . . . D′ 1 for which D′ i =N+1 if i ranges from 1 and p-1, D′ i =d if i=p and D′ i =D i if i ranges from p+1 and R and updating the variable d such that d=d+1 so long as the following condition is verified: d<D p −1;

if the number p=1, then a computation step including obtaining a key K=F(K, g p,d (D), p) corresponding then to the key temporarily shared with the client and stopping the iteration of the steps;

determining a position p′ such that D p′ >D p ;

if D p′ !=N+1, computing a key K=F(K, g p,d (D), p′) and updating the variables p=p′ and d=d+1;

if not, computing a key K=F(K, g p,d (D), p′+1) then corresponding to the key shared temporarily with the client and stopping the iteration of the steps.

8. A device for obtaining at least one key for encrypting at least one piece of data transmitted from a client towards a server, wherein the device comprises:

means for determining a number R of registers available within said client to carry out a plurality of computations of encryption keys;

means for determining a maximum number N of iterations needed to obtain at least one encryption key from said server;

means for obtaining a structure of data pieces representative of a key computation state achieved within said R available registers;

means for computing said at least one encryption key as a function of:

said number of R available registers of said client, in performing at most N calls to a pseudo-random function F, and

said structure of data pieces;

and obtaining said at least one encryption key from a combination of at most T=C R+N N −1 encryption keys on a basis of a secret preliminarily shared between said server and said client.

9. A non-transitory computer-readable support comprising a computer program product stored thereon and comprising program code instructions to execute a method of obtaining at least one key for encrypting at least one piece of data transmitted from a client to a server, when the instructions are executed on a computer, wherein the method comprises:

determining a number R of registers available within said client to carry out a plurality of computations of encryption keys;

determining a maximum number N of iterations needed to obtain at least one encryption key from said server;

obtaining a structure of data pieces representative of a key computation state achieved within said R available registers;

computing said at least one encryption key as a function of:

said number of R available registers of said client, in performing at most N calls to a pseudo-random function F, and

said structure of data pieces;

and obtaining said at least one encryption key from a combination of at most T=C R+N N −1 encryption keys on a basis of a secret preliminarily shared between said server and said client.

10. A method comprising:

generating, with a device, a signal for obtaining at least one key for encrypting at least one piece of data transmitted from a client to a server, wherein the signal comprises a structure of data pieces representing a state of encryption key computation achieved within said client, a content of said structure being a function of a number R of registers available within said client to carry out a plurality of computations of encryption keys and a maximum number N of iterations needed to obtain at least one encryption key from said server; computing said at least one encryption key using said function and obtaining said at least one encryption key from a combination of at most T=C R+N N −1 encryption keys on a basis of a secret preliminarily shared between said server and said client; and

transmitting the signal from the device to the server.

Assignments (3)
CHANGE OF NAME Recorded Nov 15, 2021
From: COMPAGNIE INDUSTRIELLE ET FINANCIERE D'INGENIERIE "INGENICO"
To: INGENICO GROUP
Reel/Frame 058823/0703 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2013
From: PEYRIN, THOMAS
To: COMPAGNIE INDUSTRIELLE ET FINANCIERE D'INGENIERIE "INGENICO"
Reel/Frame 031260/0891 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2013
From: BRIER, ERIC
To: COMPAGNIE INDUSTRIELLE ET FINANCIERE D'INGENIERIE "INGENICO"
Reel/Frame 030702/0517 →