Hi all!

Just wanted to give an update as it’s been about two months since the last post I made about Jotty - see it here

We are approaching end of year and I just want to thank this amazing community for the huge support I have received, it has sincerely given me an amazing escape from a lot of shit stuff I had going on in my life (and still, unfortunately, do).

For anyone not knowing about Jotty, the tl;dr is this little snippet here from the readme:

A self-hosted app for your checklists, tasks and notes.

jotty·page is a lightweight alternative for managing your personal checklists and notes.
It's extremely easy to deploy, keeps all your data on your own server with your own file
structure (no databases!) and allows you to encrypt/decrypt your notes for your personal
peace of mind.

Last thing I want is people thinking this post is AI, so I won’t give a full on sales pitch, but a bit of context is always needed I suppose lol

You can read about it more on the repo: https://github.com/fccview/jotty
And here’s the website with the demo in case you want to play around with it before installing it: https://jotty.page/

Anyhow, PGP encryption has been a much requested feature, for a few months actually, but I didn’t want to rush something as delicate as that, so I took my time and I think it’s working pretty neatly, passphrase is never stored on the server, private/public key can be generated straight from Jotty or you can import your own/mount them from whatever folder you want on your system on read only.

There’s also a ton of new features since the last post two months ago, but this is the one I’m the most excited about.

Let me know what you all think about the feature and Jotty in general and I’ll see you in the comments <3

  • litchralee@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    ·
    14 hours ago

    If I understand the Encryption Markdown page, it appears the public/private key are primarily to protect the data at-rest? But then both keys are stored on the server, although protected by the passphrase for the keys.

    So if the protection boils down to the passphrase, what is the point of having the user upload their own keypair? Are the notes ever exported from the instance while still being encrypted by the user’s keypair?

    Also, why PGP? PGP may be readily available, but it’s definitely not an example of user-friendliness, as exemplified by its lack of broad acceptance by non-tech users or non-government users.

    And then, why RSA? Or are other key algorithms supported as well, like ed25519?

    • fccview@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      13 hours ago

      Hi! These are all very valid questions!

      The protection boils down to your level of comfort, really, the way I built this is very modular, you can

      • Simply generate a key pair by clicking on a simple button (for non power users)
      • Import your own keys (if you feel comfortable enough to do it)
      • Or simply encrypt with a public key and use your private key when prompted for decryption, this way keys are never stored on the server and all operations happen offline on the browser :)

      When exporting notes, if one is encrypted it’ll stay encrypted, of course.

      Lastly, the simple answer is because I know the tech fairly well and understand it enough to comfortably implement it, I wouldn’t want to half ass something, PGP is an extremely valid form of encryption anyway, and can be very user friendly when implemented properly (as explained above there’s various levels of complexity in place)

      Very valid feedback, makes me wonder if I should give people multiple choices of encryption algorithms in future updates ♥️

      • irq0@infosec.pub
        link
        fedilink
        English
        arrow-up
        3
        ·
        13 hours ago

        I appreciate you taking the time to implement this and answering some questions! I have a follow up question- What’s the benefit of using asymmetric encryption here? You’re not signing the message ( you probably should imo ) and you don’t appear to support sharing encrypted notes ( i.e a user provides one or more additional public keys that a note is encrypted for ). You’re basically doing symmetric encryption with the pain of key management

        It’d be simpler ( from a user and code perspective )to use symmetric encryption ( something like aes-256-gcm or ChaCha20-Poly1305 for example ) and use key wrapping to avoid encrypting user data directly and you’d have stronger crypto as a result

        You’re right that PGP is a valid encryption method but it’s not very popular in the modern day because it’s very hard to get right. Latacora has a great post on the PGP Problemand the Soatok blogs that u/litchralee linked are well worth a read too

        • fccview@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          5
          ·
          edit-2
          12 hours ago

          This is all actually very good feedback and a lot to take in and think about, I have no problems in admitting that something can be done in a better way and go back to the drawing board, I’ll admit, I don’t have much experience with neither of the methods you suggested, but a quick Google showed me a world of learning, so I have a lot of reading to do ♥️

          P.s. I did read everything that was linked by u/litchralee btw and it was a very good read indeed

          Now, onto the why I went for asymmetric encryption is due to the nature of the notes being files on a system rather than stored in a database, my thinking process being "I can use whatever public key I need for whatever note and decrypt them using the right private key at a later time.

          Regarding the sharing, you can indeed share encrypted notes… my thinking was “you give me a public key, I use it to encrypt the note, share it with you - privately or publicly - and you can use your private key to decrypt it”. Which is why there’s always an option to encrypt with a different public key than the one stored for yourself, I was imagining it just like encrypted emails work frankly. I may have gone a bit too much for overkill lol

          I’ll see to implement additional encryption methods, if anything I’m all for choice and letting people decide what to use. There’s also the very selfish answer to your question btw being that… I like PGP and I made jotty mainly for myself hahahaa

          Edit

          Sorry forgot to address the signing feedback, you are correct, I am not letting user sign when encrypting, I made a judgement call in favour of user experience, I will be adding an optional checkbox to sign it with passphrase and custom/stored private key when using pgp and look into implementing alternative encryption methods, if anything this conversation got me all excited to code more lol

          https://github.com/fccview/jotty/issues/265 ♥️