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

 
 
> Алгоритм шифрования для AVR
_Артём_
сообщение Feb 20 2012, 17:39
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Посоветуйте алгоритм шифрования, который можно было бы применить в бутлоадере АВР.
Размер boot-области желательно сделать поменьше - 1 кБ максимум.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Zlumd
сообщение Feb 21 2012, 01:43
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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МГц.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 21 2012, 02:34
Сообщение #3


Гуру
******

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

Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 21 2012, 04:50
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



ИМХО самый лёгкий во всех смыслах - это RTEA.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 21 2012, 11:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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кБ.
Go to the top of the page
 
+Quote Post
e-serg
сообщение Feb 27 2012, 12:26
Сообщение #6


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

Группа: Участник
Сообщений: 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, давно делал sm.gif
RTEA может выйти и покороче.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 27 2012, 12:49
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(e-serg @ Feb 27 2012, 14:26) *
вот математика на asm, давно делал sm.gif
RTEA может выйти и покороче.


Это
Цитата
только раскодировать уже 276 байт

?
Ассемблер IAR или чей?
Go to the top of the page
 
+Quote Post
e-serg
сообщение Feb 28 2012, 11:49
Сообщение #8


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

Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180



Цитата(_Артём_ @ Feb 27 2012, 21:49) *
Ассемблер IAR или чей?

AvrStudio ASM
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Артём_   Алгоритм шифрования для 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


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 23:19
Рейтинг@Mail.ru


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