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

 
 
> Шифрование прошивки, кто что использует
toweroff
сообщение Aug 18 2011, 19:14
Сообщение #1


Гуру
******

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



Добрый день!
Есть бут, который принимает прошивку и пишет во внутреннюю флеш
Соответственно, хочется ее зашифровать
Кто что использует для этого и насколько эффективны и сложны в реализации разные методы?

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Aug 19 2011, 07:25
Сообщение #2


Гуру
******

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



у меня LPC2929
со сжатием интересно, спасибо за совет
единственное - памяти на борту только внутренняя контроллера, часть которой использутся под буферы
хватит оставшихся 16-20 кб на распаковку и дешифрацию?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 19 2011, 07:48
Сообщение #3


Ally
******

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



Цитата(toweroff @ Aug 19 2011, 10:25) *
у меня LPC2929
со сжатием интересно, спасибо за совет
единственное - памяти на борту только внутренняя контроллера, часть которой использутся под буферы
хватит оставшихся 16-20 кб на распаковку и дешифрацию?


16 кБ это разве что на RLE алгоритм хватит.
Можно конечно в алгоритмах сжатия регулировать требуемый объем памяти.
Но для сжатия хотя бы в два раза бинарной прошивки объемом в пару сотен килобайт LZ подобным алгоритмом нужно минимум 64 Кб RAM.

Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 19 2011, 09:29
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
toweroff
сообщение Aug 22 2011, 10:10
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
zltigo
сообщение Aug 22 2011, 11:03
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #10


Гуру
******

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



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

итого
берем атмелевский пример и не заморачиваемся? компилятор сам разберется с оптимизацией байтовых операций? sm.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 11:36
Сообщение #11


Гуру
******

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



QUOTE (toweroff @ Aug 22 2011, 14:31) *
итого
берем атмелевский пример и не заморачиваемся? компилятор сам разберется с оптимизацией байтовых операций? sm.gif

Я теряюсь в понимании смысла написанного Вами sad.gif. Я выложил исходник. Можете откомпилировать и сравнить результат с оригинальным атмеловским. Обещаю, разница будет.
Что Вы при этом называете заморачиваться я не понимаю sad.gif


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


Гуру
******

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



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

упс.. прошу прощения, Вы файл, вероятно, чуть позже приложили
когда я писал ответ, то предполагал, что сказанное относится к оригинальному AVR231
теперь видна разница
Спасибо
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 12:08
Сообщение #13


Гуру
******

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



QUOTE (toweroff @ Aug 22 2011, 14:45) *
упс.. прошу прощения, Вы файл, вероятно, чуть позже приложили

Да, при первой отправке руганулся на расширение sad.gif - у меня на автомате создаются архивы *.rar.archive


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


Гуру
******

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



Цитата(zltigo @ Aug 22 2011, 16:08) *

тогда последний вопрос по Вашему примеру - там подключаются два файла - aes.h, aes_data.h
Первый, я так понимаю, "родной" атмелевский, а что во втором? Наверняка определение KEY_COUNT, но что еще?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 22 2011, 12:33
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 25 2011, 20:34
Сообщение #16


Гуру
******

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



Цитата(zltigo @ Aug 22 2011, 16:33) *
Да. оно самое. Генерится автоматически тем, что у Атмела было под названием CREATOR.

ему (креатору) подсовывается конфиг
там ключи должны быть "with parity bits inserted"
непонятно - вручную дополнять, или что-то есть для автоматизации?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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