|
dyid_omsi
|
||||||||||||||||
Алгоритм ГОСТ ( простой) для STM3212.11.2015, 13:14. Показов 28250. Ответов 49
Метки нет (Все метки)
|
||||||||||||||||
| 12.11.2015, 13:14 | |
|
Ответы с готовыми решениями:
49
ГОСТ 28147-89 Режим простой замены. Алгоритм Алгоритм шифрования ГОСТ 28147-89. Режим простой замены Алгоритм блочного шифрования ГОСТ 28147-89 в режиме простой замены |
|
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 117
|
||
| 12.11.2015, 21:12 | ||
static const char Table[8][16]={ {0x04,0x0a,0x09,0x02,0x0d,0x08,0x00,0x0e ,0x06,0x0B,0x01,0x0c,0x07,0x0f,0x05,0x03 }, {0x0e,0x0b,0x04,0x0c,0x06,0x0d,0x0f,0x0a ,0x02,0x03,0x08,0x01,0x00,0x07,0x05,0x09 }, {0x05,0x08,0x01,0x0d,0x0a,0x03,0x04,0x02 ,0x0e,0x0f,0x0c,0x07,0x06,0x00,0x09,0x0b }, {0x07,0x0d,0x0a,0x01,0x00,0x08,0x09,0x0f ,0x0e,0x04,0x06,0x0c,0x0b,0x02,0x05,0x03 }, {0x06,0x0c,0x07,0x01,0x05,0x0f,0x0d,0x08 ,0x04,0x0a,0x09,0x0e,0x00,0x03,0x0b,0x02 }, {0x04,0x0b,0x0a,0x00,0x07,0x02,0x01,0x0d ,0x03,0x06,0x08,0x05,0x09,0x0c,0x0f,0x0e }, {0x0d,0x0b,0x04,0x01,0x03,0x0f,0x05,0x09 ,0x00,0x0a,0x0e,0x07,0x06,0x08,0x02,0x0c }, {0x01,0x0f,0x0d,0x00,0x05,0x07,0x0a,0x04 ,0x09,0x02,0x03,0x0e,0x06,0x0b,0x08,0x0c }}; //Ключ unsykned int NewKey[8]={123,456,789,1011,1213,1415,1617,1819}; /*кодирование Dat - буфер,выравненный по 32 байт size размер в блоках по 64 бита mode - 0 кодировать 1 раскодировать */ void Crupt(unsykned int *Dat,unsykned int *Key,char size,char mode) { //таблица таблиц подстановки. имеем 1 копию ключа, таблица говорит //какие элементы на каком шаге использовать static const char KeyMap[2][32]={ {0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3 ,4,5,6,7,7,6,5,4,3,2,1,0}, {0,1,2,3,4,5,6,7,7,6,5,4,3,2,1,0,7,6,5,4 ,3,2,1,0,7,6,5,4,3,2,1,0}}; unsykned char Step,m,i; unsykned int L,R,S,K; while (size) { L= Dat[0]; R= Dat[1]; for(Step=0;Step<32;Step++) { // ключ текущего шага K= Key[KeyMap[mode][Step]]; S= R+K;//сумма //подстановка for (m=0;m<8;m++) { i=(char) S&0x0f; //возьмем 4 бита S&=~0xf; //сбросим младшие 4 бита S|= (Table[m][i])&0x0f; //берем 4 бита подстановки __asm {ror S,4} //провернем вправо на 4 бита } __asm {ror S,21} //провернем влево на 11 бита K=S^L; //xor левый и результат L=R; R=K; } //меняем местами младший и старший Dat[0]=R; Dat[1]=L; Dat+=2; //следующий блок size--; } } Вы хвастаетесь или спрашиваете ?
0
|
||
|
0 / 0 / 0
Регистрация: 20.07.2012
Сообщений: 620
|
|
| 13.11.2015, 04:50 | |
|
Делится, я думаю... Хорошо б еще сказали, что это такое.
0
|
|
|
0 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 117
|
||
| 13.11.2015, 13:00 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
|
| 14.11.2015, 10:56 | |
|
Да уж...
Я понимаю, краткость - сестра таланта, но хотелось бы не столь лаконичного описания. А ещё есть такое понятие, как примеры применения (example) ... И вообще - что за ГОСТ такой и где применяется?
0
|
|
|
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|
| 14.11.2015, 11:02 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 488
|
|
| 26.11.2015, 08:20 | |
|
Вот применения:
1. обновление прошивки клинту. Выдаём файл с зашифрованной прошивкой, а ключ для расшифровки внутри контроллера с Readout Protection. 2. зашифрованный протокол обмена между устройствами, которые имеют ключ НО я пришёл к выводу, что нужно делать свои мудрёные алгоритмы. Там могут быть перестановки бит с плавающей длиной слова в битах + лишние биты с распределением вероятности как у основных + нелинейная хрень с нестандартным округлением. А когда алгоритм шифрования известен, то какой-нибудь увлечённый человек возмёт видекарту и за пару месяцев додумается как оно работает. Или кто-нибудь нобелевку внезапно получит по расшифровке на калькуляторе за 1мс чего-то, что ранее считалось супер-надёжным (математически доказанным!). Давайте посмотрим сколько из нас разбирающихся в самых последних теориях матанализа. На форумах днями спорят о доказательствах того, что 2+2=5. А щас ещё эти биткоины, спец процессоры. Исходник интересный, даже asm есть, если скорость критична. Для надежности нужно добавить поверх чего-нибудь своего.
0
|
|
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
| 26.11.2015, 10:32 | |
|
Защиту обычно делают не "на века", а на время что бы расшифровка оказалась дольше создания аналогичной программы или потери актуальности данных. Т.ч. особо извращаться особого смысла обычно нет.
И я в свое время делал аналог этого алгоритма на асме для авр. Работал, но был довольно медленный. Для расшифровки на лету проще использовать что-то вроде RC-4.
0
|
|
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|||
| 26.11.2015, 12:12 | |||
первое правило криптографии: не изобретай криптографию. причем, это относится не только к алгоритмам шифрования, а и к применению их. правило защиты: чтобы сделать эффективную защиту, ты обязан знать способы (и чего они стоят), которыми ее можно ломать. если ты не ботан от математики - не делай схемы, которые ты сам не понимаешь как работают и что стоит их взломать. тебе покажется, что ты всё запутал, а реально ты можешь на порядки все упростить.
0
|
|||
|
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 48
|
||
| 26.11.2015, 19:54 | ||
|
В выборе между ГОСТ и AES не вижу ни одного аргумента в пользу ГОСТ.
Даже чисто программные реализации AES на STM32F10x работают очень быстро, вплоть до 80 тысяч блоков в секунду. ГОСТ -- медленный и не всегда надёжный -- см. ту же википедию.
Перебор ускорился больше чем на порядок по сравнению с просто хорошо оптимизированным подсчётом MD5. С MD5 такой фокус не прошёл бы, но я не математик и на нобелевку не претендую. В любом случае это не повод изобретать свои алгоритмы.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
||
| 26.11.2015, 20:34 | ||
Разве что как один из слоёв в комплексе с известными алгоритмами.
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
||
| 27.11.2015, 08:29 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 27.11.2015, 11:11 | |
|
Ymk, в смысле, что можно по неосторожности своим кривым слоем убить криптостойкость проверенных слоёв?
Оно так, но тут хотя бы есть неплохие шансы этого избежать. Кстати, если помните эти примеры или они под рукой - скажите, есть ли среди них что-нибудь, удовлетворяющее следующим нехитрым условиям: 1. "Нормальное" шифрование (известным алгоритмом) не имеет никаких обходов (никакой шаг после него не использует не зашифрованные им данные, никакой шаг до не использует шифрованные). 2. Все прочие слои - взаимно-однозначные соответствия. 3. Прочие слои не используют тот же ключ (или данные, на основе которых сгенерён ключ) Пример: данные, подаваемые на AES, предварительно ксорятся на 55h (предельно бесполезно, но иллюстрирует идею).
0
|
|
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
||
| 27.11.2015, 17:56 | ||
припоминаю случай с des. когда его стало "мало", товарищи решили просто последовательно добавить еще. получился 3des. почему 3, а не 2, например? потому что с двумя возможна атака meet in the middle. т.е. вроде как ключ увеличился аж в 2 раза, а профиту нет. а так, самые частые косяки, на которые натыкаются новички, это replay attack, romdom attack и режим ecb шифров. тут в принципе никакой шифр не спасет.
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 27.11.2015, 18:31 | |
|
Ymk, интересно - я-то думал, что 3des имеет такую схему только для совместимости с просто des (никогда не пытался оценить его сложность). Но, в принципе, в случае двойного des от дополнительного слоя именно что "профиту нет", а не вред.
А romdom attack - это что? Использование косяков Г(П)СЧ? SGE, я просто как пример привёл. Мог бы ROT13 назвать, охренительный шифр :-D
0
|
|
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
||||
| 27.11.2015, 19:01 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 28.11.2015, 03:08 | |
|
SGE, ссылка на пруф от математиков есть?
0
|
|
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
| 28.11.2015, 03:48 | |
|
Кстати, я обнаружил что программный генератор рандома выдаёт прогнозируемый набор чисел в случае известного начального старта. Отпадает надобность в таблицах, требуется всего-лишь один ключ в известное вам место прошивки. Так-как загрузчик будет недоступен пользователю для просмотра - то вероятность взлома неизвестного алгоритма стремиться к нулю.
Спрятать дешефровщик в открытом коде - это высший уровень программирования. Самый простой и доступный - запутать пользователя стократными вложениями дифлайнов, с отменами и преназначениями. Это кстати очень часто применяется - чаще чем хотелось-бы.
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
||
| 28.11.2015, 03:53 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
| 28.11.2015, 04:36 | |
|
Да я не про это.
Просто есть много мк у которых мало флеша, но обновлять их нужно по тех_условию, например менять алгоритм датчика присутствия в очень труднодоступном месте. Туда полноценный дешефровщик просто не влезет, а ставить более жирный мк накладно.
0
|
|
| 28.11.2015, 04:36 | |
|
Помогаю со студенческими работами здесь
20
Реализовать алгоритм блочного шифрования ГОСТ 28147-89 в режиме простой замены Алгоритм ГОСТ 28147-89 для изображений Не работает шифрование по ГОСТ 28147-89, ГОСТ Р 34.10-2001,ГОСТ Р 34.11-94 (ASP.NET)
ГОСТ 28147-89 режим простой замены Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|