4 ms·
Author here, glad you enjoyed the talk! Looking into it more I noticed that there's a Go implementation[1] that is noted to be constant-time with a !amd64 buil
by gtank 10y ago
Author here, glad you enjoyed the talk!
Looking into it more I noticed that there's a Go implementation[1] that is noted to be constant-time with a !amd64 build tag. So it isn't just the assembly one.
[1] https://golang.org/src/crypto/elliptic/p256.go https://golang.org/src/crypto/elliptic/p256.go
- Etzos 10y agoWow, I completely missed that (largely because I assumed a Go implementation could not guarantee constant time), sorry about that and thanks for looking deeper than I did. On that note, how much of a guarantee is there in the Go implementation? I assume in most cases it's going to be constant time, but isn't that a little harder to guarantee when compared to the asm version? And if not why not just use the Go implementation everywhere for consistency?
- deleted 10y ago[deleted]
- wbl 10y agoThe asm version is much more performant. The Go version is a port of the version in NSS, but the compiler is free to screw it up in various ways. Furthermore correctness is always a concern: cleverness in unsaturated arithmetic code can be hard.