Skip to content

CryptoMatrix 2.1

Latest

Choose a tag to compare

@LuizWT LuizWT released this 03 May 01:29
· 2 commits to main since this release
dd9c82b

CryptoMatrix

Sistema de Criptografia por Matriz com Chave Compartilhada

1. Visão Geral

Implementa um sistema de criptografia e decriptação baseado em uma matriz 3D determinística de símbolos ASCII imprimíveis. A matriz é gerada a partir de uma passphrase compartilhada, usando SHA‑256 para derivar a SEED e PBKDF2‑HMAC‑SHA256 para proteger a chave de autenticação (MAC). Cada caractere do texto é convertido em coordenadas (camada (dd), linha (rr), coluna (cc)) na matriz.

2. Dependências e Considerações

Note

Todas as dependências são nativas do Python.



  • Módulos Utilizados:
    • secrets, random, string, os, math para geração de números aleatórios, manipulação de terminal e cálculo de dimensões.
    • hashlib, hmac, hashlib.pbkdf2_hmac — SHA‑256 e PBKDF2 para derivação de chaves e HMAC‑SHA256 para integridade.
  • Parâmetros Principais:
    • PBKDF2_ITERATIONS = 100 000, KEY_LEN = 64, SALT_LEN = 16 para configurações de PBKDF2 e tamanho de salt/MAC.
    • MIN_CELLS = 97 (número de símbolos únicos) e MAX_CELLS = 1000 — limites para dimensão da matriz.
  • Conjunto de Símbolos: 95 símbolos ASCII imprimíveis (incluindo o espaço), com a adição dos caracteres Ç e ç.
  • Validação de Mensagem: somente caracteres do conjunto acima são permitidos. Considere ver validate_message().

3. Explicação Detalhada do Código

3.1 Função derive_matrix_seed



Objetivo: derivar um SEED fixo para geração da matriz a partir da passphrase.

  • Entrada: passphrase: str
  • Processamento: SHA‑256 da passphrase (UTF‑8).
  • Saída: matrix_seed: bytes (32 bytes)

3.2 Função derive_mac_key



Objetivo: derivar a chave de autenticação (MAC) segura via PBKDF2.

  • Entrada: passphrase: str, salt: bytes (16 bytes)
  • Processamento: PBKDF2‑HMAC‑SHA256 com PBKDF2_ITERATIONS e dklen=KEY_LEN, retorna a metade final dos bytes.
  • Saída: mac_key: bytes (32 bytes)

3.3 Função decide_dimensions



Objetivo: escolher dimensões (depth, rows, cols) para a matriz 3D de modo que MIN_CELLS ≤ depth×rows×cols ≤ MAX_CELLS.

  • Entrada: seed_int: int (inteiro derivado de matrix_seed).
  • Processamento:
    1. Gera todos os candidatos (d,r,c) dentro dos limites.
    2. Filtra aqueles com produto ≥ MIN_CELLS e ≤ MAX_CELLS.
    3. Escolhe aleatoriamente um candidato usando random.seed(seed_int).
  • Saída: tupla (depth, rows, cols)

3.4 Função generate_matrix



Objetivo: construir a matriz 3D embaralhada de símbolos.

  • Entrada: matrix_seed: bytes, depth, rows, cols: int.
  • Processamento:
    1. Cria lista inicial ml com todos os SYMBOLS. Se necessário, repete até alcançar depth×rows×cols elementos.
    2. Trunca ml ao tamanho exato e embaralha determinísticamente usando random.Random(int.from_bytes(matrix_seed)).
    3. Garante presença de todos os símbolos: substitui duplicatas por símbolos faltantes.
    4. Converte ml em estrutura 3D: listas de camadas, linhas e colunas.
  • Saída: matrix: list[list[list[str]]]

3.5 Função print_matrix



Objetivo: exibir cada camada da matriz no terminal.

  • Entrada: matrix.
  • Processamento: para cada camada, imprime cabeçalho de colunas e linhas com ANSI colors.
  • Saída: visualização formatada no console.

3.6 Função encrypt



Objetivo: cifrar uma mensagem usando a matriz e gerar tag MAC.

  • Entrada: msg: str, matrix, mac_key.
  • Processamento:
    1. Mapeia cada símbolo da matriz às suas coordenadas (d,r,c).
    2. Para cada caractere da mensagem:
      • Escolhe coordenada aleatória não usada (pool) e concatena como 6 dígitos (“ddrrcc”).
      • Se pool esgotar, reinicializa para manter diversidade.
    3. Guarda default_raw_ct (com zeros) e gera display_ct (com corte de zeros).
    4. Calcula HMAC‑SHA256 sobre raw com mac_key, produzindo tag.
  • Saída: (display_ct: str, tag: str)

3.7 Função decrypt



Objetivo: validar integridade e reconstruir o texto original.

  • Entrada: ct (ignored), tag: str, matrix, mac_key.
  • Processamento:
    1. Recalcula HMAC sobre default_raw_ct e compara com tag; falha se divergente.
    2. Divide raw em blocos de 6 dígitos e converte em (d,r,c) para lookup na matriz.
  • Saída: mensagem original str

3.8 Função validate_message



Objetivo: garantir que a mensagem contenha apenas símbolos permitidos.

  • Entrada: msg: str
  • Processamento: verifica `all(ch in SYMBOLS)`.
  • Saída: bool

3.9 Função clear_terminal



Objetivo: limpar a tela do terminal.

  • Entrada: nenhuma
  • Processamento: Identifica o sistema operacional e executa o comando apropriado para limpar a tela.
  • Saída: nenhuma

3.10 Função main



Objetivo: orquestrar o fluxo de geração da matriz, criptografia e decriptação.

  • Solicita passphrase, deriva matrix_seed e mac_key.
  • Decide dimensões e gera matriz.
  • Loop de input até mensagem válida.
  • Chama encrypt, exibe ciphertext, tag e salt.
  • Chama decrypt para demonstrar decriptação e exibe resultado.

Instalação

Important

Requer Python 3.6 ou superior para garantir compatibilidade total com os recursos utilizados no código

Clone o repositório:

git clone https://github.com/seu-usuario/CryptoMatrix.git

Acesse o diretório:

cd CryptoMatrix/

Execute a ferramenta:

python3 cryptoMatrix.py

Apoio ao Projeto

Se você quiser contribuir com o projeto, sinta-se à vontade para abrir Issues ou fazer Pull Requests.


Este projeto está licenciado sob a GNU Affero General Public License v3.0 (Modificada)