edit

As of version 1.14.3 I have also introduced XChaCha20 encryption (used as default) to allow both symmetric and asymmetric encryption types.


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

  • fccview@lemmy.worldOP
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    21 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
      5
      ·
      20 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
        3
        ·
        edit-2
        5 hours ago

        As of version 1.14.3 I have also introduced XChaCha20 encryption (used as default)

        This was extremely easy to implement, not gonna lie, bit of research brought me here https://www.npmjs.com/package/libsodium-wrappers-sumo and from there on it was as simple as doing the UI (which is just a bunch of re-usable components, spent way too much time making sure everything is re-usable).

        Now users (and I) can decide which encryption type to use in which situation, win-win i’d say, thank you for pushing me into doing this, it actually makes the whole experience 100x better and you were right in the sense that for a note taking app, a passphrase is just about enough.

      • fccview@lemmy.worldOP
        link
        fedilink
        English
        arrow-up
        6
        ·
        edit-2
        19 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 ♥️