Compute secret should have blinds
@calvinmetcalf ya está trabajando en esto.
Desde el 22/4/2017.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860771#10From
Is this timing safe? From the github page it uses a pure-JS
BigNum implementation (bn.js) for the complicated stuff, but
the README of that code doesn't mention timing at all. And
from perusing the source code of bn.js, it doesn't appear to
be the case that their implementation of exponentiation in
a prime field is geared towards constant-time execution (when
the sizes are the same).
If you look at e.g. OpenSSL's source code (bn_exp.c), there's
a specific function (bn_mod_exp_mont_consttime) in there that
takes great care of making sure that the operation runs in
constant time - down to how the memory layout is organized. I
wouldn't know how you'd even do that in an interpreted
language such as JavaScript, but even if that's possible, I'd
suspect that a lot of brain power would need to go into
designing that [1], while bn.js's implementation of the
Red.pow function seems rather straight-forward. (Which is
fine, bn.js appears to have the goal to be a generic bignum
library, and not targeted at crypto.)
What I'm saying is: while not having tested that, I believe
that this implementation of DH is going to be susceptible to
timing attacks. (And if it isn't, the author should really
provide some rationale why not, with some test results. The
README is rather sparse, though.) Which would be fine if you
just wanted to use this library to generate the DH prime
itself (that is not timing critical), or just use it in an
academic context (to let people play around with DH), but
I'd not want to use this for real-world applications of the
actual key exchange protocol.
Regards,
Christian
[1] Especially if this is to be run in browsers, with
different JITs etc. Designing algorithms in pure JS
for these environments that are timing-safe looks rather
daunting to me.
- Lenguaje dominante
- JavaScript
- Estrellas
- 95
- Forks
- 26
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de browserify/diffie-hellman
-
Tests fail for Node.js >= 12 Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
browserify/diffie-hellman#33 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
browserify/diffie-hellman#30 · 1 comentario ·
-
[Bundler] BN.red is undefined Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
browserify/diffie-hellman#28 ·
-
standalone js file? Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
browserify/diffie-hellman#25 · 5 comentarios ·
-
setPublicKey function error Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
browserify/diffie-hellman#24 ·
Todos los issues de browserify/diffie-hellman
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
mksglu/context-mode#1200 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
neondatabase/website#5944 ·
-
module: core
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
jaegertracing/jaeger-ui#4506 ·