|
Алгоритм шифрования для AVR |
|
|
|
 |
Ответов
|
Feb 21 2012, 01:43
|
Местный
  
Группа: Свой
Сообщений: 327
Регистрация: 12-04-05
Из: Новосибирск
Пользователь №: 4 057

|
Цитата(_Артём_ @ Feb 21 2012, 00:39)  Посоветуйте алгоритм шифрования, который можно было бы применить в бутлоадере АВР. Размер boot-области желательно сделать поменьше - 1 кБ максимум. Посмотри Атмеловские апноты: AVR231: AES Bootloader on tinyAVR and megaAVR devices и AVR230: DES Bootloader on tinyAVR and megaAVR devices Отпишись, нашел ли что-то, чтобы влезть в 1K. Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.
|
|
|
|
|
Feb 21 2012, 02:34
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Zlumd @ Feb 21 2012, 03:43)  Посмотри Атмеловские апноты: AVR231: AES Bootloader on tinyAVR and megaAVR devices и AVR230: DES Bootloader on tinyAVR and megaAVR devices Знаю про них, оттого и спрашиваю. Нет столько ресурсов. Цитата(Zlumd @ Feb 21 2012, 03:43)  Отпишись, нашел ли что-то, чтобы влезть в 1K. Добавлю обязательно, если будет что-то новое. Смотрите по ссылке от follow_me. Цитата(Zlumd @ Feb 21 2012, 03:43)  чтобы влезть в 1K. В 1к - это bootloader+передача данных+шифрование? Или речь только про алгоритм шифрования? Да, есть. Но... много занимает (в числах могу ошибаться): ~700 байт расшифровать или зашифровать, ключ - 256 бит ~1200 байт расшифровать и зашифровать - много. Компилятор: IAR. Оптимизация: максимальная (наверное по размеру). Алгоритм: один из TEA (чистый Си, вики-copy-past). Скорость: ?. не впомню сейчас, думаю несколько кБ/с на 11.0592 МГц.
|
|
|
|
|
Feb 21 2012, 11:02
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(demiurg_spb @ Feb 21 2012, 06:50)  ИМХО самый лёгкий во всех смыслах - это RTEA. А как у него с надёжностью? Цитата(e-serg @ Feb 21 2012, 07:09)  весь tea128 на asm(avr8) в 338 байт укладывается. есть где поэкономить для боотлоадера. только раскодировать уже 276 байт А есть готовый реализации? Цитата(Zlumd @ Feb 21 2012, 07:23)  Конечно, все вместе. Вам же надо, чтобы все вместе влезло в 1К ? Или нет? Да, нужно чтобы всё в 1кБ.
|
|
|
|
|
Feb 27 2012, 12:26
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(_Артём_ @ Feb 21 2012, 20:02)  А есть готовый реализации? CODE ;******************************************************************************* *** ;******************************************************************************* *** ; код 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 может выйти и покороче.
|
|
|
|
|
Feb 27 2012, 12:49
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(e-serg @ Feb 27 2012, 14:26)  вот математика на asm, давно делал  RTEA может выйти и покороче. Это Цитата только раскодировать уже 276 байт ? Ассемблер IAR или чей?
|
|
|
|
|
Feb 28 2012, 11:49
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(_Артём_ @ Feb 27 2012, 21:49)  Ассемблер IAR или чей? AvrStudio ASM
|
|
|
|
Сообщений в этой теме
_Артём_ Алгоритм шифрования для AVR Feb 20 2012, 17:39 follow_me Цитата(_Артём_ @ Feb 20 2012, 19:39) Посо... Feb 20 2012, 20:12 _Артём_ Цитата(follow_me @ Feb 20 2012, 22:12) А ... Feb 20 2012, 20:21  follow_me Цитата(_Артём_ @ Feb 20 2012, 22:21) ?
Об... Feb 20 2012, 20:29   _Артём_ Цитата(follow_me @ Feb 20 2012, 22:29) со... Feb 20 2012, 20:58    demiurg_spb Цитата(_Артём_ @ Feb 21 2012, 14:02) А ка... Feb 21 2012, 11:28     _Артём_ Цитата(demiurg_spb @ Feb 21 2012, 13:28) ... Feb 21 2012, 11:34      demiurg_spb Цитата(_Артём_ @ Feb 21 2012, 14:34) Я хо... Feb 22 2012, 05:01  e-serg Цитата(_Артём_ @ Feb 21 2012, 11:34) Да, ... Feb 21 2012, 05:09  Zlumd Цитата(_Артём_ @ Feb 21 2012, 09:34) В 1к... Feb 21 2012, 05:23 _Артём_ Цитата(Zlumd @ Feb 21 2012, 03:43) Мы юза... Feb 25 2012, 18:57  Zlumd Цитата(_Артём_ @ Feb 26 2012, 01:57) Цита... Feb 27 2012, 02:49   _Артём_ Цитата(Zlumd @ Feb 27 2012, 04:49) На зал... Feb 27 2012, 12:04    Zlumd Цитата(_Артём_ @ Feb 27 2012, 19:04) Чот ... Feb 28 2012, 03:05     _Артём_ Цитата(Zlumd @ Feb 28 2012, 05:05) Конечн... Feb 28 2012, 12:24      Zlumd Цитата(_Артём_ @ Feb 28 2012, 19:24) Мину... Feb 29 2012, 01:27       _Артём_ Цитата(Zlumd @ Feb 29 2012, 03:27) Может ... Feb 29 2012, 10:15 ARV XTEA вроде бы тоже не тяжелый Feb 21 2012, 04:55 demiurg_spb но более уязвимый Feb 21 2012, 04:59 kolobok0 Цитата(_Артём_ @ Feb 20 2012, 21:39) ...п... Feb 21 2012, 11:36 _Артём_ Цитата(kolobok0 @ Feb 21 2012, 13:36) а з... Feb 21 2012, 11:46  kolobok0 Цитата(_Артём_ @ Feb 21 2012, 15:46) Чтоб... Feb 21 2012, 12:01   _Артём_ Цитата(kolobok0 @ Feb 21 2012, 14:01) не ... Feb 21 2012, 12:14 DrGluck 1. "Размер boot-области желательно сделать по... Feb 28 2012, 16:50 _Артём_ Цитата(DrGluck @ Feb 28 2012, 18:50) 1. ... Feb 28 2012, 16:57 DrGluck Цитатано это не повод от защиты отказываться ...
R... Feb 28 2012, 17:11 kolobok0 Цитата(DrGluck @ Feb 28 2012, 21:11) ...P... Mar 5 2012, 12:41 dvm11111111 Посмотрите на алгоритмы RC5(именно алгоритм шифров... Apr 16 2012, 23:32 IGK Случайно увидел тему...
Я пользую простейшую кодир... Apr 19 2012, 07:15 Petka Странно, что никто не упомянул шифрование по ГОСТ ... Apr 19 2012, 09:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|