kaberett: Trans symbol with Swiss Army knife tools at other positions around the central circle. (Default)
kaberett ([personal profile] kaberett) wrote2026-03-22 10:39 pm
Entry tags:

vital functions

Reading. Finished my first pass through LIFTOFF by Casey Johnston! Will continue to use it as a reference work (tomorrow starts my third and final week of Phase 1 -- bodyweight practice of compound movements -- before I move on to doing things with Actual Weights...). I should probably note for the record that I have edited it as I've gone through to fix a fair few typos.

More She's A Beast archives (just reached February 2023!).

Tiiiiiny bit of a start on my Wicked Problems (Max Gladstone) reread, in a general spirit of wanting to have any idea at all of what's going on in Dead Hand Rule.

Writing. The document! is over! 9000!!! despite the fact that I've deleted a bunch of bits of variation-on-a-theme as I home in on what it is I actually want to say! I have gone "that will do" about my first draft of the introduction (it definitely needs ... more ... tweaking, but I think all the pieces are now there) and have moved on to the introduction to part the first, working title "What is pain?" I'm very close to having that Good Enough For Now, I think, whereupon... a chapter?!

Watching. 2026 Migraine World Summit. So much Migraine World Summit. BUT I managed to catch everything this year, and now I am working on condensing and transcribing my digital notes into my notebook. More to follow, possibly.

Listening. I caught up to where A had got to with Hidden Almanac (which I had theoretically heard all of but in practice was asleep for... some... of)! We had a long drive! We are now most of the way through 2014, I have learned about Pastor Drom's side hustle, and there is a crow named George.

Playing. Bit more Inkulinati? Tiny bit more Inkulinati.

Eating. Mooooore allotment lamb's lettuce. AND a bunch of TREETS from the local FANCY BAKERY, incl. double chocolate brownie (not quite dark and chocolatey enough for my tastes; too dark for A); bread pudding; and a rhubarb and ginger teacake.

This week I am also experimenting with lentil cakes (like rice cakes, but lentil) and Dr Karg's Pumpkin Seed Protein Thins. I find the former perplexing, in that they taste kind of like crispy seaweed snacks while also being completely the wrong shape and texture, and am much more into the latter (even eaten dry!) than I expected. A considers them alarming cardboard; I think I think they are enough like Ryvita, of which I am fond, to be of at least some interest? Might... get more of these. (Could in theory reverse engineer them but that sounds like a lot of effort.)

Exploring. Had another couple of Extremely Satisfactory errand-bimbles discovering People's Front Gardens.

Making & mending. I have FROGGED the experimental continental knitted portion of A's second glove (tension was bad; have decided I want these gloves Done more than I want to do enough continental knitting to get the tension right) and resumed; I have done A Little More Cuff.

Growing. Aubergines finally! belatedly! sown! Oca into the ground. Broad beans finally coming up. More garlic transplanted.

Observing. THE COOTS! HAVE! EGGS!

kaberett: Trans symbol with Swiss Army knife tools at other positions around the central circle. (Default)
kaberett ([personal profile] kaberett) wrote2026-03-21 10:12 pm
Entry tags:

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.

Posts on Matthew Garrett's Blog ([syndicated profile] mjg59_codon_feed) wrote2026-03-21 12:38 pm

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. ↩︎

rmc28: Rachel in hockey gear on the frozen fen at Upware, near Cambridge (Default)
Rachel Coleman ([personal profile] rmc28) wrote2026-03-21 11:58 am
Entry tags:

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.

Schneier on Security ([syndicated profile] schneier_no_tracking_feed) wrote2026-03-20 11:02 am

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.

andrewducker: (Default)
andrewducker ([personal profile] andrewducker) wrote2026-03-20 02:30 am
Entry tags:

Photo cross-post


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

kaberett: Trans symbol with Swiss Army knife tools at other positions around the central circle. (Default)
kaberett ([personal profile] kaberett) wrote2026-03-19 11:59 pm

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...)
Schneier on Security ([syndicated profile] schneier_no_tracking_feed) wrote2026-03-19 09:47 am