Важная информация

User Tag List

Показано с 1 по 8 из 8

Тема: Шифр AES-128: компактная реализация для Z80 (1001 байт кода)

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    Cool Шифр AES-128: компактная реализация для Z80 (1001 байт кода)

    Дорогие друзья, предлагаю вам реализацию современного криптостойкого, стандартного шифра AES (Rijndael) для Z80.

    Реализация получилась очень компактной: всего 1001 байт кода (из них 512 - таблицы замен); для работы требуется 192 байта оперативной памяти + несколько уровней вызовов подпрограмм на стеке. Не используется самомодифицирующийся код, так что библиотеку можно размещать в ПЗУ или защищенной памяти. Можно работать с разрешенными прерываниями, библиотека их не запрещает. По скорости - я очень старался оптимизировать, если это не приводило к значительному росту размера кода. Улучшить быстродействие можно лишь размотав циклы и/или использовав прожорливые по оперативной памяти методы оптимизации этого шифра.

    Все подпрограммы были протестированы на тестовых данных, хотя любому, кто будет их использовать, рекомендуется провести собственные тесты, сравнив результаты с реализациями этого шифра на PC.

    Исходник компилируется ассемблером sjasmplus.

    AES-128 - это симметричный блочный шифр с длиной блока 128 бит (16 байт) и такой же длиной ключа. Моя библиотека реализует только базовый алгоритм ECB (режим простой замены), который по заданному блоку открытого текста (plaintext) и ключу формирует блок шифротекста или выполняет обратную операцию. При заданном ключе каждой комбинации из 16 байт исходного текста соответствует комбинация из (других) 16 байт шифротекста, и наоборот. Если пытаться шифровать в таком режиме длинные файлы - то никакие блочные шифры (в том числе AES) не обеспечивают достаточного сокрытия закономерностей в исходных данных. Например, если в исходном файле присутствует длинный блок нулей - то в зашифрованном в режиме ECB файле будут повторяющиеся последовательности из 16 байт. Для преодоления этого недостатка необходимо реализовать более сложные схемы работы шифра, например CBC (режим сцепления блоков шифротекста).

    Библиотека содержит три функции:
    key_expansion - расширение ключа. Должна вызываться перед началом работы с новым ключом.
    aes_encrypt - шифрование блока. Перед вызовом необходимо поместить блок открытого текста в буфер. В этом же буфере возвращается шифротекст.
    aes_decrypt - расшифрование блока. Перед вызовом необходимо поместить блок шифротекста в буфер. В этом же буфере возвращается расшифрованный текст.

    Если будут вопросы - обращайтесь.

    Хочу заметить, что AES является относительно быстрым из стойких современных шифров, поэтому, если скорость работы библиотеки вас не очень порадует - имейте в виду, что это одна из лучших альтернатив, если требуется сильное шифрование. Использование же доморощенных, самодельных шифров серьезно ставит под угрозу безопасность данных, даже если результат самодельного шифрования выглядит "кашей". Об этом написаны десятки статей и глав в книгах. Так что я предупредил.

    Реализация AES - это лишь один кирпич в здании по-настоящему защищенной системы. Поэтому, если хотите надежно защитить данные - читайте матчасть по ссылкам. В частности, правильное обращение с ключами, паролями и т.д. - все это очень важно для безопасности, но полностью выходит за рамки моей библиотеки.
    Вложения Вложения
    • Тип файла: zip aes.zip (4.4 Кб, Просмотров: 625)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ЮТ-88: Реализация на ПЛИС (DE1)
    от Santechnik в разделе ЮТ-88
    Ответов: 61
    Последнее: 13.05.2022, 08:22
  2. Владельцам ПЭВМ "Байт" и "Байт-01" посвящается...
    от BYTEMAN в разделе Несортированное железо
    Ответов: 24
    Последнее: 20.09.2010, 23:25
  3. Как вытащить кусок кода?
    от PicNov76 в разделе Программирование
    Ответов: 7
    Последнее: 31.05.2010, 18:01
  4. Помощь с оптимизацией кода
    от moroz1999 в разделе Программирование
    Ответов: 7
    Последнее: 02.06.2008, 14:19
  5. Как из кода получить текущее значение PC?
    от jim в разделе Программирование
    Ответов: 21
    Последнее: 01.06.2006, 11:12

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •