Jump to content

Treyfer

Treyfer
Общий
Дизайнеры Гидеон Юваль
Впервые опубликовано 1997
Деталь шифрования
Размеры ключей 64 бита
Размеры блоков 64 бита
Раунды 32
Лучший публичный криптоанализ
Атака скольжением с использованием 2 32 известные открытые тексты и 2 44 работа завершается успешно в течение любого количества раундов

В криптографии разработанный Трейфер — это блочный шифр / MAC, в 1997 году Гидеоном Ювалем. ориентированный на приложения смарт-карт Алгоритм, , чрезвычайно прост и компактен; его можно реализовать всего за 29 байт 8051 машинного кода . [1]

Трейфер имеет довольно небольшой размер ключа и размер блока по 64 бита каждый. Все операции байтово-ориентированы, и имеется единственный S-box размером 8×8 бит . S-блок остается неопределенным; реализация может просто использовать любые данные, доступные в памяти. В каждом раунде к каждому байту добавляется значение S-блока, состоящее из суммы ключевого байта и предыдущего байта данных, затем оно поворачивается на один бит влево. В конструкции делается попытка компенсировать простоту трансформации патронов за счет использования 32 патронов.

Из-за простоты своего расписания ключей , использующего одни и те же восемь ключевых байтов в каждом раунде, Трейфер был одним из первых шифров, которые оказались восприимчивыми к атаке со скольжением . Этот криптоанализ, который не зависит от количества раундов и выбора S-box, требует 2 32 известные открытые тексты и 2 44 время вычислений.

Реализация [ править ]

Простую реализацию Трейфера можно сделать следующим образом. [2]

#include <stdint.h>

#define NUMROUNDS 32
extern uint8_t const sbox[256];

void treyfer_encrypt(uint8_t * text[8], uint8_t const key[8]) {
    unsigned i;
    uint8_t t = *text[0];

    for (i = 0; i < 8 * NUMROUNDS; i++) {
        t += key[i % 8];
        t = sbox[t] + *text[(i + 1) % 8];
        t = (t << 1) | (t >> 7);        /* Rotate left 1 bit */
        *text[(i + 1) % 8] = t;
    }
}

void encrypt(uint8_t * text[8], uint8_t const key[8]) {
    unsigned int i = 0;
    unsigned int j = 0;
    uint8_t t = 0;

    t = text[0];
    for (j = 0; j < NUMROUNDS; j++) {
        for (i = 0; i < 8; i++) {
            t = t + key[i];
            t = sbox[t] + *text[(i + 1) % 8];
            t = (t << 1) | (t >> 7);
            *text[(i + 1) % 8] = t;
        }
    }
}

void decrypt(uint8_t *text[8], uint8_t const key[8]) {
    int i = 0;
    int j = 0;
    uint8_t top = 0;
    uint8_t bottom = 0;

    for (j = 0; j < NUMROUNDS; j++) {
        for (i = 7; i >= 0; i--) {
            top = *text[i] + key[i];
            top = sbox[top];
            bottom = *text[(i + 1) % 8];
            bottom = (bottom >> 1) | (bottom << 7);
            *text[(i + 1) % 8] = bottom - top;
        }
    }
}

См. также [ править ]

Ссылки [ править ]

  1. ^ «Атака на Трейфера по связанным ключам» (PDF) . encs.concordia.ca . Проверено 1 апреля 2024 г.
  2. ^ «C реализация Трейфера» . Stackoverflow.com . Проверено 27 ноября 2022 г.


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: eac7c630ef2f9b6a816cd941e4be1de9__1716319800
URL1:https://arc.ask3.ru/arc/aa/ea/e9/eac7c630ef2f9b6a816cd941e4be1de9.html
Заголовок, (Title) документа по адресу, URL1:
Treyfer - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)