Intent to Prototype: Curve25519 in Web Cryptography

313 views
Skip to first unread message

Qingsi Wang

unread,
Jan 27, 2020, 5:17:49 PM1/27/20
to blink-dev

Contact emails

qin...@chromium.org


Explainer

https://github.com/tQsW/webcrypto-curve25519/blob/master/explainer.md


Design docs/spec

N/A. The explainer provides the basic design.


TAG review

https://github.com/w3ctag/design-reviews/issues/466


Summary

This feature adds support for Curve25519 algorithms in the Web Cryptography API, namely the signature algorithm Ed25519 and the key agreement algorithm X25519.


Motivation

Today web developers are getting around the unavailability of Curve25519 [1] in browser by either including an implementation of its operations in JavaScript or compiling a native one into WebAssembly. Aside from wasting bandwidth shipping algorithms that are already included in browsers that support TLS 1.3, this practice also has security implications, e.g. side-channel attacks as studied by Daniel Genkin et al [2].


[1] RFC 7748, Elliptic Curves for Security

[2] Daniel Genkin et al, Drive-By Key-Extraction Cache Attacks from Portable Code.


Risks

Interoperability and Compatibility

WebCrypto API was specified to allow the addition of new (normalized) crypto algorithms. When an algorithm is not yet supported by a browser, an exception of unrecognized algorithms would be thrown after invoking related APIs.


Firefox: No public signals

Edge: No public signals

Safari: No public signals

Web developers: No signals


Is this feature fully tested by web-platform-tests?

No. The feature is not yet prototyped and the WPTs will be part of the prototype.


Link to entry on the Chrome Platform Status

https://www.chromestatus.com/feature/4913922408710144

Reply all
Reply to author
Forward
0 new messages