Перейти к содержанию
    

Алгоритм шифрования для AVR

...применить в бутлоадере АВР....

 

я немного в другую сторону вам скажу...

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

 

 

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

 

(круглый)

ЗЫ

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

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а зачем серъёзное шифрование?

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

 

ведь на вход нельзя подать нечто НЕ ваше. значит методов для изучения - ну очень мало

Мало, да.

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

 

то понять что вы там нахимичили с декодировкой - утопия

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

 

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

(круглый)

Идеи нам близки

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме...

пример...

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

 

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

 

 

(круглый)

ЗЫ

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

 

ЗЫ ЗЫ

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

Изменено пользователем kolobok0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не совсем понятно зачем бут загрузчик можно повторять и должен быть понятен - хз. возможно потом вы его кому то подарите - я не в курсе...но если по теме...

Не подарю.

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

 

пример...

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

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

 

 

как вы думаете можно такое понять?

ЗЫ

Я тут подошёл к человечку (ранее работал в известной конторе по данной проблеме - защите-взлому), он подтвердил (с оговорками конечно же :) ), что ан-реал.

Возможно.

 

так что применять супер-пупер алгоритмы - мягко говоря может и не имеет смысла в данных условиях...

О супер-алгоритмах речь не идёт, нужно простое.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я хотел узнать с чем по стойкости его можно сопоставить.
http://defectoscopy.com/results.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.

128 байт или 128 кБ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы юзаем DES-бутлоадер: Занимает почти 4KБайт. 128 байт расшифровывает за 0.5 сек при частоте 16МГц.
128 байт или 128 кБ?

128 байт

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Чот как-то медленно...

Вам так не кажется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть готовый реализации?

;*******************************************************************************
***
;*******************************************************************************
***
; код 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 может выйти и покороче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот математика на asm, давно делал :)

RTEA может выйти и покороче.

 

Это

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

?

Ассемблер IAR или чей?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чот как-то медленно...

Вам так не кажется?

Конечно медленно. В DES много битовых перестановок. Быстрее не получается сделать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно медленно. В DES много битовых перестановок.

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

 

Быстрее не получается сделать.

 

Из appnote Atmel для 16kB:

DES, 115200 Bauds, 16 MHz Target Frequency: 20 Seconds

 

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

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

 

AvrStudio ASM

Ясно.

 

На Си не пробовали? Размер намного больше получается?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ?

3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ?

 

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

 

P.P.S.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Верно.

 

2. Если модели "младшие", что можно на них сотворить "такое" - "неповторяемое" в принципе ?

3. Если оно в принципе "повторяемое" - то к чему стремление к Супер защите ?

А что вообще можно "неповторяемое" сделать?

Всё повторяемое и в принципе и в кожухе.

Всё повторить можно, но это не повод от защиты отказываться.

 

Супер защите ?

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

 

P.P.S. - физиономию пользователя в студию !

Ногами всёж не бейте его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...