Lucene search
K
FilippoioRecent

105 matches found

Filippo.io
Filippo.io
added 2026/04/20 3:21 p.m.5 views

Quantum Computers Are Not a Threat to 128-bit Symmetric Keys

The advancing threat of cryptographically-relevant quantum computers has made it urgent to replace currently-deployed asymmetric cryptography primitives—key exchange ECDH and digital signatures RSA, ECDSA, EdDSA—which are vulnerable to Shor’s quantum algorithm. It does not, however, impact existi...

6AI score
Exploits0
Filippo.io
Filippo.io
added 2026/04/06 3:0 p.m.3 views

A Cryptography Engineer’s Perspective on Quantum Computing Timelines

My position on the urgency of rolling out quantum-resistant cryptography has changed compared to just a few months ago. You might have heard this privately from me in the past weeks, but it’s time to signal and justify this change of mind publicly. There had been rumors for a while of expected an...

5.8AI score
Exploits0
Filippo.io
Filippo.io
added 2026/02/20 7:48 p.m.8 views

Turn Dependabot Off

Dependabot is a noise machine. It makes you feel like you’re doing work, but you’re actually discouraging more useful work. This is especially true for security alerts in the Go ecosystem. I recommend turning it off and replacing it with a pair of scheduled GitHub Actions, one running govulncheck...

6.3CVSS5.9AI score0.00018EPSS
Exploits0
Filippo.io
Filippo.io
added 2026/02/12 1:48 p.m.6 views

Inspecting the Source of Go Modules

Go has indisputably the best package integrity story of any programming language ecosystem. The Go Checksum Database guarantees that every Go client in the world is using the same source for a given Go module and version, forever. It works despite the decentralized nature of Go modules, which can...

5.8AI score
Exploits0
Filippo.io
Filippo.io
added 2026/01/05 8:6 p.m.6 views

go.sum Is Not a Lockfile

I need everyone to stop looking at go.sum, especially to analyze dependency graphs. It is not a “lockfile,”1 and it has zero semantic effects on version resolution. There is truly no use case for ever parsing it outside of cmd/go. go.sum is only a local cache for the Go Checksum Database. It’s a...

7AI score
Exploits0
Filippo.io
Filippo.io
added 2025/12/19 2:3 p.m.5 views

Building a Transparent Keyserver

Today, we are going to build a keyserver to lookup age public keys. That part is boring. What’s interesting is that we’ll apply the same transparency log technology as the Go Checksum Database to keep the keyserver operator honest and unable to surreptitiously inject malicious keys, while still...

6.5AI score
Exploits0
Filippo.io
Filippo.io
added 2025/11/20 3:42 p.m.7 views

The 2025 Go Cryptography State of the Union

This past August, I delivered my traditional Go Cryptography State of the Union talk at GopherCon US 2025 in New York. It goes into everything that happened at the intersection of Go and cryptography over the last year. You can watch the video with manually edited subtitles, for my fellow subtitl...

7.1AI score
Exploits0
Filippo.io
Filippo.io
added 2025/11/01 6:10 p.m.8 views

Claude Code Can Debug Low-level Cryptography

Over the past few days I wrote a new Go implementation of ML-DSA, a post-quantum signature algorithm specified by NIST last summer. I livecoded it all over four days, finishing it on Thursday evening. Except… Verify was always rejecting valid signatures. $ bin/go test crypto/internal/fips140/mlds...

7.2AI score
Exploits0
Filippo.io
Filippo.io
added 2025/10/23 1:49 p.m.9 views

The Geomys Standard of Care

One of the most impactful effects of professionalizing open source maintenance is that as professionals we can invest into upholding a set of standards that make our projects safer and more reliable. The same commitments and overhead that are often objected to when required of volunteers should b...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2025/10/10 2:33 p.m.5 views

A Retrospective Survey of 2024/2025 Open Source Supply Chain Compromises

Lack of memory safety is such a predominant cause of security issues that we have a responsibility as professional software engineering to robustly mitigate it in security-sensitive use cases—by using memory safe languages. Similarly, I have the growing impression that software supply chain...

6.3AI score
Exploits0
Filippo.io
Filippo.io
added 2025/08/14 2:23 p.m.8 views

Maintainers of Last Resort

Geomys is an organization of professional open source maintainers, focused on a portfolio of critical Go projects. For example, we are two thirds of the Go standard library cryptography maintainers, we provide the FIPS 140-3 validation of the upstream Go Cryptographic Module, and we fund the...

6CVSS7.3AI score0.00063EPSS
Exploits0
Filippo.io
Filippo.io
added 2025/08/13 3:50 p.m.6 views

Cross-Site Request Forgery

Cross-Site Request Forgery CSRF is a confused deputy attack where the attacker causes the browser to send a request to a target using the ambient authority of the user’s cookies or network position.1 For example, attacker.example can serve the following HTML to a victim and the browser will send ...

6.5AI score
Exploits0
Filippo.io
Filippo.io
added 2025/07/31 4:55 p.m.5 views

Go Assembly Mutation Testing

While maintaining and developing the Go cryptography standard library, we often spend significantly more time on testing than on implementation. That’s good and an important part of how we achieve our excellent security track record. Ideally, this would be especially true for the least safe parts...

7.4AI score
Exploits0
Filippo.io
Filippo.io
added 2025/07/14 3:17 p.m.5 views

Encrypting Files with Passkeys and age

Typage age-encryption on npm is a TypeScript1 implementation of the age file encryption format. It runs with Node.js, Deno, Bun, and browsers, and implements native age recipients, passphrase encryption, ASCII armoring, and supports custom recipient interfaces, like the Go implementation. However...

6.8AI score
Exploits0
Filippo.io
Filippo.io
added 2025/07/07 5:47 p.m.8 views

You Should Run a Certificate Transparency Log

Hear me out. If you are an organization with some spare storage and bandwidth, or an engineer looking to justify an overprovisioned homelab, you should consider running a Certificate Transparency log. It’s cheaper, easier, and more important than you might think. Certificate Transparency CT is on...

6.9AI score
Exploits0
Filippo.io
Filippo.io
added 2024/12/31 12:43 p.m.12 views

Benchmarking RSA Key Generation

RSA key generation is both conceptually simple, and one of the worst implementation tasks of the field of cryptography engineering. Even benchmarking it is tricky, and involves some math: here’s how we generated a stable but representative “average case” instead of using the ordinary statistical...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2024/12/05 9:26 p.m.19 views

frood, an Alpine initramfs NAS

My NAS, frood, has a bit of a weird setup. It’s just one big initramfs containing a whole Alpine Linux system. It’s delightful and I am not sure why it’s not more common. As long as the bootloader can find the kernel and initramfs, the machine comes up cleanly. A/B deployments and rollbacks are...

7.4AI score
Exploits0
Filippo.io
Filippo.io
added 2024/10/09 9:50 a.m.8 views

Accumulated Test Vectors

I like tests. I especially like reusable test vector libraries. Sometimes test vectors are lovingly handcrafted to target obscure edge-cases. Those vectors belong in Wycheproof or with the upstream specification. Sometimes though vectors are produced by sheer brute force. Enumerate every possible...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2024/09/25 8:42 p.m.5 views

The FIPS Compliance of HKDF

HKDF is an HMAC-based key-derivation function specified in RFC 5869. It’s nice and we generally like using it. FIPS Federal Information Processing Standards is used generally as a moniker for the set of standards, recommendations, and guidance published by the U.S. National Institute of Standards...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2024/08/21 2:47 p.m.13 views

Let’s All Agree to Use Seeds as ML-KEM Keys

Last week, NIST published the final version of the ML-KEM1 specification, FIPS 203. One change from the draft is that the final document explicitly allows storing the private decapsulation key as a seed. This is a plea to the cryptography engineering community: let’s all agree to only use seeds a...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2024/07/17 2:39 p.m.12 views

age Plugins

age is a file encryption tool, library, and format. It lets you encrypt files to “recipients” and decrypt them with “identities”. $ age-keygen -o key.txt Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p $ tar cvz /data | age -r...

7.1AI score
Exploits0
Filippo.io
Filippo.io
added 2024/07/08 2:36 p.m.12 views

Geomys, a blueprint for a sustainable open source maintenance firm

In 2022, I left Google in search of a sustainable approach to open source maintenance. A year later, I was a full-time independent professional open source maintainer. Today I’m announcing the natural progression of that experiment: Geomys,1 a small firm of professional maintainers with a portfol...

6.6AI score
Exploits0
Filippo.io
Filippo.io
added 2024/06/26 2:24 p.m.14 views

XAES-256-GCM

About a year ago I wrote that “I want to use XAES-256-GCM/11, which has a number of nice properties and only the annoying defect of not existing.” Well, there is now an XAES-256-GCM specification. Had to give up on the /11 part, but that was just a performance optimization. XAES-256-GCM is an...

7.2AI score
Exploits0
Filippo.io
Filippo.io
added 2024/04/06 8:40 p.m.26 views

My Maintenance Policy

I wrote a short document describing how I maintain open source projects, to link it from my global CODEOFCONDUCT, CONTRIBUTING, and SECURITY files. It talks about how I prefer issues to PRs, how I work in batches, and how I'm trigger-happy with bans. It's all about setting expectations. It got so...

7.5AI score
Exploits0
Filippo.io
Filippo.io
added 2024/02/14 2:1 p.m.23 views

PINs for Cryptography with Hardware Secure Elements

I’m a big fan of technologies that enable otherwise impossible security properties and user experiences, like cryptography often can. One such technology is hardware secure elements. Here’s a thing you can’t do with cryptography: encrypt data securely with a low-entropy secret, like a PIN. If a...

6.5AI score
Exploits0
Filippo.io
Filippo.io
added 2024/01/30 5:48 p.m.22 views

Post-quantum Cryptography for the Go Ecosystem

filippo.io/mlkem768 is a pure-Go implementation of ML-KEM-768 optimized for correctness and readability. ML-KEM formerly known as Kyber, renamed because we can't have nice things is a post-quantum key exchange mechanism in the process of being standardized by NIST and adopted by most of the...

6.7AI score
Exploits0
Filippo.io
Filippo.io
added 2023/11/07 6:37 p.m.30 views

Enough Polynomials and Linear Algebra to Implement Kyber

I was once talking with a mathematician and trying to explain elliptic curve cryptography. Eventually, something clicked and they went "oh, that! I think there was a chapter about it in the book. You made a whole field out of it?" Yes, in cryptography we end up focusing on a very narrow slice of...

6.9AI score
Exploits0
Filippo.io
Filippo.io
added 2023/10/24 2:56 p.m.26 views

Why We Don’t Generate Elliptic Curves Every Day

With all the talk recently of how the NIST curve parameters were selected, a reasonable observer could wonder why we all use the same curves instead of generating them along with keys, like we do for Diffie-Hellman parameters. You might have memories of waiting around for openssl dhparam to run a...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2023/10/05 9:21 p.m.30 views

Announcing the $12k NIST Elliptic Curves Seeds Bounty

The NIST elliptic curves that power much of modern cryptography were generated in the late '90s by hashing seeds provided by the NSA. How were the seeds generated? Rumor has it that they are in turn hashes of English sentences, but the person who picked them, Dr. Jerry Solinas, passed away in ear...

7.4AI score
Exploits0
Filippo.io
Filippo.io
added 2023/07/06 5:48 p.m.14 views

I want XAES-256-GCM/11

In 2023, the way to use AES is AES-GCM. Anything else is very unlikely to make sense. We might not like that, we might wish OCB hadn't been patented, but with hardware support in most processors these days GCM is both faster than the alternatives, ubiquitous, and just tolerable to implement. Stil...

7AI score
Exploits0
Filippo.io
Filippo.io
added 2023/04/11 6:0 p.m.20 views

A Cryptographic Near Miss

Go 1.20.2 fixed a small vulnerability in the crypto/elliptic package. The impact was minor, to the point that I don't think any application was impacted, but the issue was interesting to look at as a near-miss, and to learn from. Fundamentally, a scalar multiplication function was returning the...

7.8AI score
Exploits0
Filippo.io
Filippo.io
added 2023/03/23 5:0 p.m.21 views

Planning Go 1.21 Cryptography Work

As most of you are tired to hear by now, I am a professional, full-time open-source maintainer, and a lot of my time is spent maintaining the Go cryptography standard libraries. Go's development follows a fixed calendar with two development windows and two releases every year. I try to write abou...

7.2AI score
Exploits0
Filippo.io
Filippo.io
added 2023/03/03 3:30 p.m.54 views

Avoid The Randomness From The Sky

This is a plea for cryptography specification authors. If your protocol uses randomness, please make it a deterministic function that takes a fixed-size string of random bytes , and publish known-answer tests for it. This whole issue could really be just the paragraph above, but I feel like I nee...

7.1AI score
Exploits0
Filippo.io
Filippo.io
added 2023/02/02 9:43 p.m.27 views

I’m Now a Full-Time Professional Open Source Maintainer

or, "Holy shit, it works!" Last May I left my job on the Go team at Google to experiment with more sustainable paths for open-source maintainers. I held on to my various maintainer hats Go cryptography, transparency tooling, age, mkcert, yubikey-agent…, iterated on the model since September, and ...

6.7AI score
Exploits0
Filippo.io
Filippo.io
added 2023/01/08 6:29 p.m.27 views

ssh whoami.filippo.io

I updated the whoami.filippo.io dataset over the holidays, so it should be pretty accurate at least for a little while. If you already know what Im talking about, below are some tidbits about how I fetched the new dataset and how its stored. If you dont, stop reading, and run this. Ill wait. $ ss...

6.8AI score
Exploits0
Filippo.io
Filippo.io
added 2023/01/04 4:10 p.m.29 views

Go 1.20 Cryptography

The first second release candidate of Go 1.20 is out!1 This is the first release I participated in as an independent maintainer, after leaving Google to become a professional Open Source maintainer. By the way, thats going great, and Im going to write more about it here soon! Im pretty happy with...

6.1AI score
Exploits0
Filippo.io
Filippo.io
added 2022/12/28 12:18 p.m.71 views

My age+YubiKeys Password Management Solution

Password managers are in the news, and its the holidays, so its as good a time as ever to describe my password and secret management setup. Its very much not for everyone, but its minimal, simple, and has some interesting security properties: even if my laptop were compromised, it would take an...

6.7AI score
Exploits0
Filippo.io
Filippo.io
added 2022/11/09 2:28 p.m.14 views

A GC-Friendly Go Interning Cache

Ive seen a little gem pass by in a Go cryptography code review and I want to share it because I think its a pattern that can be reused. Lets start with a problem statement: crypto/x509 Certificate values take a bunch of memory, and for every open TLS connection you end up with a copy of the leaf...

6.8AI score
Exploits0
Filippo.io
Filippo.io
added 2022/11/02 5:22 p.m.1031 views

Why Did the OpenSSL Punycode Vulnerability Happen

Some room-temperature takes on yesterdays not-quite-RCE vulnerabilities in OpenSSL 3.0, and on what there is to learn about safe cryptography engineering. A recap Yesterday OpenSSL published version 3.0.7, which was pre-announced to contain a fix for a CRITICAL vulnerability, the first one since...

5CVSS8.3AI score0.83506EPSS
Exploits6
Filippo.io
Filippo.io
added 2022/10/26 1:35 a.m.15 views

The Reciprocal Value of Access to Maintainers

Last May I left Google to build a more sustainable model for Open Source maintenance. After a summer break, I resumed my maintenance work on the Go project in September, and I started offering my services to companies that rely on Go. My vision is that of Open Source maintenance as a real...

6.4AI score
Exploits0
Filippo.io
Filippo.io
added 2022/09/29 6:45 p.m.35 views

age and Authenticated Encryption

age is a file encryption format, tool, and library. It was made to replace one of the last remaining GnuPG use cases, but it was not made to replace GnuPG because in the last 20 years we learned that cryptographic tools work best when they are specialized and opinionated instead of flexible Swiss...

7AI score
Exploits0
Filippo.io
Filippo.io
added 2022/09/12 9:37 p.m.31 views

Planning Go 1.20 Cryptography Work

As you might know, I left Google in spring to try and make the concept of a professional Open Source maintainer a thing. Im staying on as a maintainer of the Go cryptography standard library, and I am going to seek funding from companies that rely on it, want to ensure its security and reliabilit...

6.9AI score
Exploits0
Filippo.io
Filippo.io
added 2022/08/04 2:52 p.m.30 views

A Wide Reduction Trick

In line with the original spirit of Cryptography Dispatches, this is a quick1 issue to talk about a neat bit of cryptography engineering I encountered. The structure of an ECC implementation Elliptic curve cryptography implementations all roughly share the following structure: theres a base field...

6.7AI score
Exploits0
Filippo.io
Filippo.io
added 2022/07/29 1:38 a.m.35 views

KEMs and Post-Quantum age

Theyre here! NIST selected a first batch of post-quantum cryptographic key exchange and signature algorithms. The report is a nice read that explains a lot of the goals, candidates, selections, and rationales. I recommend Sections 2, 3.3, and 4.1. For key exchange, NIST selected only...

6.2AI score
Exploits0
Filippo.io
Filippo.io
added 2022/03/17 11:7 a.m.15 views

How to pay professional maintainers

I work on the Go team at Google, but this is my personal opinion as someone who built a career on Open Source both at and outside big companies. In a previous essay, Professional maintainers: a wake-up call, I argued that we need Open Source maintainers to professionalize into a role thats legibl...

7AI score
Exploits0
Filippo.io
Filippo.io
added 2021/12/11 6:58 p.m.18 views

Professional maintainers: a wake-up call

I work on the Go team at Google, but this is my personal opinion as someone who built a career on Open Source both at and outside big companies. Open Source software runs the Internet, and by extension the economy. This is an undisputed fact about reality in 2021. And yet, the role of Open Source...

7.3AI score
Exploits0
Filippo.io
Filippo.io
added 2021/09/15 10:0 p.m.14 views

Automatic Cipher Suite Ordering in crypto/tls

This is the first article I wrote for the Go blog !! about how TLS cipher suites configuration got so complicated, and how weve made it way easier in Go 1.17. The Go standard library provides crypto/tls, a robust implementation of Transport Layer Security TLS, the most important security protocol...

6.4AI score
Exploits0
Filippo.io
Filippo.io
added 2021/01/09 11:0 p.m.24 views

The Most Backdoor-Looking Bug I’ve Ever Seen

This is the story of a bug that was discovered and fixed in Telegrams self-rolled cryptographic protocol about seven years ago. The bug didnt get any press, and no one seems to know about it, probably because it was only published in Russian. To this day, its the most backdoor-looking bug Ive eve...

7.2AI score
Exploits0
Filippo.io
Filippo.io
added 2020/12/17 11:0 p.m.16 views

Re-Deriving the edwards25519 Decoding Formulas

A lot of my job is implementing specifications, and sometimes in a crypto spec youll encounter something like this p+3/8 3 p-5/8 x = u/v = u v u v^7 mod p and what you do is nod, copy it into a comment, break it down into a sequence of operations, and check that the result matches a test case.1...

Exploits0
Filippo.io
Filippo.io
added 2020/10/07 10:0 p.m.12 views

Reconstruct Instead of Validating

Project Zero dropped a great bug in Vault which I think would have been prevented by one of the lessons learned of cryptography engineering: when you can, always prefer reconstructing a value rather than parsing and validating it. You should read the blog post to understand the attack first,...

6.9AI score
Exploits0
Total number of security vulnerabilities105