kiya: (headdesk)
kiya ([personal profile] kiya) wrote2026-03-21 06:54 pm

Really, really winning.

PSA



Did you know
Mental health is worse
In the population
We're trying to kill?

It's why
They can't be allowed
To be
Like that.

It's for their own good,
You see.
These laws
Are protection.

Left to their own devices
They make bad choices,
Which lead to
Negative outcomes,
Like living.
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. ↩︎

spiralsheep: Sheep wearing an eyepatch (Default)
Humph ([personal profile] spiralsheep) wrote2026-03-21 07:00 pm

In which there is a belated happy Persian new year (according to the bus queue)

It's a wrap! Or a warp. I like to offer you an informed choice. ;-)

Film: Nouvelle Vague, 2025, is US / French film about the making of A bout de souffle. So it's a Richard Linklater homage to Jean-Luc Godard - a movie god making a film about a god of cinema, or at least a godard of cinema. Exactly as you'd expect in every way. I felt it didn't quite deserve full marks due to minor blandness and predictability, but there are no actual faults with the film: the audience gets what it deserves. ;-) 4.5/5
P.S. That dance scene from Bande à part referenced again (but Le Week-End is still my fave recreation).
P.P.S. So, now I've mentioned the other film, Nouvelle Vague has a smart script with slick direction and cinematography and production... but it's also sorta shallow compared to Le Week-End, which gave audiences three truly great film actors* allowed space by the director to explore everyday human experience in depth. Both movies focus on trivia, one more intellectually and one more emotionally, but only one of them finds additional profundity. Quoting philosophical one-liners is not in itself a profound activity and any parrot can be trained to do it. Nouvelle Vague is a tribute, while Le Week-End is an original.
* Lindsay Duncan, Jim Broadbent, and Jeff Goldblum.

Film: Grass, a Nation's Battle for Life, 1925, US / Bakhtiari documentary film about the seasonal migration of 50,000 of the Bakhtiari (Lurs) and all their sheep, goats, cows, horses, donkeys, and dogs from exhausted pasture to fresh pasture, across several rivers including the Karun and over a snow covered mountain pass through the 4,221m Zard-Kuh subrange. Just crossing the river takes a week! (Spoiler for history: when the team considered remaking the film in 1947 they were told the migration was now done mostly in cars and trucks.) It is, of course, a silent movie, although the music track for the screening I attended was painfully ear-splittingly loud for no apparent reason. There are explanatory intertitles throughout, beginning with typical USian self-congratulatory racism about "Aryans" supposedly originating in West Asia and progressing westwards as civilisation progressed... with the implication that Hollywood is the peak of human culture, lmao (USians: so modest!). If you're wondering why the intertitles keep shouting "Yo, Ali!" it's because the Bakhtiari are Shia Muslims.
Presenter: Marguerite Harrison.
Conclusion: worth seeing on a BIG screen for the spectacle, but the commentary is as racist as most "Aryan" ethnography of the time. No rating.

Film: Köln 75, 2025, is a German film about... well, that's a problem because it doesn't know what it's about. Cut for moaning. )
Conclusion: the filmmakers and their male gaze didn't find Vera Brandes that interesting as a central subject, they couldn't focus on their hero Keith Jarrett, so they produced a confused hash spiced up with teenage girl sex-appeal for their chosen audience. No rating because the film is too inconsistent.
P.S. There's a documentary, Lost in Köln, 2025, which I haven't seen but I'm guessing would be a more worthwhile investment of time than... whatever this was that I watched.
P.P.S. Only fun if you understand German but... Floh de Cologne - Sei Ruhig Fließbandbaby.

* Piano tuners being a hot theme for movies made in 2025 for some reason?
kiya: (jade)
kiya ([personal profile] kiya) wrote2026-03-21 02:30 pm

Depression is winning today

Rat



The poem says
Hope is a sewer rat
Adapted
For survival

Despite the plague
And the filth
And the hate

And I
Got the t-shirt
The one with the rats
That says
"You will not
Exterminate
Us"

That they
Resurrected
For rats
Like me

But I am
Sick
Of gnawing
A way
Out

And so tired
Of the stench.
dolorosa_12: (persephone lore olympus)
a million times a trillion more ([personal profile] dolorosa_12) wrote2026-03-21 05:52 pm

Post of links and music

Rather than share each item individually, I'm just going to link to [personal profile] goodbyebird's mostly good news links roundup. There's some fantastic environmental and sociopolitical news there.

I'll add to all this with the news that you can now walk around the entire coastline of England. It's worth reading the article in full, because this undertaking is extremely impressive and future-focused.

Another good news story, via 2022 Ukrainian Nobel laureate Oleksandra Matviichuk: the tropical plants in the greenhouse of Kyiv's Hryshko Botanical Garden survived Russia's winter bombardment of energy facilities, thanks to the concerted efforts of staff and ordinary Kyivan citizens.

And I just find this latest batch of artistry from [instagram.com profile] wisdm, in which he styles the celestial bodies of the solar system in high fashion clothing, to be breathtakingly good.

I've basically been immersively living in these two songs for the past week:



oursin: Brush the Wandering Hedgehog by the fire (Default)
oursin ([personal profile] oursin) wrote2026-03-21 04:44 pm

World Poetry Day again, apparently

And I don't think I've had Edna before??

Recuerdo

We were very tired, we were very merry—
We had gone back and forth all night on the ferry.
It was bare and bright, and smelled like a stable—
But we looked into a fire, we leaned across a table,
We lay on a hill-top underneath the moon;
And the whistles kept blowing, and the dawn came soon.

We were very tired, we were very merry—
We had gone back and forth all night on the ferry;
And you ate an apple, and I ate a pear,
From a dozen of each we had bought somewhere;
And the sky went wan, and the wind came cold,
And the sun rose dripping, a bucketful of gold.

We were very tired, we were very merry,
We had gone back and forth all night on the ferry.
We hailed, “Good morrow, mother!” to a shawl-covered head,
And bought a morning paper, which neither of us read;
And she wept, “God bless you!” for the apples and pears,
And we gave her all our money but our subway fares.

Saturday Morning Breakfast Cereal ([syndicated profile] smbc_comics_feed) wrote2026-03-21 11:20 am
skygiants: Rue from Princess Tutu dancing with a raven (belle et la bete)
skygiants ([personal profile] skygiants) wrote2026-03-21 10:22 am
Entry tags:

(no subject)

I've seen two Boston Ballets in relatively quick succession over the past month, both combo programs featuring two pieces; the first was "The Rite of Spring" (Elo's, not Nijinsky's) paired with Pite's "The Seasons' Canon," and the second was a premiere, Stromile's "The Leisurely Installation of a New Window," paired with Ashton's "The [Midsummer Night's] Dream."

Breaking with the actual curation of the productions, I'm going to talk about "The Rite of Spring" and "The Leisurely Installation of a New Window" together because they both came first in their productions, they had kind of similar vibes, and I experienced similar feelings of mild disappointment about both of them that were not technically the fault of the productions. I was really excited about "The Rite of Spring" because I wanted to see some ballet dancers do a dramatic ritual sacrifice, and I was really excited about "The Leisurely Installation of a New Window" because I wanted to see some ballet dancers slowly install a window. Instead, both of these pieces were kind of abstract explorations through dance of the Relationship between the Individual and Society, and I think both would have been enjoyable for fifteen minutes but ran a bit long at half an hour.

The description for "Window" in the playbill reads:

Eighteen dancers inhabit the work through distinct but interdependent roles. The Seeker stands close to tradition, moving with discipline and clarity. The People operate within shared systems, attentive to both order and its quiet tensions. The Reformers introduce disruption, not as spectacle, but as pressure applied from within.

This did help me understand better what was going on in the dance, as the Seeker stalked around holding a book and then portentously passed it off to some dueting Reformers, but also made it feel a bit like a LARP that I was not participating in. On the other hand Reeves Gabriel of The Cure was There and Participating in Ballet Music (and every bit of marketing wanted you to know that Reeves Gabriel Of The Cure was There and Participating in Ballet Music) and occasionally the music would get very thrillingly electric guitar and you'd be like "Hello, Reeves Gabriel of The Cure!" So it's not that I didn't have a fine time, I just would have been okay with somewhat less of that time.

However, after these very mildly disappointing openers, I loved both "The Seasons' Canon" and "The Dream" very much! The Seasons' Canon is, justifiably, a known Boston Ballet showstopper -- a huge piece with a huge cast, and as you guys know I often have trouble with a piece that is not trying to tell me a story but this piece is truly just Humans Make Big Shapes and it's riveting. Could not take my eyes off it. The trailer here gives a bit of a sense but of course is not that much like seeing it Actually On Stage, but it does let you see one of the things I found most striking about the piece which is how extremely non-gendered it is -- everyone on that stage is dressed identically in pants and nude tank that makes them look topless, the whole corps looks like one and moves like one and there is nothing to distract you from that. Really, really cool experience.

And "The Dream" -- look, I'm a simple soul, and what I have discovered is that I love Ashton's silly panto-esque ballets. They are fun and they are funny and I love it when people get to be funny in dance! Dance jokes are good actually! Titania ballet-hopping her way towards Bottom in a way that manages to be simultaneously fairy-like and hilariously sultry, the arguing lovers constantly picking each other up and pirouetting a partner firmly Away from them Thank You, the rude mechanicals!! we wanted more rude mechanicals but I was so glad we got what we got. A+ Midsummer Night's Dream, would see again.
james_davis_nicoll: (Default)
james_davis_nicoll ([personal profile] james_davis_nicoll) wrote2026-03-21 08:56 am
Entry tags:

Books Received, March 14 — March 20



13 books new to me, and save for one mystery, all fantasy. Man, fantasy is just eating SF's lunch. Not that that will be reflected in what I actually review.

Books Received, March 14 — March 20



Poll #34393 Books Received, March 14 — March 20
Open to: Registered Users, detailed results viewable to: All, participants: 36


Which of these look interesting?

View Answers

The Siren by Tomi Adeyemi (October 2026)
8 (22.2%)

Twined Fates: Tangled Hearts, Book Three by K. Bromberg (October 2026)
0 (0.0%)

Light of the Song by Joyce Ch’Ng (September 2025)
8 (22.2%)

The First Flame by Lily Berlin Dodd (November 2026)
1 (2.8%)

A Destiny So Cruel by Amanda Foody & C. L. Herman (November 2026)
1 (2.8%)

Find Me Where It Ends by Cassandra Khaw (October 2026)
11 (30.6%)

Bad Company by Sara Paretsky (November 2026)
7 (19.4%)

The Kings’ List by Jade Presley (May 2026)
2 (5.6%)

My Unfamiliar by Mara Rutherford (December 2026)
8 (22.2%)

Ghosted by Talia Tucker (November 2026)
3 (8.3%)

The Mystic and the Missing Girl by Vikki Vansickle (September 2026)
6 (16.7%)

The Scarlet Ball by Nghi Vo (October 2026)
12 (33.3%)

Chosen Son by Adrienne Young (November 2026)
2 (5.6%)

Some other option (see comments)
0 (0.0%)

Cats!
29 (80.6%)

weofodthignen: selfportrait with Rune the cat (Default)
weofodthignen ([personal profile] weofodthignen) wrote2026-03-20 11:56 pm

D.O.P.-T.

The oxalis is starting to die back. And in back, the clover clump already has burrs, which means I need to root it out.
muccamukk: Elyanna singing, surrounded by emanata and hearts. (Music: Elyanna Hearts)
Muccamukk ([personal profile] muccamukk) wrote2026-03-20 07:28 pm
Entry tags:

Music Friday

RAYE - "Click Clack Symphony"

I didn't think I could love her new album as much as My 21st-Century Blues, but... this is looking like I might.
julian: Picture of the sign for Julian Street. (Default)
Kate ([personal profile] julian) wrote2026-03-20 07:59 pm

Also, fuck cancer

I've got a friend, a MUSH person, [personal profile] badfaun here, who lives over in Seattle, and who I have known for uh, 20 years now?, who's in the late stages of metastatic breast cancer, that spread to her brain, and is now in the cerebro spinal fluid, which is impressive in its inventiveness and staying power if nothing else.

(This is ileah/Francisco/Heart, for any GarouMUSH people around.)

She's pretty stubborn and pretty great, but the spread to the CSF is Just Not A Good Thing, and she's now going to be going to hospice.

Love to her, and her husband [profile] aerynvale, who's been a rock in all this.
julian: Picture of the sign for Julian Street. (Default)
Kate ([personal profile] julian) wrote2026-03-20 06:01 pm

I don't have a blood clot! However, my car is likely dead.

I woke up this morning with a really puffy arm, from elbow down to hand, and it felt like I had exercised a lot, but I Had Not, so Calluna and I bundled ourselves off to Urgent Care, and Urgent Care looked at it, said, "Hm, likely not, but Just In Case..." and bundled us off to Emerson Hospital to get an ultrasound, which made me almost fall asleep, which was nice.

And I don't have a blood clot, but I do have sucky blood pressure. Which I knew. So I don't *think* it's an allergic reaction, but I do think it's vein related somehow, so, mystery.

For most of the morning it was gorgeous and sunny and in the 50s, and very springlike, which fits since it's the equinox and the first day of spring, so, happy spring!

Then we got lunch and coffee and started down Route 2 to Arlington to retrieve my wallet, WHICH the Arlington Police in fact found a day or so ago, after I had ordered new everything, (But I can at least get my driver's license for ID purposes. And the wallet, which I like.) *But then*, sitting at a traffic light, we got slammed into on what I thought was my rear end but was actually my passenger side. Passenger side airbag deployed, lots of broken glass also deployed, some of it onto Calluna and a little tiny bit on me. All told, about 6-7 cars were involved, plus Route 2 was closed for like an hour.

I'm very much lacking information about who hit whom and how, but it *seems* as if the person who set the chain reaction going is the one who ended up in front, and rolled over. No one would let me stick around or figure out other people's information, which makes sense because there was like, gas leaking and stuff. Not-very-informative news article.

This time I let them impound it because Calluna needed to get checked a the hospital (same one we just came from!), and I went along for the ride/also to get checked out. (I'm fine; she may have a slight concussion and her neck's hurting.) 'm pretty convinced it's totaled, but unlike when I got run into in Coventry, RI, Concord's only 45 mins or so from me, so I can go retrieve all my Stuff from it Sunday when I also go get my durn wallet.

Happily, my s-i-l loaned me their ancient and venerable Prius so I have wheelz currently.