Mossy
- 25 Devlogs
- 110 Total hours
E2EE self-hosted password manager with external-hosted backend as a relay
E2EE self-hosted password manager with external-hosted backend as a relay
I need new extenstion (old one is really crappy), and there are only 7 days to finish it (not doable right)?
So I’ve used AI to generate base code for extension, now I’ll review this whole thing (I’ve partly already did, it was a hassle :d ). It’s much easier to work on it tho, we are using WXT, webext libs and code is really clean (working without them was bad decision, stack is one of the reasons I’m not trying to refactor old extension)
Here is list of extension features (it’s intentionally short):
I wanna put my extension on chrome webstore, It will take like 2 days to be accepted probably (that what it took when I tried to do that for flavortown (and it was accepted too late :c)
See you around 
After reading and analizing this flow today, I’ve realized that it’s better to keep each vault with it’s own passkey (one leak won’t expose your all keys). Also right now if you have already registered passkey for that vault you can choose to use exising passkey (so it’ll look it up on your device), or create new one (it might overwrite your old one (for same vault)).
After reviewing this PR by myself and finding nothing that would make this insecure, I’ve used GPT Astra 6 as well to review it, so now I’m pretty sure that this branch is ready to go on main.
See ya!
I added one really important thing. Before, Mossy used a 4-digit PIN to unlock the vault (it was used as a wrapping key (after going through HKDF and Argon2)). It was 10,000 combinations. Argon2 made it take longer, but after some time (a few hours), it could be cracked (if someone had your encrypted encryption key (sounds funny :d)).
After this change:
We use PRF from WebAuthn (really secure stuff) that uses Touch ID, Windows Hello, or Yubico Security Keys (and others) to give deterministic random bytes. Think of it like a random function that remembers what it returned for which argument. Assuming that an attacker would try to brute-force this encryption key, even with 10^18 tries per second, it’d take 1.8 x 10^51 years to crack it (kinda looooong time).
Oh, and for those who can’t or don’t wanna use PRF, I’ve added regular passwords. They’re not as good as PRF, but it still takes a really long time to crack those.
Those changes are still in an open PR, but it’s 10 PM, and I need to take a closer look at it tomorrow (already did a code review myself, but I’m kinda sleepy, and I’d like to keep y’all secure <3).
See ya!
Frontend:
Backend:
key-sync microservice (HTTP + SSE instead of WebSockets) (so user can access synchronized passwords up to 5 minutes after they are sent)Changelogs
Frontend:
Backend:
I am working on delivering some more things before end of stardance. Stay tuned!
Here is what happend after last devlog (lots of improvements :D)
On frontend:
On backend:
That’s all for now. I’ll focus on design consistency & responsiveness for now.
It’s been a long time from last devlog.
Here is changelog:
On frontend:
typ claim in JWT tokensAuthentication.md documentationWork in progress:
Currently I’m working on new feature, central microservice that will handle sending emails to users
This is what I got so far:
See ya!
Mock API is finished, now I’m working on frontend design & consistency
Changelog
RippleButton to Button as it’s generic right nowButton component generic (support for icon, ghost buttons etc)Button componentAlso I adjusted some colors so design is more consistent.
See ya!
Device manager is now up and running on production!
in code review I noticed:
Now I’m working on creating Mock API so frontend development will no longer require running real backend.
Stay tuned!
Finally device manager is ready to go.
Now it’s time to work on frontend features + design (typography, colors, globals <– boring stuff ://)
develop branch I need to fix some really minor bugs.see ya!
Soo…
/login endpoint etc etc. basically it was quite a hustle.BTW: test count jumped from 31 to 72 from last devlog so you can see how big is the difference!
Device manager is pretty much ready to go to production from API pov (there are some things that I still need to code tho), from last devlog I integrated it with Auth microservice, with each login / session refreshment it’s checked if given device is blocked, if so, Mossy will refuse to provide user new tokens.
PS: look at those green tests (so cool)!
From last devlog I’ve managed to add some features for this new Device Trust Microservice.
It might look like TDD is slowing me down, but my code is getting really mature (each scenario is prepared). For whole process of developing this MS I didn’t opened insomnia even once - and that’s cool, because running tests without running whole MS (and it’s dependencies) is much faster.
See ya!
For last 10 hours I’ve made major progress on Mossy development.
This is my biggest project ever
Stay tuned!
Notes system is ready and works like a charm, I had minor problem with JPA while implementing it (Cascade.ALL) fixed issue. Notes are encrypted with vault encryption key, so it’s suitable for sensitive data. Next up I’ll implement usage history!
Now, I’m working on implementing notes for passwords, backend is already ready, and frontend logic is half-way there, probably I’ll finish everything tommorow. Also I’ve made major refactor in vault request handlers logic by creating AbstractVaultRequestHandler to keep boilerplate-code in one place.
Mossy’s search engine works like a charm!
Currently, I’m working on a search engine for Mossy using Fuse.js. There are still a few things to implement, such as the UI for query search, and some bugs in the tag search logic to fix.
I’ve finaly finished system of managing tags! I really like how it turned out. Next up I’ll work on searching and filtering passwords!
Whole tag system is ready on backend, currently I’m working on integrating frontend with API in nice way. stay tuned !!!
I’ve created vault <—> backend communication for adding, assigning, and getting tags. Also adding logic is ready on frontend. Whole system ’ll be ready by tommorow 😱
Currently, I’m writing tag management system, that will include CRUD on tags, searching for passwords with tags. Adding tags already works! Also I’ve made really nice roadmap of Mossy Development!