Qubes OS: Masaryk University
Qubes OS: Masaryk University
Faculty of Informatics
Qubes OS
Bachelor’s Thesis
Martin Páleník
Qubes OS
Bachelor’s Thesis
Martin Páleník
Martin Páleník
iii
Abstract
iv
Keywords
Qubes, operating system, os, security, virtualization, Xen, hypervisor,
container, sandbox, isolation
v
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Container-based virtualization . . . . . . . . . . . . . . . . 4
2.2 Hypervisor . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Type 1 . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2 Type 2 . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Hypervisor-based virtualization . . . . . . . . . . . . . . . 6
2.3.1 Paravirtualization . . . . . . . . . . . . . . . . . . 6
2.4 Intel® VT-d . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Qubes OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Domain . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Disposable VMs . . . . . . . . . . . . . . . . . . . 13
4 Performance profiling . . . . . . . . . . . . . . . . . . . . . . 17
4.1 Methodology . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1 Desktop graphics . . . . . . . . . . . . . . . . . . 20
4.1.2 Specialized benchmarks . . . . . . . . . . . . . . 21
4.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.1 Desktop graphics . . . . . . . . . . . . . . . . . . 23
4.2.2 Specialized benchmarks . . . . . . . . . . . . . . 25
5 Usability evaluation . . . . . . . . . . . . . . . . . . . . . . . 27
5.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Dual-boot with Fedora 23 . . . . . . . . . . . . . . . . . . . 28
5.3 Copying files from external devices . . . . . . . . . . . . . . 28
6 Conclusion and further work . . . . . . . . . . . . . . . . . . 31
vii
List of Tables
4.1 Tested combinations of OS, kernels and SELinux 19
5.1 Disk layout for Qubes OS 27
ix
List of Figures
2.1 Comparison of virtual machines and containers [10] 4
2.2 Hypervisor types [14] 6
2.3 Intel® VT-d diagram 8
3.1 Qubes architecture overview [2, p.8] 12
3.2 Secure file system sharing among many AppVMs [2,
p.10] 13
3.3 GUI subsystem design overview [2, p.25] 14
3.4 Networking overview [2, p.30] 14
4.1 Test distribution inside the chosen Suites 18
4.2 Graphics tests inside the SELinux Sandbox -X
environment 21
4.3 Hw/sw configuration for graphics benchmarks 22
4.4 Hw/sw configuration for specialized benchmarks 23
4.5 Comparison of results from desktop graphics tests 23
4.6 Comparison of results from the selected specialized
tests 26
5.1 Installing GRUB2 to enable dual-boot 28
5.2 Transferring a directory from USB3.0 HDD into an
AppVM 29
xi
1 Introduction
This thesis is going to examine a novel security-oriented desktop
operating system called Qubes OS, with an emphasis on experimental
performance comparison against similar approaches to application
confinement, namely containerization and mandatory access control.
The reason for such a comparison has been to justify the purpose
and help to determine the extent of performance deterioration against
the more established, but often more lightweight competition. The
results should help the reader to understand the potential benefits
and drawbacks associated with employing a secure operating system
based on paravirtualization.
The containerization approach is represented by Docker, confined
using SELinux on the referential configuration, and the SELinux
Sandbox -X, tested on the same configuration. The referential
configuration is represented by Fedora 23 x86_64 Workstation running
on the base hardware.
The security of containerization technologies running on a Linux
operating systems is mainly based on the assumption of uncompro-
mised kernel, which becomes the single point of failure. Provided
there is an exploitable vulnerability inside the kernel, the whole sys-
tem might be compromised using the suitable exploit. Monolithic
kernels in contemporary operating systems might therefore not be
able to provide sufficient isolation, to not only isolate the host operat-
ing system, but also the confidential data of the running applications.
The reason for the development of Qubes OS has been the per-
ceived unsustainability of the current security mechanisms, expressed
by its main developers, Joanna Rutkowska, Marek Marczykowski-
Górecki and Rafal Wojtczuk. They do not consider the so called Secu-
rity by correctness [1] to be a feasible method to guarantee a reasonable
level of security in the contemporary operating systems and propose
a novel approach named Security by isolation.
Security by correctness, characterized by fixing of the known
security vulnerabilities, is considered to be a reactive approach, which
is often ineffective against the unknown vulnerabilities. Moreover, the
less widespread vulnerabilities are frequently ignored, which makes
them susceptible to 0-day exploits.
1
1. Introduction
2
2 Virtualization
Multiple definitions of the term virtualization are provided in [3, p. 3].
The following definition [4] has been chosen for the purposes of this
thesis.
Definition 1. Virtualization – is a technology that combines or divides
computing resources to present one or many operating environments using
methodologies like hardware and software partitioning or aggregation, partial
or complete machine simulation, emulation, time-sharing, and others.
The aspect of virtualization that is relevant to operating system
security is emphasized by defining the virtualization [5] as a
“mechanism permitting a single physical computer to run sets of code
independently and in isolation from other sets.” The operating system
Qubes uses the virtualization as a “framework of [sic] dividing the
resources of a computer into multiple execution environments” [6].
Two fundamental approaches [7, pp. 1-2] are being employed in most
of the virtualization technologies.
Container-based virtualization 1 is a lightweight virtualization ap-
proach using the host kernel to run multiple virtual environ-
ments, referred to as containers
Hypervisor-based virtualization provides virtualization at the hard-
ware level. In contrast to container-based virtualization, a hy-
pervisor establishes complete virtual machines (VMs) on top of
the host operating system.2 Each virtual machine comprises of
not only an application and its dependencies, but also an entire
guest OS along with a separate kernel
The hypervisor-based virtualization approach can be implemented
using any of the following techniques.
1. Paravirtualization (PV)
2. Full Virtualization
1. also called OS-level virtualization [8, p. 4][9], or OS virtualization [8, p. 4], although
this terminology is often misused to refer to some mandatory access control
mechanisms, such as SELinux
2. in case of type 1 hypervisor, the VMs are established on top of the hypervisor
itself
3
2. Virtualization
2.2 Hypervisor
The hypervisor-based virtualization is usually implemented as a “layer
of software that provides the illusion of a real machine to multiple
instances of virtual machines.” [6] This layer is reffered to as the
hypervisor, or virtual machine monitor (VMM).
Definition 2. Hypervisor – the software, firmware or hardware that
implements the virtualization and enforces the isolation of virtual machines.
A more elaborate definition is provided in [11].
Definition 3. A virtual machine monitor (VMM) – software for a computer
system that creates efficient, isolated programming environments that are
4
2. Virtualization
“duplicates” which provide users with the appearance of direct access to the real
machine environment. These duplicates are referred to as virtual machines.
A virtual machine is the environment created by the virtual
machine monitor.
Definition 4. Virtual machine (VM) – is a hardware-software duplicate of
a real existing computer system in which a statistically dominant subset of
the virtual processor’s instructions execute on the host processor in native
mode. [12]
The virtual machine manager has multiple characteristics:
• Provides an environment for programs, which is “essentially
identical” with the original machine [13, p. 413],
• programs run in this environment show at worst only minor
decreases in speed [13, p. 413],
• it is in complete control of system resources3 [13, p. 413],
• enables concurrent execution of different operating systems on
the same hardware [11, p. 2],
• enforces isolation of untrusted applications [11, p. 2], or trusted
applications of a dubious (security-wise) quality,
• allows to execute different versions of operating system applica-
tions [11, p. 2],
• can program the software for scalable computers [11, p. 2].
There are multiple types of hypervisors based on their level of
control over the system resources.
2.2.1 Type 1
Definition 5. Type 1 (native, bare metal or bare-metal) – runs directly on
the host’s hardware to control the hardware and to manage guest operating
systems. (see Figure 2.2)
The guest operating systems run on the level above the VMM.
Examples of type 1 hypervisors are Xen, Citrix XenServer, VMware
vSphere and Microsoft Hyper-V.
5
2. Virtualization
2.2.2 Type 2
Definition 6. Type 2 (hosted) – runs as an application on a host operating
system and relies on the host OS for memory management, processor
scheduling, resource allocation, and hardware drivers. [11] (see Figure 2.2)
Only the host operating system has direct access to the underlying
hardware and is responsible for managing basic operating system
services. Examples are VMware Workstation, VirtualBox and KVM.
6
2. Virtualization
7
2. Virtualization
8
3 Qubes OS
The authors of Qubes OS believe [17] there is a considerably better
isolation between virtual machines than between processes in a
monolithic kernels of mainstream desktop operating systems. This is
a result of substantially simpler interface between a virtual machine
and hypervisor [17]. The hypervisor itself can be simpler as it does
not provide many services. Modern computers also provide hardware
virtualization support (VT-x, VT-d or Intel TXT), which allows creation
of simplified hypervisor code and robust system configurations using
driver domains, special hardware-isolated containers for hosting a
code that is prone to compromise.
The purpose of Qubes OS is not to be a proof-of-concept operating
system, but rather to “be of interest to various organizations,
commercial and government, which care about data security and are
willing to invest some effort into configuring Qubes desktops.” [18]
The Qubes OS utilizes the existing open source components, mainly
the Xen hypervisor, K desktop environment (KDE) and Xfce desktop
environment. The virtualisation technology is used for two reasons
– security isolation properties and the ability to reuse the existing
software.
Each AppVM in Qubes operating system is identified with the
name and border color. When running some application within a
particular AppVM, the border of the application window contains the
name of the domain (it is running into) in brackets and the border has
the same color as is assigned to the particular domain. If another
application is being run inside the same domain, then its border
also has the same color. The application with particular color is not
isolated from another application with the same color. However, all
the application that run within a particular domain (marked with
certain color) are isolated from all application running in different
domain (marked with another color).
3.1 Definitions
The terminology used in this thesis follows that given in [19] and the
most essential terminology is defined in this chapter.
9
3. Qubes OS
Dom0 Domain Zero. Also known as the host domain, dom0 is the
initial domain started by the Xen hypervisor on boot. Dom0 runs
the Xen management toolstack and has special privileges relative
to other domains, such as direct access to most hardware.
10
3. Qubes OS
11
3. Qubes OS
3.2 Architecture
The Figure 3.1 shows the high level overview of the Qubes operating
system architecture.
3.2.1 Domain
Each application in Qubes OS is run in a domain. According to
[17], there are two types of domains. The first type of domain
is SystemVM12 . Network domain, storage domain and a special
privileged domain called Dom0 are all examples of SystemVM.
These domains provide system-wide services and are common to all
installations of Qubes OS. The network domain isolates the exposed
networking code into an unprivileged virtual machine [17, p. 7]. This
12
3. Qubes OS
Figure 3.2: Secure file system sharing among many AppVMs [2, p.10]
13
3. Qubes OS
14
3. Qubes OS
The use case for a disposable VM starts, when a user receives a PDF
e-mail attachment that might be compromised, while she is working
in the “working” domain. Opening such an untrusted attachment in
the working domain endangers the confidentiality of the system, as
it might expose sensitive information from this domain. Attacks on
integrity and availability are possible respectively. The matter of trust
to the sender does in fact provide only a false sense of security as the
e-mail itself might have been sent by a malware outside the will of the
sender [20].
The naive approach to overcome the problem would be to open the
PDF file in an unprivileged domain. This would ensure the potential
malware would not get access to any confidential data. However,
the e-mail attachment might not have been infected and it might
have contained some confidential data. It is eventually possible that
the unprivileged domain is compromised. That would mean that
confidential data would be available in a compromised environment,
which effectively makes them compromised [20].
The Qubes OS introduces disposable VM, a clean virtual machine,
that would be created in this scenario only for the purpose of viewing
the PDF file. After the PDF is viewed, the VM is discarded. If the PDF
was malicious it could only compromise the disposable VM, which
does not contain any sensitive data.
15
4 Performance profiling
Considering the fact there is an extra layer of indirection involved,
the potential performance deterioration must be determined and
assessed. The first part of this chapter therefore evaluates the extent
of performance deterioration on chosen desktop linux distributions.
The distributions have been chosen to minimize the impact of other
factors, which could unintentionally influence and bias the results.
4.1 Methodology
17
4. Performance profiling
Suite Tests
Disk Test Suite 13
Desktop Graphics 10
Memory Test Suite 3
Networking Test Suite 1
Kernel 27
Video Encoding 3
Linux System 27
Cryptography 4
CPU / Processor Suite 25
Summary 113
18
4. Performance profiling
kernel
Fedora Qubes
Fedora enforcing uncompiled
OS
Qubes — uncompiled
19
4. Performance profiling
For this reason, the Docker data volumes or Docker data volume
plugins should be used instead. This technique mounts an arbitrary
host directory into the given directory in the Docker container
directory tree. The data become persistent on the host machine and
become host-independent in case of using Docker Engine data volume
plugin, such as Flocker [26].
Such ancillary tests could provide interesting results to compare
in further studies. This would require an identification of the most
disk I/O intensive directories used by the given pts/disk Suite. One
approach would be to confine the application with SELinux to the
home directory (~), provided it is being run as a standard Linux user,
and evaluate the AVC denials, if any. The most probable candidates
for I/O intensive computations are /tmp, /var and /usr.
Each of the four specialized benchmarks has been running
for approximately 16 hours. Each of the three desktop graphics
benchmarks has been running for approximately 2 hours and their
detailed versions for circa 5 hours.
According to the dmesg logs, the CPU has been throttled multiple
times during the tests, because of the high core temperature levels,
which might have influenced the test results. However, the room
temperature (25 ∘C) and the cooling mechanisms have been identical
in all of the tests, therefore I found the conditions fair and do not
consider this a methodological flow.
Because the performance requirements for desktop computing
differ from that of usual server applications, the performance tests
had to be designed appropriately. Therefore, the results have been
separated into two subsections - desktop graphics benchmarks and
specialized benchmarks.
Working inside the graphical user interface is the most common use-
case for the ordinary desktop user, which is the target audience of
Qubes, according to its creator Joanna Rutkowska. Therefore, these
results should be emphasized in comparison with the more specialized
benchmarks, that are more relevant on server configuration.
The following is the list of the tested subjects.
20
4. Performance profiling
cointainerization
SELinux Sandbox -X running on Fedora 23 with SELinux
Enforcing
paravirtualization
performed inside an arbitrary Qubes OS domain (AppVM), that
is based on Fedora 23 template with SELinux uncompiled
native
native Fedora 23 with Qubes kernel with SELinux uncompiled
21
4. Performance profiling
Desktop graphics benchmarks
fedora selinux-sandbox-x qubes
Processor Intel Core i5-2450M @ 3.10GHz (4 Cores) Intel Core i5-2450M @ 2.49GHz (4 Cores)
Motherboard HP 167C
Chipset Intel 2nd Generation Core Family DRAM
Memory 2 x 4096 MB DDR3-1333MHz Samsung 8192MB 2048MB
Disk 500GB Samsung SSD 850 97GB
Graphics Intel Gen6 Mobile (1300MHz) LLVMpipe
Audio IDT 92HD87B1/3
Network Realtek RTL8111/8168/8411 + Qualcomm Atheros AR9285 Wireless
OS Fedora 23
Kernel 4.4.8-300.fc23.x86_64 (x86_64) 4.1.13-9.pvops.qubes.x86_64 (x86_64)
Desktop GNOME Shell 3.18.5
Display Server X Server 1.18.3 X Server 1.18.3
OpenGL 3.3 Mesa 11.1.0 (git-525f3c2) 2.1 Mesa 11.1.0 (git-525f3c2) Gallium 0.4
File-System btrfs ext4
Screen Resolution 1600x900 1000x700 1600x900
Compiler GCC 5.3.1 20160406
System Layer Xen 4.6.0 Hypervisor
Compiler Details
- --build=x86_64-redhat-linux --disable-libgcj --disable-libunwind-exceptions --enable-__cxa_atexit --enable-bootstrap --enable-checking=release
--enable-gnu-indirect-function --enable-gnu-unique-object --enable-initfini-array --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto
--enable-libmpx --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --mandir=/usr/share/man --with-arch_32=i686 --with-isl
--with-linker-hash-style=gnu --with-tune=generic
Processor Details
- fedora, selinux-sandbox-x: Scaling Governor: intel_pstate powersave
PHORONIX-TEST-SUITE.COM
containerization
Docker running on Fedora 23 with SELinux Enforcing
paravirtualization
Qubes OS AppVM based on Fedora 23 template with SELinux
uncompiled
Selinux Sandbox (and its -X version) have been omitted from the
specialized benchmarks. The reason is, that it is no different, from a
performance perspective, from a system running SELinux in Enforcing
mode. The only difference between SELinux and SELinux Sandbox is
in the semantics – the SELinux Sandbox has been designed to confine
arbitrary, untrustworthy user-space applications, while SELinux itself
usually confines known system applications.
The detailed hardware/software configuration used for the
speacialized benchmarks is depicted on Figure 4.4.
22
4. Performance profiling
Specialized benchmarks
fedora-w-qubes-kernel-wo-selinux fedora-w-fedora-kernel-w-selinux docker-on-fedora-multiple-suites qubes-w-qubes-kernel-wo-selinux
Processor Intel Core i5-2450M @ 3.10GHz (4 Cores) Intel Core i5-2450M @ 2.49GHz (4 Cores)
Motherboard HP 167C
Chipset Intel 2nd Generation Core Family DRAM
Memory 2 x 4096 MB DDR3-1333MHz Samsung 8192MB 1536MB
Disk 500GB Samsung SSD 850 97GB
Graphics Intel Gen6 Mobile (1300MHz) (1300MHz) LLVMpipe
Audio IDT 92HD87B1/3
Network Realtek RTL8111/8168/8411 + Qualcomm Atheros AR9285 Wireless
OS Fedora 23
Kernel 4.1.13-9.pvops.qubes.x86_64 (x86_64) 4.4.8-300.fc23.x86_64 (x86_64) 4.1.13-9.pvops.qubes.x86_64 (x86_64)
Desktop GNOME Shell 3.18.5
Display Server X Server 1.18.3 Wayland Weston + SurfaceFlinger + GNOME Shell Wayland X Server 1.18.3
OpenGL 3.3 Mesa 11.1.0 (git-525f3c2) 2.1 Mesa 11.1.0 (git-525f3c2) Gallium 0.4
File-System btrfs ext4
Screen Resolution 1600x900
Compiler GCC 5.3.1 20160406
System Layer Xen 4.6.0 Hypervisor
Compiler Details
- --build=x86_64-redhat-linux --disable-libgcj --disable-libunwind-exceptions --enable-__cxa_atexit --enable-bootstrap --enable-checking=release --enable-gnu-indirect-function --enable-gnu-unique-object --enable-initfini-array
--enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --enable-libmpx --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --mandir=/usr/share/man --with-arch_32=i686 --with-isl --with-linker-hash-style=gnu --with-tune=generic
Disk Details
- fedora-w-qubes-kernel-wo-selinux: CFQ / relatime,rw,space_cache,ssd
- fedora-w-fedora-kernel-w-selinux: CFQ / relatime,rw,seclabel,space_cache,ssd,subvol=/root00,subvolid=258
- docker-on-fedora-multiple-suites: CFQ / relatime,rw,seclabel,space_cache,ssd,subvol=/root00/var/lib/docker/btrfs/subvolumes/c3a628efe5164f953fc3b645b03c128a995206f4c0364772724b71c879414bd0,subvolid=453
- qubes-w-qubes-kernel-wo-selinux: CFQ / data=ordered,discard,relatime,rw
Processor Details
- fedora-w-qubes-kernel-wo-selinux, fedora-w-fedora-kernel-w-selinux, docker-on-fedora-multiple-suites: Scaling Governor: intel_pstate powersave
PHORONIX-TEST-SUITE.COM
4.2 Results
23
4. Performance profiling
24
4. Performance profiling
25
4. Performance profiling
Specialized benchmarks
fedora-w-qubes-kernel-wo-selinux fedora-w-fedora-kernel-w-selinux docker-on-fedora-multiple-suites qubes-w-qubes-kernel-wo-selinux
26
5 Usability evaluation
5.1 Installation
In spite of the announcement of UEFI support in Qubes OS R3.1,
the UEFI boot has not been possible on the tested machine. I have
examined the problem extensively with the developers and made
numerous attempts to correct the issue [37], [38], but the result was
that the problem was a vendor bug and the solution would require a
rebuild of the whole Qubes OS. This would however undermine the
purpose of the tests, which was to evaluate the latest stable version of
Qubes OS.
Nevertheless, I built the trunk (developement) version of Qubes
to see if the issue has been fixed in upstream, but the problem
persisted. Another solution I tried was to boot using The rEFInd Boot
Manager instead of GRUB2, but it has been met with the same problem.
Needless to say, the UEFI boot on my machine works without any
issue in case of using the Fedora 23 Workstation 64bit live USB.
Finally, a hard drive partition table must have been changed
manually inside the GNOME Partition Editor Live Image to the GUID
Partition Table (GPT) and at least one partition must have been created
in order to force Qubes OS to install on a GPT partition table instead
of the master boot record (MBR).
A biosboot partition is required in order to boot from a GPT drive
in legacy mode. Usually, the size of this partition is 1 MB, however,
the installation fails in case that less then 2 MB biosboot partition is
created.
The used partition layout is depicted on Table 5.1. Btrfs filesystem
has been used for the root partition and the encryption has been
disabled to comply with the other tested subjects in Chapter 4.
biosboot 2 MB
/boot 500 MB
swap 20 GB
/ 150 GB
27
5. Usability evaluation
After reboot, the GRUB2 menu should offer the user to boot both
of the operating systems.
28
5. Usability evaluation
The maximum speed during the transfer has been 25 MBps, which
concurs with the maximum data transfer on the same hardware
configuration [41] using the USB2.0 port instead of the USB3.0 port.
This could be explained by a missing USB3.0 support Qubes OS R3.1,
which has been confirmed by the developers. The average speed has
been oscillating between 15 MBps and 20 MBps.
29
6 Conclusion and further work
The results have generally concurred with the expected trend towards
performance degradation with increasing level of abstraction and
isolation, with a notable exception in the graphic performance results.
To summarize the desktop graphics results obtained in Sec-
tion 4.2.1, I would like to accent the significantly diminished per-
formance of SELinux Sandbox in graphics performance benchmarks.
The SELinux Sandbox -X performance degradation has been consider-
able, with 55.7 % in comparison with native Fedora. This is even more
accentuated in the second test [27]. The performance of Qubes OS has
been only moderately slower (34 %) than the SELinux Sandbox -X, but
considerably slower (63.2 %) to the native Fedora, although this has
not influenced the user experience significantly.
The specialized benchmark results, that are covered in detail in
Section 4.2.2, have indicated a significant decline in I/O performance.
Some test results have a 14.3 % decrease in I/O performance, compared
to the native Fedora. Another noteworthy result has been obtained by
benchmarking the Fedora distribution running on an identical kernel
to Qubes OS. The tests (pts/sqlite, pts/compilebench) has shown even
larger performance diminshment, which has been on average 44.68 %
and 50.31 % respectively.
These have unexpectedly shown SELinux Sandbox -X, the con-
tainerization technology for confining X applications, to be inferior
to the paravirtualized Qubes OS. This result has been supported em-
pirically and incurred a qualitative difference in user experience, ren-
dering some GUI applications unusable. For common applications,
such as the browser, the graphical performance of the applications
run inside the Qubes AppVM has outperformed the containeriza-
tion approach and, disregarding the longer start of the application
caused by virtual machine (domain) initialization, could be considered
comparable to the native execution.
The main bottleneck of the novel virtualization-based Qubes OS
was the I/O performance. The test results have consistently exhibited
diminishing performance in many areas related to disk storage, which
encouraged me to conduct an experiment with large file data transfer
from an external USB 3.0 data storage. It has been demonstrated
31
6. Conclusion and further work
that the data transfer has not only failed to reached the USB 3.0
theoretical or real-world throughput, but also barely reached the USB
2.0 maximum speeds, measured on the same machine with Ubuntu
15.10 operating system.
Although the Qubes OS is said to be dedicated to an average
computer user, it must be concluded that some common user
actions have demanded a qualified administrator intervention. An
example would be an external USB storage device, which is mounted
automatically after connection, and even though the integration with
the Nautilus file manager has been fully functional and the device
was detected and connected on demand inside the domain, provided
it has been assigned to the domain inside the Qubes VM manager
GUI, the attempt to transfer larger files lead to unresponsiveness of
the affected domain and demand its termination or restart. The file
transfer must have been completed inside the terminal, with manual
mounting of the device, which might be considered a nontrivial user
interaction.
Another sacrifice in user experience have been problems with
multimedia, namely the inability to watch online videos inside the
browser. Although the sound has been working, the position inside the
video could not have been controlled and the window could not have
been increased to full screen. This is the same problem I experienced
when using the SELinux Sandbox -X confined Firefox browser, which
has been running inside the Xephyr server. The problem persisted
even after a different browsers, Google Chrome and Chromium, have
been installed.
The problems might have been caused by incompatible hardware,
which is a common problem with Qubes OS. Nevertheless, although
some recommended technologies, like Intel VT-d or native UEFI
motherboard, have been absent from the tested system, the system
used the Intel graphics card with the open-source drivers. This is
the recommended graphic card and is supposed to be the most
thoroughly tested, as the competitive vendors fail to provide the
necessary cooperation with the open-source community.
Nevertheless, it must be concluded that the desktop environment
has been remarkably stable and I have suffered no data loss or integrity
corruption on the host hard drive during the evaluation. It has been
reasonably responsive, disregarding the longer time penalty when
32
6. Conclusion and further work
starting the domain. However, when the domain has been started, the
penalty became negligible.
I have made numerous proposal for further studies inside the
text, and I would like to make two more propositions, besides the
proposition to further evaluation and investigation into the test results,
which could not have been performed inside this thesis.
Firstly, the lack of the hardware support for Intel VT-d technology
has been repeatedly claimed, by numerous Qubes developers includ-
ing Joanna Rutkowska, to considerably reduce the security of the host
running Qubes OS, but no proof-of-concept has been yet presented.
The technology is also claimed to improve the performance and it
might be interesting to see how remarkably would this change the test
results, solve the existing issues, or improve the user experience.
Secondly, an interesting decision has been made by the Qubes
developers, to compile but not enable SELinux inside the application
domains. This decision is claimed to not influence the confidentiality
and integrity of the user data in any way. Even when SELinux is
Enforcing (in targeted mode), the unconfined_t subjects (usually
processes) are not subjected to SELinux policies. For a desktop
operating system for casual users, the majority of the applications
usually run in an unconfined_t domain, but server applications, such
as Apache, should be always confined for security purposes. How
could the Qubes domain benefit from turning on SELinux? How could
this influence the security of multiple applications run inside the same
domain, in case one application gets compromised? These questions
might be answered in subsequent articles.
33
Bibliography
[1] J. Rutkowska, The three approaches to computer security, Blogger,
2008. [Online]. Available: http://blog.invisiblethings.org/
2008/09/02/three-approaches-to-computer-security.html
(visited on 2016-05-19).
[2] J. Rutkowska and R. Wojtczuk, “Qubes os architecture,” Invisible
Things Lab Tech Rep, p. 54, 2010. [Online]. Available: https://www.
qubes- os.org/attachment/wiki/QubesArchitecture/arch-
spec-0.3.pdf (visited on 2016-05-19).
[3] R. Y. Ameen and A. Y. Hamo, “Survey of server virtualization,”
ArXiv preprint arXiv:1304.3557, 2013. [Online]. Available: http:
//arxiv.org/pdf/1304.3557v1 (visited on 2016-05-19).
[4] S. N. T.-c. Chiueh, “A survey on virtualization technologies,”
[Online]. Available: http : / / www . ecsl . cs . sunysb . edu / tr /
TR179.pdf (visited on 2016-05-19).
[5] J. White and A. Pilbeam, “A survey of virtualization technologies
with performance testing,” ArXiv preprint arXiv:1010.3233, 2010.
[Online]. Available: http : / / arxiv . org / pdf / 1010 . 3233v1
(visited on 2016-05-19).
[6] R. J. Andresen, “Virtual machine monitors,” CERN OpenLab
for Data grid application, 2004. [Online]. Available: https : / /
openlab-mu-internal.web.cern.ch/openlab-mu-internal/
03_Documents/3_Technical_Documents/Technical_Reports/
2004/vmm.pdf (visited on 2016-05-19).
[7] T. Bui, “Analysis of docker security,” ArXiv preprint
arXiv:1501.02967, 2015. [Online]. Available: http : / / arxiv .
org/pdf/1501.02967v1 (visited on 2016-05-19).
[8] C. Takemura and L. S. Crawford, The book of Xen: A practical guide
for the system administrator. No Starch Press, 2009. (visited on
2016-05-19).
[9] E. Reshetova, J. Karhunen, T. Nyman, and N. Asokan, “Security
of os-level virtualization technologies,” in Secure IT Systems,
Springer, 2014, pp. 77–93. [Online]. Available: http://arxiv.
org/pdf/1407.4245v1 (visited on 2016-05-19).
35
BIBLIOGRAPHY
36
BIBLIOGRAPHY
37
BIBLIOGRAPHY
38