all 7 comments

sorted by: hot top controversial new old
[–] 17 points 1 month ago (4 children)

GnuPG is one of those tools I never got around to use. How could something designed for human communication be so utterly cumbersome and confusing ?

  • source
  • hideshow 4 child comments
  • [–] 2 points 1 month ago (1 child)

    I use it for git commit signing.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 month ago*

    How could something designed for human communication be so utterly cumbersome and confusing ?

    Several reasons, I guess?

    1. The PGP (later, OpenPGP) protocol.

    The proprietary PGP software, which was the initial implementation of the PGP protocol(s) also suffered from usability problems:

    2. GnuPG maintainers are implicitly using asymptotic software versioning

    Donald Knuth was probably the most notable proponent of the idea that software packages should increasingly tend toward stability, with fewer and fewer patches needed. He used explicitly asymptotic version numbering for TeX and Metafont.

    Some of the quotes in OP's video make imply GnuPG's maintainers are implicitly following a similar approach, e.g. the section about "Sequoia's need for churn".

    With encryption software, there is an especially strong argument for being conservative about changes. Patches may have unforeseen consequences, adding subtle vulnerabilities.

    However, the downside of this, as the gpg.fail team pointed out, is that it biases the GnuPG maintainers towards excessive rejection of patches. Especially patches that would improve usability. Arguably, TeX suffered from a similar bias; hence the development of LaTeX and newer TeX front-ends to improve usability.

    3. Changing the interface would be effortful

    Improving GnuPG's interface would require quite a lot of work in itself, both to the codebase and the documentation.

    Releasing a version with those changes would also require fielding a lot of support queries for many years, because decades of software manuals all over the web were written for the traditional GnuPG interface, and aren't going to be updated overnight. Some of those manuals will surely never get updated, because they are no longer maintained even though they are still online and still used.

    I can sympathise with the GnuPG maintainers for finding this daunting. But the improvements are needed. Thankfully, developers of tools like minisign, age, and sequoia are taking on much of this work; it's just a pity that the work had to be done in this fragmented way through third-party efforts, instead of in GnuPG itself.

  • source
  • parent
  • [–] 3 points 1 month ago

    Very interesting talk, thanks for sharing!

  • source
  • [–] 1 point 1 month ago

    The collar/padlock is such a good look for a cryptography talk

  • source
  • 13 comments in c/opensource@programming.dev view that post
    [–] 5 points 1 month ago

    Somewhat reminded of @jonah@neat.computer's general recommendation against GPG (for other reasons than what this talk is about)

  • source
  • [–] 5 points 1 month ago

    For example, one of the first vulnerabilities I found, that was used for the introduction hook in the 39c3 talk, remains unpatched to this day. Instead of being fixed with code, Werner Koch - the main developer of GnuPG - published a blog post declaring the widely-used feature being "harmful"; while they had weeks in advance, they published this on day one of 39c3, not even giving us time to respond.

    what the actual fuck

  • source
  • [–] 5 points 1 month ago (5 children)

    Alright, so just because a plain text signature is along with content, doesn't mean that the content is signed.
    Then how do you check that the content is signed by the plain-text signature given with it?

    I thought that the signature means that either a whole copy of the text is encrypted or a hash of the text is encrypted using the private key, which would mean that spoofing the sign would require solving complexity equal to either of:

    • Finding another string that gives the same hash
    • Finding the private key and signing a new hash with it

    What am I missing?

  • source
  • hideshow 5 child comments
  • [–] 3 points 1 month ago (4 children)
  • [–] 4 points 1 month ago* (last edited 1 month ago)

    That was what I prefer to read instead, but fine

    Edit: I did watch it, they don't even tell, because it was in the previous disclosure, so I now need to find and watch that one

    Edit2: and from reading https://gpg.fail/ with original vulnerability descriptions I can't understand how they did the trick with ISO, is the ISO signed as if it were plaintext and allowed truncated lines? If so, this does look pretty bad both on implementation side and on user side, imo

  • source
  • parent
  • [–] 2 points 1 month ago (2 children)

    The above question came to me after watching the video.
    IDK maybe I just have low IQ.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 month ago (1 child)

    Might be slop then. I didn't watch the video.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 1 month ago

    Well they did leave out a lot of important information.

    This site seems pretty good though: https://gpg.fail/
    It has all the given vulnerabilities in text.

    Now just need to read and understand all of them and find out which one explains the above comment and the answer to my question is probably another headache.

  • source
  • parent
  • [–] 3 points 1 month ago* (last edited 1 month ago) (2 children)

    Is there another thing to use? At least for the flow(s) of "encrypt, transfer, decrypt" or "sign, transfer, verify" for binary files. BSD licensed, preferably.

    EDIT: minisign was mentioned on the talk... not in the most positive way but would still trust (after they get their shit together of course); however would never trust "age" with what they did

  • source
  • hideshow 2 child comments
  • [–] 1 point 1 month ago (1 child)

    however would never trust "age" with what they did

    What happened with age (or its devs?) that made you not trust it?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 month ago*

    (I actually managed to watch basically the same talk at a different event on the site pgp.fail, whoops)

    For me, I feel like the mistake mentioned was the most dead obvious one. Prefixing a plugin name from the file with a path then literally running the executable named. At the end of the talk, an age dev bought the researchers with stickers on camera.

  • source
  • parent
  • [–] -3 points 1 month ago (1 child)

    Yeah, GPG is a dumpster fire. It’s security theatre at its finest.

  • source
  • hideshow 1 child comment
  • 12 comments in c/cybersecurity@infosec.pub view that post
    [–] 6 points 1 month ago (1 child)

    Please bear with my dumb ass. if validating a certificate / signature is risking an RCE, does that essentially make this a planet-wide potential supply chain hack (wherever gnupg is used, at least?)

  • source
  • hideshow 1 child comment
  • [–] [S] 5 points 1 month ago (8 children)

    I'm probably having a brainfart (watched the video during insomnia), but re: the section 12m 10s into the video, can someone please clarify why "the instructions are dangerously wrong"?

    I understand it relates to the earlier demo in which those instructions gave the illusion of "verifying" an ISO that was in fact malicious. But:

    • why did those instructions fail to genuinely verify the ISO?
    • what would the correct instructions have been?
  • source
  • hideshow 8 child comments
  • [–] 4 points 1 month ago (6 children)

    Cleatext signing (having the signature and data in the same file) is broken in many ways. It is possible to put unsigned data at the top of the file in a way that sha256sum will use it. Watch the 39c3 GPG talk if your interested in the gory details.

    The solution is to use detached signatures (checksum.txt and checksum.txt.gpg to verify that). This makes sure that all of checksum.txt is actually covered by the signature.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 1 point 1 month ago (5 children)

    cc @modem_down@thebrainbin.org
    or, binary signatures, [which I prefer: compressionable], as textfiles are insecure formats.

    I prefer a headed, mided, and tailed verification, similar to MPEG keyframing, for constant stream verification.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 1 point 1 month ago (4 children)

    idk about the specific formats, but i don't think you can say that in general. what are those two formats and why does it make a difference in this case?

  • source
  • parent
  • hideshow 4 child comments
  • [–] 1 point 1 month ago (3 children)
    1. what binary signatures offer:
    • smaller sizes
    • ability to compression
    • the actually signature
    • confidentiality
    1. File headers^def^, miding^def^, tailing^def^.

    2. why textfiles are insecure

    i don’t think you can say that in general

    What is your academic literacy please?Cite your papers please.

    or gen z:
    Drop your academic flex.
    What grade you at?
    papers pls🙏

    orly

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 1 month ago (2 children)

    no, i mean, you say text files are insecure and you prefer binary.

    while it is true that processing text files needs additional code (validating/converting charsets/encoding), which increases the number of potential attack vectors, security threats introduced by this are not a fault of them being text, but of the parser code.

    at the end of the day the attacker just switches from text editor to hex editor to prepare a malicious file.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 month ago (1 child)

    I was never talking about vectorization, but regular file integrity. Textfiles have no error correctiveness. Yet a binary can be. Either can be edited and vectorized. Heck the point of this talk is manipulating expectations, as sha256sum isn't file verifier.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 month ago

    yeah, but nobody stops you from adding error correctiveness. you could for example just put the whole thing three times with a seperator.

    however there's also an important point for text files: you can post them wherever you can write text messages. being able to digitally sign them even adds to your freedom, as you can post anonymously and your readers are able to verify it's from the same source. like you could post your heated political manifesto or cousin incest smut on 4chan or some darknet forum and if you later make a part 2, ppl will be able to tell you apart from imposters.

  • source
  • parent
  • [–] 4 points 1 month ago

    Wearing a dog collar for a highly technical live presentation of a critical security feature requires a degree of personal confidence I can only admire.

  • source
  • 5 comments in c/security@lemmy.ml view that post
    [–] 3 points 1 month ago* (last edited 1 month ago) (4 children)

    Oh boy, I tend to hate videos, but this was amazing. GPG is big trouble. I've had issues with it before but now it's solidified. I'm not ready to use Sequoia and I'm not keen on Rust culture, but something has to be done. I confess to having thought about rewriting GPG in Haskell or Ada or even Rocq, but only at the level of daydreaming.

  • source
  • hideshow 4 child comments
  • [–] 2 points 1 month ago (3 children)

    Haskell

    I'm learning OCaml right now and it's been pretty dang awesome so far.

    I'm doing Advent of Code 2025 and have made it to day 7 part 2. I've never done an AoC where my first attempt to run the code was correct on both the sample input and real input so many times in a row. I'm in love with this language.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 1 point 1 month ago (2 children)

    OCaml is great, and there's an "extreme" version of it called Rocq (formerly Coq, the French word for rooster), that lets you literally prove correctness of your code: https://softwarefoundations.cis.upenn.edu/

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 month ago* (last edited 1 month ago) (1 child)

    Implemented in OCaml, interesting. 😁

    Seems like it's mostly used academically though?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 1 month ago

    Yeah it's way too effort intensive for routinely slamming out code. The main purpose for me of studying stuff like that is to sharpen my understanding of programming, rather than to actually use it. Look at the CompCert project though (compcert.org).

  • source
  • parent