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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Алгоритм шифрования для AVR
kolobok0
сообщение Feb 21 2012, 11:36
Сообщение #16


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(_Артём_ @ Feb 20 2012, 21:39) *
...применить в бутлоадере АВР....


я немного в другую сторону вам скажу...
а зачем серъёзное шифрование? ведь на вход нельзя подать нечто НЕ ваше. значит методов для изучения - ну очень мало. т.е. если Вы обеспечите каждый раз уникальность передаваемых данных - то понять что вы там нахимичили с декодировкой - утопия. тем более если прошивки будут меняться не каждый понедельник...


надеюсь понятна моя мысль не глубокая? sm.gif (Раневская)

(круглый)
ЗЫ
Помните как в том фильме про "энигму"? Пока не просекли что первым делом посылается координаты цели - т.е. сопоставили ихсодные данные и конечный получаемый шифр, взломать не возможно было. Т.е. если Вы каждый раз будете нечто новое слать - взломать ан реал...

Сообщение отредактировал kolobok0 - Feb 21 2012, 11:45
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 21 2012, 11:46
Сообщение #17


Гуру
******

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



Цитата(kolobok0 @ Feb 21 2012, 13:36) *
а зачем серъёзное шифрование?

Чтобы гарантировано исключить возможность копирования.

Цитата(kolobok0 @ Feb 21 2012, 13:36) *
ведь на вход нельзя подать нечто НЕ ваше. значит методов для изучения - ну очень мало

Мало, да.
Но учитывая малый размер boot-области, моё должно быть понятно и просто, и повторить его несложно.

Цитата(kolobok0 @ Feb 21 2012, 13:36) *
то понять что вы там нахимичили с декодировкой - утопия

Если зашифровать - точно утопия.

Цитата(kolobok0 @ Feb 21 2012, 13:36) *
надеюсь понятна моя мысль не глубокая? sm.gif (Раневская)
(круглый)

Идеи нам близки
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Feb 21 2012, 12:01
Сообщение #18


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(_Артём_ @ Feb 21 2012, 15:46) *
Чтобы гарантировано исключить возможность копирования....Но учитывая малый размер boot-области, моё должно быть понятно и просто, и повторить его несложно....


не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме...
пример...
если Вы возьмёте ваши данные поблочно переставите биты в блоке по алгоритму шахматного коня(к примеру), потом наложите ксор состоящий из 30 байт и запишите сначала все чётные потом нечётные байты.

как вы думаете можно такое понять? при условии что кодировщик вы спрячите под подушкой, и обеспечите передаваемые данные таким образом, чтоб статичные данные было нельзя отловить на уровне логики???


(круглый)
ЗЫ
Я тут подошёл к человечку (ранее работал в известной конторе по данной проблеме - защите-взлому), он подтвердил (с оговорками конечно же sm.gif ), что ан-реал. так что применять супер-пупер алгоритмы - мягко говоря может и не имеет смысла в данных условиях...

ЗЫ ЗЫ
я так же недавно реализовывал то же самое в тех же железных рамках. правда понавороченнее +uart(универсал)+modbus(универсал и моя надстройка над стандартом)+прошивальщик в безотказном варианте работы+контроль работоспособности прошивки+вяские мелочи... на азме в половину не вошёл...к сожалению... но почти...может ышо ужмусь sm.gif)) . кодировщик написан на сях. на выходе каждый раз новый массив байт.

Сообщение отредактировал kolobok0 - Feb 21 2012, 12:09
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 21 2012, 12:14
Сообщение #19


Гуру
******

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



Цитата(kolobok0 @ Feb 21 2012, 14:01) *
не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме...

Не подарю.
Он должен быть простым, потому что размер boot-области небольшой: сложное не впихнёшь.

Цитата(kolobok0 @ Feb 21 2012, 14:01) *
пример...
если Вы возьмёте ваши данные поблочно переставите биты в блоке по алгоритму шахматного коня(к примеру), потом наложите ксор состоящий из 30 байт и запишите сначала все чётные потом нечётные байты.

Ну это всё придумавать и писать надо. И тоже место какое-то займёт в boot (интересно сколько).


Цитата(kolobok0 @ Feb 21 2012, 14:01) *
как вы думаете можно такое понять?
ЗЫ
Я тут подошёл к человечку (ранее работал в известной конторе по данной проблеме - защите-взлому), он подтвердил (с оговорками конечно же sm.gif ), что ан-реал.

Возможно.

Цитата(kolobok0 @ Feb 21 2012, 14:01) *
так что применять супер-пупер алгоритмы - мягко говоря может и не имеет смысла в данных условиях...

О супер-алгоритмах речь не идёт, нужно простое.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 22 2012, 05:01
Сообщение #20


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

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



Цитата(_Артём_ @ Feb 21 2012, 14:34) *
Я хотел узнать с чем по стойкости его можно сопоставить.
http://defectoscopy.com/results.html


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


Гуру
******

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



Цитата(Zlumd @ Feb 21 2012, 03:43) *
Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.

128 байт или 128 кБ?
Go to the top of the page
 
+Quote Post
Zlumd
сообщение Feb 27 2012, 02:49
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 12-04-05
Из: Новосибирск
Пользователь №: 4 057



Цитата(_Артём_ @ Feb 26 2012, 01:57) *
Цитата(Zlumd @ Feb 21 2012, 08:43) *
Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.
128 байт или 128 кБ?
128 байт
На заливку 128 кБайт уходит 20 минут.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 27 2012, 12:04
Сообщение #23


Гуру
******

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



Цитата(Zlumd @ Feb 27 2012, 04:49) *
На заливку 128 кБайт уходит 20 минут.


Чот как-то медленно...
Вам так не кажется?
Go to the top of the page
 
+Quote Post
e-serg
сообщение Feb 27 2012, 12:26
Сообщение #24


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

Группа: Участник
Сообщений: 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
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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
Zlumd
сообщение Feb 28 2012, 03:05
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 12-04-05
Из: Новосибирск
Пользователь №: 4 057



Цитата(_Артём_ @ Feb 27 2012, 19:04) *
Чот как-то медленно...
Вам так не кажется?
Конечно медленно. В DES много битовых перестановок. Быстрее не получается сделать.
Go to the top of the page
 
+Quote Post
e-serg
сообщение Feb 28 2012, 11:49
Сообщение #27


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

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



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

AvrStudio ASM
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 28 2012, 12:24
Сообщение #28


Гуру
******

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



Цитата(Zlumd @ Feb 28 2012, 05:05) *
Конечно медленно. В DES много битовых перестановок.

Много, не отрицаю.

Цитата(Zlumd @ Feb 28 2012, 05:05) *
Быстрее не получается сделать.


Из appnote Atmel для 16kB:
Цитата
DES, 115200 Bauds, 16 MHz Target Frequency: 20 Seconds


Цитата
На заливку 128 кБайт уходит 20 минут.

Минут трёх должно хватать. Если Atmel нам не врёт.

Цитата(e-serg @ Feb 28 2012, 13:49) *
AvrStudio ASM

Ясно.

На Си не пробовали? Размер намного больше получается?
Go to the top of the page
 
+Quote Post
DrGluck
сообщение Feb 28 2012, 16:50
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361



1. "Размер boot-области желательно сделать поменьше - 1 кБ максимум" ... делаю вывод, что ориентируемся на младшие модели ...
2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ?
3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ?

P.S. "В рассуждениях О ... " солидарен с "kolobok0"

P.P.S.
Цитата
На заливку 128 кБайт уходит 20 минут
- физиономию пользователя в студию !


--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 28 2012, 16:57
Сообщение #30


Гуру
******

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



Цитата(DrGluck @ Feb 28 2012, 18:50) *
1. "Размер boot-области желательно сделать поменьше - 1 кБ максимум" ... делаю вывод, что ориентируемся на младшие модели ...

Верно.

Цитата(DrGluck @ Feb 28 2012, 18:50) *
2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ?
3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ?

А что вообще можно "неповторяемое" сделать?
Всё повторяемое и в принципе и в кожухе.
Всё повторить можно, но это не повод от защиты отказываться.

Цитата(DrGluck @ Feb 28 2012, 18:50) *
Супер защите ?

Что там "Супер"? Обычное шифрование.

Цитата(DrGluck @ Feb 28 2012, 18:50) *
P.P.S. - физиономию пользователя в студию !

Ногами всёж не бейте его.
Go to the top of the page
 
+Quote Post

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

 


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


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