Skip to content

LuizWT/CryptoMatrix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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)

About

Sistema de Criptografia por Matriz 3D com Chave Compartilhada

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages