Реализация Алгоритма Крошечного Шифрования на OS X

0

Я работаю над упражнениями в "Страуструпе" "Программирование: принципы и практика с использованием C++". В главе 25 он вводит алгоритм крошечного шифрования (TEA). Он и веб-сайт, на котором размещены несколько статей, утверждают, что он не был сломан, и дал короткий код: "Слишком хорошо, чтобы быть правдой!"

Примечание. Мне пришлось изменить long переменные на переменные int поскольку бит-сдвиги предназначены для реализации в системе с sizeof(var) = 4

OS X реализует длинный 8-байтовый тип, поэтому без этого изменения код Stroustrup не работает.

Может ли кто-нибудь рекомендовать другие тривиально реализованные улучшения, чтобы получить TEA на OS X с большей эффективностью и/или лучшей безопасностью?

void encipher(
    const unsigned int* const v,
    unsigned int* const w,
    const unsigned int* const k
    )
{
    unsigned int y = v[0];
    unsigned int z = v[1];
    unsigned int sum = 0;
    unsigned int delta = 0x9E3779B9;
    unsigned int n = 32;

    while(n-- > 0) {
        y += (z << 4 ^ z >> 5) + z ^ sum + k[sum & 3];
        sum += delta;
        z += (y << 4 ^ y >> 5) + y ^ sum + k[sum>>11 & 3];
    }
    w[0]=y;
    w[1]=z;
}
  • 0
    Это не выглядит тривиально разрушаемым, но есть много анализа алгоритма, прежде чем его можно будет считать безопасным. Существует очень мало причин, чтобы не использовать что-то более тщательно проанализированное, если вам нужно безопасное шифрование.
  • 1
    Имеют ли слабости, перечисленные в Википедии для TEA , какие-либо указания на то, следует ли вам использовать их с учетом требуемых параметров безопасности (а мы не знаем)? И если вы хотите обеспечить 32-битные значения, используйте uint32_t (хотя и не управляемый стандартом, я еще не видел реализацию, которая не предоставляет его в <stdint.h> )
Показать ещё 3 комментария
Теги:
encryption
algorithm

1 ответ

1

Википедия (давай, человек, google!)

У TEA есть несколько недостатков. Наиболее заметно, что он страдает от эквивалентных ключей - каждый ключ эквивалентен трем другим, что означает, что размер эффективного ключа составляет всего 126 бит. В результате, TEA особенно плох как криптографическая хэш-функция. Эта слабость привела к способу взлома игровой консоли Microsoft Xbox, где шифр использовался как хеш-функция. TEA также подвержен атаке со связанными ключами, для которой требуется 2 ^ 23 выбранных открытого текста под парой связанных ключей, с временной сложностью 2 ^ 32. Из-за этих недостатков был разработан шифр XTEA.

  • 1
    Сорен, я сделал Google ... и прочитал википедию. Я добавил вопрос из-за правок, необходимых для его работы в OS X, по сравнению с кодом, предоставленным Страуструпом в его книге.
  • 0
    Конечно, вещь! Вот, пожалуйста: Википедия .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню