• 6 Posts
  • 20 Comments
Joined 2 years ago
cake
Cake day: June 14th, 2024

help-circle

  • Thanks for tips! i really appriciate the thoughts and advice. id like to drill into the feedback further.

    For learning purposes?

    sure. as would be the persuit of creating anything worthwhile. i consider myself an expert in javascript. there are countless learnings i had in the approach when i was working with js. rust certainly carries a learning overhead to pull of properly.

    use something that already exists like Matrix or Signal

    agreed. my project isnt at all compable or as stable as those tried-and-tested implementation. my project is far from comparable, but its not for lack of trying. the key detail that sets this apart from all other apps is the browser based client-side philosophy. no need to install anything. your ID is crypto-random and so the app doesnt need to rely on any central registration system like phone numbers. your ID is unguessable and to connect to someone, you have to explicitly share it. webrtc has other nuances like being to route through a shared network for secure/faster transfer. my approach to “secure messaging” in this project is fundamentally different to signal and matrix and has tradeoffs and capabilities that make a direct comparison nuanced.

    No encryption is secure if it isn’t peer reviewed and extensively tested

    correct. i am also looking to create something people can use. youre not the first to advise things like peer-review, but its also important to have context?/perspective?. as a unfunded-side-project, things like third-party audit are prohibitively expensive. the best i can offer is to mention the caveats (as is the first thing mentioned in the post and throughout my documentation). its clear and understandable nobody is going to take their own time to review my code/docs. i have tried for various open source funding/grants… all rejections. Kerkhoff’s principles are met, but its clearly too specialized and complicated to review for most… again, its not for lack of trying.

    You can do formal verification in any language

    i was previsouly investigating what could be done in JS. i couldnt find anything that i liked. perhaps you have any suggestions? i wanted to avoid creating AI-slop to address this and so i though rust would be more suitable with existing “reasonably mature” tooling. i was separately working on the signal-protocol, where i added things like formal-verification… it seems to work well, but there is a bit of a diconnect when bridging js to wasm… and thus this approach for a more pure rust approach. thanks for pointing me to Ferrocene. i’ll take a look. note: im aiming to avoid costs where possible.

    This can help defend against timing attacks.

    the signal-protocol there aims to address this, like all of my projects, it lacks third-part reviews, but i hope its comprehensively documented (https://positive-intentions.com/docs/technical/p2p-signal-protocol/). there is an unfortunate AI-stink to it that is difficult to remove from my docs, but i hope it doesnt come across as low-effort. i remember the days before AI. without it, i wouldnt be creating docs. i would still encourage you to ask me for clarity on details instead of wasting your time on the docs.

    Rust also has a great crypto ecosystem

    yes. it was needed for the signal protocol because i needed certain primitives that were not provided by the browser.

    thanks again for all the advice. i really appriciate it. id like to avoid having a backend as part of the “philosophy” of the app. it revolves around a webrtc connection and local-only storage.



  • im switching to the rust stack mainly because i think it has better tooling formal-verification. formal verification is particuarly important in my project because it relates to cryptography.

    i assume i can get something comparable to what i already did with JS… but with rust, i may be able to break out of the browser environment.

    i not only want to be able to offer a native gui version, but with rust i think im on track for also being able to create a cli tool too.












  • That’s right. Git as an offline cache. When you read a peers message, you can also update you own git repo to say you read it, and so when the peer comes online they can update their side to delete the messages (keeping the size small)… Going further against the grain, the app doesn’t care about the history of messages deleted, so I expect to add things for purging history.

    I considered the Blockchain, but i think the git approach is better. It’s hard to describe what I’m imagining. I’d like to put together a demo when I get time.

    I have a full-ish description of the protocol.

    https://positive-intentions.com/docs/technical/whitepaper/complete-protocol-spec

    Instead of reading that, if you really want to know more, I would suggest you ask me for clarity. (Nothing about this git approach is mentioned there.)


  • In my app I’m aiming for minimal steps to get started. The frontend is a pwa which works out the box as a webapp.

    There is a focus on local-first storage. When connected over webrtc, no backend storage is needed.

    This approach with git would be optional. Users have frequently asked about the ability to send messages offline (a completely normal expectation for messaging app). It seemed like a hard limit until this idea with git. My app works without this feature, but with nuanced tradeoffs.

    If I host a git-sever myself, but that would be centralising my project.


  • In any case it wouldn’t be on my account. It would be great for users to self-host. Things like GitHub would only make it easier to get started to test things out.

    Why would they ban my account? That would be unsettling. I’m a developer. The code itself is fairly basic git stuff.

    My project is hardly popular, but if it gets there, I’m sure it would impact githubs performance. Would the concern be that my app ddos GitHub? I can explicitly prevent remotes like GitHub if necessary.


  • I’m happy to advise people to self-host a git server. That would be ideal. The ability to do it on GitHub or codeberg would only make it easier to get started. I can put logic there to prevent using a remote with from GitHub if necessary.

    In any case, it wouldn’t be on my git account.

    This is all ultimately for my project which is a fairly unique approach to secure messaging. I’m trying things out.





  • in my project there is a focus on client-side storage. i hope it doesnt ever get to 10GB. as messages are published/read, the git DB is cleared as appropriate. i dont need the git history so i’ll do what is needed to reduce the data consumed. i dont expect it to get to that 10GB capacity, that isnt its purpose and thats a bridge i dont exprect to cross any time soon.

    your absolute right about there being alternative ways to do this. i specifically want some thing a user can manage. my app right now doesnt have offline-capabilities and this is an approach to introducing that capability. using a http server would be centralizing an otherwise decentralised architecture.

    i have given it some thought and i think this is the only way it makes sense for me to introduce offline messaging without centralizing.

    the project is pretty complicated and its difficult to describe how it would work without an exampler so id like to share the initial idea here before i try things out to demo.




  • i think use it an appropriate amount. im not sure how to quantify that. i use different AI models on different tasks in the code as well as the documentation.

    its worth repeating its far from finished and i hope with feedback i can make it better. i have put efforts towards directing it towards unit-tests, an audit and formal-proofs. none of that is good-enough, but i hope it can act as a starting point for verifying the implementation is correct.

    i get the whole semantic versioning rhetoric and branching strategies, etc. this project is a while from being promoted as “perfect”. this is still a work-in-progress.

    im sure people have better things to do with their time than review unstable and unfinished code. as a solo dev on this, there isnt anyone reviewing my code. if i dont share it like this, no one with come across it. i hope you can understand i get pushback when i promote my messaging app is “secure”, so this transparency is nessesary.