[GTER] uma ideia para discussão: SPF reverso.

Frederico A C Neves fneves at registro.br
Wed Aug 15 18:06:26 -03 2012


Danton,

On Wed, Aug 15, 2012 at 04:33:09PM -0300, Danton Nunes wrote:
...
> 3. Cálculo do hash
> 
> Maiúsculas e minúsculas tem o mesmo valor nos nomes de domínio, mas não 
> no cálculo do MD5, então, antes de calcular o hash todos os caracteres 
> alfabéticos deverão ser convertidos em minúsculas.
> 
> Nomes de domínio internacionalizados devem ser representados em punycode 
> [RFC-3492 e RFC-5891].
> 
> O hash é calculado sobre o nome do domínio sem qualquer terminador de 
> linha.
> 
> O hash é codificado em base 16. É irrelevante se em maiúsculas ou 
> minúsculas, já que os nomes de domínios não são sensitivos ao caso.

Use base32hex, o mesmo usado no NSEC3. Veja RFC4648 7. Com este
encoding e o seu atual hash selecionado ganha-se ao menos 6 bytes :-)

> Exemplos:
> 
> example.com -> 5ababd603b22780302dd8d83498e5172
> 
> ?????????.nom.br -> (punycode) xn--riqy20ichd.nom.br ->
>  	-> 50807287f78ea82a698719357de51805
> 
> NOTA: considerei a possibilidade de codificar o hash em base-32 ou 
> base-64, que certamente resultaria em um componente do domínio mais 
> curto, no entanto ambas as bases usam caracteres que estão fora do 
> conjunto permitido para nomes de domínio e a base-64 distingue 
> maiúsculas de minúsculas, que são confundidas no escopo do DNS.

Correto quanto ao base64 uma vez que isto será usado no ownername e
não no rdata. Se fosse no rdata não teríamos problema.

...

> Questão do HASH:
> 
> escolhi MD5 um tanto arbitrariamente, me parece um tanto 'over' para esta 
> finalidade. poderia ser um hash mais curto, se bem que quanto mais curto 
> mais o fantasma da possibilidade de colisão assusta.

Esta preocupação certamente é válida quando o input da sua função de
hash é de tamanho muito maior do que o próprio hash mas com um espaço
de nomes limitado a nomes de 255 bytes, o que inclui ai também o byte
do tamanho de cada label, MD5 ainda me parece muito bom.

> por outro lado, há a dúvida, to hash or not to hash? o hash permitiria 
> tratar domínios enormes com até todos os 127 componentes permitidos pela 
> RFC do Mockapetris, enquanto se simplesmente concatenássemos o nome do 
> domínio com o do endereço IP reverso teríamos um limite de 93 componentes 
> (no domínio ip6.arpa, no caso do IPv4 seria menos restritivo). Na prática, 
> duvido que exista um domínio de e-mail com 93 componentes!

Suportar todo e qualquer domínio é o principal motivo para se utilizar
hash. É certo que a grande maioria dos nomes + reverso + in-addr.arpa
em "wireformat" será menor ou igual a 255 bytes mas não será aplicável
a qualquer caso, por isto o hash é altamente aconselhável.

> outra questão que ficou em aberto é um mecanismo de delegação para os 
> casos em que o dono dos IPs não controla o domínio reverso, tipicamente 
> quando recebe um bloco de IPv4 menor que /24. houve uma proposta 
> interessante baseada em criptografia de chave pública, mas me pareceu um 
> tanto complicada e resolvi não incorporá-la nesta altura. Estou pensando 
> em alguma abordagem mais ao estilo da BCP-20, para incorporar mais tarde.

De uma olhada nesta proposta. Pode ser aditiva a sua. É uma técnica
para representação em qualquer bit-boundary.

http://tools.ietf.org/html/draft-gersch-dnsop-revdns-cidr-02

> -- Danton.

[]s
Fred



More information about the gter mailing list