
Ferramenta de armazenamento esteganográfico e criptografia de arquivos

tird & tirdFStird /tɪrd/ (um acrônimo para "this is random data") é uma ferramenta de criptografia de arquivos que minimiza metadados e oculta dados criptografados.
Com o tird, você pode:
tirdFS) dentro de arquivos contêiner e dispositivos de bloco. Diferentemente do VeraCrypt e do Shufflecake, os contêineres tirdFS não possuem cabeçalhos; o usuário especifica as localizações dos dados dentro do contêiner e é responsável por manter essas localizações separadas. Qualquer região de aparência aleatória de um arquivo ou dispositivo de bloco pode ser usada como contêiner.O tird oferece negação plausível integrada, mesmo quando arquivos criptografados são armazenados fora de contêineres. Também ajuda a resistir a ataques coercivos de divulgação de chave (criptoanálise de mangueira de borracha, xkcd 538).
[!WARNING] Antes de usar o
tird, leia a seção "Avisos". A segurança depende não apenas da ferramenta, mas de suas ações: armazenamento seguro de chaves, operação em um ambiente seguro e evitar o modo de depuração com dados reais.
A estabilização do formato e uma especificação formal estão planejadas para a v1.0.0.
Você não precisa memorizar opções de linha de comando para usar o tird. Esta ferramenta possui uma CLI baseada em prompts: basta iniciá-la, selecionar uma opção do menu e responder às perguntas que se seguem.```
$ tird
MENU
———————————————————————————————————————————
0. Exit 1. Info & Warnings
2. Encrypt 3. Decrypt
4. Embed 5. Extract
6. Encrypt & Embed 7. Extract & Decrypt
8. Create w/ Random 9. Overwrite w/ Random
———————————————————————————————————————————
A0. SELECT AN OPTION [0-9]:
## Opções de Entrada
Existem 4 grupos de opções de entrada: A (Action), D (Data), K (Keys), P (Proceed). Eles são numerados para facilitar a descrição.```
+——————————————————————+————————————————————————+
| A0. SELECT AN OPTION | A. Select an action |
+——————————————————————+————————————————————————+
| D1. INPUT FILE PATH | |
| D2. COMMENTS | D. Enter data, |
| D3. OUTPUT FILE PATH | data location, |
| D4. OUTPUT FILE SIZE | data size |
| D5. START POSITION | |
| D6. END POSITION | |
+——————————————————————+————————————————————————+
| K1. KEYFILE PATH | K. Enter values |
| K2. PASSPHRASE | related to |
| K3. TIME COST | key derivation |
+——————————————————————+————————————————————————+
| P0. PROCEED? | P. Confirm to continue |
+——————————————————————+————————————————————————+
Uma descrição detalhada destas opções com exemplos pode ser encontrada aqui.
A carga útil que será criptografada durante a criação do cryptoblob consiste em:
Especificar o payload na UI é feito da seguinte forma:``` D1. FILE TO ENCRYPT (OPT): files.zip I: path: 'files.zip'; size: 2,824,230,648 B (2.6 GiB) D2. COMMENTS (DEFAULT='files.zip'): The X-Files, zip (секретные материалы) I: comments will be shown as ['The X-Files, zip (секретные материалы)']
## Material de Chaveamento de Entrada
`tird` fornece a opção de usar o conteúdo de arquivos-chave e uma senha para derivar chaves de uso único.
- **Arquivos-chave (opcional):** Zero, um ou múltiplos caminhos de arquivos-chave; a ordem das entradas não importa. Um caminho de arquivo-chave pode ser:
- Um <ins>arquivo regular</ins>. O conteúdo do arquivo-chave será hashado, e seu digest será usado para alongamento de chave e derivação de chave adicionais.
- Um <ins>dispositivo de bloco</ins>. Tratado da mesma forma que um arquivo-chave regular: o conteúdo será hashado.
- Um <ins>diretório</ins>. Todos os arquivos dentro do diretório serão hashados e usados como arquivos-chave.
- **Senha (opcional):** Até 2048 bytes após a normalização [normalização](https://www.unicode.org/reports/tr15/) (forma C); pode ser omitido.
Especificar IKM na interface do usuário aparece da seguinte forma:```
K1. KEYFILE PATH (OPT): key
I: path: 'key'; size: 32 B
I: reading and hashing contents of 'key'
I: keyfile accepted
K1. KEYFILE PATH (OPT):
K2. PASSPHRASE (OPT):
K2. CONFIRM PASSPHRASE:
I: passphrase accepted
Para mais detalhes, consulte a especificação.
Embora o conteúdo de uma mensagem criptografada esteja protegido, seu tamanho, sua origem, seu destino… não estão. Os dados estão ocultos, os metadados são exibidos. Às vezes, isso é tudo que seu inimigo precisa para descobrir seus segredos.
Matamos pessoas com base em metadados.
![]() Vs. ![]() |
|---|
tirdFS — Sistema de Arquivos Esteganográfico Orientado pelo Usuáriotird emprega uma técnica que é descrita da seguinte forma:
Ocultar dados dentro de dados criptografados ou dentro de dados aleatórios. A mensagem a ocultar é criptografada e, em seguida, usada para sobrescrever parte de um bloco muito maior de dados criptografados ou de um bloco de dados aleatórios (uma cifra inquebrável como o one-time pad gera textos cifrados que parecem perfeitamente aleatórios sem a chave privada).
Você pode criptografar arquivos e incorporar cryptoblobs em contêineres começando em posições arbitrárias. Após escrever o cryptoblob, você precisará lembrar sua localização no contêiner (as posições inicial e final), que serão usadas posteriormente para extrair os cryptoblobs. Dessa forma, você pode criar tirdFS — sistema de arquivos oculto, sem cabeçalho e orientado pelo usuário dentro de um contêiner:
tirdFS não é um sistema de arquivos montado com estruturas de metadados internas. É um modelo de armazenamento oculto gerenciado pelo usuário construído a partir de cryptoblobs colocados independentemente.
Qualquer arquivo, disco ou partição maior que o tamanho mínimo do cryptoblob (1160 B) pode ser um contêiner válido. Cryptoblobs podem ser incorporados em qualquer área.
Exemplos de Contêineres Válidos incluem:
Exemplo de Estrutura de Contêiner:``` +—————————+—————————————+ <— Position 0 of the container | | | | | Random data | | | | | +—————————————+ <— Cryptoblob1 start position | Header- | | | less | Cryptoblob1 | | | | | Layer +—————————————+ <— Cryptoblob1 end position | | Random data | | Cake +—————————————+ <— Cryptoblob2 start position | | | | | Cryptoblob2 | | | | | +—————————————+ <— Cryptoblob2 end position | | Random data | +—————————+—————————————+
**Cabeçalho gerenciado pelo usuário**
Um cabeçalho de texto separado gerenciado pelo usuário `tirdFS` pode se parecer com o seguinte:```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip
Isso é, normalmente deve conter a localização de cada criptobloco no contêiner mais um breve comentário. No entanto, o usuário é livre para determinar como armazenar as posições e o que incluir em tal cabeçalho.
A imagem a seguir visualiza como é difícil distinguir uma entrada de dados aleatória de outra e o processo de incorporar criptoblocos em um contêiner.
Contêiner vazio com dados aleatórios:

Um criptobloco incorporado no contêiner:

Dois criptoblocos incorporados no contêiner:

Três criptoblocos incorporados no contêiner:

Animação: visualização da incorporação:

Carregue para todos os lados. É seu direito.
Por favor, veja a seguinte captura de tela.
Parece que este volume de 16 GB contém apenas um arquivo de 8,7 MiB. Será que é realmente verdade? Talvez sim, talvez não.
O sistema de arquivos nos diz que há apenas um arquivo aqui. Mas será que realmente há apenas um arquivo no volume? Não podemos determinar isso usando o sistema de arquivos. Na verdade, os dados podem estar localizados fora do sistema de arquivos e serem indetectáveis pelas ferramentas do sistema de arquivos. Os 15,2 GiB de espaço marcados como livres podem estar ocupados por um sistema de arquivos oculto. Este espaço "livre" pode estar ocupado por dados criptografados ocultos.
Podemos refutar a existência desses dados? Sim, por exemplo, examinando o nível de entropia desse espaço livre usando binwalk. Baixa entropia indica uma provável ausência de dados ocultos. Alta entropia não, por si só, prova a presença de dados criptografados ocultos. Áreas com alta entropia podem ser apenas dados residuais ou dados criptografados ocultos.
Se você está interessado em ocultar dados fora do sistema de arquivos visível, então o tird está ao seu serviço para fornecer uma Capa de Invisibilidade para seus arquivos.
A criptografia com bloqueio de tempo (TLE) pode ser usada para impedir que um adversário acesse rapidamente os textos simples no caso de um comprometimento do IKM (em caso de coerção do usuário, por exemplo). Em nossa implementação, é na verdade uma derivação de chave com bloqueio de tempo baseada em PoW. A opção de entrada "Time cost" especifica o número de passagens do Argon2. Se você especificar um número suficientemente alto de passagens, levará um tempo significativo para executá-las. No entanto, um invasor exigirá a mesma quantidade de tempo ao usar hardware semelhante. A execução do Argon2 não pode ser acelerada por paralelização, portanto, espera-se que o tempo gasto por um invasor seja aproximadamente o mesmo que o gasto pelo defensor.
Esta implementação de TLE funciona offline, ao contrário do tlock.
Defina o valor desejado de TIME COST:```
K3. TIME COST (DEFAULT=4): 1000000
I: time cost: 1,000,000
W: decryption will require the same "TIME COST" value!
**Plausible TLE:** O adversário não conhece o valor real do custo de tempo, então você pode deturpar de forma plausível o número de passes. O adversário não pode refutar sua afirmação até tentar descriptografar o cryptoblob usando o valor de custo de tempo especificado.
## Opções de Linha de Comando
`tird` não requer opções de linha de comando para uso normal.```
$ tird --help
tird v0.30.0
A tool for encrypting files and hiding encrypted data.
Homepage: https://github.com/hakavlad/tird
Usage:
tird [--unsafe-debug] [--unsafe-decrypt]
Start without options for normal usage.
Options:
--help print this help message and exit
--unsafe-debug enable unsafe debug mode
--unsafe-decrypt release plaintext even if MAC verification
failed (dangerous)
Examples:
$ tird
$ tird --unsafe-debug
[!WARNING] O modo de depuração não deve ser usado em produção!
Inicie o tird com a opção --unsafe-debug para ver sob o capô enquanto o programa está em execução.
Ativar o modo de depuração mostra adicionalmente:
[!WARNING] Neste modo, o texto simples retornado pode ter sido modificado ou substituído por um atacante!
No modo de descriptografia inseguro, o tird liberará o texto simples mesmo se a autenticação falhar. Use apenas se você priorizar a disponibilidade sobre a integridade, quando não conseguir descriptografar um criptobloco com sucesso no modo normal.
tird não suporta:
tird não fornece:
tird não pode lidar (criptografar/incorporar) mais de um arquivo em uma única passagem. Não é suportada a criptografia de diretórios e múltiplos arquivos.tird não sanitiza metadados do sistema de arquivos (atime, mtime, ctime).tird não é muito alta (até 730 MiB/s em meus testes em hardware moderno).A criptografia pode ajudar, mas não vai salvá-lo de uso indevido, vulnerabilidades, engenharia social ou ameaças físicas.
tird não passou por uma auditoria de segurança independente por humanos.tird é ineficaz em um ambiente comprometido; executá-lo nesses casos pode causar vazamentos de dados desastrosos.tird provavelmente não será eficaz quando usado com chaves curtas e previsíveis.tird não apaga seus dados sensíveis da memória após o uso; as chaves podem persistir na memória após a saída do programa.tird não ordena digests de keyfiles e frases-passe em tempo constante.tird protege dados, não o usuário; não pode evitar tortura se você estiver sob suspeita.HKDF e uma implementação rápida de ChaCha20)Argon2 e BLAKE2)tird(1)Melhorar a documentação.
Sinta-se à vontade para fazer perguntas, deixar feedback ou fornecer críticas na seção Discussões.