|
Шифрование прошивки, кто что использует |
|
|
|
 |
Ответов
|
Aug 19 2011, 09:29
|

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

|
Цитата(AlexandrY @ Aug 19 2011, 11:48)  Но для сжатия хотя бы в два раза бинарной прошивки объемом в пару сотен килобайт LZ подобным алгоритмом нужно минимум 64 Кб RAM. А для распаковки? Вообще, не в ту сторону тему увели. Лучшие архиваторы, используя мощь многоголовых гигагерцев и мегабайтов, пакуют среднестатистический ехе-шник примерно вдвое. Естественно, мелкоконтроллерам до этого как до луны. Ну и стоит ли геморрой свеч? Разве что как дополнительная степень защиты. Так для этого можно и попроще алгоритм применить. Вот в ПЛИСах другое дело. Там часто встречаются длинные последовательности нулей и единиц, и даже простейшие методы позволяют существенно пожать прошивку. 2ТС: ознакомьтесь для начала с атмеловскими аппликациями
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 19 2011, 10:41
|

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

|
QUOTE (MrYuran @ Aug 19 2011, 12:29)  Естественно, мелкоконтроллерам до этого как до луны. Да. QUOTE Ну и стоит ли геморрой свеч? Нет. QUOTE Разве что как дополнительная степень защиты. Так для этого можно и попроще алгоритм применить. Да QUOTE Вот в ПЛИСах другое дело. Там часто встречаются длинные последовательности н улей и единиц, и даже простейшие методы позволяют существенно пожать прошивку. Ну а поскольку у меня в прошивках контроллера встречается, как правило, прошивка FPGA, то пред шифровкой использую простейшее RLE подобное сжатие. QUOTE 2ТС: ознакомьтесь для начала с атмеловскими аппликациямиКода-то от него и отталкивался. Только там есть - как минимум одна ошибка при обработке нештатых ситуаций(забыл какая конкретно, поскольку сразу все начал переписывать); - все писано небрежно, а AES уж слишком в лоб  . AES подлежит оптимизации (однажды на форуме была стихийно возникшая тема в которой выкладывал эти исходники хоть как-то оптимизипрванные под AVR). Но в общем как отправная точка, или просто почитать документацию - годится. У меня к тому формату добавлено несколько команд, выходной файл сделан hex-образным.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 22 2011, 11:03
|

Гуру
     
Группа: Свой
Сообщений: 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. Все остальное без изменений.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 22 2011, 11:10
|

Гуру
     
Группа: Свой
Сообщений: 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() ?
|
|
|
|
|
Aug 22 2011, 11:45
|

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

|
Цитата(zltigo @ Aug 22 2011, 15:36)  Я теряюсь в понимании смысла написанного Вами  . Я выложил исходник. Можете откомпилировать и сравнить результат с оригинальным атмеловским. Обещаю, разница будет. Что Вы при этом называете заморачиваться я не понимаю  упс.. прошу прощения, Вы файл, вероятно, чуть позже приложили когда я писал ответ, то предполагал, что сказанное относится к оригинальному AVR231 теперь видна разница Спасибо
|
|
|
|
|
Aug 22 2011, 12:33
|

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

|
QUOTE (toweroff @ Aug 22 2011, 15:14)  Первый, я так понимаю, "родной" атмелевский, а что во втором? Наверняка определение KEY_COUNT, но что еще? Да. оно самое. Генерится автоматически тем, что у Атмела было под названием CREATOR. Выглядит так: CODE //-------------------------------------------------------------------------- // File: aes_data_usm3.h // Created: Sun Apr 27 17:15:16 2006
// Description: File contains the settings to configure the boot loader // according to the configurations used in the encrypted file. //--------------------------------------------------------------------------
#ifndef _AES_DATA_H #define _AES_DATA_H
#define PAGE_SIZE 512 #define FLASH_SIZE 131072 #define CRC_CHECK 1 #define SIGNATURE 0xXXXXXXXX #define FRAME_BUFFER_SIZE 532 #define INITIALVECTOR_3 0xXXXXXXXX #define INITIALVECTOR_2 0xXXXXXXXX #define INITIALVECTOR_1 0xXXXXXXXX #define INITIALVECTOR_0 0xXXXXXXXX #define KEY_COUNT 3 #define OWNER_STRING "USM3"
#endif //_AES_DATA_H //-------------------------------------------------------------------------- // Description: AES key table for a proper decryption of // the file encrypted using the same configurations. // Keys used: KEY1 = , , , , , // KEY2 = , , , , , // KEY3 = , , , , //--------------------------------------------------------------------------
#ifndef _AES_KEYS_H #define _AES_KEYS_H
const unsigned char kTable[32] = { 0xXX, 0x39, 0x58, 0x51, 0xXX, 0xb7, 0x3e, 0xXX, 0x9f, 0xc0, 0x60, 0xe7, 0xce, 0x8e, 0x1f, 0x6d, 0xba, 0x68, 0x1e, 0xac, 0x20, 0xdd, 0x10, 0x26, 0x83, 0xXX, 0x42, 0x2d, 0xca, 0x86, 0xXX, 0xXX, };
#endif //_AES_KEYS_H
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
toweroff Шифрование прошивки Aug 18 2011, 19:14 ILYAUL Цитата(toweroff @ Aug 18 2011, 23:14) Доб... Aug 18 2011, 19:36 toweroff Цитата(ILYAUL @ Aug 18 2011, 23:36) А как... Aug 18 2011, 19:54  AlexandrY Цитата(toweroff @ Aug 18 2011, 22:54) нав... Aug 19 2011, 06:22 yashok Я шифрую по алгоритму Triple DES (3DES). При залив... Aug 19 2011, 05:21  Tanya Цитата(AlexandrY @ Aug 19 2011, 11:48) Но... Aug 19 2011, 07:56   AlexandrY Цитата(Tanya @ Aug 19 2011, 10:56) А куск... Aug 19 2011, 08:15    =AK= Цитата(AlexandrY @ Aug 19 2011, 17:45) RC... Aug 19 2011, 08:23     AlexandrY Цитата(=AK= @ Aug 19 2011, 11:23) Мне это... Aug 19 2011, 08:35    Tanya Цитата(AlexandrY @ Aug 19 2011, 12:15) Ну... Aug 19 2011, 08:37     AlexandrY Цитата(Tanya @ Aug 19 2011, 11:37) Мне во... Aug 19 2011, 08:58      Tanya Цитата(AlexandrY @ Aug 19 2011, 12:58) В ... Aug 19 2011, 09:09     Harbinger Цитата(Tanya @ Aug 19 2011, 11:37) Мне во... Aug 20 2011, 04:02     =AK= Цитата(toweroff @ Aug 22 2011, 19:40) бол... Aug 22 2011, 10:38   AlexandrY Цитата(MrYuran @ Aug 19 2011, 12:29) Вооб... Aug 19 2011, 11:35 =AK= Цитата(toweroff @ Aug 19 2011, 16:55) хва... Aug 19 2011, 08:13 toweroff Спасибо всем за каменты
То есть, я так понимаю,
1... Aug 19 2011, 22:12 =AK= Цитата(toweroff @ Aug 20 2011, 07:42) 1. ... Aug 20 2011, 01:13 andrewlekar Вообще самое правильное для удаленной прошивки - п... Aug 22 2011, 05:39 cpl Цитата(andrewlekar @ Aug 22 2011, 09:39) ... Aug 22 2011, 06:11 Rst7 QUOTE Есть алгоритм UCL который как утверждается н... Aug 22 2011, 10:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|