added clarifications for #129

El RIDO 2018-05-27 15:38:41 +02:00
parent 2077ad99a6
commit 473b3a3d5b

26
FAQ.md

@ -13,6 +13,7 @@ Please have a look at these questions *before* opening an issue in this repo.
* [But JavaScript encryption is not secure!](#but-javascript-encryption-is-not-secure) * [But JavaScript encryption is not secure!](#but-javascript-encryption-is-not-secure)
* [Can I upload/download the pastes with curl/wget/…?](#can-i-uploaddownload-the-pastes-with-curlwget) * [Can I upload/download the pastes with curl/wget/…?](#can-i-uploaddownload-the-pastes-with-curlwget)
* [Technical](#technical) * [Technical](#technical)
* [What parts are or aren't encrypted in a paste?](#what-parts-are-or-arent-encrypted-in-a-paste)
* [How can I securely clone/download your project?](#how-can-i-securely-clonedownload-your-project) * [How can I securely clone/download your project?](#how-can-i-securely-clonedownload-your-project)
* [How should I setup HTTPS?](#how-should-i-setup-https) * [How should I setup HTTPS?](#how-should-i-setup-https)
* [How can I change the "PrivateBin" name used on the website?](#how-can-i-change-the-privatebin-name-used-on-the-website) * [How can I change the "PrivateBin" name used on the website?](#how-can-i-change-the-privatebin-name-used-on-the-website)
@ -92,7 +93,7 @@ You can also look at the release notes of PrivateBin to see what else changed.
### But JavaScript encryption is not secure! ### But JavaScript encryption is not secure!
At first, this is not a question. Secondly we acknowledge that and are well aware that JavaScript cannot provide the same level of security as other methods do, because you still need to trust the server administrator not to deliver manipulated scripts. That is why we explicitly mention this conceptual issue [in our Readme](https://github.com/PrivateBin/PrivateBin#what-it-doesnt-provide). First, this is a statement, not a question. Second, we acknowledge this and are well aware that JavaScript can't provide the same level of security as other methods do, because you still need to trust the server administrator not to deliver manipulated scripts. That is why we explicitly mention this conceptual issue [in our Readme](https://github.com/PrivateBin/PrivateBin#what-it-doesnt-provide).
However people have different security requirements and sometimes a fast way to send someone an encrypted message is needed. If you want to be secure against any attacks, we strongly recommend you to **host your own PrivateBin instance** and use transport encryption (HTTPS) to prevent any modification of the data sent and received by PrivateBin. However people have different security requirements and sometimes a fast way to send someone an encrypted message is needed. If you want to be secure against any attacks, we strongly recommend you to **host your own PrivateBin instance** and use transport encryption (HTTPS) to prevent any modification of the data sent and received by PrivateBin.
@ -100,10 +101,31 @@ However people have different security requirements and sometimes a fast way to
You cannot do it that easily, because the whole purpose of PrivateBin is to encrypt the pastes. And this is done in your browser using JavaScript. You cannot do it that easily, because the whole purpose of PrivateBin is to encrypt the pastes. And this is done in your browser using JavaScript.
You could, however, imitate this encryption process in your own tool/application locally and only upload or download the ciphertext. For more information on how to do this, please have a look at our [API docs](https://github.com/PrivateBin/PrivateBin/wiki/API). You could, however, imitate this encryption process in your own tool/application locally and only upload or download the ciphertext. For more information on how to do this, please have a look at our [API docs](https://github.com/PrivateBin/PrivateBin/wiki/API). We do also provide a [A proof-of-concept CLI client](https://github.com/PrivateBin/PrivateBin-Cli) that does this.
## Technical ## Technical
### What parts are or aren't encrypted in a paste?
The following things are encrypted end-to-end in the browser, before the up- and after the download:
- paste text (without formatting, which is done after decryption)
- files
- user names, if used in a discussion comment
- discussion comments
What is not encrypted is certain meta data of a paste, in particular:
- timestamp of the paste or discussion post creation (can be looked up on the filesystem per paste/discussion file or deduced from the server logs)
- expiration time in seconds, if chosen
- format of the paste (plain text, source code or markdown)
- if discussions are enabled for a paste (true/false)
- the IP based user icon, if a user name was given
What is not stored or transmitted at all:
- generated decryption key of the paste, it is part of the URL after the hash
- password, if given
All the encrypted items in a paste and its discussion use unique salts (the salts are not encrypted), hence one can't easily deduct i.e. two discussion user names being the same name without having the key. But you can deduct if the same IP was used in a discussion without decryption, as the user icons (generated when a user name is used) are not encrypted. Then again it is easier to gather this information via the server access logs.
### How can I securely clone/download your project? ### How can I securely clone/download your project?
As of the PrivateBin 1.0 release we [cryptographically sign](https://git-scm.com/book/uz/v2/Git-Tools-Signing-Your-Work) our git commits and tags, so that you can verify we actually developed the software. Later, we also [started signing the release archives on GitHub](https://github.com/PrivateBin/PrivateBin/issues/219). As of the PrivateBin 1.0 release we [cryptographically sign](https://git-scm.com/book/uz/v2/Git-Tools-Signing-Your-Work) our git commits and tags, so that you can verify we actually developed the software. Later, we also [started signing the release archives on GitHub](https://github.com/PrivateBin/PrivateBin/issues/219).