Encrypted libraries leak lots of information in Seafile
github.com
github.com
"I don't quite understand why using a single IV for the whole library is vulnerable to known-plaintext attacks."
That might be an acceptable response if you're trying to build a secure system and don't fully understand your tools yet, not many people do, but it should be followed with an eager question on how to improve. Instead he follows up with:
"I know it's better to use different IV and key for each file/block. But that would greatly increase complexity."
As if that's an excuse. And besides, solutions had been suggested and it's not that complex. Finally he just states that the security improvements are not scheduled.
But I agree that they don't take security as serious as they should. I reported an issue with a deterministically named world readable cache directory (https://forum.seafile-server.org/t/security-security-issue-a...) and suggested that they move it inside the Seafile data directory, as this would allow to run multiple installations beside each other and also prevent races where a different user creates the directory, before Seafile does. The suggestion was dismissed as “/tmp is standard, so we will not change this”.
I solved this issue on my box using SystemD's PrivateTmp feature.
Is there a better FOS alternative?
The Wuala service did had a lot's of deadlocks, either on server or the client side, and customer service was not done secure: please send over the log files (included file names) or the client storage block, etc...
The thing I don't get is that why can't I just aes-encrypt my file and upload somewhere for secure-backup, there is no way to break it unless you gave out your aes key.
Transmitting AES(updated) to the server is bandwidth-inefficient and storage-inefficient.
Transmitting DIFF(AES(original), AES(updated)) gives you no filesize benefit.
You can do AES(DIFF(original, updated)) but that requires your local client to have the original file, or enough of it indexed to produce the diff - and it means that restoring the latest file means restoring a giant chain of increments - which means you'll probably want to periodically reupload the original file - which is bandwidth-inefficient and storage-inefficient.
You can transmit the encryption key to the server and have it rollup diffs. But that's not a good idea if you don't really trust your server (got some cheap cloud storage?)
The solution to this problem is to use a deduplication algorithm like content-defined chunking, as seen in attic/restic/obnam/tarsnap.