Reading [entries|reading|network|archive]
simont

[ userinfo | dreamwidth userinfo ]
[ archive | journal archive ]

[personal profile] andrewducker Sun 2026-03-22 12:00
Interesting Links for 22-03-2026
LinkReply
[syndicated profile] hacker_news_daily_feed Sun 2026-03-22 00:00
Daily Hacker News for 2026-03-21

The 10 highest-rated articles on Hacker News on March 21, 2026 which have not appeared on any previous Hacker News Daily are:

LinkReply
[personal profile] kaberett Sat 2026-03-21 22:12
happy equinox, etc

Today was A Travel Day; yesterday, in preparation for same, I Ran Errands, including "acquiring Tiny Cake" and "visiting the pharmacy".

On the way from those two jobs to the next couple, I passed Several Good Things.

One was a new-to-me flavour of completely ridiculous daffodil:

a double daffodil, with white petals and inner trumpet, protruding past a much shorter orange outer trumpet

It's a double not in the sense of having a confusing froth of intermingled trumpets (as of Double Fashion or Double Camparnelle, both of which exist locally), but in the sense of having two nested trumpets, one shorter and orange, from which the longer white one protrudes. I have never! previously! seen a thing like this! I am really enjoying my current streak of encountering varieties of daffodil that make me go "what the fuck???"

Shortly thereafter I checked over my shoulder while crossing a tiny bridge and was startled and delighted to see A COOT UPON THE NEST that, last I passed it, was clearly still derelict. Obviously I went back and Gazed Upon It for Some Time and was eventually rewarded by it STANDING UP to reveal SEVEN??? (possibly) EGGS!!!

And the Egyptian goslings were peeping about the place when I subsequently passed them on my way back up the hill. A+ errands would run again.

Link1 comment | Reply
[syndicated profile] mjg59_codon_feed Sat 2026-03-21 12:38
SSH certificates and git signing

When you’re looking at source code it can be helpful to have some evidence indicating who wrote it. Author tags give a surface level indication, but it turns out you can just lie and if someone isn’t paying attention when merging stuff there’s certainly a risk that a commit could be merged with an author field that doesn’t represent reality. Account compromise can make this even worse - a PR being opened by a compromised user is going to be hard to distinguish from the authentic user. In a world where supply chain security is an increasing concern, it’s easy to understand why people would want more evidence that code was actually written by the person it’s attributed to.

git has support for cryptographically signing commits and tags. Because git is about choice even if Linux isn’t, you can do this signing with OpenPGP keys, X.509 certificates, or SSH keys. You’re probably going to be unsurprised about my feelings around OpenPGP and the web of trust, and X.509 certificates are an absolute nightmare. That leaves SSH keys, but bare cryptographic keys aren’t terribly helpful in isolation - you need some way to make a determination about which keys you trust. If you’re using someting like GitHub you can extract that information from the set of keys associated with a user account1, but that means that a compromised GitHub account is now also a way to alter the set of trusted keys and also when was the last time you audited your keys and how certain are you that every trusted key there is still 100% under your control? Surely there’s a better way.

SSH Certificates

And, thankfully, there is. OpenSSH supports certificates, an SSH public key that’s been signed by some trusted party and so now you can assert that it’s trustworthy in some form. SSH Certificates also contain metadata in the form of Principals, a list of identities that the trusted party included in the certificate. These might simply be usernames, but they might also provide information about group membership. There’s also, unsurprisingly, native support in SSH for forwarding them (using the agent forwarding protocol), so you can keep your keys on your local system, ssh into your actual dev system, and have access to them without any additional complexity.

And, wonderfully, you can use them in git! Let’s find out how.

Local config

There’s two main parameters you need to set. First,

1
git config set gpg.format ssh

because unfortunately for historical reasons all the git signing config is under the gpg namespace even if you’re not using OpenPGP. Yes, this makes me sad. But you’re also going to need something else. Either user.signingkey needs to be set to the path of your certificate, or you need to set gpg.ssh.defaultKeyCommand to a command that will talk to an SSH agent and find the certificate for you (this can be helpful if it’s stored on a smartcard or something rather than on disk). Thankfully for you, I’ve written one. It will talk to an SSH agent (either whatever’s pointed at by the SSH_AUTH_SOCK environment variable or with the -agent argument), find a certificate signed with the key provided with the -ca argument, and then pass that back to git. Now you can simply pass -S to git commit and various other commands, and you’ll have a signature.

Validating signatures

This is a bit more annoying. Using native git tooling ends up calling out to ssh-keygen2, which validates signatures against a file in a format that looks somewhat like authorized-keys. This lets you add something like:

1
* cert-authority ssh-rsa AAAA…

which will match all principals (the wildcard) and succeed if the signature is made with a certificate that’s signed by the key following cert-authority. I recommend you don’t read the code that does this in git because I made that mistake myself, but it does work. Unfortunately it doesn’t provide a lot of granularity around things like “Does the certificate need to be valid at this specific time” and “Should the user only be able to modify specific files” and that kind of thing, but also if you’re using GitHub or GitLab you wouldn’t need to do this at all because they’ll just do this magically and put a “verified” tag against anything with a valid signature, right?

Haha. No.

Unfortunately while both GitHub and GitLab support using SSH certificates for authentication (so a user can’t push to a repo unless they have a certificate signed by the configured CA), there’s currently no way to say “Trust all commits with an SSH certificate signed by this CA”. I am unclear on why. So, I wrote my own. It takes a range of commits, and verifies that each one is signed with either a certificate signed by the key in CA_PUB_KEY or (optionally) an OpenPGP key provided in ALLOWED_PGP_KEYS. Why OpenPGP? Because even if you sign all of your own commits with an SSH certificate, anyone using the API or web interface will end up with their commits signed by an OpenPGP key, and if you want to have those commits validate you’ll need to handle that.

In any case, this should be easy enough to integrate into whatever CI pipeline you have. This is currently very much a proof of concept and I wouldn’t recommend deploying it anywhere, but I am interested in merging support for additional policy around things like expiry dates or group membership.

Doing it in hardware

Of course, certificates don’t buy you any additional security if an attacker is able to steal your private key material - they can steal the certificate at the same time. This can be avoided on almost all modern hardware by storing the private key in a separate cryptographic coprocessor - a Trusted Platform Module on PCs, or the Secure Enclave on Macs. If you’re on a Mac then Secretive has been around for some time, but things are a little harder on Windows and Linux - there’s various things you can do with PKCS#11 but you’ll hate yourself even more than you’ll hate me for suggesting it in the first place, and there’s ssh-tpm-agent except it’s Linux only and quite tied to Linux.

So, obviously, I wrote my own. This makes use of the go-attestation library my team at Google wrote, and is able to generate TPM-backed keys and export them over the SSH agent protocol. It’s also able to proxy requests back to an existing agent, so you can just have it take care of your TPM-backed keys and continue using your existing agent for everything else. In theory it should also work on Windows3 but this is all in preparation for a talk I only found out I was giving about two weeks beforehand, so I haven’t actually had time to test anything other than that it builds.

And, delightfully, because the agent protocol doesn’t care about where the keys are actually stored, this still works just fine with forwarding - you can ssh into a remote system and sign something using a private key that’s stored in your local TPM or Secure Enclave. Remote use can be as transparent as local use.

Wait, attestation?

Ah yes you may be wondering why I’m using go-attestation and why the term “attestation” is in my agent’s name. It’s because when I’m generating the key I’m also generating all the artifacts required to prove that the key was generated on a particular TPM. I haven’t actually implemented the other end of that yet, but if implemented this would allow you to verify that a key was generated in hardware before you issue it with an SSH certificate - and in an age of agentic bots accidentally exfiltrating whatever they find on disk, that gives you a lot more confidence that a commit was signed on hardware you own.

Conclusion

Using SSH certificates for git commit signing is great - the tooling is a bit rough but otherwise they’re basically better than every other alternative, and also if you already have infrastructure for issuing SSH certificates then you can just reuse it4 and everyone wins.


  1. Did you know you can just download people’s SSH pubkeys from github from https://github.com/<username>.keys? Now you do ↩︎

  2. Yes it is somewhat confusing that the keygen command does things other than generate keys ↩︎

  3. This is more difficult than it sounds ↩︎

  4. And if you don’t, by implementing this you now have infrastructure for issuing SSH certificates and can use that for SSH authentication as well. ↩︎

LinkReply
[personal profile] andrewducker Sat 2026-03-21 12:01
Interesting Links for 21-03-2026
Link2 comments | Reply
[personal profile] rmc28 Sat 2026-03-21 11:58
Varsity!

This time a week ago I was on the ice with fellow Cambridge alumni for "Alumni game 1", kicking off Varsity. Photos (from one of my Warbirds teammates!) that actually make me look good are over at my hockey insta but here's my personal favourite, capturing a moment in motion:

Rachel in University of Cambridge ice hockey kit, knees bent and stick in the air

After about an hour on the ice (2 periods running clock, 4 lines), I had a quick shower, and then spent the next ten or so hours mostly on my feet, doing music and announcements for my Huskies teammates, and scoresheet and in-game announcements for Women's Blues and Men's Blues. Final scores were:

  • Alumni game 1: 1-1
  • Alumni game 2: not sure, but we won
  • Huskies: 3-8
  • Women's Blues: 0-1
  • Men's Blues: 5-1

The alumni games were a great vibe: we cared, but it wasn't that intense. A whole load of the women I played with in 2022-23 came back, and for me that was really joyful, plus I got to make some new friends. A couple of the older guys in game 1 had played with my old work colleague Brian Omotani back in the day. Although he didn't play, he was there to watch, and he made time to come and find me for a brief catchup later in the day.

The rest of the day though was a different gear. The Huskies game was especially tough to watch, and I felt every goal against my teammates. The Women's Blues game was incredible, the team worked so hard and it was probably the best I've seen them play. And the Men's Blues winning so decisively was delightful, especially as the first goal came from one of the two ex-Huskies (and they both got an assist each later). The whole day was incredibly intense. And then I took my kit home to hang it up, changed, met up with everyone at Mash, danced until the club closed, went to Maccies (and realised just how much my feet hurt) until that closed, and sat on a bench gossiping with two of my favourite people in the club while one of them finished his burger. Eventually we all cycled home. I didn't want the day to end, but I had things to do on Sunday.

That is, very nearly, the end of the season with just the Nationals weekends in Sheffield to go. We've finished the league games, we've had Varsity, we're shifting to "summer ice" open practices, and even had the very last "S&C" gym session on Thursday this week. Some people will graduate and leave soon, and I will miss them so much, but I am so grateful for this university season and the time I've had with these wonderful people.

Link2 comments | Reply
[syndicated profile] hacker_news_daily_feed Sat 2026-03-21 00:00
Daily Hacker News for 2026-03-20

The 10 highest-rated articles on Hacker News on March 20, 2026 which have not appeared on any previous Hacker News Daily are:

LinkReply
[syndicated profile] schneier_no_tracking_feed Fri 2026-03-20 21:06
Friday Squid Blogging: Jumbo Flying Squid in the South Pacific

Posted by Bruce Schneier

The population needs better conservation.

As usual, you can also use this squid post to talk about the security stories in the news that I haven’t covered.

Blog moderation policy.

LinkReply
[syndicated profile] xkcd_feed Fri 2026-03-20 04:00
Star Formation
It's ok, I still have some nice, cool gas clouds that aren't collapsing. As long as nothing ionizes them, I can continue to enjoy their ... HEY! NO!!!
LinkReply
[personal profile] andrewducker Fri 2026-03-20 12:00
Interesting Links for 20-03-2026
Link2 comments | Reply
[syndicated profile] schneier_no_tracking_feed Fri 2026-03-20 11:02
Proton Mail Shared User Information with the Police

Posted by Bruce Schneier

404 Media has a story about Proton Mail giving subscriber data to the Swiss government, who passed the information to the FBI.

It’s metadata—payment information related to a particular account—but still important knowledge. This sort of thing happens, even to privacy-centric companies like Proton Mail.

LinkReply
[personal profile] andrewducker Fri 2026-03-20 02:30
Photo cross-post


Nice mist on Arthur's Seat this morning.
Original is here on Pixelfed.scot.

LinkReply
[syndicated profile] questionable_content_feed Thu 2026-03-19 22:01
Trap Sprung

psst if you sign up for the $5/month tier on my patreon you can see the (very nsfw) thirst pic

LinkReply
[syndicated profile] hacker_news_daily_feed Fri 2026-03-20 00:00
Daily Hacker News for 2026-03-19

The 10 highest-rated articles on Hacker News on March 19, 2026 which have not appeared on any previous Hacker News Daily are:

LinkReply
[personal profile] kaberett Thu 2026-03-19 23:59
some good things
  1. Migraine World Summit is finished for the year and they chose an extremely good closing keynote about which I am cheerful and bouncy. (Messoud Ashina, CGRP, PACAP & beyond, say if you would like me to try to write more about this).
  2. Got to spend time with The Child! Was summoned Upstairs to Rest and Read Books for a bit. Some really really excellent self-management and regulation in there around Lots Of Feelings.
  3. BRONZE AGE LOOM.
  4. Good therapy session.
  5. There is now a box of veg cassoulet (+ suspicious protein chunks) in the freezer to be Future Food, and another two portions on the hob for dinner tomorrow.
  6. I know I keep mentioning the Bedtime Ritual of Lebkuchen and Milk but this is because it is very good and very soothing, okay.
  7. My watch continues a viable approach to biofeedback (so all I need now is to remember to actually do it...)
Link2 comments | Reply
[personal profile] andrewducker Thu 2026-03-19 12:00
Interesting Links for 19-03-2026
Link4 comments | Reply
[syndicated profile] schneier_no_tracking_feed Thu 2026-03-19 09:47
Hacking a Robot Vacuum

Posted by Bruce Schneier

Someone tries to remote control his own DJI Romo vacuum, and ends up controlling 7,000 of them from all around the world.

The IoT is horribly insecure, but we already knew that.

LinkReply
[syndicated profile] questionable_content_feed Wed 2026-03-18 21:51
Time To Have The Talk
Link1 comment | Reply
[syndicated profile] hacker_news_daily_feed Thu 2026-03-19 00:00
Daily Hacker News for 2026-03-18

The 10 highest-rated articles on Hacker News on March 18, 2026 which have not appeared on any previous Hacker News Daily are:

LinkReply
[personal profile] kaberett Wed 2026-03-18 22:47
pointy animals

I left so many things out of the zoo post on Saturday (that I have still not gone back to add in) but the one I am telling you about today (aside from the dwarf mongeese, which I mention only in passing) is Snake, But What If Unicorn:

Read more... )

This Creature is Gonyosoma boulengeri, the rhinoceros ratsnake. The accompanying distractions included, gloriously,

The function of their majestic nose-points is unknown as we still have a lot to learn about these beautiful animals.

Link5 comments | Reply
navigation
[ viewing | most recent entries ]
[ go | earlier ]