# Qubes OS

Qubes OS é um sistema operacional com foco em segurança para desktops com o objetivo de prover segurança através de isolamento. O motor de virtualização é o Xen, e os ambientes isolados criados pelo usuário podem ser baseados no Fedora, Debian, Whonix e Windows. Domínios baseados em BSDs podem ser criados através de templates manuais.
Em 16 de Fevereiro de 2016, o Qubes foi selecionado como finalista do Access Innovation Prize for Endpoint Security Soltion.
Em 4 de Fevereiro de 2022, a versão estável 4.1.0 foi lançada com várias melhorias. A 27 de Junho de 2022 os templates foram atualizados para o Fedora 36, a mais recente versão à data.

## Objetivos de Segurança

O Qubes implementa a abordagem de segurança através de isolamento. A presunção é que não existe um ambiente de desktop perfeito e livre de falhas. Tal ambiente conta com milhões de linhas de código e bilhões de interações com o hardware. Um bug crítico é suficiente para que alguma destas interações haja como um software malicioso e tome controle da máquina.
Para garantir a segurança no desktop, um usuário do Qubes deve sempre tomar o cuidado de isolar suas operações em diversos ambientes, de formas que se um deles fica comprometido o software malicioso acessará apenas as informações dentro de tal ambiente.
No Qubes, o isolamento é feito em duas dimensões: controladores de hardware são isolados em domínios funcionais(GUI, redes, armazenamento), e então a vida digital do usuário é gerenciada através de domínios a partir de uma escala de confiança. Por exemplo: domínio de trabalho(maior confiança), domínio de compras online, domínio randômico(menor confiança). Cada domínio é executado em uma máquina virtual distinta.
O Qubes não é um sistema multiusuário.

## Resumo da Arquitetura do Sistema
### Xen e domínio administrativo (Dom0)

O virtualizador provê o isolamento entre as diferentes máquinas virtuais. O domínio administrativo, também chamado de Dom0, tem acesso direto ao hardware. O Dom0 hospeda a interface gráfica, controle a dispositivos gráficos e controle de dispositivos de entrada como mouse e teclado. O domínio de GUI roda o X server, que exibe o ambiente de área de trabalho e o gerenciador de janelas, permitindo que as aplicações sejam iniciadas e paradas bem como as suas janelas manipuladas.
A integração entre as diferentes máquinas virtuais é feita através do Application Viewer, que gera a ilusão de que as aplicações estão sendo executadas nativamente no ambiente de trabalho, quando na verdade estão hospedadas(e isoladas) em diferentes máquinas virtuais. O Quebes integra tudo isto em um ambiente de área de trabalho em comum.
Por conta da fragilidade do Dom0 ele é isolado da rede. Possui uma interface de comunicação bastante reduzida que serve apenas para se comunicar minimamente com outros domínios, minimizando a possibilidade de um ataque que tenha origem em uma máquina virtual infectar toda a infraestrutura de virtualização.

### Domínio de Redes

O mecanismo de rede é o mais exposto a incidentes de segurança. Por conta disto, ele é isolado em uma máquina virtual não privilegiada denominada Domínio de Rede(Network Domain).
Uma máquina virtual adicional de proxy é usada para configurações de rede mais avançadas.

### Domínio de Armazenamento

Espaço em disco é economizado por conta das máquinas virtuais compartilharem o mesmo sistema de arquivos básico em modo somente-leitura. Armazenamento adicional é alocado para o diretório de usuários e configurações específicas da máquina virtual. Isto possibilita que os softwares sejam atualizados e instalados de forma uniforme entre as VMs. Obviamente, alguns softwares podem ser instalados especificamente em uma máquina virtual.
Criptografia é usada na proteção dos sistemas de arquivos. Desta forma o domínio de armazenamento não pode ler dados confidenciais destinados a outros domínios.

### Máquinas Virtuais de Aplicação (AppVM)

AppVMs são máquinas virtuais utilizadas para hospedar aplicações como um navegador, cliente de email ou editor de texto. Por questões de segurança, estas aplicações podem ser agrupadas em diferentes domínios como "pessoal", "trabalho", "compras", "banco", etc. Os domínios de segurança são implementados como máquinas virtuais separadas, sendo isoladas entre si como se estivessem sendo executadas em computadores distintos.
Alguns documentos ou aplicações podem rodar em uma máquina virtual descartável(disposable VM) como uma ação no gerenciador de arquivos. Este mecanismo emprega idéias de sandbox: após visualizar o documento ou executar o aplicativo, toda a máquina virtual descartável é destruída.
Cada domínio de segurança é marcado por uma cor, e cada janela tem sua decoração(bordas) marcada pela cor do domínio a que pertence. Desta forma, pode-se distinguir visivelmente de uma forma bastante clara a qual domínio a janela pertence.