¿encuentra el algoritmo basado en algunos ejemplos?

0

Tengo un generador de OTP que recibe dos números menos de 99 como entrada y devuelve un número de 8 dígitos como su salida. Sé que tiene un algoritmo simple. ¡porque su procesador es solo un microcontrolador ATMEGA8!

Probé diferentes números como entrada y descubro que la salida depende de la multiplicidad de entradas. Me refiero a los diferentes pares que tienen la misma multiplicación, devolverá la salida igual! por ejemplo, 2,5 y 5,2 y 1,10 y 10,1 tienen una salida de 8 dígitos igual! (ya que tienen igual valor multiplicar). Así que creo una tabla de diferentes valores de multiplicación como entrada y su salida relacionada como se muestra a continuación:

 Output  | Multiply Of Inputs | Example Of Inputs

35057738    0                      0,x or x,0
05863266    1              
35049586    2
06122346    3
71382386    4
69282170    5
06385526    6
05860214    7
05057910    8                      1,8 or 2,4 or 4,2 or 8,1
06106462    9
34009178    10
06911858    11
34000994    12
06122474    13
71382514    14
69282298    15
06385654    16
05860342    17
05058038    18
06106590    19
34009306    20
06911986    21
34001122    22
06097786    23
71357794    24
69257578    25
06360934    26
05835622    27
05033318    28
06081870    29
33968202    30
06887266    31
33976434    32
14482282    33
79742322    34
77650298    35
14745462    36
14220150    37
13417846    38
14466398    39
42352730    40
15271794    41
42360930    42
05069786    43
70329794    44
72432074    45
05332934    46
04807622    47
04005318    48
02956782    49
37150954    50
03762114    51
37142738    52
06101930    53
71361970    54
69269946    55
06365110    56
05839798    57
05037494    58
06086046    59
33988762    60
06891442    61
33980578    62
46145226    63
11405266    64
09313242    65
46408406    66
45883094    67
45080790    68
46129406    69
10886650    70
46934738    71
10894786    72
44023546    73
09283554    74
11385834    75
44286694    76
43761382    77
42959078    78
44007630    79
12975562    80
44813026    81
12967410    82
49274538    83
14534578    84
16636858    85
49537718    86
49012406    87
48210102    88
47161502    89
18210202    90
47966898    91
18218402    92
15608698    93
80868706    94
78768490    95
15871846    96
15346534    97
14544230    98
13495630    99
43495498    100
14301026    101
43487346    102
14560106    103
79820146    104
77719930    105
14823286    106
14297974    107
13495670    108
14544222    109
42446938    110
  ????       x

Ahora quiero saber, ¿este algoritmo parece lo suficientemente seguro? ¿Hay alguna manera de averiguar el algoritmo?

    
pregunta TheGoodUser 06.12.2014 - 10:32
fuente

1 respuesta

3

¿Este algoritmo es lo suficientemente seguro? Depende. ¿Cuál es tu modelo de amenaza? Esa pregunta literalmente no puede responderse sin crear un modelo de cuán determinada y cuán ingeniosa sea su amenaza.

Dicho esto, generalmente diría, "no, no lo suficientemente seguro". Si has encontrado que las entradas se multiplican juntas en el primer paso, eso comienza automáticamente a crear ataques. No tiene 100 * 100 = 10,000 entradas posibles, solo tiene 2,870 entradas posibles.

Dado que no tiene un modelo de amenaza, eso, por sí solo, no es suficiente para que automáticamente no sea lo suficientemente seguro. Sin embargo, muestra que el implementador no entendió la seguridad al desarrollar el algoritmo. Esto sugiere que hay otras fallas que aún no se han visto, y por lo tanto desconfío instintivamente de la implementación.

    
respondido por el Cort Ammon 06.12.2014 - 19:55
fuente

Lea otras preguntas en las etiquetas