Estudo Tecnologia da Informação na Universidade de Tampere. No meu tempo livre, contribuo para projetos de software livre e de código aberto, como EriX Project, AES, Cutie Shell Project e Droidian GNU/Linux. Também me interessam as línguas naturais e estudá-las.

Você pode me encontrar no GitHub, git.erikinkinen.fi e LinkedIn.

Ler mais

Do firmware ao kernel: o processo de boot explicado

Todo sistema operacional começa antes de ser realmente ele mesmo. A CPU inicia em um ambiente definido pela plataforma, o firmware inicializa hardware suficiente para carregar o primeiro executável, e esse executável prepara a máquina para o kernel. Só depois que essa cadeia faz seu trabalho o sistema operacional pode começar a aplicar suas próprias regras. É fácil tratar esse caminho inicial como mera infraestrutura, mas o processo de boot faz parte do modelo de segurança.
Ler mais →

Por que Rust para desenvolvimento de kernels

Sistemas operacionais costumam ser associados a C. Essa associação é compreensível. C é pequeno, previsível, próximo da máquina e historicamente dominante no trabalho de kernel. Ele dá ao programador acesso direto a memória, registradores, layout e convenções de chamada. Essas são exatamente as coisas de que um kernel precisa. Também são exatamente as coisas que tornam kernels difíceis de proteger. EriX é escrito principalmente em Rust porque o projeto é construído em torno de uma ideia central:
Ler mais →

A base de computação confiável: por que o tamanho importa

Discussões de segurança muitas vezes se concentram em bugs individuais: um estouro de buffer uma falha de deputado confuso um parser sem verificações suficientes um caminho de escalonamento de privilégios Esses bugs importam, mas são sintomas de uma pergunta mais profunda: Quanto código precisa estar correto para que o sistema continue seguro? Esse código é a base de computação confiável, normalmente abreviada como TCB. O tamanho e a forma da TCB determinam quanto código precisa ser confiado, auditado, testado e compreendido.
Ler mais →

Microkernels vs kernels monolíticos: revisitando os compromissos

Poucos debates de projeto de sistemas operacionais duraram tanto quanto o debate entre microkernels e kernels monolíticos. Na superfície, a distinção parece simples: kernels monolíticos mantêm a maior parte dos serviços do sistema operacional dentro do kernel microkernels movem a maior parte dos serviços para o espaço de usuário Na prática, o compromisso é mais sutil. A verdadeira pergunta não é se uma estrutura é universalmente mais rápida, mais limpa ou mais segura.
Ler mais →

Projetando um sistema operacional de sala limpa

A maioria dos sistemas operacionais modernos é construída sobre décadas de código acumulado, bibliotecas e dependências externas. Embora esse ecossistema permita desenvolvimento rápido, ele também introduz complexidade, pressupostos ocultos e riscos de segurança potencialmente não examinados. O EriX adota uma abordagem diferente. Ele é desenvolvido como um sistema operacional de sala limpa, o que significa que cada componente - do bootloader aos serviços em espaço de usuário - é implementado dentro do próprio projeto, sem incorporar código-fonte externo ou bibliotecas de terceiros.
Ler mais →

O que é um sistema operacional baseado em capacidades

Os sistemas operacionais modernos impõem limites de segurança entre processos, arquivos, dispositivos e usuários. No entanto, a forma como esses limites são implementados varia significativamente entre diferentes projetos de sistema. A maioria dos sistemas operacionais convencionais depende de controle de acesso baseado em identidade e de espaços de nomes globais. Sistemas operacionais baseados em capacidades adotam uma abordagem fundamentalmente diferente: representam a autoridade explicitamente e a tornam um conceito de primeira classe.
Ler mais →

Por que estou construindo um micronúcleo baseado em capacidades do zero

Os sistemas operacionais estão entre os programas mais complexos já construídos. Eles gerenciam memória, escalonam computação, controlam hardware e impõem os limites de segurança que protegem cada aplicação em execução em uma máquina. Ainda assim, muitos dos sistemas operacionais dos quais dependemos hoje foram construídos sobre ideias arquitetônicas que remontam a várias décadas. Embora esses sistemas sejam extraordinariamente poderosos e bem testados, eles também carregam décadas de complexidade acumulada. Este projeto explora uma direção diferente: construir um sistema operacional moderno de micronúcleo baseado em capacidades do zero, com forte foco em autoridade explícita, base de computação confiável (TCB) mínima e separação estrita entre núcleo e espaço de usuário.
Ler mais →