scoop
Dear community ![]()
I’ve got a few applications in mind for an industry that, like many other, tends to collect tremendously “juicy” (sensitive) data.
There is a strong case to be made for applying end-to-end encryption for both customers and the vendor.
Would such an architecture, in your opinion, invalidate many of the nice things you get with LiveView to the point where a React SPA would make more sense?
Side quest: To make things spicier, the industry in question requires high availability of records and documents. Would E2EE be incompatible with CRDT:s?
Asking for a friend, only wrong answers etc.
![]()
Thanks in advance for any insights and reflections!
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
Hey there,
It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Quite interesting article Google brought me. Didn’t find any mentions about it here.
What do you think in general? Would you use togethe...
New
:warning: Security advisory: Decimal DoS vulnerability
A vulnerability has been published for decimal where very large exponents can cau...
New
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
Other Trending Topics
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Aludel - LLM Evaluation Workbench
Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 7- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
Schultzer
Whatsapp is a good example of an end to end encrypted chat app that is powered by the BEAM, the Erlang VM that Elixir runs us, so I don’t see any issue in building an end to end encrypted application in Elixir.
scoop
Sure! But I’m thinking that a lot of what you do with the data happens on server. If that is an intentional black box created on the client with encryption, then maybe having all the server side goodies are (to some degree) wasted.
Idk
soup
If your records are all encrypted blobs, you can basically ignore anything to do with forms, possibly any kind of “delete child record” actions too depending. You will have to either write custom hooks to decode and encode the (“dead”) form data before transport, or write the form in vue/react/svelt/whatever (and still decode/encode). Hydrating/dehydrating data into and out of the form wont be hard, but rapidly you’ll need some validations etc, which you’d end up building yourself vs using a framework.
It also depends on how sensitive your data is. Can you store the list of vendor clients, and render those via liveview only loading your whateveract-form when editing some records, or is the existence of a client alone sensitive? If everything is sensitive then like you say, you wont get much from liveview when your state is
opaque_blob_a→opaque_blob_b, but maybe most of the time your just writing liveviews and only have a few select black boxes around the place.So disregarding any sensitive interactions, what do you have left? Do you want to push notifications around? Still use a websocket for transport speed? Is it better to just have a/many regular phoenix channels for these? Do you just prefer heex over jsx? If most of your elements are
phx-update="ignore"then you wont get much quick dom diffing.You can embed js frameworks inside LV and use hooks as an adapter layer, but you will hit some friction vs using one ecosystem alone.
mayel
see @jstimps’s implementation for an example: GitHub - jessestimpson/livesecret: Share end-to-end-encrypted data · GitHub
jstimps
Thanks for the mention! The answer by soup above hit the nail on the head.
For LiveSecret, we’re only maintaining E2EE for a single form field, and everything else has encryption terminated at the server via TLS like a typical Phoenix app. With this model, we can still take advantage of the power of LiveView and Elixir for the manipulation of the metadata. I’m happy to answer any questions about the implementation details.
On CRDTs, it depends on the data type. For example you would not be able to have full E2EE on a “increasing counter” CRDT because the server inherently knows the value, but a “last write wins” CRDT is just a binary blob so it can store your encrypted data without issue.
In general, you may find value in 2 exercises. (1) Mapping out all of your desired data flows and then figure out where you must apply E2EE and/or CRDTs. If you find you can manage most of your data via traditional means you’ll have more flexibility down the road. And (2) implementing a proof of concept in LiveView and perhaps some other JS framework.
scoop
Thank you @soup for elaborating and sharing your thoughts.
Well, I would like to say that, yes, the nature of the industry is indeed such that the mere fact that a client is a client should warrant having it a “blob of silliness”. Then, there is reality. I’m pretty sure that a review of the data model, field by field, would result in only a select group being black-boxed.
A big part of the application is also document management, where the documents themselves wouldn’t be affected but obviously all data required to manage said documents.
I hope that more people have some kind of utility of, or interest in, these discussions.
Again, thanks.
scoop
Thanks for taking the time @jstimps! You can bet that I have reviewed your LiveSecret project – terrific job there
I’m especially grateful that you elaborated on the CRDT part of the issue.
I’ll sit down with the plans tomorrow and draw this up, looking at the data flows as you mention.
The end product will thankfully be open sourced. I’m afraid the initial MVP won’t be due to [redacted]. Will try to share as much as possible.
Hope more people than I are interested in the E2EE space. Especially now with the epic misstep that is the so-called Chat Control 2.0 proposed legislation