E2E-Encryption for Roam Research - Part 3
Roam Research recently added a significant new feature, end-to-end encryption for the content blocks and the uploaded media. In this article, we take a look into how encryption affects performance.
Hej,
And welcome to this series of articles about a recent feature Roam Research has released this weekend: end-to-end encryption. I have already explored why encryption is so important and how it works, how secure it is (as far as I can judge at the moment), how you encrypt your graph and how you verify that the encryption is working. This article analyzes whether encryption impacts performance and if it does by how much.
You can follow my analysis by watching the linked videos below.
The Video challenge
Uploading
I’ve tested the encryption impact on media files with an mp4 movie.
Encrypting the 83,9 MB video took 13,3 seconds on the encrypted graph.
Uploading the video took 24,4 seconds on the unencrypted graph and 24,5 seconds on the encrypted, which is pretty much expected given that the file size won’t change much.
We have an expected overhead for encrypting big files that should scale almost linear for the file size (0,16 seconds per MB). You will probably not often upload files with a size bigger than 10 MB (most images, pdf’s and office documents are way smaller), so this performance penalty is nothing to worry about.
Playing
When loading the page with video, it took 14,83 seconds for the encrypted video to be decrypted and ready to be played. That’s very reasonable given the fact we have that AES is symmetric encryption. The unencrypted video took just 0,7 seconds to get prepared. This is annoying, and you can even watch the performance impact when loading images.
Paste a bunch of blocks
I tried to evaluate the performance impact of the block encryption by pasting a rather large document (A Research Center for Augmenting Human Intellect by Douglas C. Engelbart, worth reading, by the way.) The document contains around 44,000 characters in 530 differently indented blocks.
Pasting on the encrypted graph took 4,9 seconds; on the unencrypted graph, 4,9 seconds. Even with this rather large document, no impact is recognizable.
Video: Encrypted Graph
Video: Unencrypted Graph
The 10,000 pages challenge
If you read my TfT Performance Benchmark, you may remember my 10,000 pages data set. If you haven’t read it yet, you should :)
Importing the data into the encrypted graph took a whopping 40 minutes and 42 seconds, while importing the same amount into the unencrypted graph took only 34 minutes and 41 seconds. It seems that with that large amount of data, encryption creates an overhead of around 20 %.
Loading the encrypted graph with the 10,000 pages took 29,5 seconds, loading the unencrypted graph in just 4,8 seconds.
After both graphs are loaded, no performance impact could be seen when working with it except if external media is loaded.
The impact is noticeable but not too worrying, given that the 10,000 pages graph is probably much bigger than yours.
Video: Encrypted Graph
Video: Unencrypted Graph
Conclusion
Overall I was pretty impressed with how well and frictionless the encryption worked. There is a noticeable but acceptable performance impact when loading big media files or large graphs, but working with sensitive data is worth it.
How did you like this series of articles that goes a little deeper into technology? Let me know in the comments.
If you have any questions or suggestions, please leave a comment.
If you want to support my work, you can do this by becoming a paid member:
Or you can buy me a coffee ☕️. Thank you so much for your attention and participation.