14
aesaes хеш функция с общо предназначение

Aesaes

Embed Size (px)

DESCRIPTION

OpenSource hash function - Boyan Krosnov

Citation preview

Page 1: Aesaes

aesaes

хеш функция с общопредназначение

Page 2: Aesaes

хеш функция

Page 3: Aesaes

хеш функция с общопредназначение

(non-cryptographic, general purpose)

Page 4: Aesaes

Hash tables, Caches,

Bloom filters, Finding duplicate records

Page 5: Aesaes

MurmurHash3

популярна такава

бърза, добро разпределение

https://code.google.com/p/smhasher/

Page 6: Aesaes

aesaes

наше откритие

по-бърза, също толкова добра

http://packetscale.com/aesaes

Page 7: Aesaes

Скорост

Page 8: Aesaes

Разпределение

неразличимо от случайно

1M 128-битови стойности

в 2М кофи

~224000 кофи с колизии

максимална дълбочина = 7

Page 9: Aesaes

Псевдокод

state = 0

for b in blocks

tmp = b

tmp = tmp.SubBytes.ShiftRows.MixColumns

tmp = tmp.SubBytes.ShiftRows.MixColumns

state = state XOR tmp

return state[0]

(прилича на 2 рунда от AES-128; ползва същите примитиви)

Page 10: Aesaes

IA32 разширение - AES-NI

2008

(почти) всички нови процесори от Intel и AMD

Page 11: Aesaes

Лиценз

2-clause BSD

Page 12: Aesaes

Зов за помощ

сайт и инструменти за разработчици

други варианти на функцията

“avalanche” и “bit bias” тестове

[email protected]

Page 13: Aesaes

Благодаря!

Page 14: Aesaes

(c) 2011, Packetscale

uint32_t

aesaes_string(void *_data, int size)

{

__m128i *v = (__m128i*)_data;

union __ZZ tmp, state, key;

state.v = key.v = _mm_setzero_si128();

while (size > 0)

{

tmp.v = *v;

v++;

size -= sizeof( *v );

tmp.v = _mm_aesenc_si128( tmp.v, key.v );

tmp.v = _mm_aesenc_si128( tmp.v, key.v );

state.v ^= tmp.v;

}

return state.vals[0];

}