Egregoros

Signal feed

Heiko

@hko@floss.social

Various OpenPGP-related activities, mostly in Rust

Very lean modern OpenPGP: https://codeberg.org/minipgp6/

SOP with rPGP: https://crates.io/crates/rsop
Contributor to @rpgp

OpenPGP card HSMs:
- SOP with cards: https://crates.io/crates/rsop-oct/
- oct CLI: https://crates.io/crates/openpgp-card-tools
- Git signing: https://crates.io/crates/openpgp-card-tool-git
- SSH Agent: https://crates.io/crates/openpgp-card-ssh-agent
- library: https://codeberg.org/openpgp-card/openpgp-card

Posts

Latest notes

I just released #minipgp6 v0.0.4:

https://floss.social/@minipgp6/117009626105829561

minipgp6 is a very small modular implementation of a modern subset of #OpenPGP

This snapshot reflects refactoring and prototyping I've done over the last weeks:

The minipgp6-sop CLI tool now implements certify-userid, validate-userid, and update-key for general-purpose keys.

The new sub-crate minipgp6-card implements experimental OpenPGP card hardware device support.

#RustLang #PQC

Many thanks to @nlnet for supporting minipgp!

I just released a first draft version of #minipgp6

https://floss.social/@minipgp6/116500687374282691

minipgp6 is an intentionally small #OpenPGP library stack.
It implements v6 formats from https://www.rfc-editor.org/rfc/rfc9580 and #PQC composite key algorithms from https://datatracker.ietf.org/doc/draft-ietf-openpgp-pqc/

The complete library stack in this release adds up to ~5k LOC.
It interoperates with all modern OpenPGP libraries: https://codeberg.org/minipgp6/#interop-with-other-openpgp-implementations

A SOP CLI tool based on minipgp6 can be installed as

$ cargo install minipgp6-sop

Many thanks to @nlnet

Update on #minipgp6

My draft implementation is almost feature complete, albeit still rough around some edges.

It supports traditional Ed25519/X25519 plus the two MTI PQC hybrids from draft-ietf-openpgp-pqc.

("OpenPGP component validity" semantics is still missing.)

The (very modular) stack of libraries currently weighs a total of ~4.2k LOC.

The SOP CLI tool implementation is 1.5k LOC.
A build of the SOP binary is 1.3 mbyte (with size-optimization settings for the compiler/linker)

#OpenPGP

That minipgp6-based SOP binary interoperates nicely with all other RFC 9580 implementations I've tested, including with PQC algorithms.

And the entire binary literally fits on a ๐Ÿ’พ

๐Ÿฅณ

As I anticipated, RFC 9580 *really shines* โœจ in implementations that leave out all of the legacy parts.

The #OpenPGP WG at the #IETF specified an excellent modernization, with the "v6" formats. RFC 9580 perfectly balances full backward compatibility with *massive* forward-looking simplifications.

The initial plan for minipgp6 was to support only the "mandatory to implement" algorithms from RFC 9580.

In terms of public key algorithms, this would mean: only Ed25519 and X25519.

However, in the meantime, draft-ietf-openpgp-pqc has made much progress - IETF-standardized PQC support in #OpenPGP is going to get rolled out in various places soon.

So I'm amending the plan: minipgp will optionally support the two "mandatory" composite #PQC algorithms "ML-KEM-768+X25519" and "ML-DSA-65+Ed25519".

minipgp6 is happening.

https://codeberg.org/minipgp6/ ๐Ÿ”๐Ÿค

For the past four weeks I've immersed myself in writing an extremely minimal, modern #OpenPGP software stack.

There's still a lot of work ahead, but the current draft code already feels quite exciting.
It's very modular and currently weighs just over 5k LOC (including a small Stateless OpenPGP CLI tool).

I look forward to publishing a first version of the code in the coming weeks ๐Ÿš€

#rfc9580 #RustLang #PGP