Re: [qubes-users] Split dm-crypt 0.1.0

2016-09-15 Thread Andrew David Wong
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On 2016-09-08 11:11, Rusty Bird wrote:
> Hi,
> 
> I've worked on this mostly out of stubbornness :), but maybe it is
> useful for someone here. README.md pasted below.
> 
> https://github.com/rustybird/qubes-split-dm-crypt
> 
> Rusty
> 

Added a link to the Qubes doc index so that people can find
this in the future:

https://github.com/QubesOS/qubes-doc/commit/1448c1e7ab8ba17c7a9b9fdd53fcdefb0f1b329b

- -- 
Andrew David Wong (Axon)
Community Manager, Qubes OS
https://www.qubes-os.org
-BEGIN PGP SIGNATURE-

iQIcBAEBCgAGBQJX2mG9AAoJENtN07w5UDAwJl4P/1L/J6UKQyyJZOgMPMafMuV0
iybOD9yYjJepUSpRJKxKDHnow6ETeBqgz8o0TdHIgfoTESjl12cPYI7mstVZo7oD
W33fq6RzzGgjLtCuejCr92KYJwJiDffoGSFAIeZsAfKEqTbXKoDJ+pjO31ScAqu9
cEspODkJp6IAcYvEe5fF2s8W+3WyE/p6Z+qXcRuFtu5/Wg8NIREbPlU0Z9CZHND5
TwUJb3gqvX3DajIpZm/JwBtKbst7M3ky3TVWdLLZZw9oUvAluqOnlHC4SjO00z1T
p2/KawXs+9BwHz5FTwJ1LLKcKu/0c+V23yrMU6hwwDFBbdknoJtQJBkqiS6fT/2d
Pm0F1eLra/nlI2mb0z6H1wGY71I6kWMNeKoKcNYdosGmjBIAFcsn8MrmIWF9/GY9
NLxjNi2qI2f0VE6Z+s5bnWK3FeoViCHRufMjeFpFcy2hb7lUT+wvrkhyV5Amti/S
GBif4jBAihiUT/EwZnD9AQd3s2MQLhmwjG+SwZENpJ2Y2AAyIgMEBcSz3Vtz72Yk
FvdcH8EfgF7RclbgvEmL5PX2MhmIZc8ifWUIeXkprPVCFFU4zCcQsZd5UVkHAfTS
RxaqKJXqFvu0VPr+evuCfQqcezvWlG6bQLFubZukWz0B8zj+XwV8RFvu+BWsyJrP
yJXB8cuCfMFJXJTsGtFy
=xPVu
-END PGP SIGNATURE-

-- 
You received this message because you are subscribed to the Google Groups 
"qubes-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-users+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-users@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-users/007965ca-6563-ce81-5210-c745a396fb3a%40qubes-os.org.
For more options, visit https://groups.google.com/d/optout.


Re: [qubes-users] Split dm-crypt 0.1.0

2016-09-10 Thread Rusty Bird
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

> https://github.com/rustybird/qubes-split-dm-crypt

If anyone has been using this already, please update to version 0.1.1
which contains a security bugfix.

Rusty
-BEGIN PGP SIGNATURE-

iQJ8BAEBCgBmBQJX08IXXxSAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ4NEI1OUJDRkM2MkIxMjlGRTFCMDZEMDQ0
NjlENzhGNDdBQUYyQURGAAoJEEadePR6ryrfiXkP/296qW+raC+ku/86uRh4NIgx
DFufItk6a7LE1uEHjSKWh2liM5oFu1kimOkYaewl9A7ZbDgVCJ767BRLvbPpvaER
uNW/A9qnTojQ1wGIhqSUye0iChAfDHU8TfdkBofMP6bMIcNSZg+gdqJS1EpphSww
uoyHk+flzvETf8WjbPiTJn5mUFITQw7U+Dpv/tbUCdmI2V1051AT3RpDShzTtfgT
5M94BNNT+BW4rZnCvPSWp2AgGJBXXwacQvizPRvwgqBfgOm/KNbHt8VSbcco/5tV
uxM15x8fH66UpI8LxSXEkCgfpUoidBBcQKzWylzH3ggRQP9L/09Ph+iOCpWzU3SF
yOuPVUaPpzRQbq7Rr1q5lZNFDVHTKew6PVZR5yYUm2eyJQerPYPU4InoTjQAM3te
UkUjEWkdpCffACKL3DUpSavErkJefwadXIBPHssluTOwa4rGPm8kgJhm1rdZm3xj
dTE4v25aR414Ty/VXOFzjwAHpdGbZvq3dbgQs0+GyCqjE8JSJps42a2XuUsGDypZ
hsYrUFDiGBEmiIucgHed2gsEIahxM7p6lz3CTmghFD5skp+ngmnuNjEWFiuFD1UB
lBAxmdljABI+VsrW7EGFJ3CuJv83pQOMy0HqwVeFehyeyWtkdxbcKqjbO676bKUG
DZ1QuKeJzXatRJoX1ZPd
=Fe+2
-END PGP SIGNATURE-

-- 
You received this message because you are subscribed to the Google Groups 
"qubes-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-users+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-users@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-users/bdb4d6e6-7ce6-3cea-4dea-aa8479f63bf6%40openmailbox.org.
For more options, visit https://groups.google.com/d/optout.


Re: [qubes-users] Split dm-crypt 0.1.0

2016-09-10 Thread Rusty Bird
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

Hi Andrew!

>> https://github.com/rustybird/qubes-split-dm-crypt

> This looks great, Rusty! Thank you!

I actually took the modern luksFormat parameters from your writeup at
https://www.qubes-os.org/doc/encryption-config/. The 5 sec iteration
time hits a nice balance.

Rusty
-BEGIN PGP SIGNATURE-

iQJ8BAEBCgBmBQJX08FSXxSAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ4NEI1OUJDRkM2MkIxMjlGRTFCMDZEMDQ0
NjlENzhGNDdBQUYyQURGAAoJEEadePR6ryrfQZ4P+wY89oHl3mUBpv3JJHJyg+aU
+XqBn37f3uMReCmXZUhoRZGkjFYV9HBStrKPYDT2Og3Tc56Lw6J/48m4Yb8rXMnh
6+i1HDYmqBA9CBGTCvFFv/+S85vWF9RGqTWYr8aqkX8YqxmbEFp0RU1qqXTK2Dm1
sO9YmWgMp+4R/qagdJ2OCG5Rrx/cAJEu53e51Y6YcAaJkvsY85z8XNYdo7gSOGTx
WvDwRyAZT9GGxseeLzxu3S0cVyq+uWww6wtwNPnYl5DLFVeum3RlNDYvJDXm/+4X
fTUvRJGLmMWHcs0/xQqgLjeIhFaAi/kNRI3OLi/jRx2bSQk4b6Pv9tEaVupmIwFF
lGSv+IjQjLrGOvLxizV3ZLZQvLG/ZDX18BjCbZNZCHL6SqY8Yv2kOZMPNPa5BL+O
/GEkc+ij89NeQPvr0Q42K++ypvO2XllxKA+U8YBAVbXMbDD+2SZF2H+eJeVzBAG0
Bs4ewKONNqTT3nGocX915tlj7+XW61OMQa0riiIY+5nt2/WrIWcUkIkLXzC7doPc
1Fkxc4170vgScYbJMnIMxIhR1DRvpLSuYNlscKUJyhFLh+sAkyXsTE3X+h/m+3pI
hqdoMrJb+Jiz6ZdgE1zRb4ru/BIdUt8+V6AzcyWow/VB/hqGT6JSHBVtlJGqgd83
Aj6CMermoytakjKEMwaD
=LfiK
-END PGP SIGNATURE-

-- 
You received this message because you are subscribed to the Google Groups 
"qubes-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-users+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-users@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-users/716cac4a-1de8-8ef8-97e0-d07d72b88663%40openmailbox.org.
For more options, visit https://groups.google.com/d/optout.


Re: [qubes-users] Split dm-crypt 0.1.0

2016-09-09 Thread Andrew David Wong
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

On 2016-09-08 11:11, Rusty Bird wrote:
> Hi,
> 
> I've worked on this mostly out of stubbornness :), but maybe it is
> useful for someone here. README.md pasted below.
> 
> https://github.com/rustybird/qubes-split-dm-crypt
> 
> Rusty
> 
> 
> 
> # _Split dm-crypt_ for Qubes R3.2-rc3 and later
> 
> **Isolates device-mapper based secondary storage encryption (i.e. not
> the root filesystem) and LUKS header processing to DisposableVMs.**
> 
> Instead of directly attaching an encrypted LUKS partition from a source
> VM such as sys-usb to a destination VM and decrypting it there, it works
> like this:
> 
> 1. The encrypted partition is attached from the source VM to a
>(long-lived) offline _device DisposableVM_ configured not to parse
>its content in any way: The kernel partition scanners, udev probes,
>and UDisks handling are disabled.
> 
> 2. From there, the LUKS header is sent to a (short-lived) offline
>_header DisposableVM_ prompting for the password, and the encryption
>key is sent back to the device DisposableVM, which validates that it
>received an AES-XTS key and creates the dm-crypt mapping.
> 
> 3. Finally, the decrypted partition is attached from the device
>DisposableVM to the destination VM.
> 
> **If the destination VM is compromised, it does not know the password or
> encryption key. It also cannot easily exfiltrate decrypted data to the
> disk in a form that would allow an attacker who seizes the disk contents
> later to read it.** (But see below for caveats.)
> 
> 
> ## Usage
> 
> The `qvm-block-split` attach/detach commands accept a subset of the
> familiar `qvm-block` syntax, and some other commands are included:
> 
> - Fully overwrite a device with random data
> 
> - Overwrite just the LUKS header with random data
> 
> - Format a new LUKS device with modern crypto parameters: AES-XTS with
>   256+256 (instead of 128+128) bit keys, SHA512 (instead of SHA1) PBKDF2
>   key derivation with 5 (instead of 0.1) seconds iteration time
> 
> When attaching, the destination VM argument can be omitted, in which
> case the decrypted disk will be attached to yet another offline
> DisposableVM.
> 
> ```
> qvm-block-split --attach|-a [--ro] [] :
> --detach|-d   :
> 
> --overwrite-everything=random :
> --overwrite-header=random :
> --overwrite-header=format :
> --overwrite-header=shell  :
> --modify-header=shell :
> ```
> 
> 
> ## Remaining attacks
> 
> - After detaching, the password and/or key will linger in more RAM
>   locations than without _Split dm-crypt_. Until there is a way to wipe
>   the DisposableVMs' memory, and `qvm-block-split` is modified not to
>   pass the key through dom0's memory, **power off your computer when
>   memory forensics is a concern.**
> 
> - If both the destination VM and the source VM/disk are compromised,
>   they could establish a covert channel using e.g. read and write access
>   patterns, slowly saving some amount of decrypted data to the disk.
> 
> - If the source VM/disk is compromised and successfully exploits the
>   header DisposableVM using a malicious LUKS header, a known AES-XTS key
>   could be sent to the device DisposableVM and used to present malicious
>   device content to the destination VM to potentially exploit it as
>   well. **Be suspicious if you do not see the expected filesystem data
>   in the destination VM. Or simply use a DisposableVM as the destination
>   VM.**
> 
> - **Don't forget to overwrite your disk with random data before creating
>   a LUKS volume on it.** Otherwise, a compromised destination VM could
>   trivially save decrypted data to the disk in its free space, by
>   encoding each bit as an unmodified (still empty or in some other way
>   nonrandom-looking) or modified (random-looking) 128 bit AES block.
> 
> 
> ## Installation
> 
> 1. Copy `vm/` to the DisposableVM template, inspect the code, and `sudo
>make install` there; also install the `pv` (Pipe Viewer) package to
>be able to run the `--overwrite-everything=random` command. Shut down
>the template when finished.
> 
> 2. Copy `dom0/bin/qvm-block-split` to dom0, e.g. into `~/bin/`, inspect
>the code extra carefully, and `chmod +x` the script.
> 
> 
> ## Safety warning
> 
> The code's error handling is strict, and I haven't experienced any data
> loss during development. Nevertheless, this is an early release. Please
> **ensure you have a backup of all drives that are connected to your
> computer.**
> 

This looks great, Rusty! Thank you!

- -- 
Andrew David Wong (Axon)
Community Manager, Qubes OS
https://www.qubes-os.org
-BEGIN PGP SIGNATURE-

iQIcBAEBCgAGBQJX01KbAAoJENtN07w5UDAw2B8P/A/WScgz5BbqsMQkThqHCgR2
+wTYX2KQa3Gif32dfazQ4w9Wc1y1d7Djd5jkPbWULx6Jc0N/IOQZPVjYOC350QdK
W9W+DNY68HH1KzE2YVzGUvN+I48RvTNMZk8xSQq9pYlxnnx8w+cHH3/yIgvmb7ls
7bKdbSVPLDn

[qubes-users] Split dm-crypt 0.1.0

2016-09-08 Thread Rusty Bird
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

Hi,

I've worked on this mostly out of stubbornness :), but maybe it is
useful for someone here. README.md pasted below.

https://github.com/rustybird/qubes-split-dm-crypt

Rusty



# _Split dm-crypt_ for Qubes R3.2-rc3 and later

**Isolates device-mapper based secondary storage encryption (i.e. not
the root filesystem) and LUKS header processing to DisposableVMs.**

Instead of directly attaching an encrypted LUKS partition from a source
VM such as sys-usb to a destination VM and decrypting it there, it works
like this:

1. The encrypted partition is attached from the source VM to a
   (long-lived) offline _device DisposableVM_ configured not to parse
   its content in any way: The kernel partition scanners, udev probes,
   and UDisks handling are disabled.

2. From there, the LUKS header is sent to a (short-lived) offline
   _header DisposableVM_ prompting for the password, and the encryption
   key is sent back to the device DisposableVM, which validates that it
   received an AES-XTS key and creates the dm-crypt mapping.

3. Finally, the decrypted partition is attached from the device
   DisposableVM to the destination VM.

**If the destination VM is compromised, it does not know the password or
encryption key. It also cannot easily exfiltrate decrypted data to the
disk in a form that would allow an attacker who seizes the disk contents
later to read it.** (But see below for caveats.)


## Usage

The `qvm-block-split` attach/detach commands accept a subset of the
familiar `qvm-block` syntax, and some other commands are included:

- - Fully overwrite a device with random data

- - Overwrite just the LUKS header with random data

- - Format a new LUKS device with modern crypto parameters: AES-XTS with
  256+256 (instead of 128+128) bit keys, SHA512 (instead of SHA1) PBKDF2
  key derivation with 5 (instead of 0.1) seconds iteration time

When attaching, the destination VM argument can be omitted, in which
case the decrypted disk will be attached to yet another offline
DisposableVM.

```
qvm-block-split --attach|-a [--ro] [] :
--detach|-d   :

--overwrite-everything=random :
--overwrite-header=random :
--overwrite-header=format :
--overwrite-header=shell  :
--modify-header=shell :
```


## Remaining attacks

- - After detaching, the password and/or key will linger in more RAM
  locations than without _Split dm-crypt_. Until there is a way to wipe
  the DisposableVMs' memory, and `qvm-block-split` is modified not to
  pass the key through dom0's memory, **power off your computer when
  memory forensics is a concern.**

- - If both the destination VM and the source VM/disk are compromised,
  they could establish a covert channel using e.g. read and write access
  patterns, slowly saving some amount of decrypted data to the disk.

- - If the source VM/disk is compromised and successfully exploits the
  header DisposableVM using a malicious LUKS header, a known AES-XTS key
  could be sent to the device DisposableVM and used to present malicious
  device content to the destination VM to potentially exploit it as
  well. **Be suspicious if you do not see the expected filesystem data
  in the destination VM. Or simply use a DisposableVM as the destination
  VM.**

- - **Don't forget to overwrite your disk with random data before creating
  a LUKS volume on it.** Otherwise, a compromised destination VM could
  trivially save decrypted data to the disk in its free space, by
  encoding each bit as an unmodified (still empty or in some other way
  nonrandom-looking) or modified (random-looking) 128 bit AES block.


## Installation

1. Copy `vm/` to the DisposableVM template, inspect the code, and `sudo
   make install` there; also install the `pv` (Pipe Viewer) package to
   be able to run the `--overwrite-everything=random` command. Shut down
   the template when finished.

2. Copy `dom0/bin/qvm-block-split` to dom0, e.g. into `~/bin/`, inspect
   the code extra carefully, and `chmod +x` the script.


## Safety warning

The code's error handling is strict, and I haven't experienced any data
loss during development. Nevertheless, this is an early release. Please
**ensure you have a backup of all drives that are connected to your
computer.**
-BEGIN PGP SIGNATURE-

iQJ8BAEBCgBmBQJX0anuXxSAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ4NEI1OUJDRkM2MkIxMjlGRTFCMDZEMDQ0
NjlENzhGNDdBQUYyQURGAAoJEEadePR6ryrfRkkQAI0BIUItYTgf+BNbgAyaykr1
3P+47IUZi0VaLgR0B6+7rRx/9KFkil1dUViz46PvkgD79S71Gl/ThIDSDayBCYmF
Jpk0dwiscKXDZq6EfWVD3Bg0rYdXlmTeSEJn7jnNA35Vm4W9eS+tTdxNnsWhDpVb
97LD/muCgQHYqV8LcSLFcf4wxHMHC8zTh/ytC4ZCkgB+jNHJeJI6xMN8BnGemrMf
3sms1aj72pvg1rcRwlowWo9ib0Yl8Clav0s4308VuaOo2cPFknoDxIpnNloFMd15
RkXVPktoExSICFZKpuIdruEtcGswlxGlcqt3vGiUl1AkhCuJa8OARbfPlquupU+5
iDAWV3AcsAKR8xYL2eHSxIO1HsTU1PapsgsUSEEtviPe6x9wdWBijFk697Z+