summaryrefslogtreecommitdiff
path: root/pages/features/cryptography
diff options
context:
space:
mode:
Diffstat (limited to 'pages/features/cryptography')
-rw-r--r--pages/features/cryptography/en.text66
-rw-r--r--pages/features/cryptography/pt.text53
-rw-r--r--pages/features/cryptography/ru.text54
3 files changed, 0 insertions, 173 deletions
diff --git a/pages/features/cryptography/en.text b/pages/features/cryptography/en.text
index 7cc32f4..c1c89f5 100644
--- a/pages/features/cryptography/en.text
+++ b/pages/features/cryptography/en.text
@@ -41,44 +41,6 @@ The provider-specific CA certificates use 4096 bit RSA with SHA256 digest, by de
All TLS connections use PFS ciphers.
-h2. Storage - Soledad
-
-The Bitmask application stores its data in [[Soledad => https://leap.se/soledad]], which handles encrypting this data, securely backing it up, and synchronizing it among a user's devices. In Soledad, local storage uses symmetric block encryption of the entire database using a single key. For data stored remotely, each individual document is separately encrypted using a key unique to that document.
-
-Both local storage and remote storage keys are derived from a master "storage secret." This long random storage secret is stored locally on disk, protected by symmetric encryption using a key derived from the user's password (scrypt is used as the key derivation function).
-
-Currently, our scrypt parameters are:
-
-bc. N (CPU/memory cost parameter) = 2^14 = 16384
-p (paralelization parameter) = 1
-r (length of block mixed by SMix()) = 8
-dkLen (length of derived key) = 32 bytes = 256 bits
-
-We are considering using a larger N.
-
-*Local storage*
-
-p((. The block-encrypted local SQLite database uses @AES-256-CBC@ using the first 256 bits of [@storage_secret@]. See https://github.com/kalikaneko/python-u1dbcipher and http://sqlcipher.net.
-
-*Remote storage*
-
-p((. Per-document encryption of documents stored remotely uses symmetric encryption with AES-256-CTR or XSalsa20 cipher using 256 bit keys. The library pycryptopp is used for this. The key and MAC used to encrypt each individual document are derived as follows:
-
-<pre style="margin-left: 2em">
-storage_secret_a = first 256 bits of storage secret
-storage_secret_b = everything after first 256 bits of storage secret
-document_key = hmac(document_id, storage_secret_b)
-document_mac = hmac(document_id | document_revision | iv | ciphertext, hmac(document_id, storage_secret_a)
-</pre>
-
-p((. Every document has its own key. The [@document_revision@] in the document MAC prevents a rollback to an old version of the document. HMAC uses SHA256.
-
-p((. Some documents in a user's remote data store are added by the provider, such as in the case of new incoming email. These documents use asymmetric encryption, with each document encrypted using the user's OpenPGP public key. The library we use for this is [[Isis's fork of python-gnupg => https://github.com/isislovecruft/python-gnupg]]. These documents are only temporarily stored this way: as soon as the client sees them, they get unencrypted and re-encrypted using the other methods.
-
-*Transport*
-
-p((. TLS, as above. Soon to be CurveZMQ.
-
h2. Encrypted Tunnel - OpenVPN
OpenVPN has three settings that control what ciphers it uses (there is a fourth, @--tls-auth@, but we cannot use this in a public multi-user environment). Every provider can easily choose whatever options they want for these. Below are the current defaults that come with the leap_platform.
@@ -116,36 +78,8 @@ Obfsproxy is optionally used to make VPN traffic not appear as VPN traffic to so
We have chosen the Scramblesuit pluggable transport that uses Uniform Diffie-Hellman for the initial handshake and AES-CTR 256 for application data.
-h2. Encrypted Email - OpenPGP
-
-The user's autogenerated key pair uses 4096 bit RSA for the master signing key.
-
-Bitmask will refuse to encrypt to a recipient's public key if the length is 1024 or less.
-
-All keys are stored in Soledad.
-
-Bitmask does not yet support ECC keys.
-
-Bitmask uses GnuPG. The python library we use is [[Isis's fork of python-gnupg => https://github.com/isislovecruft/python-gnupg]].
-
-h2. Secure Updates - TUF
-
-The secure updates are done using [[TUF => http://theupdateframework.com/]], they use OpenSSL 4096 RSA keys with pyCrypto. There is three keys involved in the update process (root, targets and timestamp).
-
-* The root key is used to certify the rest of the keys that lives in an offline storage and only gets used once per year to update the certification or in case of rotation of another other key.
-* The targets key is used to sign all the updates. This key is in the hands of the release manager and used on every release.
-* The timestamp key is used to sing a timestamp file every day, this file is used by the client to prevent an adversary from replaying an out-of-date updates. This key lives online in the platform servers.
-
h2. Other
h3. OpenSSH
By default, all servers use RSA key host keys instead of ECDSA. If a host has a ECDSA key, the platform will prompt the sysadmin to switch to RSA. In the future, when Curve255219 is better supported, the platform will encourage switching to 25519.
-
-h3. DNSSec
-
-To be written
-
-h3. StartTLS + DANE
-
-To be written
diff --git a/pages/features/cryptography/pt.text b/pages/features/cryptography/pt.text
index f532879..b49dfc8 100644
--- a/pages/features/cryptography/pt.text
+++ b/pages/features/cryptography/pt.text
@@ -41,44 +41,6 @@ Os certificados CA específicos de provedores usam RSA de 4096 bit com digest de
Todas as conexões TLS usan cifras PFS.
-h2. Armazenamento - Soledad
-
-A aplicação Bitmask armazena seus próprios dados na [[Soledad => https://leap.se/soledad]], que lida com a encriptação desses dados, fazendo backups seguros, e sincroniza-os entre os dispositivos do usuário. Na Soledad, o armazenamento local utiliza bloco simétrico de encriptação de toda a base de dados usando uma única chave. Para os dados armazenados remotamente, cada documento é encriptado separadamente usando uma chave única para cada um deles.
-
-Tanto as chaves do armazenamento local quanto as do remoto derivam de um "segredo de armazenamento" mestre. Este segredo longo e aleatório é armazenado localmente no disco, protegido por encriptação simétrica usando uma chave derivada da senha de usuário (scrypt é usado como função de derivação da chave).
-
-Atualmente, nossos parâmetros para o scrypt são:
-
-bc. N (CPU/parâmetro de custo de memória) = 2^14 = 16384
-p (parâmetro de paralelização) = 1
-r (tamanho do bloco misturado pelo SMix()) = 8
-dkLen (tamanho da chave derivada) = 32 bytes = 256 bits
-
-Estamos vendo de usar um N maior.
-
-*Armazenamento local*
-
-p((. A base de dados SQLite local encriptada em bloco usa @AES-256-CBC@ usando os primeiros 256 bits do [@segredo de armazenamento@]. Ver https://github.com/kalikaneko/python-u1dbcipher and http://sqlcipher.net.
-
-*Armazenamento remoto*
-
-p((. A encriptação de cada documento no armazenamento remoto usa encriptação simétrica com AES-256-CTR ou cifra XSalsa20 usando chaves de 256 bit. Usamos a biblioteca pycryptopp para isso. A chave e o MAC usados para encriptar cada documento individualmente são derivados da seguinte forma:
-
-<pre style="margin-left: 2em">
-storage_secret_a = primeiros 256 bits do segredo de armazenamento
-storage_secret_b = tudo que venha depois dos primeiros 256 bits do segredo de armazenamento
-document_key = hmac(document_id, storage_secret_b)
-document_mac = hmac(document_id | document_revision | iv | ciphertext, hmac(document_id, storage_secret_a)
-</pre>
-
-p((. Cada documento possui sua própria chave. A [@revisão do documento@] no MAC do documento previne a sobreposição de uma antiga versão sobre uma nova. HMAC usa SHA256.
-
-p((. Alguns documentos nos dados remotos de usuário são adicionados pelo provedor, tais como no caso de novos emails. Estes documentos usam encriptação assimétrica, sendo cada documento encriptado usando a chave pública OpenPGP do usuário. Usamos a biblioteca derivada do python-gnupg [[Isis => https://github.com/isislovecruft/python-gnupg]] para isso. Esses documentos são armazenados apenas temporariamente dessa forma: assim que o cliente os tiver visto, eles são desencriptados e re-encriptados usando os outros métodos.
-
-*Transporte*
-
-p((. TLS, como acima. Em breve será com CurveZMQ.
-
h2. Tunel Encriptado - OpenVPN
OpenVPN possui três configurações que controlam quais cifras são usadas (existe uma quarta, @--tls-auth@, mas ainda não podemos usá-la num ambiente público de múltiplos usuários). Cada provedor pode facilmente escolher a opção que quiser. Abaixo estão os padrões atuais que vêm com a plataforma LEAP.
@@ -128,24 +90,9 @@ O Bitmask ainda não suporta chaves ECC.
O Bitmask usa GnuPG. A biblioteca em python que usamos é a [[ramificação Isis do python-gnupg => https://github.com/isislovecruft/python-gnupg]].
-h2. Atualizações de Segurança - TUF
-
-As atualizações de segurança são feitas usando o [[TUF => http://theupdateframework.com/]], que usa chaves RSA OpenSSL 4096 com pyCrypto. Existe três chaves envolvidas no processo de atualização (root, targets e timestamp).
-
-* A chave 'root' é usada para certificar o resto das chaves que estão armazenadas offline e é usada somente uma vez por ano para atualizar a certificação ou no caso de mudança de alguma outra chave [key rotation].
-* A chave 'targets' é usada para assinar todas as atualizações. Esta chave está nas mãos do gerenciador de lançamentos [release] e é usada a cada nova versão.
-* A chave 'timestamp' é usada para assinar um arquivo com data e hora a cada dia. Este arquivo é usada pelo cliente para prevenir que um adversário imponha uma atualização antiga. Esta chave está online nos servidores da plataforma.
-
h2. Outros
h3. OpenSSH
Por padrão, todos os servidores usam chave RSA para guardar as chaves ao invés de ECDSA. Se um 'host' possui uma chave ECDSA, a plataforma irá sugerir ao 'sysadmin' que mude para RSA. No futuro, quando o Curve255219 for bem suportado, a plataforma instigará a mudar para 25519.
-h3. DNSSec
-
-Ainda será escrito.
-
-h3. StartTLS + DANE
-
-Ainda será escrito.
diff --git a/pages/features/cryptography/ru.text b/pages/features/cryptography/ru.text
index 3c4b419..a96a9ef 100644
--- a/pages/features/cryptography/ru.text
+++ b/pages/features/cryptography/ru.text
@@ -41,44 +41,6 @@ h2. Транспорт - TLS
Все TLS-соединения используют шифры PFS.
-h2. Хранение - Soledad
-
-Приложение Bitmask хранит свои данные в [[Soledad => https://leap.se/soledad]], который занимается шифрованием этих данных, надежно делает их резервные копии и синхронизирует их между устройствами пользователя. В Soledad локальное хранилище использует симметричное блочное шифрование всей базы данных с использованием единственного ключа. Для данных, хранящихся удаленно, каждый отдельный документ отдельно шифруется с использованием ключа, уникального для этого документа.
-
-Оба ключа для локального и удаленного хранилищ получаются из главного "секретного значения хранилища". Это длинное случайное секретное значение хранилища хранится на диске локально, защищенное симметричным шифрованием с помощью ключа, полученного из пароля пользователя (scrypt используется в качестве функции формирования ключа).
-
-На данный момент параметры scrypt такие:
-
-bc. N (параметр стоимости соотношения время/память) = 2^14 = 16384
-p (степень параллельности) = 1
-r (длина блока, перемешиваемого SMix()) = 8
-dkLen (длина выходного ключа) = 32 байта = 256 бит
-
-Мы рассматриваем использование большего значения для N.
-
-*Локальное хранение*
-
-p((. Локальная база данных SQLite с блочным шифрованием использует @AES-256-CBC@, используя первые 256 бит [@storage_secret@]. Смотрите https://github.com/kalikaneko/python-u1dbcipher и http://sqlcipher.net.
-
-*Удаленное хранение*
-
-p((. Подокументное шифрование документов, хранящихся удаленно, использует симметричное шифрование с AES-256-CTR или шифр XSalsa20, использующий 256-битные ключи. Для этого используется библиотека pycryptopp. Ключ и MAC, используемые для шифрования каждого отдельного документа, получаются следующим образом:
-
-<pre style="margin-left: 2em">
-storage_secret_a = первые 256 бит секретного значения хранилища
-storage_secret_b = все после первых 256 битов секретного значения хранилища
-document_key = hmac(document_id, storage_secret_b)
-document_mac = hmac(document_id | document_revision | iv | ciphertext, hmac(document_id, storage_secret_a)
-</pre>
-
-p((. Каждый документ имеет свой собственный ключ. [@document_revision@] в MAC документа предотвращает откат к старой версии документа. HMAC использует SHA256.
-
-p((. Некоторые документы в удаленном хранилище данных пользователя добавляются провайдером, например, в случае нового входящего сообщения электронной почты. Эти документы используют асимметричное шифрование, с каждым документом, зашифрованным с использованием пользовательского открытого OpenPGP-ключа. Библиотекой, которую мы используем для этого, является [[форк Айсис python-gnupg => https://github.com/isislovecruft/python-gnupg]]. Эти документы лишь временно хранятся пободным образом: как только клиент увидит их, они остаются в незашифрованном виде и повторно шифруются с использованием других методов.
-
-*Транспорт*
-
-p((. TLS, как описано выше. Скоро будет CurveZMQ.
-
h2. Зашифрованный туннель - OpenVPN
OpenVPN имеет три параметра, которые управляют тем, какие шифры он использует (есть и четвертый, @--tls-auth@, но мы не можем его использовать в публичном многопользовательском окружении). Каждый провайдер может легко выбрать любые опции по своему желанию. Ниже приведены текущие значения по умолчанию, которые идут с leap_platform.
@@ -127,24 +89,8 @@ Bitmask пока не поддерживает ECC ключи.
Bitmask использует GnuPG. Библиотекой python, которую мы используем, является [[форк Айсис python-gnupg => https://github.com/isislovecruft/python-gnupg]].
-h2. Безопасные обновления - TUF
-
-Безопасные обновления осуществляется с помощью [[TUF => http://theupdateframework.com/]], они используют 4096-битные RSA-ключи OpenSSL с pyCrypto. Существует три ключа, участвующие в процессе обновления (корневой, целевой и временной метки).
-
-* Корневой ключ используется для подтверждения остальных ключей, которые живут в автономном хранилище и используются только один раз в год, чтобы обновить сертификацию или в случае ротации другого ключа.
-* Целевой ключ используется для подписи всех обновлений. Этот ключ находится в руках менеджера версий и используются для каждой версии приложения.
-* Ключ временной метки используется для подписи временной метки файла каждый день, этот файл используется клиентом, чтобы предотвратить противника от воспроизведения устаревших обновлений. Этот ключ живет онлайн на серверах платформы.
-
h2. Разное
h3. OpenSSH
По умолчанию, все серверы используют RSA-ключи хостов вместо ECDSA. Если у хоста ECDSA-ключ, платформа предложит системному администратору перейти на RSA. В будущем, когда Curve255219 будет лучше поддерживаться, платформа будем поощрять переход на 25519.
-
-h3. DNSSec
-
-Будет написано.
-
-h3. StartTLS + DANE
-
-Будет написано. \ No newline at end of file