реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Шифрование прошивки, кто что использует
MrYuran
сообщение Aug 19 2011, 09:29
Сообщение #16


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(AlexandrY @ Aug 19 2011, 11:48) *
Но для сжатия хотя бы в два раза бинарной прошивки объемом в пару сотен килобайт LZ подобным алгоритмом нужно минимум 64 Кб RAM.

А для распаковки?

Вообще, не в ту сторону тему увели. Лучшие архиваторы, используя мощь многоголовых гигагерцев и мегабайтов, пакуют среднестатистический ехе-шник примерно вдвое.
Естественно, мелкоконтроллерам до этого как до луны. Ну и стоит ли геморрой свеч? Разве что как дополнительная степень защиты. Так для этого можно и попроще алгоритм применить.
Вот в ПЛИСах другое дело. Там часто встречаются длинные последовательности нулей и единиц, и даже простейшие методы позволяют существенно пожать прошивку.

2ТС: ознакомьтесь для начала с атмеловскими аппликациями


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 19 2011, 10:41
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (MrYuran @ Aug 19 2011, 12:29) *
Естественно, мелкоконтроллерам до этого как до луны.

Да.
QUOTE
Ну и стоит ли геморрой свеч?

Нет.
QUOTE
Разве что как дополнительная степень защиты. Так для этого можно и попроще алгоритм применить.

Да
QUOTE
Вот в ПЛИСах другое дело. Там часто встречаются длинные последовательности н улей и единиц, и даже простейшие методы позволяют существенно пожать прошивку.

Ну а поскольку у меня в прошивках контроллера встречается, как правило, прошивка FPGA, то пред шифровкой использую простейшее RLE подобное сжатие.
QUOTE
2ТС: ознакомьтесь для начала с атмеловскими аппликациями

Кода-то от него и отталкивался. Только там есть
- как минимум одна ошибка при обработке нештатых ситуаций(забыл какая конкретно, поскольку сразу все начал переписывать);
- все писано небрежно, а AES уж слишком в лоб sad.gif. AES подлежит оптимизации (однажды на форуме была стихийно возникшая тема в которой выкладывал эти исходники хоть как-то оптимизипрванные под AVR).

Но в общем как отправная точка, или просто почитать документацию - годится.
У меня к тому формату добавлено несколько команд, выходной файл сделан hex-образным.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 19 2011, 11:35
Сообщение #18


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(MrYuran @ Aug 19 2011, 12:29) *
Вообще, не в ту сторону тему увели. Лучшие архиваторы, используя мощь многоголовых гигагерцев и мегабайтов, пакуют среднестатистический ехе-шник примерно вдвое.
Естественно, мелкоконтроллерам до этого как до луны.



Плохо сжимающаяся прошивка говорит о ее низкой избыточности.
Т.е. в ней мало ресурсов, мало отладочной информации.
Я бы предположил, что в такой прошиве вообще мало фичей. Но тогда на кой ее шифровать? biggrin.gif

С другой стороны сжатие скрывает вариации размера прошивки от версии к версии.
Вломщики как правило сразу ведут дифференциальный анализ прошивок, т.е. сравнение разных версий.
На основании размеров они решают че взламывать, а че нет. Где инженерные версии, а где релизные и т.д.

На моих платформах всегда применяется сжатие для фирмваре, и даже несколько алгоритмов.
И как правило коэффициент сжатия больше 2-х даже на простых алгоритмах типа LZSS.
Поскольку часто апгрейд идет через GSM и другие медленные каналы то любые лишние 100K чувствуются.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 19 2011, 22:12
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Спасибо всем за каменты
То есть, я так понимаю,
1. не столько важно зашифровать исходник, чем запаковать и зашифровать чем-то исходник
2. Просто зашифрованная прошивка тем же AES, 3DES поддастся анализу? (текстовых блоков нет, передаваемых подряд констант по внешнему каналу максимум 128 бит уже в рабочем девайсе)
3. Сама прошивка ~64 KB
4. Перестановка блоков прошивки (например, отдельное шифрование+сжатие блоков по 512,1К.2К) для каждого конкретного девайса может дополнительно помочь?
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 20 2011, 01:13
Сообщение #20


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(toweroff @ Aug 20 2011, 07:42) *
1. не столько важно зашифровать исходник, чем запаковать и зашифровать чем-то исходник

Что важно, а что нет - решать вам, под задачу. Если надо экономить время при передаче массива, то сжимать важно, если нет - то нафиг надо, только время зря тратить на распаковку и на написание сложного бутлодера.

Цитата(toweroff @ Aug 20 2011, 07:42) *
2. Просто зашифрованная прошивка тем же AES, 3DES поддастся анализу? (текстовых блоков нет, передаваемых подряд констант по внешнему каналу максимум 128 бит уже в рабочем девайсе)

Это все из категории "неуловимого Джо" - никто вашу прошивку вообще анализировать не будет, если увидят, что она зашифрована. Анализу поддаются данные, для которых набрана статистика, а одиночный блок ломать - только время тратить.

Цитата(toweroff @ Aug 20 2011, 07:42) *
4. Перестановка блоков прошивки (например, отдельное шифрование+сжатие блоков по 512,1К.2К) для каждого конкретного девайса может дополнительно помочь?

Нет.

Среди множества с виду "полезных для шифровки" действий значительная их часть не приносит ровно никакой пользы. Насколько я понял, это вещи довольно неочевидные доже для опытных специалистов, поэтому каждый серьезный способ шифрования подвергается долгому анализу.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Aug 20 2011, 04:02
Сообщение #21


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Цитата(Tanya @ Aug 19 2011, 11:37) *
Мне вот кажется, что прошивки мало отличаются одна от другой...

Намёк понятен. sm.gif
Передавать не зашифрованную прошивку, а зашифрованную "разницу".
Это реализовывалось и в основном работает.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Aug 22 2011, 05:39
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Вообще самое правильное для удаленной прошивки - передавать скрипт для скриптового движка. При таком решении вся прошивка может байт 100 занимать.
Go to the top of the page
 
+Quote Post
cpl
сообщение Aug 22 2011, 06:11
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(andrewlekar @ Aug 22 2011, 09:39) *
Вообще самое правильное для удаленной прошивки - передавать скрипт для скриптового движка. При таком решении вся прошивка может байт 100 занимать.

Что-то не совсем понятно, поясните как будет работать обновление ?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 22 2011, 10:10
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(zltigo @ Aug 19 2011, 14:41) *
AES подлежит оптимизации (однажды на форуме была стихийно возникшая тема в которой выкладывал эти исходники хоть как-то оптимизипрванные под AVR).

можно посмотреть? полазил поиском AES* - пересмотрел несколько страниц, не нашел
хотя, конечно, более интересуют реализации, заточенные под 32-бит архитектуру
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 22 2011, 10:38
Сообщение #25


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(toweroff @ Aug 22 2011, 19:40) *
более интересуют реализации, заточенные под 32-бит архитектуру


ChaCha выглядит привлекательно. Salsa20/12 тоже неплохо.

Цитата(cpl @ Aug 22 2011, 15:41) *
как будет работать обновление ?

Прикладное ПО выполнено в виде скрипта. Новый скрипт загрузил - вот и обновился.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 22 2011, 10:41
Сообщение #26


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Есть алгоритм UCL который как утверждается не требует памяти на декомпрессию.
Но не пробовал.


Ага-ага. Щас. Я глянул - LZ как LZ. Причем по древним боянным технологиям хранения ссылок назад. С поддержкой двухбайтовых ссылок назад. Я таких написался пятнадцать лет назад дофига.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 11:03
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (toweroff @ Aug 22 2011, 13:10) *
можно посмотреть? полазил поиском AES* - пересмотрел несколько страниц, не нашел
хотя, конечно, более интересуют реализации, заточенные под 32-бит архитектуру

Да, там действительно была какая-то стихийно возникшая тема по оптимизации загрузчика, где на этом атмеловском исходнике тренировались.
А этот атмеловский исходник живущий у меня под ARM, с оптимизацией, но помнится, без какой-то особой оптимизации конкретно под ARM - в приложении. Хотя, возможно, это не последний вариант - то, что сейчас нашлось на одном из компьютеров.
memcpy_z(). замените на memcpy(). bint для ARM это int. Для AVR bint это unsigned char. Все остальное без изменений.
Прикрепленные файлы
Прикрепленный файл  aes_atmel.rar ( 2.26 килобайт ) Кол-во скачиваний: 68
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 22 2011, 11:10
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(zltigo @ Aug 22 2011, 15:03) *
Да, там действительно была какая-то стихийно возникшая тема по оптимизации загрузчика, где на этом атмеловском исходнике тренировались.
А этот атмеловский исходник живущий у меня под ARM, с оптимизацией, но помнится, без какой-то особой оптимизации конкретно под ARM - в приложении. Хотя, возможно, это не последний вариант - то, что сейчас нашлось на одном из компьютеров.
memcpy_z(). замените на memcpy(). bint для ARM это int. Для AVR bint это unsigned char. Все остальное без изменений.

то есть, вся адаптация под ARM того самого AVR231 сводится только к замене функции memcpy_z() ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 11:20
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (toweroff @ Aug 22 2011, 14:10) *
то есть, вся адаптация под ARM того самого AVR231 сводится только к замене функции memcpy_z() ?

Разумеется нет sm.gif sm.gif sm.gif. просто я правил это изрядно давно, когда memcpy() у IAR было чрезмерно тормозным. Посему использовалась самодельная. Сейчас это без надобности.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 22 2011, 11:31
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(zltigo @ Aug 22 2011, 15:20) *
Разумеется нет

итого
берем атмелевский пример и не заморачиваемся? компилятор сам разберется с оптимизацией байтовых операций? sm.gif
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01512 секунд с 7
ELECTRONIX ©2004-2016