Building secure applications with Qubes OS
Qubes OS Summit 2022
Michael Z, Senior Software Engineer
Overview
https://securedrop.org
Freedom of the Press Foundation
https://freedom.press
https://securedrop.org
About Freedom of the Press Foundation
https://securedrop.org
SecureDrop is an online whistleblowing platform, hosted on-premises by news organizations. It uses Tor onion services for source anonymity and GPG for encryption. The code is free software, licensed under the AGPL.
Some of the organizations that use SecureDrop
Current SecureDrop Team
Kevin
Engineering
Allie
Engineering
Cory
Engineering
Rowen
Engineering
Erik
Engineering
Harlo
Digital Security
Olivia
Digital Security
David
Digital Security
Nathan
Support Engineering
Kunal
Engineering
Gonzalo
Engineering
Alex
Security Engineering
Abigail
Support
Giulio
Security Engineering
Michael�Engineering
100% of time on SecureDrop
>= 25% of time on SecureDrop
>= 50% of time on SecureDrop
Tina
UX
https://securedrop.org
Quick intro: SecureDrop “Classic”
Application server: Runs two Python web applications (one for sources, one for journalists) exposed via Tor Onion Services.
Source Interface: Public v3 Onion URL, accessible by anyone in Tor Browser
Journalist Interface: Authenticated v3 Onion URL. Requires key-based auth to resolve. Only accessible to journalists.
What the source sees
What the journalist sees
Private key to decrypt documents only in the air-gap environment.
Downsides
https://securedrop.org
Introducing �SecureDrop Workstation
Classic air-gap architecture
New consolidated architecture
Demo Time!
What we’ve learned
(or: pain points)
Changes to dom0 are mandatory
https://securedrop.org
Changes to dom0 are mandatory
https://securedrop.org
Keeping Qubes OS fully updated is non-trivial
https://securedrop.org
Keeping Qubes OS fully updated is non-trivial
https://securedrop.org
Unusual UX challenges
https://securedrop.org
Unusual UX challenges
https://securedrop.org
SaltStack
https://securedrop.org
Possible futures
(or: things we’re still discussing)
Maintain our own RPC calls
https://securedrop.org
Maintain our own RPC calls
https://securedrop.org
Maintain our own RPC calls
https://securedrop.org
Pluggable architecture
https://securedrop.org
Pluggable architecture
https://securedrop.org
Pluggable architecture
https://securedrop.org
Pluggable architecture
https://securedrop.org
Pluggable architecture
⇒ RPCs!
⇒ other VMs!
⇒ dom0 based “registry”?
https://securedrop.org
Pluggable architecture
⇒ RPCs!
⇒ other VMs!
⇒ dom0 based “registry”?
https://securedrop.org
Pluggable architecture
⇒ RPCs!
⇒ other VMs!
⇒ dom0 based “registry”?
https://securedrop.org
Conclusions
Qubes OS already is a powerful platform for multi-VM applications
https://securedrop.org
Questions?
Get involved!
https://securedrop.org
Fini
https://securedrop.org
This layout is not for section titles but for hot takes! 🔥
Useful timeline graphic from Jen that is probably useful for most SD presentations
Jan 2019
Dec 2019
Aug 2019
Apr 2019
SecureDrop 0.11.1
released
January 24, 2019
Emergency release for upstream vulnerability in apt package manager
SecureDrop 0.12.0
released
February 26, 2019
First support for Ubuntu Xenial, updated kernel, workaround for upstream NoScript bug
SecureDrop 0.12.1
released
March 20, 2019
Improved upgrade experience for administrators moving to Ubuntu Xenial
SecureDrop 0.12.2
released
April 25, 2019
Provide broader hardware support for SecureDrop servers
SecureDrop 0.13.0
released
May 29, 2019
Remove support for Ubuntu Trusty (end of life)
SecureDrop 0.13.1
released
June 18, 2019
Bugfix release for Python 3 compatibility issue
SecureDrop 0.14.0
released
July 10, 2019
Mitigations for ongoing attacks against GnuPG keyserver ecosystem
SecureDrop 1.0.0
scheduled
September 17, 2019
V3 onion service support, migration of servers to Python 3 only
SecureDrop 1.2.0
scheduled
December 3, 2019
SecureDrop 1.1.0
released
October 21, 2019
Tails 4 support release
https://securedrop.org
This title heading can handle two lines, so feel free to make these longer
https://securedrop.org
🌏 SecureDrop is now in 20 languages! 🌏
https://securedrop.org
🌏 SecureDrop is now in 20 languages! 🌏
https://securedrop.org
Use this caption area to cite source of third-party content: https://www.cyberscoop.com/securedrop-dhs-vulnerability-disclosure-def-con/
https://securedrop.org
Think of this spot as an “alt text” field. Also, link link link: https://twitter.com/EricTrump/status/1170065011634581504
https://securedrop.org
This heading should be < one line, keep it short and let the image shine
https://securedrop.org
Think of this spot as an “alt text” field. Also, link link link: https://twitter.com/EricTrump/status/1170065011634581504
https://securedrop.org
“Sometimes it makes sense to use or remove existing titles/body fields for non-standard stuff like quotes. Do what you gotta do but make it fashion.”
- Ron Wyden, US Senator (OR)
Questions?
Get involved!
https://securedrop.org
SDW relies on:
https://securedrop.org
UX challenge focus: printing
https://securedrop.org
Allow printing from DispVMs
https://securedrop.org