- 44 Posts
- 35 Comments
xoron@programming.devOPto
Self Hosted - Self-hosting your services.@lemmy.ml•Selhosted P2P File Transfer & Messaging
3·3 months ago“private and secure chat app”
I don’t think it’s a solved problem. There are countless nuances to it. So it’s good to have various approaches.
xoron@programming.devOPto
Self Hosted - Self-hosting your services.@lemmy.ml•Selhosted P2P File Transfer & Messaging
2·3 months agohttps://positive-intentions.com/blog/docker-ios-android-desktop
this a yet another approach to a “private and secure chat app” because its a unique approach to the same problem which id like to investigate.
xoron@programming.devOPto
Self Hosted - Self-hosting your services.@lemmy.ml•Selhosted P2P File Transfer & Messaging
11·3 months agosorry for the delay in responding. personal matters required more focus and to reply to you i wanted to set aside some time to write well for clarity.
… Might as well get real-life practice at writing.
im not entirely bad at writing (technical or otherwise) to get to where i am now in the project, i usually write with my own words like now. the blog articles you see on the website are from old reddit posts. questions like your are understandably frequent and so it made sense to create the website and blog to address FAQ’s. i think its important to note how im using AI here. while i can say to AI “here are some bullet points, now turn it into an article…”, i have written the content and details myself and then have AI reword it for clarity. i think the resulting content is better for clarity.
What is the lifetime of each user’s public/private keypair? What is the lifetime of the symmetric key shared between two communicating users?
the implementation sits ontop of a webrtc connections which mandates its own encryption keys. my app adds an additional set of public/private keypair and symmetric keys. these are persisted to browser storage (indexedDB). the keys are cleared if the user performs a logout (its all client-side, so there is no actual “logout”, it clears the local data).
key rotation is a work-in-progress and not testable in the app. while i can have a button that says “rotate keys”, im planning to frame it as something like “block contact”. this is because it makese to keep user ID’s static, so that in future sessions, the app can automatically connect to “known peers”. in the case you want to block someone, it makes sense to abandon that ID so they cannot ping you with it. when you connect to a “know peer” that doesnt know your new ID, it can use the previsously establish keys to verify each other and update the contact details accordingly.
its also possible to export the data to a file to then load from that profile. its currently static and unencrypted. there will be an option to have it all password encrypted. https://www.reddit.com/r/cryptography/comments/1lhjpxk/veracryptlike_functionality_from_a_browser/
I take substantial notice whenever a promise of “true privacy” is made
completely understandable. as mentioned in the post cybersecurity is full of caveats. here is a previsous attempt to outline some details: https://www.reddit.com/r/cryptography/comments/1evdby4/is_this_a_secure_messaging_app/
im also investigate various approaches to exchanging data offline with QR codes.
(written by me): https://www.reddit.com/r/positive_intentions/comments/1b5j424/file_sharing_by_qr_code/ (written by having AI transcribe my wording): https://positive-intentions.com/blog/qr-codes-as-a data-channel
id also like to investigate other things a browsers can do like exchange encryption data over NFC.
it isnt use-friendly yet, but i also have some basic functionality around p2p broker connections to avoid needing the peerjs-server (which acts as the broker.). some unclear details which could do with AI clarification can be seen here: https://github.com/positive-intentions/chat/issues/6
If a secure medium existed, then secure key exchange would already be solved
the existing key exchange should be already secure enough… but users would understandably want to be sure my code doesnt have a critical-bug and validating hashes provides that bit extra.
many others have also tried their hand at secure messaging, with more fails than successes.
i have seem some other myself, and i still believe my approach is unique. there are of course limitations in the webapp form-factor, but it also provides a lot of flexibility in just being able to run on a browser. while many try/succeed/fail, this is my attemp. i have been refining my approach with feedback and there is still much to do. at this point i dont consider it insecure, but the UI is pretty ugly and combined with various UI bugs, is deterring users. with the code being course source, i often try to present some concepts in a more digestable way with code examples as seen:
- https://cryptography.positive-intentions.com/?path=%2Fstory%2Fcryptography-introduction--welcome
- https://github.com/positive-intentions/cryptography
there is a lot to learn but by breaking things into small parts, i can better learn how it can all fit together.
“cryptography engineer” and not a cryptographer
i like that term. its new to me. i normally just call myself a webdeveloper to clarify my expertise. its more so the case than a cryptography engineer. i open sourcemy work for transparency, but also great for my own learning.
thanks for the good wishes. hopefully i get to a stage where its better presented as a product and not just a proof-of-concept.
xoron@programming.devOPto
Self Hosted - Self-hosting your services.@lemmy.ml•Selhosted P2P File Transfer & Messaging
22·3 months agothanks for taking a look.
firstly i would like to apologise for throwing the following blocks of AI text at you. i often used AI to create documentation for the project. im not much of a writer, im sure its more clear from AI than if i did it myself.
- how the authentication works: https://positive-intentions.com/docs/research/authentication
- how security works: https://positive-intentions.com/blog/security-privacy-authentication
the ID’s are cryptographically random to make it reasonably certain that strangers cannot connect (because its an ungussable ephemental string). this is used with peerjs-server (open source and documented) to connect with a predictable ID. when this ID is shared “through some other trusted channel” (e.g. whatsapp, qrcode), the peers connect and establish encryptions keys (see links above). afer the first connection (expected to be secure!), the previously establish encryption keys can be used to authenticate the user (to prevent MITM).
Was that document crafted for this project specifically?
long story short… this is my sideproject and im trying to get it off the ground. as i post more about the project, i decieded to create a website to “document” the project. there are understandable questions like yours, so made sense to answer them in the website. this includes things like the threat-model… while one-shotting is a thing you can do with AI, the threat model took several days of learning, thinking and consideration. i also posted about it on reddit for feedback and updated it accordingly.
Was it prepared by a cryptographer?
am i a cryptographer yet? having worked on this project i must have picked some stuff up. i still find that i need to learn much more.
And was it generated using an AI/LLM?
i hope admitting i used AI doesnt undermine the effort i put in. i try to communicate details in places like lemmy and the code is open source. AI enables me to demonstrate granular functionality that is easier for me to test as well present to professionals; in contrast to presenting overwhelmingly complicated code on github. for example for my cryptography functionality i created a separate repo to try things out for my learning: https://cryptography.positive-intentions.com/?path=%2Fstory%2Fcryptography-introduction--welcome
there are good and bad ways to using AI and i believe im doing it responsibly. i have been a coder for 15+ years. i can do it myself, i simply cant type as fast as AI making it indespensible when working on a project of this scale. i completely understand your concerns and im all ears for advice on a reddit post i asked: https://www.reddit.com/r/CyberSecurityAdvice/comments/1lekrsx/what_advicebestpractices_are_there_for_creating/
(its why like in all my app, website and posts (like this), i try to strike caution.)
xoron@programming.devOPto
Web Development@programming.dev•Are Web Components better for Cybersecurity?
1·5 months agothanks for your thoughts. npm is popular for a reason and vanillajs doesnt scale very well. so any deps used could be an issue.
i was also considering if with the webcomponent approach it could be “furture-proof” as it seems to be the rhetoric i hear around. im sure i wont have a great implementation any time soon, but id like to try out a few ideas to see if it holds-up. hopefully to lead to a “secure javascript ui framework” (which itself could be a whole discussion).
but based on all the feedback ive recieved, it seem for the messaging app refactor, i’ll be fine to use react on it. which is great because i already have a working-ish demo.
xoron@programming.devOPto
Experienced Devs@programming.dev•Are Web Components better for Cybersecurity?
1·5 months agothanks for your thoughts.
thats not quite what im asking. im wondering if there are nuanced benefits to using webcomponents over something like react. with the key difference being the native support.
i hope with the webcomponent approach it could be “furture-proof” as it seems to be the rhetoric i hear around. im sure i wont have a great implementation any time soon, but id like to try out a few ideas to see if it holds-up. hopefully to lead to a “secure javascript ui framework” (which itself could be a whole discussion). i hope that by having it open source, i can point to an example to discuss and improve it.
it seem for the messaging app refactor, i’ll be fine to use react on it. which is great because i already have a working-ish demo.
xoron@programming.devOPto
JavaScript@programming.dev•ReactJS-like Framework with Web Components
1·6 months agohttps://positive-intentions.com/blog/async-state-management/ https://positive-intentions.com/blog/bottom-up-storage/
the state management with the useStore hook seem tricky to explain and can be a whole separate dicussion. i try to explain a bit in those posts. im still working on it more and while it isnt document anywhere, but im also investigating having it store data encrypted-at-rest.
xoron@programming.devOPto
Programming@programming.dev•ReactJS-like Framework with Web Components
1·6 months agothanks. thats what id like to aim for and i dont think its far off. the build script there is mainly for the storybook statics (as seen in the link provided for “website”).
couple things i hope to do soon, remove lit as a dependency - i use this right now because its useful for template rendering and lifecycle methods. webcomponents have a an ugly approach to this which Lit makes easier, and so i pushed it back, but its still on the todo.
after that i should be able to have a more vanilla web dx.
xoron@programming.devOPto
Experienced Devs@programming.dev•I have a fairly unique architecture where i have actively tried to make it as "browser-based" as possible.
1·6 months agoThanks!
Tldr; I had that question before myself. It doesn’t seem to introduce any improvement over WebCrypto API which itself should have gone through peer-review and auditing. (“Choose your browser wisely” could be considered the advice here.)
I’d like to still look into wasm for several other details of the project, but it seems the built-in browser cryptography functions are performant and generally pretty good if used correctly.
xoron@programming.devOPto
Programming@programming.dev•Functional JSX-Syntax for Webcomponents.
1·7 months agoInteresting. I’ll investigate this further. Thanks for pointing it out.
xoron@programming.devOPto
Programming@programming.dev•Functional JSX-Syntax for Webcomponents.
1·7 months agothanks! ikr. i had the same exp which im sure imspired this approach.
the functional approach makes it easier for readability and debugging.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
1·11 months agothanks for the tip. youre right i think i need to do more housekeeping there. i dont give it much attention, because as a solo project, id mostly just be doing it to myself with admin stuff.
i previsously made an attempt for things like issues, but it doesnt seem to have made any different and is just an additional overhead that im ignoring: https://github.com/positive-intentions/chat/issues
i used to pay more attention to it, but its only my time being wasted if nobody else is interested (thats fine… but it results in the amount of attention i give it. and i have a lot of things to do already when i dont have enough time for it)
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
2·11 months agothanks for your thoughts!
a scenario so that people who aren’t immediately familiar ‘get’ what it is you’re achieving
i think the ability to tell a story is important here and id like to put more time to learn how to frame it. its a very secure chat implementation from what i understand about what ive created. im keen to be challenged on if its the most secure chat app out there, but this typically seen as confrontational and seems to hurt public opnion of the project (and thus i dial it down).
here is an attempt to try explain it as “more secure than mainstream solutions”: https://www.reddit.com/r/cryptography/comments/1evdby4/is_this_a_secure_messaging_app
while i think i have a point about the security implementation. im also aware that the project is not very user friendly and full of bugs which makes for a very unappealing product.
its worth noting, that im trying to communicate about the project to cybersecurity professionals at the moment to see if the theory hold up and i think it does. i iteratively improved the UI in an attempt to gain traction. as a webdeveloper i know that i can spend more time on the UI that everything else combined, but that wouldnt be a good use of my time compared to some under-the-hood changes for stability and fixes.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
6·11 months agothanks! i’ll make time to create those.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
3·11 months agoi took a brief look. this looks like a really good read! thanks for pointing me to it!
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
1·11 months agothanks! i’ll make those changes when i can.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
3·11 months agocompletely understandable conclusion.
it started off as a curiosity, but i think there is something to it. I’m aiming for something that looks and behaves like react, but without the overhead of the react tooling for transpiling.
im not trying to take a share of that market, i come across this solution as pf of the chat app project. id like to build up this ui framework well enough to rebuild the chat proct with it… the chat app is made with react and material UI. with this framework, i am aiming to create a more simplified version of the chat app where the “no need to transpile” is a feature for its transparency. perhaps it doesnt make sense right now without the ability to effectively demonstrate it.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
1·11 months agothanks. i think then i should continue as im going and see where i end up.
xoron@programming.devOPto
Programming@programming.dev•How do i ask for contributors to my open source projects?
3·11 months agothanks for you thoughts.
i previously didnt have the “unstable” warning. this results is people saying that i should make it more clear. i think the project is in its early enough stages for it to be sensible to include there. im already planning on breaking changes which could make things worse so this is something i hope make it clear to users about the status of the project. before i had that notice, i would get complains from people that the app is terrible and doesnt work (which was basically true because it still is a work in progress and full of bugs.). i added a bit of a polish on it so it leads people to think its a finished product.
im looking for contributors on the dim repo because there part things i would like to do (and tried), but reached the limits of what i understand. i can learn and figure it out if i pour more time into it, but i have already poured time into it. im hoping someone with relevent experience would want to help.
im hoping to get a following on lemmy, mastodon, reddit in order to get traction on the projects. as it stand its just me and so its a bit of an uphill to get traction on something like the chat project. what you might be interpreting as ego, is a mannerism i have to adopt if i want to actively promote it as being a “secure chat system”. otherwise, feedback is a lot more dismissive about the project. that would surely sink the project immidiately.
im a developer not a sales person… but since working on these project ive learnt to moderate how cautious my tone should be to balance the communication of technical details as well as promoting something. i dont think i do the best job of it, but im still in the learning process.



that sounds like a good idea to explore. i didnt consider nostr, but i think i can fit it in. my implementation is fairly unique because im trying out an application-level cascading cipher. the following article isnt finished, but might show some insights.
https://positive-intentions.com/blog/cascading-cipher-encryption
like with the signal-protocol, it should be possible to adapt the nostr-protocol to be able to daisy chain to the cascade. im already using the MLS protocol in the cascade to help manage group messages. after taking a quick look at the nostr-protocol. i think its a good idea how it handles relaying messages. it could be useful for group messaging.