Cryptogopher / Go cryptography maintainer
Professional open source maintainer
https://filippo.io / https://github.com/FiloSottile
https://mkcert.dev / https://age-encryption.org
https://sunlight.dev / https://filippo.io/newsletter
I know technology gets better but... excuse me? 66.2x locally on a laptop!?
For context, when I bought this laptop, OpenAI's Whisper didn't exist yet.
I know technology gets better but... excuse me? 66.2x locally on a laptop!?
For context, when I bought this laptop, OpenAI's Whisper didn't exist yet.
I found it difficult to chase down definitions, disambiguate overlapping terms, ignore irrelevant alternatives, and cut through abstraction layers, so I wrote a condensed spec.
It's 235 lines. filippo.io/hpke-pq
I found it difficult to chase down definitions, disambiguate overlapping terms, ignore irrelevant alternatives, and cut through abstraction layers, so I wrote a condensed spec.
It's 235 lines. filippo.io/hpke-pq
It arrived as an email with a .eml attachment which in turn has a .p7m attachment, which contains a .pdf file.
It arrived as an email with a .eml attachment which in turn has a .p7m attachment, which contains a .pdf file.
YouTube link: www.youtube.com/watch?v=otOb...
YouTube link: www.youtube.com/watch?v=otOb...
SELECT v FROM t WHERE k = ?
and then
UPDATE t SET v = ? WHERE k = ? AND v = ?
and the UPDATE was not applying?
Turns out I was storing nil → NULL, and then reading []byte(stmt.GetText("v")) → []byte(""). NULL and the empty BLOB don't compare equal.
SELECT v FROM t WHERE k = ?
and then
UPDATE t SET v = ? WHERE k = ? AND v = ?
and the UPDATE was not applying?
Turns out I was storing nil → NULL, and then reading []byte(stmt.GetText("v")) → []byte(""). NULL and the empty BLOB don't compare equal.
linux/amd64
linux/arm64
darwin/arm64
windows/amd64
(“Things you should be very concerned about the crypto maintainer saying,” if you deploy to any others 😬)
linux/amd64
linux/arm64
darwin/arm64
windows/amd64
(“Things you should be very concerned about the crypto maintainer saying,” if you deploy to any others 😬)
This is the same technique as words.filippo.io/rsa-keygen-b....
This is the same technique as words.filippo.io/rsa-keygen-b....
Are there actually useful professional conversations to be had, or people to be reached?
(I don’t anticipate needing it for work, just asking how it is as an audience essentially.)
Are there actually useful professional conversations to be had, or people to be reached?
(I don’t anticipate needing it for work, just asking how it is as an audience essentially.)
- broken NIST test vectors groups.google.com/a/list.nist....
- a bug in a formally verified Rust library (!!) github.com/cryspen/libc...
- missing test coverage in Wycheproof github.com/C2SP/wychepr...
I'd like the TODO to start getting shorter instead of longer.
- broken NIST test vectors groups.google.com/a/list.nist....
- a bug in a formally verified Rust library (!!) github.com/cryspen/libc...
- missing test coverage in Wycheproof github.com/C2SP/wychepr...
I'd like the TODO to start getting shorter instead of longer.
Verify44-8 109µ ± 1%
Keygen44-8 132µ ± 1%
± 74%... ah, right, ML-DSA signing does rejections (i.e. it tries again if the sig is not good a random no. of times).
We'll need deterministic benchmark targets that reject a statistically avg. number of times, like for RSA keygen.
Verify44-8 109µ ± 1%
Keygen44-8 132µ ± 1%
± 74%... ah, right, ML-DSA signing does rejections (i.e. it tries again if the sig is not good a random no. of times).
We'll need deterministic benchmark targets that reject a statistically avg. number of times, like for RSA keygen.
A small case study of useful AI tasks that aren't generating code that requires review.
A small case study of useful AI tasks that aren't generating code that requires review.
I trust everyone will be very normal about this, right?
I trust everyone will be very normal about this, right?
Now I want to go back on the livestream recording to find how I generated the wrong constants. I blame Python.
Now I want to go back on the livestream recording to find how I generated the wrong constants. I blame Python.
Proud to be on this mission with @mpvl.io, @myitcv.io, @rog.bsky.social, @hylomorphism.bsky.social, and @dominikdm.bsky.social.
Proud to be on this mission with @mpvl.io, @myitcv.io, @rog.bsky.social, @hylomorphism.bsky.social, and @dominikdm.bsky.social.
I knew this. I managed to remember it for a year or so. And then.
They are now re-re-re-re-litigating the invisible strings to hash with hybrid KEMs. age PQ is blocked on that.
The PAKE selection process started in 2019 and the two winners (OPAQUE and CPace) are still drafts.
Hedged ECDSA has been a draft since 2019.
ristretto255 took five years.
I knew this. I managed to remember it for a year or so. And then.
They are now re-re-re-re-litigating the invisible strings to hash with hybrid KEMs. age PQ is blocked on that.
Firesheep used to be a thing! Your ISP used to know everything you did online! The web is so much safer than it was just 10 years ago.
Especially happy that this will kill off invisible links to HTTP-to-HTTPS redirects.
security.googleblog.com/2025/10/http...
Firesheep used to be a thing! Your ISP used to know everything you did online! The web is so much safer than it was just 10 years ago.
Especially happy that this will kill off invisible links to HTTP-to-HTTPS redirects.
These use the transparency logs we built into the Go supply chain to keep the Google-operated services honest.
These use the transparency logs we built into the Go supply chain to keep the Google-operated services honest.
Maybe I'll stream an ML-DSA implementation tomorrow at www.twitch.tv/filosottile.
Maybe I'll stream an ML-DSA implementation tomorrow at www.twitch.tv/filosottile.
It covers general maintenance, stability & reliability, dependency management, account and CI security, vulnerability handling, licensing, and more.
It covers general maintenance, stability & reliability, dependency management, account and CI security, vulnerability handling, licensing, and more.
Phishing regularly upends people's lives. The Safe Browsing cat-and-mouse with all its opaque false positives will be necessary until we roll out phishing-resistant auth.
Phishing regularly upends people's lives. The Safe Browsing cat-and-mouse with all its opaque false positives will be necessary until we roll out phishing-resistant auth.
Read more: sethmlarson.dev/drawing-an-a...
Read more: sethmlarson.dev/drawing-an-a...