Filippo Valsorda
c084706c22
poly1305: deprecate public package
...
Fixes golang/go#36646
Change-Id: Ic19dd2171c84472fc9d3f44803224b87fc5c0417
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/345649
Trust: Filippo Valsorda <filippo@golang.org >
Trust: Katie Hockman <katie@golang.org >
Run-TryBot: Filippo Valsorda <filippo@golang.org >
TryBot-Result: Go Bot <gobot@golang.org >
Reviewed-by: Roland Shoemaker <roland@golang.org >
Reviewed-by: Katie Hockman <katie@golang.org >
2021-09-15 21:47:49 +00:00
Filippo Valsorda
e0829623af
chacha20: expose internal/chacha20 package
...
const KeySize = 32
const NonceSize = 12
func HChaCha20(key, nonce []byte) ([]byte, error)
type Cipher struct {}
func NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error)
func (s *Cipher) XORKeyStream(dst, src []byte)
Small performance hit in chacha20poly1305, probably due to the loss
of the Advance API, which we might consider adding later. No new
allocations, thanks to the mid-stack inliner.
name old time/op new time/op delta
Chacha20Poly1305/Open-64-8 1.60µs ± 0% 1.68µs ± 1% +4.94% (p=0.000 n=9+10)
Chacha20Poly1305/Seal-64-8 1.56µs ± 0% 1.64µs ± 1% +5.21% (p=0.000 n=8+10)
Chacha20Poly1305/Open-64-X-8 2.10µs ± 1% 2.22µs ± 1% +5.81% (p=0.000 n=10+10)
Chacha20Poly1305/Seal-64-X-8 2.07µs ± 1% 2.17µs ± 0% +4.88% (p=0.000 n=10+10)
Chacha20Poly1305/Open-1350-8 15.4µs ± 0% 15.7µs ± 1% +1.65% (p=0.000 n=10+10)
Chacha20Poly1305/Seal-1350-8 15.6µs ± 2% 15.9µs ± 1% +1.58% (p=0.028 n=10+9)
Chacha20Poly1305/Open-1350-X-8 16.0µs ± 1% 16.3µs ± 2% +2.00% (p=0.000 n=10+10)
Chacha20Poly1305/Seal-1350-X-8 15.9µs ± 0% 16.3µs ± 1% +1.91% (p=0.000 n=10+8)
Chacha20Poly1305/Open-8192-8 85.6µs ± 0% 86.6µs ± 1% +1.21% (p=0.000 n=10+10)
Chacha20Poly1305/Seal-8192-8 85.7µs ± 0% 86.3µs ± 0% +0.68% (p=0.001 n=9+9)
Chacha20Poly1305/Open-8192-X-8 86.4µs ± 1% 87.1µs ± 1% +0.76% (p=0.035 n=10+9)
Chacha20Poly1305/Seal-8192-X-8 86.0µs ± 0% 87.0µs ± 1% +1.14% (p=0.000 n=9+9)
Updates golang/go#24485
Change-Id: I2ec2ef487a03f013049915d9063751c75a78408b
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/185980
Reviewed-by: Michael Munday <mike.munday@ibm.com >
2019-11-11 21:38:06 +00:00
Filippo Valsorda
80fca2ff14
chacha20poly1305: add example for NewX
...
Change-Id: I619e38a2c8629e851435299fa5204f5fd48a1d87
Reviewed-on: https://go-review.googlesource.com/128055
Reviewed-by: Adam Langley <agl@golang.org >
2018-08-06 19:00:21 +00:00
Filippo Valsorda
f792edd33d
chacha20poly1305: add XChaCha20-Poly1305
...
The XChaCha20 construction does not have an authoritative spec, but this
implementation is based on the following documents:
https://cr.yp.to/snuffle/xsalsa-20081128.pdf
https://download.libsodium.org/doc/secret-key_cryptography/aead.html
http://loup-vaillant.fr/tutorials/chacha20-design
https://tools.ietf.org/html/draft-paragon-paseto-rfc-00#section-7
Tested against the following implementations:
https://github.com/jedisct1/libsodium/blob/7cdf3f0e841/test/default/aead_xchacha20poly1305.c
https://git.kernel.org/pub/scm/linux/kernel/git/zx2c4/linux.git/diff/lib/zinc/selftest/chacha20poly1305.h?h=zinc
https://git.zx2c4.com/wireguard-go/tree/xchacha20poly1305/xchacha20.go
name time/op speed
Chacha20Poly1305/Open-64-8 225ns ± 1% 283MB/s ± 1%
Chacha20Poly1305/Open-64-X-8 390ns ± 0% 164MB/s ± 0%
Chacha20Poly1305/Seal-64-8 222ns ± 0% 287MB/s ± 0%
Chacha20Poly1305/Seal-64-X-8 386ns ± 0% 165MB/s ± 1%
Chacha20Poly1305/Open-1350-8 1.12µs ± 1% 1.21GB/s ± 1%
Chacha20Poly1305/Open-1350-X-8 1.28µs ± 0% 1.05GB/s ± 0%
Chacha20Poly1305/Seal-1350-8 1.15µs ± 0% 1.17GB/s ± 0%
Chacha20Poly1305/Seal-1350-X-8 1.32µs ± 1% 1.02GB/s ± 0%
Chacha20Poly1305/Open-8192-8 5.53µs ± 0% 1.48GB/s ± 0%
Chacha20Poly1305/Open-8192-X-8 5.71µs ± 1% 1.44GB/s ± 1%
Chacha20Poly1305/Seal-8192-8 5.54µs ± 1% 1.48GB/s ± 1%
Chacha20Poly1305/Seal-8192-X-8 5.74µs ± 1% 1.43GB/s ± 1%
Updates golang/go#24485
Change-Id: Iea6f3b4c2be67f16f56720a200dcc895c0f9d520
Reviewed-on: https://go-review.googlesource.com/127819
Run-TryBot: Filippo Valsorda <filippo@golang.org >
Reviewed-by: Adam Langley <agl@golang.org >
2018-08-06 17:10:22 +00:00
Michael Munday
754cb46fa0
chacha20poly1305: update to use new ChaCha20 API
...
Use the new streaming API introduced in CL 104856. Performance
change is negligible:
name old speed new speed delta
Chacha20Poly1305Open_64 131MB/s ± 2% 135MB/s ± 2% +3.01% (p=0.000 n=18+18)
Chacha20Poly1305Seal_64 137MB/s ± 2% 141MB/s ± 3% +2.89% (p=0.000 n=19+20)
Chacha20Poly1305Open_1350 305MB/s ± 3% 309MB/s ± 2% +1.38% (p=0.001 n=19+20)
Chacha20Poly1305Seal_1350 309MB/s ± 2% 311MB/s ± 2% +0.74% (p=0.032 n=19+18)
Chacha20Poly1305Open_8K 338MB/s ± 3% 340MB/s ± 2% ~ (p=0.108 n=19+20)
Chacha20Poly1305Seal_8K 335MB/s ± 4% 342MB/s ± 2% +1.96% (p=0.000 n=19+19)
Change-Id: I2232c9d8d8431f30fb85b4b371d78a57e633283e
Reviewed-on: https://go-review.googlesource.com/108657
Run-TryBot: Michael Munday <mike.munday@ibm.com >
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org >
2018-04-26 23:00:03 +00:00
Andreas Auernhammer
55a552f082
x/crypto/*: add import comment
...
Add import comment for blake2b, blake2s, chacha20poly1305 and cryptobyte.
Change-Id: I4703b5cd669e43a5d81422b2ded8b8f54eee5f9b
Reviewed-on: https://go-review.googlesource.com/39952
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org >
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org >
2017-04-07 17:36:45 +00:00
Adam Langley
594708b89f
chacha20poly1305: new package.
...
This change adds a package, chacha20poly1305, which implements the
ChaCha20-Poly1305 AEAD from RFC 7539. This AEAD has several attractive
features:
1. It's naturally constant time. AES-GCM needs either dedicated
hardware or extreme effort to be fast and constant-time, while
this design is easy to make constant-time.
2. It's fast on modern processors: it runs at 1GB/s on my IvyBrige
system.
3. It's seeing significant use in TLS. (A change for crypto/tls is
forthcoming.)
This change merges two CLs:
https://go-review.googlesource.com/#/c/24717
https://go-review.googlesource.com/#/c/26691
I took the amd64-optimised AEAD implementation from the former because
it was significantly faster. But the structure of the change is taken
from the latter.
This version will be checked into x/crypto. This package will then be
vendored into the stdlib so that it can be used from crypto/tls.
Change-Id: I5a60587958b7afeec81ca1091e603a7e8517000b
Reviewed-on: https://go-review.googlesource.com/30728
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org >
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org >
TryBot-Result: Gobot Gobot <gobot@golang.org >
2016-10-11 21:59:08 +00:00