• 1 Post
  • 32 Comments
Joined 1 year ago
cake
Cake day: June 6th, 2025

help-circle

  • In a recent analysis, Adam Harvey found that among the 999 most popular crates on crates.io, around 17% contained code that do not match their code repository.

    17%!

    Let me rephrase this, 17% of the most popular Rust packages contain code that virtually nobody knows what it does (I can’t imagine about the long tail which receives less attention).

    Given that he lied about the results of the analysis he is using to prove his point, I find it hard to trust anything in this article.

    In the analysis, Harvey said only 8 repositories did not match their upstream repos. The other problems were issues like not including the VCS info, squashing history, etc.

    EDIT: Also, I just noticed that he called it a “recent” analysis. It’s roughly a two year old analysis. I expect things have improved a bit since then, especially since part of the problem was packaging using older versions of Cargo.



  • Hm, I’m reading the spec. It seems more simplistic than I was expecting.

    Issuance of Proof of Age attestations (step 3)

    Once the User’s age has been verified, the AP may either issue the Proof of Age attestation directly to the User’s AVI or generate a pre-authorized code and provide it to the User as part of a credential offer. At a later stage, the User can present this credential offer through their AVI to obtain the Proof of Age attestation.

    Confirmation and presentation (step 5)

    The AVI receives the Proof of Age request and presents it to the User. The User reviews the request details, verifies the information, and confirms the transaction to proceed.

    The AVI securely transmits the Proof of Age attestation to the RP.

    Guess it does just pass the attestation around.

    2.2.3 Revocation and Re-Issuance In its current form, the solution does not support revocation or re-issuance. Adding support for these features would introduce additional complexity, which could hinder the rapid adoption of the solution.

    The attestation is ideally only used once and issued in batches, so this is both good and bad I guess, since if they ask to track you and they haven’t already recorded all the attestations, they’ll need to wait for you to generate more.

    Unlinkability: The goal of the solution is to prevent user profiling and tracking by avoiding linkable transactions. Initially, the solution will rely on batch issuance to protect users from colluding RPs. Zero-Knowledge Proof (ZKP) mechanisms will be considered to offer protection. More details are provided in Section 7.

    Basically a big TBD. Lovely.

    The more subtle attack you mention could probably be avoided if the root certs and so on or whatever equivalent they’re using are public and you check that the attestation given to you doesn’t include extraneous details (which ideally the app would do for you). Not sure how that’ll interact with the zkSNARK solution provided as an “experimental feature.”

    It doesn’t really matter though since they can just record the attestations when they’re issued, so they just have to say “look for these attestations” to whatever site and they can track your visits.

    It is recommended that the Proof of Age attestation be designed as a single-use credential and remain valid for a maximum period of three (3) months from the date of issuance. If a revocation mechanism is required, a status list may be utilized as an effective solution for managing the revocation status of attestations.

    Of course, using it in batches is only “recommended,” so I guess they could just issue it once and continuously reuse it, in which case it would be very easy for websites to link it to you.

    There’s probably more I could pull out, but yeah, doesn’t seem great based on the spec :|













  • Matrix is fragmented too, but it’s generally less fragmented in my experience (if you use a relatively well developed client). Part of this is because most people just use Synapse for their server. With XMPP, server implementations support random combinations of XEPs, and specific servers often are missing random XEPs because they’re not enabled by default and so on (thinking about ejabberd for instance here, the default config probably isn’t what most people want). I also routinely have random compatibility problems between clients pop up with XMPP. As a basic example, retracting messages is very haphazard.

    Anyway, yeah, if they standardize on server and client setup for all govt instances, it’d be fine either way probably. The clients may be somewhat janky, but they can probably fix those issues more easily when they’re only focused on one client (although unless it’s like FluffyChat and cross-platform, they may need to standardize multiple clients) and server.


  • The biggest problem with XMPP is what various servers and clients implement is kind of all over the place. For instance, most clients support an older version of OMEMO, but some clients support newer versions, and the different versions are incompatible.

    The other issue is some platforms (iOS in particular) have pretty shitty XMPP apps filled with bugs.

    I still generally like XMPP more than Matrix since ATM Matrix clients are also filled with bugs/laggy, Synapse (the main server implementation) is very resource heavy, and message syncing is kind of shit if the client doesn’t implement sliding sync (like FluffyChat). I personally think the UI for both XMPP and Matrix clients generally kind of suck, which isn’t great for convincing non-techy people to use them.