17 ms·
Show HN: Working on a Zero-Knowledge Daily Journaling App
Decryption key derived from master password never leaves the browser. It's just a text editor so far, but a we have a few features planned: retrospective tooling, sentiment analysis, journaling modules, guidance and information inline, better habit formation & rewards UI.
- matijash 4y agonicely done! I like how I get warnings for password not being strong enough. What did you build it with?
- tony_codes 4y agoBuilt with serverless tools on the backend. AWS Lambda, dynamo, S3. ReactJs SPA for frontend.
- thalassophobia 4y agoCan't find any info about journal encryption on the website itself. Perhaps there should be a page dedicated to explaining how your data is protected. Otherwise great stuff!
- tony_codes 4y agoyes agree, thanks! The white paper is here https://docs.google.com/document/d/1T0SEj5WrymfyzNDD8rNGKQ2OpF6xoPGrYahppGd4Yaw/edit?usp=sharing https://docs.google.com/document/d/1T0SEj5WrymfyzNDD8rNGKQ2O... need to add to landing page
- ThePhysicist 4y agoSHA-256 is not suited to derive key material from weak input data, you should use PBKDF2 or another key derivation function for that. The authentication method also seems pretty wonky, that's not how to do zero-knowledge password verification, you should look at methods like PAKE for that. As usual, just don't roll your own crypto if you don't know what you're doing.
- tony_codes 4y agoThanks for the feedback! The hash is actually used to derive an actual key using PBKDF2 -- the library used is https://cryptojs.gitbook.io/docs/ https://cryptojs.gitbook.io/docs/ Also, I'm interested if you see an attack vector on the authentication method. One thing to note is that even if an attacker can authenticate successfully they still have no access to the user private data without brute forcing the master password.
- deleted 4y ago[deleted]
- petesergeant 4y agoI've been journaling for about 15 years now. The big key to getting consistent at it was to stop worrying about trying to write a lot, or trying to write something insightful, and just write a sentence or two at a minimum. Often, that turns into more or into something insightful.
- i_like_pie 4y ago1/ what do you feel like you've learned or gained from this? 2/ do you ever go back and study what you wrote or is it more about giving your thoughts clarity today?
- soiler 4y agoI'm not the OP, but for #2, it's almost all about the latter. Occasionally I go check on random or specific days. What have I learned or gained? It definitely helps ground me in the flow of time. It's so easy to lose weeks or months or years if you're never reflecting. Journaling helps me be more aware day to day.
- ravishi 4y agoNot OP, but have been journaling for the past 7 years with some pauses in between. The greatest tools for me are: 1. When I'm feeling as if I'm stuck I go back sometime (like a week) and confirm that I've indeed progressed. 2. My recollection of events is better just because I'm logging them. If I really want to confirm something I can go back and check. This is specially helpful in day to day issue resolution with my wife, which has been an important topic for us. 3. Sometimes I go back a year or more to just have some memories. It helps me to feel human because I had big troubles with long term memory.
- rpgbr 4y agoI've been journaling for 20 years and often I open old files to talk to the younger me. It's remarkable how you change over the years, a feeling that, AFAIK, any other medium achieves (maybe video/audio recordings, but text is way simpler to register, storage, and retrieve). It's one of the things I'm most grateful of doing for so long.
- Janymos 4y agoLooks nice! I have been using empty git commit messages for journaling in the past few months and found that I'm more willing to journal in the command line with this git-abuse than most applications specifically designed for journaling. Don't know if anyone else has tried this
- gejose 4y agoShameless plug for my own password protected daily journal app where all your data stays on your device! Built it late last year to build the habit of writing out my thoughts. * iOS: https://apps.apple.com/us/app/a-journal-a-day/id1659288235 https://apps.apple.com/us/app/a-journal-a-day/id1659288235 * Android: https://play.google.com/store/apps/details?id=com.georgejose.journal https://play.google.com/store/apps/details?id=com.georgejose...
- hackernewds 4y agowhy do people propose their own competing product in a post discussing another. IMO it's in poor form
- elicash 4y agoBecause people reading the comments, who like the concept, may find it useful. I agree it feels tacky, but on the other hand as a reader, I prefer knowing about alternatives. The other thing -- and it doesn't apply in this specific case -- is that often knowing about competitors helps clarify what's unique about the original linked post. It's a thing I see on HN a lot: Marko got posted, somewhat says it looks like Svelte syntax, then somebody replies to that and says the Marko is much more performant.
- samiam_iam 4y ago[dead]
- sam1r 4y agoThis is awesome. It reminds me of 750words.con
- deleted 4y ago[deleted]
- SeanAnderson 4y agoZero knowledge here means client side only not zero knowledge proof, correct?
- js8 4y agoIt means progress: Normal app: Both user and application know what they are doing. User-friendly app: User doesn't know what they're doing, luckily, the app does. Zero-knowledge app: Neither the application nor the user know what they are doing.
- baby 4y agoYeah this doesnt seem to have anything to do with zero knowledge besides reusing the keywords because it’s trendy
- tony_codes 4y agothe decryption key never leaves the browser. Maybe it's not perfect, but I'm not using the keywords because it's trendy, this project started out of an interest in more secure authentication and data security.
- baby 4y agoBut zero knowledge cryptography has nothing to do with that. Sorry I was a bit harsh, I guess I got tripped by the misuse there.
- tony_codes 4y agoit's ok, it's hacker news so I expected honesty which I appreciate. But What would you call an authentication mechanism which never passes the decryption key off the browser? It's an improvement over systems that handle the keys themselves on the server side.
- baby 4y agoI'm not sure, I would call that encrypted storage perhaps? Or client-side encryption
- marban 4y agoDay One just announced a Web version.
- tony_codes 4y agoInteresting, seems the web app space is continuing to encroach on apps as they two converge.
- miqueturner 4y agoI dont actually think this product is finished. It has a buggy interface, specifically the tag and search for tag functions don't seem to work from my Macintosh 12.0.1 (Monterey) using Chrome (Version 109.0.5414.119 (Official Build) (x86_64))
- shahahmed 4y agonoticed that the page doesn't scroll outside of the center container, which feels a little buggy.
- tony_codes 4y agoI just deployed a fix for this; if you see this and happen to check let me know if it's better :)
- addandsubtract 4y agoOn desktop, I can only scroll the middle section of the site. If I hover anywhere on the side margin and try to scroll, nothing happens. (Firefox, macOS)
- anned20 4y agoCame here to say this, it really messed with my mind for a second. I'm using Brave on macOS, so it's not browser related.
- tony_codes 4y agojust deployed a fix for this; if you see this and happen to check let me know if it's better :)
- tony_codes 4y agojust deployed a fix for this; if you see this and happen to check let me know if it's better :)
- avinassh 4y agowhat does Zero-knowledge mean and how it is different from end to end encrypted?
- tony_codes 4y agoThe main thing is that the encryption keys never leave the browser. So even an engineer in control of the backend cannot see the information being saved. With E2E encryption the owner of the data usually also handles the decryption keys.
- cracked-behem 4y agoAren't the engineers controlling the backend also controlling the frontend? What's stopping the frontend from exfiltrating the encryption keys?
- baby 4y agoZero knowledge means that you can convince someone that you know something without showing them that something. More info on https://en.m.wikipedia.org/wiki/Zero-knowledge_proof https://en.m.wikipedia.org/wiki/Zero-knowledge_proof I have a feeling that this is not zero knowledge and we’re all getting bamboozled.
- thewataccount 4y agoYes, everyone started miss-using zero knowledge when they mean E2EE. Including several password managers and companies I hoped would have known better.
- The_Colonel 4y agoI've worked on 2 "zero-knowledge" apps (basically meaning all data is encrypted/decrypted on the client) and I would advise against it: * most consumers have no idea what you're talking about / don't care * those who know what "zero trust" is, also know that it's not really trustless. You do have to trust the company that it will never send the password or plaintext data back to the server. Checking this on a continuous basis is essentially impossible, a rogue update can be pushed anytime. The amount of trust you need to put into the company is not dramatically different from a normal setup. I think psychologically it's also a bit self-defeating - promoting zero-trust aspect somehow suggests that customers shouldn't trust you. * the design is a major pain, since you never know what surprises await you in the customer's data (data tends to rot). Data migration to a newer version is a pain since you can migrate only when the user logs in, which can be years later (in effect you need to keep backwards compatibility forever). Debugging such customer migration problems blindly is hell. * there will be useful features which you won't be able to implement without violating the zero knowledge principle. Chances are that many users would place a higher value on those features rather than on the zero knowledge aspect. If you really want to decrypt/encrypt on the client, then try to minimize them - no encrypted structures, just encrypted text / images / whatever payload. Metadata, keys etc. can remain plaintext and thus accessible for your maintenance needs.
- tony_codes 4y agoI agree with the pain points you've highlighted -- but I think certain applications do benefit from zero-knowledge. Password managers for example. In the case of journaling, I think one reason people resist is fear of exposure. I agree though, the challenge is communicating the added security to non-technical users. True users must trust the developers to not make a rogue update, but in practice I think it works fine. We also trust library dependencies to not push a rogue minor update that will crash our site or do something malicious.
- ilc 4y agoWe've seen how well the library dependencies thing works... alas. Now imagine an actor, who makes malware, where the crash isn't visible. :/
- mattbrewsbytes 4y agoWhat problem is zero-knowledge solving and why does that matter for a daily writing journal?
- tony_codes 4y agosome users hesitate to journal due to privacy concerns
- deleted 4y ago[deleted]
- low_tech_punk 4y agoOn a marketing tangent, I wish the security practitioners had names better than "zero-knowledge" and "trustless". To an average person, they really make the system sound dumb and dubious despite them being beneficial. Curious what alternative names people have?
- low_tech_punk 4y agoIn case anyone wonders, the illustrations are done by https://absurd.design/ https://absurd.design/
- tony_codes 4y agoah yes, thanks for posting that
- SakiWatanabe 4y agoWhy not just use Day One, it is already end to end encrypted.
- tony_codes 4y agoWe will build some unique functionality that is different from the value proposition at DayOne
- dewey 4y agoI only recently started using Day One and was always a bit worried that it's some random company but turns out they got aquired by Automaticc (Wordpress, Tumblr) which made me feel a lot better about the decision. https://dayoneapp.com/blog/the-next-chapter-of-day-one-at-automattic/ https://dayoneapp.com/blog/the-next-chapter-of-day-one-at-au...
- turnsout 4y agoIt feels like the Venn diagram of 1) people who know what "Zero Knowledge" is and 2) would be willing to create an account on a web service to store their writing… would look like two circles that don't touch. I wonder if this would do better as an open source native mobile app?
- pranabgohain 4y agoVery neat! Congrats. KloudMate seems like the right tool for you to implement observability for your serverless application :D
- tony_codes 4y agoLooks really interesting. Are you affiliated? I will check it out.
- Semaphor 4y agoFor the love of anything, please stop messing with the scrollbar. Not only (as two others mentioned) does scrolling only work on part of the screen, it also moves at a completely different speed than what I have set up, and hides the scrollbar. Browser can scroll and handle scrolling well. Let them do it.
- tony_codes 4y agoSorry for that; I'm a backend engineer; still learning some of the frontend best practices. I just deployed a fix for this; if you see this and happen to check let me know if it's better :)
- jrm4 4y agoWhat about this necessitates "on the internet?" Just do it offline, there's your zero-knowledge.
- tony_codes 4y agoone benefit of online is privacy. I've talked to many people that really don't like having a physical journal laying around with personal information that a partner might read. But yeah, I get there are workaround to that problem and not everyone has this kind of privacy issue
- JohnFen 4y ago"Privacy" and "online" don't go well together, though. Talking about "zero-knowledge" doesn't really address the issue, because there is no way of knowing if the author is being honest, or if they've implemented it correctly.
- tony_codes 4y agoMaybe zero-knowledge should be open sourced, built from source by users as a desktop app (so they can lock to a version), and each version should be stamped (hash of specific version signed) by trusted 3rd party penetration testing agency -- it does limit the reach of the product though
- JohnFen 4y agoIt's a tough problem. An application like this is all about convenience. Having to vet the source and build it yourself brings a lot of inconvenience. It's probably just an issue of the right target market. People like me aren't it, but people who are less concerned about such things may very well be. A zero-knowledge implementation is still a great idea to protect them, even if they don't really appreciate the protection they're getting. By the way, I realize my comments have been critical, so let me say the other side: good work! I wish you all the success in the world. Building and releasing something is a major accomplishment, and anything you make won't be right for everyone. That's not a fault with your product. That's just the fact that different people have different needs.
- Aaronstotle 4y agoThis is cool! I noticed you accept bitcoin, will you accept Monero as well?
- tony_codes 4y agoJust bitcoin for us :)
- moserch 4y agoThis is really cool. I love the yearly views. Are you going to make an app too?
- tony_codes 4y agoprobably not in the near term, I want to make the webapp work well on mobile and encourage users to employ a keyboard when journaling
- moneywoes 4y agoThe front end is beautiful, how did you build it?
- tony_codes 4y agothank you! It's an SPA build with React
- scifibestfi 4y ago> "A good writer doesn't just think, and then write down what they thought, as a sort of transcript. A good writer will almost always discover new things in the process of writing. And there is, as far as I know, no substitute for this kind of discovery." -Paul Graham What is it about writing that makes it different than thinking?
- deleted 4y ago[deleted]
- tony_codes 4y agowriting is a tool to help us think. Since we have limited active memory to think with, the words act like storage which helps organise thoughts and cover more ground
- frankfrank13 4y agoalready locked myself out lol
- tony_codes 4y agowhoops, I can delete your account if you want to create a new one with the same login, just let me know.
- frankfrank13 4y agoplease do! Love the tool
- tony_codes 4y agocan you ping me at support@jumblejournal.org ? let me know the login to be deleted
- jcutrell 4y agoIf I can offer some unsolicited feedback: - This space is very crowded - to consider this app, I need to know a differentiator much sooner. Is it the streak? Is it the zero-knowledge? What makes this different from the 20 other options? It seems like the value prop here is "this is a simple journal that tracks whether you wrote today or not, and that is zero knowledge." If there's more, it's missing from the marketing here. - There's some confusion in the branding. You're using the word "guru", as well as the word "jumble" as a verb. Pick a tagline and a CTA, and stick to those. - I like the point you are trying to make about the value of writing itself... but how does your app take advantage of that value prop? Can I capture those insights in a unique way? Otherwise, I can take your value prop and accomplish it in the writing app I already have an account and history with. I think you're on the way to something good here, but it's a little too confusing to get me to convert.
- tony_codes 4y agoThanks a lot, this is really useful feedback. I completely agree the landing page branding needs some work. I've recently done some workshops to get some clarity on target audience and will try to tighten this up. Currently the app is light on features so indeed it does not differentiate well, but we will build out a retrospective flow which is unique and helps users find actionable insights from past entries, and explore their best ideas on specific topics over time.
- ICodeSometimes 4y agolooks very slick! are you planning to do the typical SAAS route with this? or is it actually free forever?
- tony_codes 4y agoIt would go the SAAS route if enough people find it useful; if there are consistent users I can't afford to make it free forever unfortunately
- barlog 4y agoI don't have "past my entry". Can't writing(泣)
- lucasenkrateia 4y agoHell yeaaaahhh! Finally something like this came up! Ooh yeah babbbyyyy
- JohnFen 4y agoWhy does this have to be cloud-based at all?
- tony_codes 4y agosame reason for anything cloud based. Sync between accounts, take the responsibility of data storage off the user.