Exibindo resultados 1 até 5 de 5

Tópico: Embaralhamento de Caracteres com Astherion

  1. Embaralhamento de Caracteres com Astherion

    Boa noite,

    Tenho um amigo que recentemente começou a aceitar pedidos de sua loja também pela internet, através de uma loja virtual. Aproveitamos para desenvolver um sistema para ele controlar o estoque e finanças da empresa; Para garantir que somente ele pudesse acessar estas informações, decidi implementar um embaralhador de caracteres, que compartilho com vocês neste momento:

    Código:
    Código PHP:
    function Astherion($content$method$password) {    $string .= 'aAáÁàÀãÃâÂäÄbBcCçÇdDeEéÉèÈêÊëËfFgGhHiIíÍìÌîÎïÏjJk';    $string .= 'KlLmMnNñÑoOóÓòÒõÕôÔöÖpPqQrRsStTuUúÚùÙûÛüÜvVyYxXzZwW';    $string .= '0123456789 `~!?@#$%^&*()_-=+\/[]<>{},.:;|¹²³ªº"' "'\t\r\n";    $array str_split(utf8_decode($string), 1);    foreach($array as $key => $value) {        $temp[] = substr(hash("Whirlpool"$password $value), 15);    }    if($method == 1) {        for($x 0$x strlen($content); $x++) {            Slide($temp1);                foreach($array as $key => $value) {                    if($content[$x] == $array[$key]) {                        $result .= $temp[$key];                    }                }        }        return $result;    }    if($method == 0) {        for($x 4$x strlen($content); $x $x+5) {            Slide($temp1);            $char $content[$x-4].$content[$x-3].$content[$x-2].$content[$x-1].$content[$x];                    foreach($temp as $key => $value) {                        if($char == $value) {                            $result .= $array[$key];                        }                    }            unset($char);        }        return $result;    }}
    function 
    Slide(&$array$walk) {    if(false === is_int($walk) || === $walk || false === is_array($array))        return false;        $walk = -($walk sizeof($array));        $array array_merge(array_slice($array$walk), array_slice($array0$walk));        return true;} 
    Exemplo de Cifragem:
    44d7fd8d8c7fc9bf55a9a7570283f794837f55a98501576ac4 94837faf4d1bd0e422e9c4747633d1141e438b17018e93cfd9 a2a31f7cf0a4daba58c8 (Se desejar, tente quebrar).

    Sugestões e Críticas serão muito bem apreciados. Se alguém testar, por favor, compartilhe sua experiência conosco.

  2. #2
    Desde
    Dec 2004
    Local
    Darmstadt, Alemanha
    Idade
    29
    Posts
    919
    Peso da Avaliação
    20

    Re: Embaralhamento de Caracteres com Astherion

    Bom, de maneira geral, a primeira crítica/sugestao é: nao reinvente a roda em sistemas de producao. Enquanto seu exercício de cifragem é um aprendizado bem bacana, nao é uma boa prática do ponto de vista de seguranca usar isso em um sistema real no lugar de tantos outros algoritmos fortemente avaliados e testados disponíveis no mercado. Aliás, nem implementar esses algoritmos já existentes por conta propria é uma boa idéia, pois voce pode se perder em algum detalhe. Tem várias boas implementacoes disponíveis, inclusive gratuitamente.

    Quanto ao algoritmo, vou dar uma espiada no final de semana se possível ;).
    "Then you will know the truth, and the truth will set you free"

  3. #3
    Desde
    Dec 2004
    Local
    Darmstadt, Alemanha
    Idade
    29
    Posts
    919
    Peso da Avaliação
    20

    Re: Embaralhamento de Caracteres com Astherion

    Salvo algum engano, segue pseudo-código do algoritmo para ajudar a quem quiser olhar:

    Código:
    ENTRADA: mensagem, senha, modo (cifragem/decifragem)
    caracteres = ARRAY contendo todos caracteres possíveis
    cifras = ARRAY contendo uma cifra para cada caractere possível
    PARA CADA caractere EM caracteres
           cifra = 5 PRIMEIROS CARACTERES DE ( HASH ( senha + caractere ) )//"+" = concatenacao
           ADICIONA cifra EM cifras 
    
    SE modo = cifragem
          PARA CADA caractere EM mensagem
                ROTACIONA cifras (1 vez)
                indice = INDICE DE caractere EM caracteres
                cifra = VALOR EM cifras PARA indice //diferente a cada vez gracas a rotacao 
                saida = saida + cifra
    
    SE modo = decifragem
          A CADA 5 caracteresCifrados EM mensagem
                ROTACIONA cifras (1 vez)
                indice = INDICE DE caracteresCifrados EM cifras
                emClaro = VALOR EM caracteres PARA indice 
                saida = saida + emClaro
    Legal o código. Além de ser mais elaborado, de nao confiar só em substituicao e adicionar uma rotacao, bacana que voce chegou com ele aqui já mostrando o código. Perdi a conta de quantos apareceram aqui querendo apresentar e desafiar com códigos baseados em "seguranca por obscuridade".

    De uma olhada rápida, problemas que penso serem possíveis de explorar:

    Ataque usando texto parcialmente conhecido:
    Parece ser possível quebrar parcialmente a cifra se eu tiver em condicao de ataque com texto conhecido (known text). Exemplo, um texto qualquer que conheco uma parte da mensagem, como um email que recebo de voce com uma assinatura padrao. Ou no caso da sua aplicacao, qualquer coisa que voce pretenda armazernar que o atacante eventualmente possa conhecer e localizar em que parte do texto cifrado está.

    Derivar o mapeamento entre caracteres e texto cifrado correspondente na parte conhecida do texto é trivial. Como as rotacoes sao simples, qualquer sequencia de 5 caracteres que apareca novamente pode ser usado o offset da rotacao pra identificar qual é o caractere correspondende também. Uma parte significativa do texto pode ser obtida assim, e com texto suficiente, potencialmente muito do texto pode ser obtido dessa forma.

    Análise de frequencias
    Analisando melhor, nao é tao trivial atacar com analise de frequencias nesse caso. Preciso pensar melhor esse caso ;)
    Última edição por Birkoff : 18/08/2012 às 12:12 Motivo: Melhorando a explicacao do ataque proposto
    "Then you will know the truth, and the truth will set you free"

  4. Re: Embaralhamento de Caracteres com Astherion

    Algum tempo se passou, e fiquei curioso... continuou analisando o código? Chegou há alguma conclusão?

  5. #5
    Desde
    Jan 2012
    Posts
    14
    Peso da Avaliação
    0

    Re: Embaralhamento de Caracteres com Astherion

    Não entendi... é uma tentativa de criar um algorítimo de encriptação? (Se for, sabia que não é recomendado desenolver algorítimos que não utilizem algum outro algorítimo avançado como SHA1 etc...) Pois, na maioria dos casos, ao tentar implementar um algorítimo, a pessoa pode não ter o nível necessário "matemático" para tal. E gerar um hash que apresente padrões e possa ser quebrado facilmente. O melhor é utilizar algorítimos existentes e "mixa-los" na construção do seu". Mas, claro não entendi o propósito, do que se trata?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tópicos semelhantes

  1. Usando caracteres ASCII em senhas
    By ceth in forum Autenticação e Controle de acesso
    Respostas: 2
    Último post: 26/03/2007, 23:40
  2. Spammer dribla filtros em arte com caracteres
    By vltm in forum Notícias de segurança
    Respostas: 0
    Último post: 15/03/2005, 16:18
  3. CARACTERES NAS SENHAS
    By JJCC in forum Autenticação e Controle de acesso
    Respostas: 6
    Último post: 24/01/2003, 20:46

Regras de envio

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •