Repository navigation
Releases: LuizWT/CryptoMatrix
Release list
CryptoMatrix 2.1
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,mathpara 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 = 16para configurações de PBKDF2 e tamanho de salt/MAC.MIN_CELLS = 97(número de símbolos únicos) eMAX_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_ITERATIONSedklen=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 dematrix_seed). - Processamento:
- Gera todos os candidatos (d,r,c) dentro dos limites.
- Filtra aqueles com produto ≥
MIN_CELLSe ≤MAX_CELLS. - 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:
- Cria lista inicial
mlcom todos osSYMBOLS. Se necessário, repete até alcançardepth×rows×colselementos. - Trunca
mlao tamanho exato e embaralha determinísticamente usandorandom.Random(int.from_bytes(matrix_seed)). - Garante presença de todos os símbolos: substitui duplicatas por símbolos faltantes.
- Converte
mlem estrutura 3D: listas de camadas, linhas e colunas.
- Cria lista inicial
- 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:
- Mapeia cada símbolo da matriz às suas coordenadas (d,r,c).
- 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.
- Guarda
default_raw_ct(com zeros) e geradisplay_ct(com corte de zeros). - Calcula HMAC‑SHA256 sobre
rawcommac_key, produzindotag.
- 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:
- Recalcula HMAC sobre
default_raw_cte compara comtag; falha se divergente. - Divide
rawem blocos de 6 dígitos e converte em (d,r,c) para lookup na matriz.
- Recalcula HMAC sobre
- 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_seedemac_key. - Decide dimensões e gera matriz.
- Loop de input até mensagem válida.
- Chama
encrypt, exibe ciphertext, tag e salt. - Chama
decryptpara 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)
1.1
CryptoMatrix
Sistema de Criptografia por Matriz com Chave Compartilhada
1. Visão Geral
Esse código implementa um sistema simples de criptografia e decriptação baseado na geração de uma matriz quadrada embaralhada contendo as letras do alfabeto (com acréscimo da letra "Ç"). A matriz é gerada de forma determinística a partir de uma chave compartilhada, permitindo que tanto a parte que criptografa quanto a parte que descriptografa possam reproduzir exatamente a mesma configuração.
Cada caractere da mensagem é representado pela posição (linha e coluna) em que ocorre na matriz. Quando um caractere se repete, uma posição diferente é escolhida para criptografia. Para os espaços, o sistema utiliza tokens especiais: cada token é formado por um prefixo aleatório (qualquer letra de A-Z, exceto Ç) seguido por dois dígitos aleatórios, facilitando sua identificação durante a decriptação.
2. Dependências e Considerações
-
Módulos Utilizados:
random: Para gerar números aleatórios e embaralhar a lista de caracteres.string: Para acessar a constanteascii_uppercase, que fornece as letras maiúsculas de A-Z.
-
Uso da Chave: A chave fornecida pelo usuário é usada para definir a SEED do gerador de números aleatórios (
random.seed(key)), garantindo que a matriz gerada seja a mesma para uma mesma chave em processos distintos. -
Aplicações Reais:
- Comunicação segura entre partes que compartilham uma chave secreta.
- Criação de puzzles ou desafios de criptografia.
- Implementações educacionais para introdução aos conceitos de substituição de caracteres e criptografia simétrica com matriz.
3. Explicação Detalhada do Código
3.1 Função generate_matrix
Objetivo e Funcionamento:
-
Entrada:
key(chave para definir o estado do gerador aleatório) esize(dimensão da matriz quadrada, padrão 7). -
Processamento:
- Cria
base_alphabetcontendo letras A–Z e a letra"Ç". - Define a semente do gerador aleatório com
random.seed(key)para garantir determinismo. - Inicializa
matrix_listcom uma cópia debase_alphabet, assegurando ao menos uma de cada letra. - Duplica
base_alphabetaté quematrix_listtenha pelo menossize×sizeelementos. - Embaralha
matrix_liste trunca para o tamanho exato desize×size. - Verifica letras faltantes em
matrix_liste substitui posições duplicadas para garantir presença de todas as letras. - Divide
matrix_listem sublistas de comprimentosize, formando a matriz final.
- Cria
-
Saída: Retorna a matriz gerada — uma lista de listas (
list[list[str]]) comsizelinhas esizecolunas.
3.2 Função print_matrix
Objetivo e Funcionamento:
-
Entrada:
matrix(a matriz gerada). - Processamento: Percorre cada linha da matriz e imprime o número da linha e os caracteres, separados por espaços.
- Saída: Exibição da matriz no console de forma organizada.
3.3 Função encrypt
Objetivo e Funcionamento:
-
Entrada:
message(mensagem a ser criptografada) ematrix. -
Processamento:
- Inicializa a string
encrypted. - Constrói
positions_fullmapeando cada caractere da matriz para suas posições (linha, coluna). - Cria
positions_poolcomo uma cópia depositions_fullpara gerenciar as posições usadas. - Para cada caractere da mensagem (em maiúsculas):
- Se for espaço, gera um token com um prefixo aleatório (A-Z) e dois dígitos aleatórios (entre 11 e 77).
- Para outros caracteres, seleciona e remove uma posição aleatória da pool; se esgotada, reinicializa a pool.
- Inicializa a string
- Saída: Mensagem criptografada, composta por tokens representando as posições ou espaços.
3.4 Função decrypt
Objetivo e Funcionamento:
- Entrada:
encrypted_text: texto criptografado;matrix: matriz utilizada na criptografia. - Processamento:
- Verifica, token por token, se representa um espaço (token de 3 caracteres) ou um caractere da matriz (token de 2 dígitos).
- Converte os tokens de 2 dígitos em índices para recuperar o caractere correspondente da matriz.
- Saída: Retorna a mensagem original descriptografada.
3.5 Função validate_message
Objetivo e Funcionamento:
-
Entrada:
msg(Mensagem que será validada pela função antes de ser criptografada). -
Processamento:
- Aplica
re.fullmatch(r"[A-ZÇ ]+", msg)para verificar semsgcontém apenas: - Letras maiúsculas A–Z
- Cedilha
Ç - Espaços
- Retorna
Truese corresponder ao padrão, caso contrárioFalse.
- Aplica
-
Saída:
bool—Truepara mensagem válida;Falsecaso haja qualquer outro caractere.
3.6 Função clear_terminal
Objetivo e Funcionamento:
- Entrada: nenhuma.
-
Processamento:
- Verifica o sistema operacional via
os.name: - Se for
'nt', executacls(Windows). - Senão, executa
clear(Linux/macOS). - Chama
os.systemcom o comando apropriado para limpar o terminal.
- Verifica o sistema operacional via
- Saída: nenhuma (efeito colateral no terminal).
3.7 Função main
Objetivo e Funcionamento:
- Solicita a chave e gera a matriz determinística.
- Exibe a matriz e solicita a mensagem a ser criptografada.
- Criptografa a mensagem e exibe o resultado.
- Descriptografa a mensagem e exibe a mensagem original.
- O bloco
if __name__ == "__main__":garante que a funçãomainseja executada apenas quando o script for chamado diretamente.
4. Possíveis Aplicações em Cenários Reais
- Comunicação Segura: Permite o envio de mensagens criptografadas entre partes que compartilham uma chave secreta.
- Desafios e Puzzles: Pode ser adaptado para criar enigmas ou desafios onde os jogadores precisam descobrir a chave para interpretar uma mensagem oculta.
- Ensino: Ideal para uso didático, introduzindo conceitos de criptografia por substituição e uso de chaves compartilhadas.
5. Observações Finais
- A utilização de tokens especiais para espaços, com prefixos aleatórios (de A-Z), torna a mensagem criptografada menos previsível.
- A reinicialização da pool de posições garante que mensagens com muitas repetições de um mesmo caractere possam ser criptografadas sem perder a diversidade de posições.
Instalação
Important
Requer Python 3.6 ou superior para garantir compatibilidade total com os recursos utilizados no...
CryptoMatrix 1.0
CryptoMatrix
Sistema de Criptografia por Matriz com Chave Compartilhada
1. Visão Geral
Esse código implementa um sistema simples de criptografia e decriptação baseado na geração de uma matriz quadrada embaralhada contendo as letras do alfabeto (com acréscimo da letra "Ç"). A matriz é gerada de forma determinística a partir de uma chave compartilhada, permitindo que tanto a parte que criptografa quanto a parte que descriptografa possam reproduzir exatamente a mesma configuração.
Cada caractere da mensagem é representado pela posição (linha e coluna) em que ocorre na matriz. Quando um caractere se repete, uma posição diferente é escolhida para criptografia. Para os espaços, o sistema utiliza tokens especiais: cada token é formado por um prefixo aleatório (qualquer letra de A-Z, exceto Ç) seguido por dois dígitos aleatórios, facilitando sua identificação durante a decriptação.
2. Dependências e Considerações
-
Módulos Utilizados:
random: Para gerar números aleatórios e embaralhar a lista de caracteres.string: Para acessar a constanteascii_uppercase, que fornece as letras maiúsculas de A-Z.
-
Uso da Chave: A chave fornecida pelo usuário é usada para definir a semente do gerador de números aleatórios (
random.seed(key)), garantindo que a matriz gerada seja a mesma para uma mesma chave em processos distintos. -
Aplicações Reais:
- Comunicação segura entre partes que compartilham uma chave secreta.
- Criação de puzzles ou desafios de criptografia.
- Implementações educacionais para introdução aos conceitos de substituição de caracteres e criptografia simétrica com matriz.
3. Explicação Detalhada do Código
3.1 Função generate_matrix
Objetivo e Funcionamento:
-
Entrada:
key(chave para definir o estado do gerador aleatório) esize(tamanho da matriz, padrão 7). -
Processamento:
- Cria uma lista contendo as letras de A-Z e a letra
"Ç". - Define a semente do gerador aleatório com a chave para garantir um embaralhamento determinístico.
- Duplica os elementos da lista se necessário para preencher a matriz.
- Embaralha a lista.
- Divide a lista embaralhada em sublistas de tamanho
size.
- Cria uma lista contendo as letras de A-Z e a letra
- Saída: Retorna a matriz gerada (lista de listas representando as linhas da matriz).
3.2 Função print_matrix
Objetivo e Funcionamento:
-
Entrada:
matrix(a matriz gerada). - Processamento: Percorre cada linha da matriz e imprime o número da linha e os caracteres, separados por espaços.
- Saída: Exibição da matriz no console de forma organizada.
3.3 Função encrypt
Objetivo e Funcionamento:
-
Entrada:
message(mensagem a ser criptografada) ematrix. -
Processamento:
- Inicializa a string
encrypted. - Constrói
positions_fullmapeando cada caractere da matriz para suas posições (linha, coluna). - Cria
positions_poolcomo uma cópia depositions_fullpara gerenciar as posições usadas. - Para cada caractere da mensagem (em maiúsculas):
- Se for espaço, gera um token com um prefixo aleatório (A-Z) e dois dígitos aleatórios (entre 11 e 77).
- Para outros caracteres, seleciona e remove uma posição aleatória da pool; se esgotada, reinicializa a pool.
- Inicializa a string
- Saída: Mensagem criptografada, composta por tokens representando as posições ou espaços.
3.4 Função decrypt
Objetivo e Funcionamento:
- Entrada:
encrypted_text: texto criptografado;matrix: matriz utilizada na criptografia. - Processamento:
- Verifica, token por token, se representa um espaço (token de 3 caracteres) ou um caractere da matriz (token de 2 dígitos).
- Converte os tokens de 2 dígitos em índices para recuperar o caractere correspondente da matriz.
- Saída: Retorna a mensagem original descriptografada.
3.5 Função main
Objetivo e Funcionamento:
- Solicita a chave e gera a matriz determinística.
- Exibe a matriz e solicita a mensagem a ser criptografada.
- Criptografa a mensagem e exibe o resultado.
- Descriptografa a mensagem e exibe a mensagem original.
- O bloco
if __name__ == "__main__":garante que a funçãomainseja executada apenas quando o script for chamado diretamente.
4. Possíveis Aplicações em Cenários Reais
- Comunicação Segura: Permite o envio de mensagens criptografadas entre partes que compartilham uma chave secreta.
- Desafios e Puzzles: Pode ser adaptado para criar enigmas ou desafios onde os jogadores precisam descobrir a chave para interpretar uma mensagem oculta.
- Ensino: Ideal para uso didático, introduzindo conceitos de criptografia por substituição e uso de chaves compartilhadas.
5. Observações Finais
- A utilização de tokens especiais para espaços, com prefixos aleatórios (de A-Z), torna a mensagem criptografada menos previsível.
- A reinicialização da pool de posições garante que mensagens com muitas repetições de um mesmo caractere possam ser criptografadas sem perder a diversidade de posições.
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/LuizWT/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)