kolobok0 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 (изменено) · Жалоба ...применить в бутлоадере АВР.... я немного в другую сторону вам скажу... а зачем серъёзное шифрование? ведь на вход нельзя подать нечто НЕ ваше. значит методов для изучения - ну очень мало. т.е. если Вы обеспечите каждый раз уникальность передаваемых данных - то понять что вы там нахимичили с декодировкой - утопия. тем более если прошивки будут меняться не каждый понедельник... надеюсь понятна моя мысль не глубокая? :) (Раневская) (круглый) ЗЫ Помните как в том фильме про "энигму"? Пока не просекли что первым делом посылается координаты цели - т.е. сопоставили ихсодные данные и конечный получаемый шифр, взломать не возможно было. Т.е. если Вы каждый раз будете нечто новое слать - взломать ан реал... Изменено 21 февраля, 2012 пользователем kolobok0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба а зачем серъёзное шифрование? Чтобы гарантировано исключить возможность копирования. ведь на вход нельзя подать нечто НЕ ваше. значит методов для изучения - ну очень мало Мало, да. Но учитывая малый размер boot-области, моё должно быть понятно и просто, и повторить его несложно. то понять что вы там нахимичили с декодировкой - утопия Если зашифровать - точно утопия. надеюсь понятна моя мысль не глубокая? :) (Раневская) (круглый) Идеи нам близки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 (изменено) · Жалоба Чтобы гарантировано исключить возможность копирования....Но учитывая малый размер boot-области, моё должно быть понятно и просто, и повторить его несложно.... не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме... пример... если Вы возьмёте ваши данные поблочно переставите биты в блоке по алгоритму шахматного коня(к примеру), потом наложите ксор состоящий из 30 байт и запишите сначала все чётные потом нечётные байты. как вы думаете можно такое понять? при условии что кодировщик вы спрячите под подушкой, и обеспечите передаваемые данные таким образом, чтоб статичные данные было нельзя отловить на уровне логики??? (круглый) ЗЫ Я тут подошёл к человечку (ранее работал в известной конторе по данной проблеме - защите-взлому), он подтвердил (с оговорками конечно же :) ), что ан-реал. так что применять супер-пупер алгоритмы - мягко говоря может и не имеет смысла в данных условиях... ЗЫ ЗЫ я так же недавно реализовывал то же самое в тех же железных рамках. правда понавороченнее +uart(универсал)+modbus(универсал и моя надстройка над стандартом)+прошивальщик в безотказном варианте работы+контроль работоспособности прошивки+вяские мелочи... на азме в половину не вошёл...к сожалению... но почти...может ышо ужмусь :))) . кодировщик написан на сях. на выходе каждый раз новый массив байт. Изменено 21 февраля, 2012 пользователем kolobok0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме... Не подарю. Он должен быть простым, потому что размер boot-области небольшой: сложное не впихнёшь. пример... если Вы возьмёте ваши данные поблочно переставите биты в блоке по алгоритму шахматного коня(к примеру), потом наложите ксор состоящий из 30 байт и запишите сначала все чётные потом нечётные байты. Ну это всё придумавать и писать надо. И тоже место какое-то займёт в boot (интересно сколько). как вы думаете можно такое понять? ЗЫ Я тут подошёл к человечку (ранее работал в известной конторе по данной проблеме - защите-взлому), он подтвердил (с оговорками конечно же :) ), что ан-реал. Возможно. так что применять супер-пупер алгоритмы - мягко говоря может и не имеет смысла в данных условиях... О супер-алгоритмах речь не идёт, нужно простое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 22 февраля, 2012 Опубликовано 22 февраля, 2012 · Жалоба Я хотел узнать с чем по стойкости его можно сопоставить. http://defectoscopy.com/results.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 25 февраля, 2012 Опубликовано 25 февраля, 2012 · Жалоба Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц. 128 байт или 128 кБ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zlumd 0 27 февраля, 2012 Опубликовано 27 февраля, 2012 · Жалоба Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.128 байт или 128 кБ? 128 байт На заливку 128 кБайт уходит 20 минут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 27 февраля, 2012 Опубликовано 27 февраля, 2012 · Жалоба На заливку 128 кБайт уходит 20 минут. Чот как-то медленно... Вам так не кажется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 27 февраля, 2012 Опубликовано 27 февраля, 2012 · Жалоба А есть готовый реализации? ;******************************************************************************* *** ;******************************************************************************* *** ; код TEA128Y ; меняються регистры r4, ..., r25 ;******************************************************************************* *** #ifndef TEA128_INC_ #define TEA128_INC_ .DSEG d_TEA128_DATA: .BYTE 16 d_TEA128_KEY: .BYTE 16 ;******************************************************************************* *** .CSEG .def d0=r4 .def d1=r5 .def d2=r6 .def d3=r7 .def c0=r8 .def c1=r9 .def c2=r10 .def c3=r11 .def b0=r12 .def b1=r13 .def b2=r14 .def b3=r15 .def Tea_cnta=r16 .def Tea_cntb=r17 .def s0=r18 .def s1=r19 .def s2=r20 .def s3=r21 .def a0=r22 .def a1=r23 .def a2=r24 .def a3=r25 ;******************************************************************************* *** ;Обмен с памятью, загрузка костант .MACRO MLDI32 ;r3,r2,r1,r0, lab data ldi @0, @4 ldi @1, @5 ldi @2, @6 ldi @3, @7 .ENDMACRO .MACRO MLDD32 ;r3,r2,r1,r0, lab data ldd @3, Y+@4+0 ldd @2, Y+@4+1 ldd @1, Y+@4+2 ldd @0, Y+@4+3 .ENDMACRO .MACRO MLDS32 ;r3,r2,r1,r0, lab data lds @3, @4+0 lds @2, @4+1 lds @1, @4+2 lds @0, @4+3 .ENDMACRO .MACRO MSTD32 ;r3,r2,r1,r0, lab data std Y+@4+3, @0 std Y+@4+2, @1 std Y+@4+1, @2 std Y+@4+0, @3 .ENDMACRO .MACRO MSTS32 ;r3,r2,r1,r0, lab data sts @4+3, @0 sts @4+2, @1 sts @4+1, @2 sts @4+0, @3 .ENDMACRO .MACRO MSUBI32 ;r3,r2,r1,r0, data subi @3, @7 sbci @2, @6 sbci @1, @5 sbci @0, @4 .ENDMACRO .MACRO MCLR32 ;r3,r2,r1,r0 clr @0 clr @1 clr @2 clr @3 .ENDMACRO .MACRO MADD32 add @3, @7 adc @2, @6 adc @1, @5 adc @0, @4 .ENDMACRO .MACRO MSUB32 sub @3, @7 sbc @2, @6 sbc @1, @5 sbc @0, @4 .ENDMACRO .MACRO MLSL32 lsl @3 rol @2 rol @1 rol @0 .ENDMACRO .MACRO MLSR32 lsr @0 ror @1 ror @2 ror @3 .ENDMACRO .MACRO MEOR32 eor @3, @7 eor @2, @6 eor @1, @5 eor @0, @4 .ENDMACRO .MACRO FMEMCPY ldi ZL, low(@1 << 1) ldi ZH, high(@1 << 1) ldi XL, low(@0) ldi XH, high(@0) ldi r16, @2 call STX_LPM_LOOP .ENDMACRO ;******************************************************************************* *** ;******************************************************************************* *** ; кодирование ;******************************************************************************* *** ;******************************************************************************* *** Tea128_enc: ; lds YL, d_TEA128_DATA_L ; lds YH, d_TEA128_DATA_H ldi Tea_cnta,32 MCLR32 s3, s2, s1, s0 ;sum Tea128_enc_while: MSUBI32 s3, s2, s1, s0, 0x61, 0xc8, 0x86, 0x47 ; sum += delta ;******************************************************************************* *** rcall lfunc_y MADD32 a3, a2, a1, a0, d3, d2, d1, d0 MSTD32 a3, a2, a1, a0, 0;d_TEA128_DATA+0 ; Сохранил y ;******************************************************************************* *** rcall lfunc_z MADD32 a3, a2, a1, a0, d3, d2, d1, d0 MSTD32 a3, a2, a1, a0, 4;d_TEA128_DATA+4 ; Сохранил z ;******************************************************************************* *** dec Tea_cnta breq Tea128_enc_end rjmp Tea128_enc_while Tea128_enc_end: ret ;******************************************************************************* *** ;******************************************************************************* *** ; декодирование ;******************************************************************************* *** Tea128_dec: ; lds YL, d_TEA128_DATA_L ; lds YH, d_TEA128_DATA_H ldi Tea_cnta,32 MLDI32 s3, s2, s1, s0, 0xC6, 0xEF, 0x37, 0x20 ;sum Tea128_dec_while: ;******************************************************************************* *** rcall lfunc_z MSUB32 a3, a2, a1, a0, d3, d2, d1, d0 MSTD32 a3, a2, a1, a0, 4;d_TEA128_DATA+4 ; Сохранил z ;******************************************************************************* *** rcall lfunc_y MSUB32 a3, a2, a1, a0, d3, d2, d1, d0 MSTD32 a3, a2, a1, a0, 0;d_TEA128_DATA+0 ; Сохранил y ;******************************************************************************* *** MSUBI32 s3, s2, s1, s0, 0x9E, 0x37, 0x79, 0xB9 ; sum -= delta dec Tea_cnta breq Tea128_dec_end rjmp Tea128_dec_while Tea128_dec_end: ret ;******************************************************************************* *** lfunc: movw d0,a0 movw d2,a2 ldi Tea_cntb,4 lshift4: MLSL32 d3, d2, d1, d0 dec Tea_cntb brne lshift4 MADD32 d3, d2, d1, d0, b3, b2, b1, b0 ;воспользуюсь b0...3 movw b0,a0 movw b2,a2 ldi Tea_cntb,5 rshift5: MLSR32 b3, b2, b1, b0 dec Tea_cntb brne rshift5 MADD32 b3, b2, b1, b0, c3, c2, c1, c0 MEOR32 d3, d2, d1, d0, b3, b2, b1, b0 MADD32 a3, a2, a1, a0, s3, s2, s1, s0 MEOR32 d3, d2, d1, d0, a3, a2, a1, a0 ret ;******************************************************************************* *** lfunc_y: MLDD32 a3, a2, a1, a0, 4;d_TEA128_DATA+4 ; Загрузил z MLDS32 b3, b2, b1, b0, d_TEA128_KEY+0 ; Загрузил k[0] MLDS32 c3, c2, c1, c0, d_TEA128_KEY+4 ; Загрузил k[1] rcall lfunc ; результата d0...3 MLDD32 a3, a2, a1, a0, 0;d_TEA128_DATA+0 ; Загрузил y ret ;******************************************************************************* *** lfunc_z: MLDD32 a3, a2, a1, a0, 0;d_TEA128_DATA+0 ; Загрузил y MLDS32 b3, b2, b1, b0, d_TEA128_KEY+8 ; Загрузил k[2] MLDS32 c3, c2, c1, c0, d_TEA128_KEY+12 ; Загрузил k[3] rcall lfunc ; результата d0...3 MLDD32 a3, a2, a1, a0, 4;d_TEA128_DATA+4 ; Загрузил z ret ;******************************************************************************* *** d_TEA128_KEY_DB: .db 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff TEA128_KEY_INIT: ; ldi YL, low(d_TEA128_DATA) ; ldi YH, high(d_TEA128_DATA) ; sts d_TEA128_DATA_L, YL ; sts d_TEA128_DATA_H, YH FMEMCPY d_TEA128_KEY, d_TEA128_KEY_DB, 16 ret #endif /* TEA128_INC_ */ вот математика на asm, давно делал :) RTEA может выйти и покороче. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 27 февраля, 2012 Опубликовано 27 февраля, 2012 · Жалоба вот математика на asm, давно делал :) RTEA может выйти и покороче. Это только раскодировать уже 276 байт ? Ассемблер IAR или чей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zlumd 0 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба Чот как-то медленно... Вам так не кажется? Конечно медленно. В DES много битовых перестановок. Быстрее не получается сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба Ассемблер IAR или чей? AvrStudio ASM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба Конечно медленно. В DES много битовых перестановок. Много, не отрицаю. Быстрее не получается сделать. Из appnote Atmel для 16kB: DES, 115200 Bauds, 16 MHz Target Frequency: 20 Seconds На заливку 128 кБайт уходит 20 минут. Минут трёх должно хватать. Если Atmel нам не врёт. AvrStudio ASM Ясно. На Си не пробовали? Размер намного больше получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DrGluck 0 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба 1. "Размер boot-области желательно сделать поменьше - 1 кБ максимум" ... делаю вывод, что ориентируемся на младшие модели ... 2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ? 3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ? P.S. "В рассуждениях О ... " солидарен с "kolobok0" P.P.S. На заливку 128 кБайт уходит 20 минут - физиономию пользователя в студию ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 28 февраля, 2012 Опубликовано 28 февраля, 2012 · Жалоба 1. "Размер boot-области желательно сделать поменьше - 1 кБ максимум" ... делаю вывод, что ориентируемся на младшие модели ... Верно. 2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ? 3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ? А что вообще можно "неповторяемое" сделать? Всё повторяемое и в принципе и в кожухе. Всё повторить можно, но это не повод от защиты отказываться. Супер защите ? Что там "Супер"? Обычное шифрование. P.P.S. - физиономию пользователя в студию ! Ногами всёж не бейте его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться