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

 
 
> Я написал загрузчик, Немного похвастаюсь
Firer
сообщение Mar 7 2006, 18:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 7-01-05
Пользователь №: 1 832



Для AVR, с шифрованием по ГОСТ28147-89,
помещается в блок 2kWord, грузит файл из UART.
+ утилитка под Windows для преобразования .hex файлов FLASH и EEPROM в шифрованный файл, и утилитка для пользователя для загрузки в кристалл.
Целый год мечтал сделать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Mar 8 2006, 05:29
Сообщение #2


Гуру
******

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



Цитата(osnwt @ Mar 8 2006, 00:05) *
Вопрос лишь в том: "Точно ли такой алгоритм используется, скажем, в стандартной библиотеке C"?
...
В лучшем кое-где используются отдельные датчики случайных чисел, основанные на физических принципах (шумы p-n перехода, к примеру). Вряд ли в бытовых PC, конечно. Но можно было бы наверняка придумать что-то получше.


Алгоритм не стандартизирован никак. Более того, никак не гарантирована его псевдослучайность
для повторения. Предыдущий пример взят из реальной жизни - это Borland.
Ниже вариант 'послиднее', это IAR. Можете продолжить исследования - на более доступных
в исходных текстах библиотеках.

Код
#define TSIZ    32    /* must be power of two */
#define TMSK    (TSIZ - 1)
#define XRND(x)    (x) * 1664525L + 1013904223L

_TLS_DATA_DEF(_IMPLICIT_EXTERN, char, _Randinit, 0);
_TLS_DATA_DEF(_IMPLICIT_EXTERN, unsigned long, _Randseed, 1);
_TLS_DATA_DEF(static, unsigned long, idx, 0);
_TLS_ARR_DEF(static, unsigned long, rv, TSIZ);

int (rand)(void)
    {    /* compute pseudo-random value */
    char *pinit = _TLS_DATA_PTR(_Randinit);
    unsigned long *pseed = _TLS_DATA_PTR(_Randseed);
    unsigned long *pidx = _TLS_DATA_PTR(idx);
    unsigned long *prv = _TLS_ARR(rv);
    int j;

    if (*pinit == 0)
        {    /* warm up, then initialize shuffle table */
        for (j = 0; j < 8; ++j)
            *pseed = XRND(*pseed);
        for (j = 0; j < TSIZ; ++j)
            prv[j] = (*pseed = XRND(*pseed));
        *pidx = prv[TSIZ - 1];
        *pinit = 1;
        }
    *pseed = XRND(*pseed);
    j = *pidx & TMSK;
    *pidx = prv[j];
    prv[j] = *pseed;
#if _ILONG
    return (*pidx & RAND_MAX);
#else /* _ILONG */
    return ((*pidx >> 16) & RAND_MAX);
#endif /* _ILONG */
}

Цитата(osnwt @ Mar 8 2006, 00:05) *
В лучшем кое-где используются отдельные датчики случайных чисел, основанные на физических принципах (шумы p-n перехода, к примеру). Вряд ли в бытовых PC, конечно. Но можно было бы наверняка придумать что-то получше.

Я в курсе. Осталось решить вопрос, как Вы сможете повторить сию последовательность для
расшифровки :-))).
Ну а 'получше' уже придуманы, только для сишного rand они не используются.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
osnwt
сообщение Mar 8 2006, 11:18
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Цитата(zltigo @ Mar 8 2006, 07:29) *
Цитата(osnwt @ Mar 8 2006, 00:05) *

Вопрос лишь в том: "Точно ли такой алгоритм используется, скажем, в стандартной библиотеке C"?


Алгоритм не стандартизирован никак. Более того, никак не гарантирована его псевдослучайность
для повторения. Предыдущий пример взят из реальной жизни - это Borland.

Да я это всё понимаю. Делать аппаратные датчики в ширпотребовских PC никто не станет.

Цитата
Можете продолжить исследования - на более доступных в исходных текстах библиотеках.

Да нет, спасибо smile.gif Я же говорил, что не являюсь специалистом по криптографии.

Цитата
Осталось решить вопрос, как Вы сможете повторить сию последовательность для
расшифровки :-))).

Ну, это вопрос не ко мне. В текущих аппноутах это используется лишь как шум, а не как средство защиты. Основная защита тут - огромное количество переборов, если исключить выделяющиеся паттерны и т.п.

Но вообще-то, такие вещи классически ломаются совсем иначе. Догадываясь, что могло потенциально использоваться для написания такого бута, можно сконцентрировать атаку совсем на другом направлении. Например, на потенциальном переполнении входного буфера, что в исходниках от Atmel представляет вполне очевидную дыру. Правда, получится ли ей воспользоваться - еще вопрос. Но сформировать входной фрейм так, чтобы загрузчик улетел в определенном направлении (на определенный адрес) можно вполне. И какое при этом будет его состояние - неизвестно. Потому я предпочел поправить такие вот места, чем ломать голову над правильностью ключей. Уж мои-то самоделки явно ломать никто не станет - дешевле купить готовое или разработать самому :-)

Цитата
Ну а 'получше' уже придуманы, только для сишного rand они не используются.

Когда-то и 3DES был запрещен, поскольку госагенства не имели ресурсов для его вскрытия. Сейчас с этим проще. Может, и продвинутые алгоритмы и в стандартные библиотеки когда-нибудь попадут.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Firer   Я написал загрузчик   Mar 7 2006, 18:59
- - makc   А теперь можно нескромный вопрос - где ключики дер...   Mar 7 2006, 19:23
- - Firer   Ключи шифрования задаются в программе для подготов...   Mar 7 2006, 19:39
|- - osnwt   Цитата(Firer @ Mar 7 2006, 21:39) ... Ко ...   Mar 7 2006, 20:29
|- - Evgeny_CD   Цитата(Firer @ Mar 7 2006, 22:39) Ко всем...   Mar 7 2006, 20:52
- - Firer   osnwt: ничем, только другой алгоритм шифрования и ...   Mar 7 2006, 20:54
|- - osnwt   Цитата(Firer @ Mar 7 2006, 22:54) А как т...   Mar 7 2006, 21:10
- - Firer   Evgeny_CD: Данный вопрос не беспокоит, мы не радар...   Mar 7 2006, 21:05
- - zltigo   Цитата(osnwt @ Mar 7 2006, 23:10) Реально...   Mar 7 2006, 21:46
|- - osnwt   Цитата(zltigo @ Mar 7 2006, 23:46) Впечат...   Mar 7 2006, 22:05
- - Firer   osnwt: потрясающе красивое решение!   Mar 7 2006, 22:44
|- - osnwt   Цитата(Firer @ Mar 8 2006, 00:44) osnwt: ...   Mar 7 2006, 23:01
|- - Grape   Цитата(osnwt @ Mar 8 2006, 02:01) А Chris...   Mar 8 2006, 11:41
|- - osnwt   Цитата(Grape @ Mar 8 2006, 13:41) а можно...   Mar 8 2006, 12:12
- - Evgeny_CD   Уж коль скоро тут была затронута тема случайных чи...   Mar 9 2006, 07:24
- - at90   Я в своём загрузчике сделал простое шифрование. Се...   Mar 9 2006, 12:05
|- - Evgeny_CD   Цитата(at90 @ Mar 9 2006, 15:05) Я в своё...   Mar 9 2006, 13:15
|- - osnwt   Цитата(Evgeny_CD @ Mar 9 2006, 15:15) В о...   Mar 9 2006, 13:48
|- - Evgeny_CD   Цитата(osnwt @ Mar 9 2006, 16:48) А я слы...   Mar 9 2006, 16:47
|- - defunct   Цитата(Evgeny_CD @ Mar 9 2006, 18:47) Цит...   Mar 9 2006, 18:11
|- - Evgeny_CD   Цитата(defunct @ Mar 9 2006, 21:11) не со...   Mar 10 2006, 17:21
- - at90   Нет прошивка на куски не разбивается. Таблица одна...   Mar 9 2006, 13:53
|- - makc   Цитата(at90 @ Mar 9 2006, 16:53) Нет прош...   Mar 9 2006, 13:58
|- - osnwt   Цитата(at90 @ Mar 9 2006, 15:53) Работает...   Mar 9 2006, 14:05
- - Petka   Ответ автору топика: выражаю огромный респект, что...   Mar 9 2006, 15:16
|- - makc   Цитата(Petka @ Mar 9 2006, 18:16) Ответ а...   Mar 10 2006, 17:11
|- - Petka   Цитата(makc @ Mar 10 2006, 20:11) Цитата(...   Mar 11 2006, 12:50
- - osnwt   Цитата(Firer @ Mar 7 2006, 20:59) Для AVR...   Mar 9 2006, 15:45
- - lvitaly   ГОСТ28147-89 не имеет отношения к эллиптическим кр...   Mar 11 2006, 13:58
- - Petka   ЦитатаМожет быть Вы путаете ГОСТ28147-89 с ГОСТ Р ...   Mar 11 2006, 17:36
- - lvitaly   Рановато Вы восхваляете алгоритм, основанный на эл...   Mar 12 2006, 03:26


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

 


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


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