transformar link padrão UUID em dispositivo no wheezy

07 March, 2005

Passei por um problema aqui com o novo Debian com comando df e outros que identificam o sistema de arquivos com um link simbólico
tipo UUID como /dev/disk/by-uuid/132a49f9-790a-49fb-3112-383e93187bf8 e isso é muito chato: a saída do comando é mais amplo e ilegível, difícil de decorar e o dispositivo atual não é mais identificado em alguns scripts.

a solução que encontrei foi criar o script abaixo e colocar ele em /etc/initramfs-tools/scripts/local-premount/rootdevice com o conteúdo:

 

#!/bin/sh
# transformar o link padrao do
# (UUID) no dispositivo normal.
set -e
[ "$1" = prereqs ] && exit 0
REALROOT=`readlink -f ${ROOT}`
[ "${REALROOT}" ] && echo "ROOT=${REALROOT}" >> /conf/param.conf
exit 0

 

colocar ele como executável:
chmod +x /etc/initramfs-tools/scripts/local-premount/rootdevice

e depois atualizar o initramfs:
update-initramfs -u

pronto tudo fica como era antes ;)…

HASH com senha – HMAC

07 March, 2005

Dias atrais precisei criar um algoritmo para verificar se um form realmente esta vindo de uma pagina especifica, usando MD5 para isso como hoje existem alguns sites com dicionarios inteiros de hash que facilita a vida dos malas, pensei em concatenar a string com outra que seria secreta para ficar diferente.

Mais para minha surpresa pesquisei no site do php sobre as funções de hash nativas e encontrei um recurso bem interessante chamado HMAC ( Hash-based Message Authentication Code ) que permite você adicionar um código de autenticação ao hash final.

Como ele é bem simples, irei colocar abaixo um codigo em php e mais abaixo a saida do codigo:

 

<?php

// varios  - md5, sha1, crc32 e ripemd160 com e sem senha em hmac

echo "<br><b>Algoritmo MD5</b><br>";

echo hash('md5','pedro','');

echo "<br>";

echo hash_hmac('md5','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo SHA1</b><br>";

echo hash('sha1','pedro','');

echo "<br>";

echo hash_hmac('sha1','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo crc32</b><br>";

echo hash('crc32','pedro','');

echo "<br>";

echo hash_hmac('crc32','pedro','senha');

echo "<br>";

echo "<br><b>Algoritmo ripemd160</b><br>";

echo hash('ripemd160','pedro','');

echo "<br>";

echo hash_hmac('ripemd160','pedro','senha');

echo "<br>";

?>

saida do codigo acima:

Algoritmo MD5
c6cc8094c2dc07b700ffcc36d64e2138
a1d018ffaf490f6a5b92742ef3ccd173
Algoritmo SHA1

4410d99cefe57ec2c2cdbd3f1d5cf862bb4fb6f8
5c82ffca9902349d22bf36ab133b40cbb2f2ea76
Algoritmo crc32

e86f00aa
0f6fd579
Algoritmo ripemd160

7755874530352e4d9fce481fbf92ac0e46581b16
a2a25fa6891b36bbd4761cf84ad01a7a0ceee458

Sobre o algoritmo TEA

07 March, 2005

O algoritmo TEA foi criado por David Wheeler e Roger Needham no laboratório de computação da Universidade de Cambridge, Inglaterra, em novembro de 1994. A idéia principal dos autores foi criar um algoritmo seguro que, ao mesmo tempo, fosse fácil de ser implementado nas mais diversas linguagens de programação, pequeno e por isto facilmente guardado de memória pelos programadores, de execução rápida e que consumisse poucos recursos das máquinas. Parece que conseguiram… Também é importante frisar que este algoritmo não é patenteado (domínio público).

Este texto trata apenas da primeira versão do TEA, um algoritmo do tipo Feistel que faz uso de operações de vários grupos algébricos – XOR, ADD e SHIFT. Esta é uma forma muito engenhosa de obter as propriedades de difusão e confusão, os dois componentes essenciais da segurança da cifra, sem a necessidade de usar P-boxes (caixas de permutação para gerar difusão) ou S-boxes (caixas de substituição para gerar confusão).

O TEA cifra blocos de 64 bits de dados usando uma chave de 128 bits. Parece ser bastante resistente à criptoanálise diferencial e adquire uma difusão completa (quando a diferença de um bit no texto claro causa aproximadamente 32 bits de diferença no texto cifrado) após seis ciclos. Por ser muito curto e simples, a velocidade de processamento impressiona.

De acordo com os autores, este algoritmo pode substituir o DES com vantagens. Além disso, apesar de ter 32 ciclos (64 etapas Feistel) e apesar da velocidade de processamento não ser o principal objetivo, o TEA é três vezes mais rápido que o melhor software de implementação de DES com 16 etapas. Todos os modos de uso do DES também são aplicáveis ao TEA. O número de ciclos pode variar ou até fazer parte da chave. Os autores também sugerem que a segurança pode ser aumentada quando se aumenta o número de iterações.

De acordo com o Prof. Simon Shepher, da Universidade de Bradford, Inglaterra, a segurança do TEA é muito boa, salientando que, até o momento (fevereiro de 2006), não se obteve sucesso com nenhum tipo de criptoanálise. Acredita-se que o TEA seja tão seguro quanto o algoritmo IDEA, projetado por Massey e Xuenjia Lai. Usa a mesma técnica de grupos algébricos misturados, mas é muito mais simples e, por isto mesmo, muito mais rápido. Além disso é de domínio público, enquanto que o IDEA foi patenteado pela Ascom-Tech AG na Suíça. Parece que o professor é um fã de carteirinha do TEA. Louva seu tamanho diminuto, sua velocidade, sua segurança e ressalta que “também é um ótimo gerador de números randômicos que pode ser usado em simulações Monte Carlo e afins”.

abaixo um exemplo do algaritmo em PHP:

 


class crypto{

var $keyPhrase = "";
var $input = "";
var $output = "";

function encryption_keyer($txt, $encrypt_key) {
$ctr = 0;
$tmp = "";
$txt_len = strlen($txt);

for ($i = 0; $i < $txt_len; $i++) {
if ($ctr == strlen($encrypt_key)) $ctr = 0;
$tmp .= substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1);
$ctr++;
}

return $tmp;
}

function encrypt_string() {
$txt = $this->input;
$key = $this->keyPhrase;

srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr = 0;
$tmp = "";
$txt_len = strlen($txt);

for ($i=0; $i < $txt_len; $i++) {
if ($ctr == strlen($encrypt_key)) $ctr = 0;
$tmp.= substr($encrypt_key, $ctr, 1) . (substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1));
$ctr++;
}

$hash = $this->encryption_keyer($tmp, $key);
$hashLen = strlen($hash);
$hexa = "";

for ($j=0; $j < $hashLen; $j++) {
$tmpH = base_convert((ord(substr($hash, $j, 1))), 10, 16);
$hexa .= (strlen($tmpH) < 2) ? "0$tmpH" : "$tmpH";
}

$this->output = $hexa;
}

function decrypt_string() {
$txt = $this->input;
$key = $this->keyPhrase;

$hexaLen = strlen($txt);
$hash = "";

for ($j = 0; $j < $hexaLen; $j++) {
$tmpHex = substr($txt, $j, 2);
$tempOrd = base_convert($tmpHex, 16, 10);
$hash .= chr($tempOrd);
$j++;
}

$hashd = $this->encryption_keyer($hash, $key);

$tmp = "";
$txt_len = strlen($hashd);

for ($i = 0; $i < $txt_len; $i++) {
$md5 = substr($hashd, $i, 1);
$i++;
$tmp .= (substr($hashd, $i, 1) ^ $md5);
}

$this->output = $tmp;
}
}

$k = new crypto();
$k->keyPhrase = "pedrofilho";
$k->input = "Jesus o rei dos reis";
$k->encrypt_string();
$dest = $k->output;

echo "texto *Jesus o rei dos reis* com criptografia TEA com *pedrofilho* como senha:\n\n" .$dest;

$w = new crypto();
$w->keyPhrase = "pedrofilho";
$w->input = $dest;
$w->decrypt_string();
$dest = $w->output;

echo "\n\n" .$dest;

o mais legal desse algoritmo é a velocidade.

Postagens recentes → Home ← Postagens antigas