EP1676198A1 - Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donne - Google Patents
Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donneInfo
- Publication number
- EP1676198A1 EP1676198A1 EP04805753A EP04805753A EP1676198A1 EP 1676198 A1 EP1676198 A1 EP 1676198A1 EP 04805753 A EP04805753 A EP 04805753A EP 04805753 A EP04805753 A EP 04805753A EP 1676198 A1 EP1676198 A1 EP 1676198A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- coefficient
- random
- variable
- rank
- random variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
Definitions
- R is the random number sought, between 0 and Pl i K.
- S S p - ⁇ Sp-2 ... S ⁇ So, commonly used notation.
- step b R is obtained from S by repeating step b (1 st process), taking into account or not the additional random number S p - ⁇ (2 nd process) or performing a modular reduction (3rd process).
- the main drawback of the first method is that it takes a particularly long and above all unpredictable time: the step of producing p random numbers can be repeated many times without it being possible to predict at the start the number of repetitions of this step.
- the 2 nd and 3 rd processes have the major drawback of generating random numbers having a bias: from R numbers generated in the interval [0, K], some values are more likely than others. In other words, the R numbers produced are not perfectly random (non-uniform distribution).
- This bias can have significant consequences on the security of cryptographic systems capable of implementing these methods.
- the security of cryptographic systems presupposes that the random numbers they use are uniformly distributed (or at least close to a uniform distribution) in the interval [0, K] or [A, K + A] desired.
- the three methods are generally slow because they implement operations on large numbers, of size N (in the sense number of bits) greater than the size of the circuits used for the implementation.
- N in the sense number of bits
- the number K in particular is arbitrary and can be greater than W and therefore of size greater than N.
- the variable S can also be large.
- the implementation of operations on large numbers requires the implementation of complex and costly processes in terms of computation time.
- An essential object of the invention is to propose a method for constructing a particularly rapid random number R.
- one searches for the coefficients Ri of the desired random number R one by one, starting with the most significant coefficient R p - ⁇ .
- the physical generator of random numbers used thus produces random variables If one at a, a variable at each iteration.
- step E33 is executed a limited number of times. Indeed, as soon as one of the variables Si produced by the physical generator is less than the associated coefficient Ki of the terminal K, the process no longer requires the processing of the variables Sj of rank lower than i: we thus calculate the more often a limited number of coefficients of the number R, the most significant.
- a method according to the invention has the advantage of working on numbers of at most N bits, N being the size of the registers and other calculation circuits of the devices used for the implementation. For example, if W is equal to 2 N , the coefficients Ki, resulting from the decomposition of K in the base (WP -1 , ... W 1 , W °), are necessarily less than W and therefore of size at most N bits. Likewise, the random variables Si produced by the physical generator of random numbers are also N bits.
- Step E33 is executed only if the variable f is TRUE; thus, as soon as the variable f is set to the value FALSE, step E33_l is no longer executed and the method according to the invention ends quickly.
- a second objective of the invention is to propose a method of constructing random numbers whose distribution is uniform or can be made as close as desired to a uniform distribution. This objective is achieved by choosing an adequate function for determining the coefficient Ri from the random variable Si.
- step E33 1 to determine the coefficient Ri of rank i from the random variable Si of rank i (step E33 1), the following sub-steps are carried out: E33__ll: if the random variable Si is strictly greater than the coefficient Ki of the terminal K, then we produce a new random variable Si,
- step E33_12 step E33_ll is repeated until the random variable Si is less than the coefficient Ki of terminal K, then the coefficient Ri is equalized with the random variable Si.
- all the coefficients Ri obtained are numbers directly produced by the hardware generator of random numbers, these coefficients are therefore perfect and the number R which results therefrom is also perfect, in other words, the distribution obtained of numbers R is uniform in the interval [0, K].
- the coefficient Ri of rank i is chosen, equal to a part of the random variable Si, part less than the coefficient Ki. Said part corresponding in one example to a limited number of bits of the variable Si.
- step E33 the random variable Si modulo Ki + 1 is reduced, the result of the reduction being the coefficient Ri sought.
- a random number R less than K is constructed from variables Si of size N produced by a perfectly random physical generator.
- the number R obtained is biased, but the bias is reduced compared to a known method.
- step E33 43 the numbers in a base ⁇ ⁇
- step E33_43 breaking down step E33_43 into a succession of steps similar to steps E33_41 to E33_43.
- the invention also relates to an electronic component suitable for the implementation of a method as described above.
- a component notably comprises a generator producing random numbers of size N, and calculation circuits for carrying out operations on numbers of at most N bits.
- the calculation circuits are adapted to carry out operations for comparing two numbers, truncating numbers, modular reduction.
- the random number generator and the calculation circuits are preferably controlled by software means stored in a memory of the component provided for this purpose.
- the invention also relates to a smart card comprising an electronic component as described above.
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
L'invention concerne un procédé cryptographique, au cours duquel on utilise un générateur de nombres aléatoires produisant des nombres aléatoires Si de taille N fixée compris entre 0 et W-1, pour produire un nombre aléatoire R compris entre 0 et une borne K prédéfinie. Selon l'invention : E31 : on produit une variable aléatoire Si comprise entre 0 et W-1, E32 si la variable aléatoire Si est strictement inférieure à un coefficient Ki de la borne K dans la base W, alors le coefficient Ri de rang i du nombre aléatoire R est égal à la variable aléatoire Si puis, pour tout rang j inférieur à i, on produit une variable aléatoire Sj entre 0 et W-1 et on pose Rj = Sj. E33 : sinon, si la dite variable aléatoire est supérieure au coefficient Ki de rang i de la borne K dans la base W, alors on détermine le dit coefficient Ri à partir de la variable aléatoire Si de rang i selon une fonction prédéfinie, puis on détermine un coefficient Ri-1 du nombre aléatoire R de rang i-1 immédiatement inférieur en répétant les étapes E31 à E33. L'invention concerne également un composant électronique adapté pour la mise en couvre du procédé, et une carte à puce intégrant un tel composant.
Description
PROCÈDE ET DISPOSITIF ASSOCIE DE GÉNÉRATION DE NOMBRES ALÉATOIRES DANS UN INTERVALLE DONNE
L'invention concerne un procédé d'obtention d'un nombre aléatoire compris entre A et B à partir d'un générateur produisant des nombres aléatoires compris entre 0 et W-l, avec N la taille des nombres produits par le générateur, W-l la valeur maximale prise par les nombres aléatoires produits, avec par exemple W = 2N , et A, B des nombres entiers quelconques, inférieurs ou supérieurs au nombre W.
Une telle situation se produit par exemple dans un composant électronique adapté pour réaliser des calculs cryptographiques et comprenant un générateur de nombres aléatoires de N bits, par exemple N "= 8. Les nombres aléatoires qu'il peut produire sont ainsi compris entre 0 et W-l = .255, alors qu'il serait souhaitable de disposer de nombres aléatoires compris par exemple entre 0 et 100 ou entre 300 et 10000. A noter qu'il suffit de déterminer des nombres entre 0 et 9700 puis d'ajouter ensuite 300 au nombre obtenu pour obtenir finalement un nombre entre 300 et 10000.
Une telle situation se retrouve dans la pratique dans la plupart des applications cryptographiques, par exemple la signature DSA, la signature ou le chiffrement d'El Gamal, le développement de contremesures contre diverses attaques, etc.
Plusieurs procédés sont déjà connus pour produire des nombres aléatoires R compris entre 0 et K à partir de nombres compris entre 0 et W-l. Ces procédés sont en général mis en œuvre par des moyens logiciels utilisés
pour piloter d'une part un générateur hardware qui produit des nombres aléatoires de taille N et d'autre part des moyens de calcul réalisant notamment des opérations de multiplications, d'additions, etc.
Un premier procédé connu comprend les étapes suivantes : a) déterminer le plus petit nombre entier p tel que K < P - 1, b) produire p nombres aléatoires Scw Si, ...., Sp-ι et p-l former la variable S = ∑ S * W i=0 c) si S > K, alors retourner à l'étape b) , sinon poser R = S
R est le nombre aléatoire recherché, compris entre 0 et P-l i K. L'équation S = _T Sj_ * W est une représentation de la i=0 variable S décomposée / recomposée dans la base (WP-1, ..., W1, W°) . On pourrait également noter S = Sp-ιSp-2...SιSo, notation couramment utilisée.
Un deuxième procédé connu comprend les étapes suivantes : a) déterminer le plus petit nombre entier p tel que K < P - 1, b) produire p nombres aléatoires So, Si, ...., Sp_ι et former la variable T = JSi *Wi etS = T + Sp-α*Wp"1 c) si S > K, poser R = T, sinon poser R = S.
Un troisième procédé connu comprend les étapes suivantes : a) déterminer le plus petit nombre entier p tel que K < WP - 1,
b) produire p nombres aléatoires So, Si, ...., Sp-ι et p-l former la variable S = £ S± * W1 i=0 c) poser R = S mod(K+l), c'est-à-dire le reste de la division entière de S par K+l, également appelé réduction modulaire de S par K+l .
Ces trois procédés peuvent être résumés par les étapes suivantes : a) produire p nombres aléatoires So, S , ...., Sp-ι , p étant le plus petit nombre entier tel que K < WP - 1, P-l et former la variable S = ∑ j_ * W i=0 b) déterminer le nombre aléatoire R à partir de la variable S .
Selon le cas, au cours de l'étape b, on obtient R à partir de S en répétant l'étape b (1er procédé), en tenant compte ou non du nombre aléatoire supplémentaire Sp-ι (2ème procédé) ou en effectuant une réduction modulaire (3eme procédé) .
A noter que, dans les trois procédés, si un nombre compris entre A et K+A est souhaité, il suffit d'ajouter A au nombre R obtenu compris entre 0 et K.
Le premier procédé a pour principal inconvénient un temps de calcul particulièrement long et surtout imprévisible : l'étape de production des p nombres aléatoires peut être répétée de nombreuses fois sans qu'il soit possible de prévoir au départ le nombre de répétitions de cette étape .
Le 2ème et le 3ème procédés ont pour principal inconvénient de produire des nombres aléatoires présentant un biais : parmi les nombres R produits dans l'intervalle [0, K] ,
certaines valeurs sont plus probables que d'autres. Dit autrement, les nombres R produits ne sont pas parfaitement aléatoires (distribution non uniforme) . Ce biais peut avoir des conséquences importantes sur la sécurité des systèmes cryptographiques susceptibles de mettre en œuvre ces procédés . La sécurité des systèmes cryptographiques suppose en effet que les nombres aléatoires qu'ils utilisent soient uniformément distribués (ou au moins proches d'une distribution uniforme) dans l'intervalle [0, K] ou [A, K+A] souhaité.
Enfin, les trois procédés sont globalement lents parce qu'ils mettent en œuvre des opérations sur des grands nombres, de taille N (au sens nombre de bits) supérieure à la taille des circuits utilisés pour la mise en œuvre. En effet, le nombre K notamment, est quelconque et peut être supérieur à W et donc de taille supérieure à N. La variable S peut également être de grande taille. Or, la mise en œuvre d'opérations sur des grands nombres nécessite la mise en œuvre de procédés complexes et coûteux en termes de temps de calcul.
Un objet essentiel de l'invention est de proposer un procédé de construction d'un nombre aléatoire R particulièrement rapide.
Ainsi, l'invention propose un procédé cryptographique, au cours duquel on utilise un générateur de nombres aléatoires produisant des nombres aléatoires Si de taille N fixée compris entre 0 et W-l, avec par exemple mais non nécessairement W = 2N, pour produire un nombre aléatoire R compris entre 0 et une borne K prédéfinie.
Les étapes essentielles d'un procédé selon l'invention sont les suivantes : E31 : on produit une variable aléatoire Si comprise entre 0 et W-l, E32 : si la variable aléatoire S est strictement inférieure à un coefficient Ki de la borne K dans la base W, alors le coefficient R± de rang i du nombre aléatoire R est égal à la variable aléatoire S± puis, pour tout rang j inférieur à i, on produit une variable aléatoire Sj entre 0 et W-l et on pose Rj = Sj. E33 : sinon, si la dite variable aléatoire est supérieure au coefficient Ki de rang i de la borne K dans la base W, alors on détermine le dit coefficient Ri à partir de la variable aléatoire Si de rang i selon une fonction prédéfinie, puis on détermine le coefficient Ri-i du nombre aléatoire R de rang i-1 immédiatement inférieur en répétant les étapes E31 à E33.
Ainsi, dans un procédé selon l'invention, on recherche un à un les coefficients Ri du nombre aléatoire R souhaité, en commençant par le coefficient Rp-ι le plus significatif. Le générateur physique de nombres aléatoires utilisés produit ainsi des variables aléatoires Si une à une, une variable à chaque itération.
De plus, le procédé est rapide car l'étape E33 est exécutée un nombre restreint de fois. En effet, dès qu'une des variables Si produite par le générateur physique est inférieure au coefficient Ki associé de la borne K, le procédé ne nécessite plus le traitement des variables Sj de rang inférieur à i : on calcule ainsi le
plus souvent un nombre restreint de coefficients du nombre R, les plus significatifs.
Enfin, par rapport aux procédés connus, un procédé selon l'invention présente l'avantage de travailler sur des nombres de au plus N bits, N étant la taille des registres et autres circuits de calculs des dispositifs utilisés pour la mise en œuvre. Par exemple, si W est égal à 2N, les coefficients Ki, résultant de la décomposition de K dans la base (WP-1, ... W1, W°) , sont nécessairement inférieurs à W et donc de taille au plus N bits . De même, les variables aléatoires Si produites par le générateur physique de nombres aléatoires sont également de N bits .
En ajoutant aux étapes essentielles une étape d'initialisation et une étape de recombinaison du nombre aléatoire R, on obtient : El : on décompose la borne K dans une base (WP-1, P-l WP-2, ..., W°) (K = £ * W1 ou K = KP-A^K0) , i étant un i=0 indice de boucle, Ki étant un coefficient de la borne K de rang i compris entre 0 et W-l et p étant le degré de la borne K, E2 : on initialise à VRAI une variable booléenne f, E3 : on réalise les opération suivantes, dans une boucle indicée par i, i étant un nombre entier variant entre p-l et 0: E31 : on produit une variable aléatoire Si comprise entre 0 et W-l, E32 : si la variable aléatoire Si est strictement inférieure au coefficient Ki de rang i, alors on met à FAUX la variable booléenne f,
E33_l : si la variable aléatoire Si est strictement supérieure au coefficient Ki de rang i et si la variable booléenne f est VRAI, alors on détermine le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i selon une fonction prédéfinie, E33_2 : sinon, on pose Ri = Si E34 : on décrémente l'indice de boucle i, E4 : on détermine le nombre aléatoire R par recombinaison des coefficients aléatoires Ri dans la base p-i w ( R = ∑ R± * w1 ou RPAJ AR0) . i=0
Concrètement, dès que la variable booléenne f est positionnée à FAUX, elle reste à cette valeur, puisqu'il n'est pas prévu de la repositionner à la valeur VRAI, sauf lors de l'initialisation E2 du procédé. L'étape E33 est exécutée uniquement si la variable f est VRAI ; ainsi, dès que la variable f est positionnée à la valeur FAUX, l'étape E33_l n'est plus exécutée et le procédé selon l'invention se termine rapidement.
Un deuxième objectif de l'invention est de proposer un procédé de construction de nombres aléatoires dont la distribution soit uniforme ou puisse être rendue aussi proche que souhaitée d'une distribution uniforme. Cet objectif est atteint en choisissant une fonction adéquate pour la détermination du coefficient Ri à partir de la variable aléatoire Si.
Selon un premier mode de mise en œuvre d'un procédé selon l'invention, pour déterminer le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i (étape E33 1) , on réalise les sous-étapes suivantes :
E33__ll : si la variable aléatoire Si est strictement supérieure au coefficient Ki de la borne K, alors on produit une nouvelle variable aléatoire Si,
E33_12 : on répète l'étape E33_ll jusqu'à ce que la variable aléatoire Si soit inférieure au coefficient Ki de la borne K, puis on égalise le coefficient Ri à la variable aléatoire Si.
Dans un tel mode de réalisation, tous les coefficients Ri obtenus sont des nombres directement produits par le générateur hardware de nombres aléatoires, ces coefficients sont donc parfaits et le nombre R qui en résulte est également parfait, en d'autres termes, la distribution obtenue des nombres R est uniforme dans l'intervalle [0, K] .
Selon un deuxième mode de mise en œuvre, au cours de l'étape E33, on choisit le coefficient Ri de rang i, égal à une partie de la variable aléatoire Si, partie inférieure au coefficient Ki. La dite partie correspondant dans un exemple à un nombre limité de bits de la variable Si.
Selon un troisième mode de réalisation, au cours de l'étape E33, on réduit la variable aléatoire Si modulo Ki+1, le résultat de la réduction étant le coefficient Ri cherché .
Ces deux derniers modes de réalisation sont rapides par rapport aux procédés connus, essentiellement parce qu'on travaille sur des petits nombres . Les distributions de nombres aléatoires obtenus ne sont cependant pas uniformes : le simple fait de tronquer la variable Si ou d'effectuer une réduction modulo Ki+1 introduit
nécessairement un biais. Toutefois, ce biais est moindre par rapport aux procédés de 1 ' art antérieur .
Par ailleurs, il est possible de réduire le biais des procédés selon les deuxième et troisième modes de réalisation proposés, comme on va le voir ci-dessous.
Dans un procédé selon l'invention tel que décrit ci- dessus, on construit un nombre aléatoire R inférieur à K à partir de variables Si de taille N produits par un générateur physique parfaitement aléatoire. Le nombre R obtenu est biaisé, mais le biais est réduit par rapport à un procédé connu.
Pour cela, dans le deuxième mode ou le troisième mode de réalisation, on construit notamment au cours de l'étape E33_l un coefficient Ri ≤ Ki à partir de variables Si de taille N. Pour réduire le biais introduit sur le coefficient R. , on propose de le construire en utilisant les mêmes étapes El à E3 que pour construire le nombre R. En quelque sorte, on "imbrique" deux procédés simila±Êes. Ceci permet de réduire encore la taille des nombres sur lesquels on travaille, et en conséquence de réduire encore le biais sur les coefficients de R, et sur le nombre R final .
Concrètement, pour déterminer le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i (étape E33_l) r on exécute les étapes El à E4 en utilisant une base (βq_1, ..., β°) comme base de calcul, β étant un nombre entier strictement inférieur à W et q étant le degré de Ki dans la base β.
L'étape E33 est ainsi décomposée en les sous-étapes suivantes :
E33_41 : on décompose le coefficient Ki de rang i de la q-i borne K dans la base (β<2-1, ..., β°) ( K± = ∑ (K±)^ * β ou j=0 κi = (Ki) q_ι„. (Ki) i (Ki) o) r j étant un indice de boucle, (Ki) j étant un nombre compris entre 0 et β-1 et q étant un degré du coefficient Ki,
E33_42 : on initialise à VRAI une deuxième variable booléenne g,
E33_43 : on réalise les opération suivantes, dans une boucle indicée par j variant entre q-1 et 0 : E33_431 : on produit une variable aléatoire (Si)j comprise entre 0 et β-1, E33_432 : si la variable aléatoire (Si)j est strictement inférieure au coefficient (Ki)j, alors on met à FAUX la deuxième variable booléenne g, E33_4331 : si la variable aléatoire (Si)j est strictement supérieure au coefficient (Ki)j et si la deuxième variable booléenne g est VRAI, alors on détermine un coefficient (Ri)j à partir de la variable aléatoire (Si)j selon une fonction prédéfinie, E33_4332 : sinon, poser (Rι)j = (Si)j E33_434 : on décrémente l'indice de boucle j,
E33_44 : on détermine le nombre aléatoire Ri par recombinaison des coefficients aléatoires (Rj j dans la base β ( Rt = £(Λ,) *β ou R± ≈ (R±) q_ι... (R±) i (R±) o) -
Comme on vient de le voir ci-dessus, en "imbriquant" deux procédés, on réduit le biais des nombres aléatoires R produits par le procédé global, tout en conservant un procédé global rapide . On peut bien sûr imaginer d"imbriquer" plus de deux procédés, par exemple trois ou quatre, en décomposant, dans l'étape E33 43 les nombres
dans une base γ < β, et en décomposant l'étape E33_43 en une succession d'étapes similaires aux étapes E33_41 à E33_43.
De manière générale, plus on "imbrique" de procédés, plus les nombres sur lesquels on travaille sont petits : la durée de chaque étape diminue et le biais des nombres produits par le procédé global diminue également.
L'invention a également pour objet un composant électronique adapté pour la mise en oeuvre d'un procédé tel que décrit ci-dessus. Un tel composant comprend notamment un générateur produisant des nombres aléatoires de taille N, et des circuits de calcul pour réaliser des opérations sur des nombres de au plus N bits .
Selon le mode de réalisation du procédé à mettre en œuvre, les circuits de calcul sont adaptés pour réaliser des opérations de comparaison de deux nombres, de troncature de nombre, de réduction modulaire.
Le générateur de nombres aléatoires et les circuits de calcul sont pilotés de préférence par un moyen logiciel mémorisé dans une mémoire du composant prévue à cet effet .
L'invention concerne également une carte à puce comprenant un composant électronique tel que décrit ci- dessus .
Claims
1. Procédé cryptographique, au cours duquel on utilise un générateur de nombres aléatoires produisant des nombres aléatoires Si de taille N fixée compris entre 0 et W-l, pour produire un nombre aléatoire R compris entre 0 et une borne K prédéfinie, caractérisé en ce que :
E31 : on produit une variable aléatoire Si comprise entre 0 et W-l,
E32 : si la variable aléatoire Si est strictement inférieure à un coefficient Ki de la borne K dans la base W, alors le coefficient Ri de rang i du nombre aléatoire R est égal à la variable aléatoire Si puis, pour tout rang j inférieur a i, on produit une variable aléatoire Sj entre 0 et W-l et on pose Rj = Sj .
E33 : sinon, si la dite variable aléatoire est supérieure au coefficient Ki de rang i de la borne K dans la base W, alors on détermine le dit coefficient Ri à partir de la variable aléatoire Si de rang i selon une fonction prédéfinie, puis on détermine le coefficient Ri-i du nombre aléatoire R de rang i-1 immédiatement inférieur en répétant les étapes E31 à E33.
2. Procédé selon la revendication 1, au cours duquel on réalise les étapes suivantes :
El : on décompose la borne K dans une base (WP-1, WP-2, ..., P-l W°) sous la forme K = _ K * W1 , i étant un indice de i=0 boucle, Ki étant un coefficient de la borne K de rang i compris entre 0 et W-l et p étant le degré de la borne K, E2 : on initialise à VRAI une variable booléenne f,
E3 : on réalise les opération suivantes, dans une boucle indicée par i, i étant un nombre entier variant entre p-l et 0: E31 : on produit une variable aléatoire S± comprise entre 0 et W-l, E32 : si la variable aléatoire Si est strictement inférieure au coefficient Ki de rang i, alors on met à FAUX la variable booléenne f, E33_l : si la variable aléatoire Si est strictement supérieure au coefficient K de rang i et si la variable booléenne f est VRAI, alors on détermine le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i selon une fonction prédéfinie, E33_2 : sinon, on pose Ri = Si E34 : on décrémente la variable de boucle i,
E4 : on détermine le nombre aléatoire R par recombinaison des coefficients aléatoires Ri dans la base W selon la P-1 , relation : R = ∑ R± * W1. i=0
3. Procédé selon la revendication 2, au cours duquel, pour déterminer le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i (étapes E33_l et E33_2) r on réalise les sous-étapes suivantes :
E33_ll : si la variable aléatoire Si est strictement supérieure au coefficient Ki de la borne K, alors on produit une nouvelle variable aléatoire Si,
E33_12 : on répète l'étape E33_ll jusqu'à ce que la variable aléatoire Si soit inférieure au coefficient Ki de la borne K, puis on égalise le coefficient Ri à la variable aléatoire Si.
4. Procédé selon la revendication 2, au cours duquel, on choisit (étapes E33-1 et 33_2) Ie coefficient Ri de rang i égal à une partie de la variable aléatoire Si, partie inférieure au coefficient Ki, la dite partie correspondant par exemple à un nombre limité de bits de la variable Si.
5. Procédé selon la revendication 2, au cours duquel, au pour déterminer le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i (étape E33) , on réduit la variable aléatoire Si modulo Ki+1, le résultat de la réduction étant le coefficient R cherché .
6. Procédé selon l'une des revendications 1 à 5, au cours duquel, pour déterminer le coefficient Ri de rang i à partir de la variable aléatoire Si de rang i (étape E33) , on exécute les étapes El à E4 en utilisant une base (βÇ-1, ..., β°) comme base de calcul, β étant un nombre entier strictement inférieur à W et q étant le degré de K dans la base β.
7. Procédé selon la revendication 6, dans lequel l'étape E33 est décomposée en les sous-étapes suivantes :
E33_41 : on décompose le coefficient Ki de rang i de la borne K dans la base (βq_1, ..., β°) sous la forme q-1 κi = Σ (κ±)j * β"3 r j étant un indice de boucle, (Ki)j étant j=0 un nombre compris entre 0 et β-1 et q étant le degré du coefficient Ki,
E33_42 : on initialise à VRAI une deuxième variable booléenne g,
E33_43 : on réalise les opération suivantes, dans une boucle indicée par j variant entre q-1 et 0: E33_431 : on produit une variable aléatoire (S )j comprise entre 0 et β - 1, E33_432 : si la variable aléatoire (Si)j est strictement inférieure au coefficient (Ki)j, alors on met à FAUX la deuxième variable booléenne g, E33_4331 : si χa variable aléatoire (Si)j est strictement supérieure au coefficient (K )j et si la deuxième variable booléenne g est VRAI, alors on détermine un coefficient (Ri)j à partir de la variable aléatoire (Si)j selon une fonction prédéfinie, E33_4332 : sinon, poser (Ri)j = (Si)j E33_434 : on décrémente l'indice de boucle j,
E33_44 : on détermine le nombre aléatoire Ri par recombinaison des coefficients aléatoires (Ri)j dans la base β selon la relation : R. = ∑(Ri)J-*βj .
8. Composant électronique comprenant un générateur de nombres aléatoires de taille N, des circuits de calcul réalisant notamment une comparaison, une troncature et / ou une réduction modulaire sur des nombres de au plus* N bits, et un moyen de pilotage du générateur de nombres aléatoires et des circuits de calcul, le dit moyen de pilotage étant adapté pour la mise en œuvre d'un procédé selon l'une des revendications 1 à 7.
9. Carte à puce comprenant un composant électronique selon la revendication précédente.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR0312435A FR2861518B1 (fr) | 2003-10-24 | 2003-10-24 | Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donne. |
| PCT/FR2004/050510 WO2005043382A1 (fr) | 2003-10-24 | 2004-10-18 | Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donne |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP1676198A1 true EP1676198A1 (fr) | 2006-07-05 |
Family
ID=34400746
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP04805753A Withdrawn EP1676198A1 (fr) | 2003-10-24 | 2004-10-18 | Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donne |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US20070033241A1 (fr) |
| EP (1) | EP1676198A1 (fr) |
| JP (1) | JP2007510171A (fr) |
| CN (1) | CN1871579A (fr) |
| FR (1) | FR2861518B1 (fr) |
| WO (1) | WO2005043382A1 (fr) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101299856B (zh) * | 2008-06-30 | 2011-09-28 | 中国移动通信集团公司 | 一种防止针对sim卡破解攻击的方法及装置 |
| CN102130734B (zh) * | 2011-04-22 | 2014-02-19 | 南京航空航天大学 | Nakagami衰落信道建模和仿真方法 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| IL107967A (en) * | 1993-12-09 | 1996-12-05 | News Datacom Research Ltd | Apparatus and method for securing communication systems |
| US6324558B1 (en) * | 1995-02-14 | 2001-11-27 | Scott A. Wilber | Random number generator and generation method |
| US5627775A (en) * | 1995-04-18 | 1997-05-06 | Applied Computing Systems, Inc. | Method and apparatus for generating random numbers using electrical noise |
| US5871400A (en) * | 1996-06-18 | 1999-02-16 | Silicon Gaming, Inc. | Random number generator for electronic applications |
| JP2842389B2 (ja) * | 1996-07-11 | 1999-01-06 | 日本電気株式会社 | 乱数発生装置 |
| US6539410B1 (en) * | 1999-03-17 | 2003-03-25 | Michael Jay Klass | Random number generator |
-
2003
- 2003-10-24 FR FR0312435A patent/FR2861518B1/fr not_active Expired - Fee Related
-
2004
- 2004-10-18 US US10/576,542 patent/US20070033241A1/en not_active Abandoned
- 2004-10-18 JP JP2006536142A patent/JP2007510171A/ja active Pending
- 2004-10-18 CN CNA2004800310820A patent/CN1871579A/zh active Pending
- 2004-10-18 WO PCT/FR2004/050510 patent/WO2005043382A1/fr not_active Ceased
- 2004-10-18 EP EP04805753A patent/EP1676198A1/fr not_active Withdrawn
Non-Patent Citations (2)
| Title |
|---|
| None * |
| See also references of WO2005043382A1 * |
Also Published As
| Publication number | Publication date |
|---|---|
| FR2861518A1 (fr) | 2005-04-29 |
| CN1871579A (zh) | 2006-11-29 |
| FR2861518B1 (fr) | 2006-01-13 |
| WO2005043382A1 (fr) | 2005-05-12 |
| JP2007510171A (ja) | 2007-04-19 |
| US20070033241A1 (en) | 2007-02-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2005290B1 (fr) | Procede et dispositif pour engendrer une suite pseudo-aleatoire | |
| EP1414182B1 (fr) | Masquage de données décomposées dans un système de résidus | |
| EP2215768B1 (fr) | Procede et dispositifs de protection d'un microcircuit contre des attaques visant a decouvrir une donnee secrete | |
| FR2885711A1 (fr) | Procede et materiel modulaire et aleatoire pour la reduction polynomiale | |
| FR2926652A1 (fr) | Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature | |
| WO2014111647A1 (fr) | Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation | |
| FR3017476A1 (fr) | Procede de contremesure pour un composant electronique mettant en œuvre un algorithme de cryptographie sur une courbe elliptique | |
| EP1969459A1 (fr) | Procédé cryptographique comprenant une exponentiation modulaire sécurisée contre les attaques à canaux cachés, cryptoprocesseur pour la mise en oeuvre du procédé et carte à puce associée | |
| WO2009016272A1 (fr) | Procédé d'authentification utilisant un décodage de code correcteur d'erreurs à partir d'une matrice publique | |
| EP1493078B1 (fr) | Procédé cryptographique protégé contre les attaques de type à canal caché | |
| EP1676198A1 (fr) | Procede et dispositif associe de generation de nombres aleatoires dans un intervalle donne | |
| EP3929726B1 (fr) | Procede de traitement cryptographique,dispositif electronique et programme d'ordinateur associes | |
| EP1639451A2 (fr) | Procédé de contre-mesure par masquage de l'accumulateur | |
| EP1399807B1 (fr) | Brouillage d'un calcul mettant en oeuvre une fonction modulaire | |
| FR3160081A1 (fr) | Génération d'un vecteur uniformément aléatoire | |
| EP3553996B1 (fr) | Procédé de détermination de l inverse multiplicatif d'une donnée d entrée, programme d ordinateur et dispositif de traitement cryptographique associé | |
| FR2821945A1 (fr) | Procede de protection contre les attaques par mesure de courant ou de rayonnement electromagnetique | |
| EP4617853A1 (fr) | Procédé de détermination d'un inverse modulaire, dispositif électronique et programmes d ordinateur associés | |
| EP1891769A1 (fr) | Protection d'un calcul d'exponentiation modulaire effectue par un circuit integre | |
| EP4525353A1 (fr) | Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d' ordinateur associés | |
| EP1695204A2 (fr) | Procede d'exponentiation modulaire protege contre les attaques du type dpa | |
| WO2009004235A2 (fr) | Procede de codage d'informations par utilisation de fonctions non-lineaires equidistribuees et programmes d'ordinateur pour mettre en oeuvre le procede | |
| FR2887048A1 (fr) | Procede et dispositif pour engendrer une suite pseudo-aleatoire | |
| WO2003010921A1 (fr) | Procede de generation de cles electroniques pour la mise en oeuvre d'un algorithme cryptographique, carte a puce mettant en oeuvre le procede | |
| FR3094522A1 (fr) | Protection d’un calcul itératif |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20060321 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PL PT RO SE SI SK TR |
|
| 17Q | First examination report despatched |
Effective date: 20060822 |
|
| DAX | Request for extension of the european patent (deleted) | ||
| GRAP | Despatch of communication of intention to grant a patent |
Free format text: ORIGINAL CODE: EPIDOSNIGR1 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20070814 |