• Flying Squid
      link
      fedilink
      35
      edit-2
      8 months ago

      I just shared it with a bunch of people while also telling them that I didn’t care if they didn’t get it and I wasn’t going to explain it.

      They’re used to this.

      Edit: 2 of them got it. That’s pretty good for me. I’ve played to smaller crowds.

    • Fonzie!
      link
      fedilink
      28 months ago

      I shared it to the memes group at work, as a developer

  • slazer2au
    link
    fedilink
    English
    929 months ago

    I wonder if you string together enough words can it be a valid key?

    • @ShortFuse@lemmy.world
      link
      fedilink
      15
      edit-2
      8 months ago

      Yeah, except for the first few bytes. PKCS8 has some initial header information, but most of it is the OCTET_STRING of the private key itself.

      The PEM (human “readable”) version is Base64, so you can craft up a string and make that your key. DER is that converted to binary again:

      /**
       * @see https://datatracker.ietf.org/doc/html/rfc5208#section-5
       * @see https://datatracker.ietf.org/doc/html/rfc2313#section-11
       * Unwraps PKCS8 Container for internal key (RSA or EC)
       * @param {string|Uint8Array} pkcs8
       * @param {string} [checkOID]
       * @return {Uint8Array} DER
       */
      export function privateKeyFromPrivateKeyInformation(pkcs8, checkOID) {
        const der = derFromPrivateKeyInformation(pkcs8);
        const [
          [privateKeyInfoType, [
            [versionType, version],
            algorithmIdentifierTuple,
            privateKeyTuple,
          ]],
        ] = decodeDER(der);
        if (privateKeyInfoType !== 'SEQUENCE') throw new Error('Invalid PKCS8');
        if (versionType !== 'INTEGER') throw new Error('Invalid PKCS8');
        if (version !== 0) throw new Error('Unsupported PKCS8 Version');
        const [algorithmIdentifierType, algorithmIdentifierValues] = algorithmIdentifierTuple;
        if (algorithmIdentifierType !== 'SEQUENCE') throw new Error('Invalid PKCS8');
        const [privateKeyType, privateKey] = privateKeyTuple;
        if (privateKeyType !== 'OCTET_STRING') throw new Error('Invalid PKCS8');
        if (checkOID) {
          for (const [type, value] of algorithmIdentifierValues) {
            if (type === 'OBJECT_IDENTIFIER' && value === checkOID) {
              return privateKey;
            }
          }
          return null; // Not an error, just doesn't match
        }
      
        return privateKey;
      }
      

      I wrote a “plain English” library in Javascript to demystify all the magic of Let’s Encrypt, ACME, and all those certificates. (Also to spin up my own certs in NodeJS/Chrome).

      https://github.com/clshortfuse/acmejs/blob/96fcbe089f0f949f9eb6830ed2d7bc257ea8dc32/utils/certificate/privateKeyInformation.js#L40

      Edit: To be specific, PKCS8 is usually a PKCS1 (RSA) key with some wrapping to identify it (the OID). The integers (BigInts) you pick for RSA would have to line up in some way, but I would think it’s doable. At worst there is maybe a character or two of garbage at the breakpoints for the RSA integers. And if you account for which ones are absent in the public key, then anybody reading it could get a kick out of reading your public certificate.

    • hendrik
      link
      fedilink
      English
      11
      edit-2
      9 months ago

      It’s assymetric crypto. You’d need to find a matching public key. Or it’s just some useless characters. I suppose that’s impossible, or what we call that… Like take a few billion years to compute. But I’m not an expert on RSA.

      • slazer2au
        link
        fedilink
        English
        169 months ago

        Public keys are derived from the private key. The asymmetric part is for communication not generation. Afaik

        • hendrik
          link
          fedilink
          English
          7
          edit-2
          9 months ago

          I’m pretty sure the cryptographic parameters to generate a public key are included in the private key file. So while you can generate the other file from that file, it’s not only the private part in it but also some extra information and you can’t really change the characters in the private key part. Also not an expert here. I’m fairly certain that it can’t happen the other way round, or you could impersonate someone and do all kinds of MITM attacks… In this case I’ve tried it this way, changed characters and openssh-keygen complains and can’t generate anything anymore.

    • @MehBlah@lemmy.world
      link
      fedilink
      68 months ago

      It the length not the content for the most part. Some keys have syntax such as leading or trailing characters.

  • @wizzim@infosec.pub
    link
    fedilink
    98 months ago

    While the joke is funny, what is the context? Why did she post the original tweet in the first place?

    • @MystikIncarnate@lemmy.ca
      link
      fedilink
      English
      108 months ago

      It’s lady gaga.

      If you’ve followed her at all, even indirectly, this is NOT the weirdest thing she’s done, and bluntly, the weirder stuff wasn’t justified (to the public at least).

      I’m not trying to throw shade at Gaga at all. Lady, let your freak flag fly all day long. You don’t need my permission to do it, but if you want it, you got it. Weird isn’t bad, it’s just weird.

      IMO, at this point, gaga doesn’t need a reason to be weird.