rpgp: Pure Rust Implementation of OpenPGP

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • rpgp

    OpenPGP implemented in pure Rust, permissively licensed

  • I could be missing something here, but I think this is vulnerable to DO'1985, a/a/k/a Desmedt-Odlyzko:

    https://github.com/rpgp/rpgp/blob/8e67756ebce780c91b8c2ffc7d...

    In particular, in the presence of an insufficiently wide hash, the absence of padding here means that RSA signature validation is not secure under EUF-CMA. Matt Green has a great post on why and when EUF-CMA matters[1].

    (This isn't necessarily this implementation's fault, since PGP seemingly (!) encourages the stripping of padding from signatures. But I can't find another source for whether this is actually encouraged by OpenPGP, or whether implementations just widely allow it.)

    [1]: https://blog.cryptographyengineering.com/euf-cma-and-suf-cma...

  • monkeybagel

  • Yep. We've got it working with OpenPGP Card devices (Yubikeys, Nitorkeys, etc.). The signing part was actually pretty easy and the decryption required a bit more work but the maintainer was super responsive (https://github.com/rpgp/rpgp/pull/315).

    Overall I'm pretty happy with the codebase.

    The PoC for using cards in git is in https://github.com/wiktor-k/monkeybagel (excuse the silly name ;).

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • pysequoia

    OpenPGP in Python using Sequoia PGP

  • I agree that gpg did not age well. If we compare it to a different project with similar history: curl, it's apparent that gpg chose wrong on several fronts. It should be a library first instead of a cli tool. Funny part is that even the library of gpg (gpgme) is internally calling the binary.

    I've played around with designing a higher level library to OpenPGP once (https://pypi.org/project/pysequoia/) and personally I think it yields more readable, faster and secure code.

  • RSA

    RSA implementation in pure Rust

  • Yep, I saw the upstream[1].

    However, I misread this: I thought the padding was being done on the cleartext signing side, but this is padding of the signature itself. So there's some malleability here, but it isn't susceptible to DO'1985. I'll update my top-level comment.

    [1]: https://github.com/RustCrypto/RSA/issues/272

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • How I run my servers

    8 projects | news.ycombinator.com | 16 Jul 2023
  • Ditching OpenPGP, a new approach to signing APT repositories

    2 projects | /r/linux | 22 Jun 2021
  • DataFusion Comet: Apache Spark Accelerator

    4 projects | news.ycombinator.com | 31 May 2024
  • The evolution of Serverless Postgres

    1 project | dev.to | 30 May 2024
  • Compiler Explorer

    1 project | news.ycombinator.com | 30 May 2024