Вопрос

Я использовал хорошее общественное достояние Реализация DES на С++ раньше, но теперь мне нужна простая, базовая и быстрая криптография для встроенной системы.

Он не обязательно должен быть неуязвимым, но он должен мешать случайному хакеру (т. е. не должно быть ничего, что можно было бы использовать для получения денег или кражи личных данных, кроме другой личной информации, передаваемой на карты памяти, которая могла бы потеряться или попасть в чужие руки). ).

Из-за ограниченной памяти этого процессора я бы предпочел что-то, что может кодировать дискретными фрагментами (512 байт или меньше).

Проект не является открытым исходным кодом и не будет использовать библиотеки, что, как я знаю, еще больше ограничивает возможности - лучше всего общедоступное достояние, но BSD/apache/etc, вероятно, приемлемо...

Я не решаюсь свернуть свой собственный (как и должно быть со всеми).

-Адам

Это было полезно?

Решение

Если вы просто ищете запутывание, XOR с секретной константой — это самая маленькая реализация, которую вы найдете.Также было бы тривиально взломать его, поскольку он уязвим для частотного анализа при поиске наиболее распространенных английских букв.

Если вам нужен более сильный алгоритм, я бы порекомендовал взглянуть на иглобрюхую рыбу, которая, как правило, маленькая и быстрая.Для таблиц по-прежнему требуется память, но, надеюсь, это подойдет для вашего приложения.

Брюс Шнайер открыто разместил алгоритм Blowfish в открытом доступе, отказавшись от патентов.Вы можете получить его реализацию на C (и другие реализации) по адресу его сайт.Этот источник не содержит уведомления об авторских правах.Я подозреваю, что исходный код тоже находится в открытом доступе, но может потребоваться дополнительная проверка.

Другие советы

RC4 это просто и быстро.

Тот же человек, который выпустил реализацию C++ DES, также выпустил Алгоритм шифрования C Rijndael - Мне следовало еще немного покопаться на его сайте. Крошечный алгоритм шифрования (научная статья здесь) также имеет очень небольшой объем реализации на языке C.

Иглобрюхая рыба выглядит хорошо и, вероятно, является лучшим из этих трех с точки зрения безопасности.

Я начну с TEA (небольшой объем кода и памяти), но завершу его, чтобы при необходимости позже можно было перейти к другому алгоритму.У него есть заметные недостатки в более ранних реализациях, но для этого проекта это может быть даже излишним.

-Адам

Вы можете использовать Генератор псевдослучайных чисел (PRNG) для создания повторяемой последовательности слов, которую затем вы выполняете XOR с соответствующим словом в потоке данных.(Передатчику и приемнику необходимо заранее знать параметры, используемые для генерации псевдослучайной последовательности.)

Этот подход не является нерушимым, но он представляет собой шаг вперед по сравнению с использованием константы для XOR, а PRNG очень просты в реализации и обычно состоят из одного умножения и операции по модулю для каждого слова.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top