Отговори на тема  [ 23 мнения ]  Отиди на страница 1, 2  Следваща
Криптиране: търся прост, надежден, комутативен алгоритъм :) 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Криптиране: търся прост, надежден, комутативен алгоритъм :)
Извинявам се за дилетантското питане :):

Криптиране: търся прост, надежден, комутативен алгоритъм (харчещ малко ресурси за нископроизводителен ембедед).
Комутативен, в смисъл, да позволява "разместване" на декодиранията :

Данни0 -> кодиране с ключ1 -> Данни01
Данни01 -> кодиране с ключ2 -> Данни012
Данни012 -> декодиране с ключ1 -> Данни02
Данни02 -> декодиране с ключ2 -> Данни0

:)

Благодаря!


Сря Фев 15, 2017 12:14 pm
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Вто Окт 25, 2005 10:54 am
Мнения: 896
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
XTEA - 64bit data chunk, 128bit key
KeeLoq - 32bit data chunk, 64bit key


Сря Фев 15, 2017 3:20 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
https://en.wikipedia.org/wiki/XXTEA
Key sizes: 128 bits
Block sizes: arbitrary, at least two words (64 bits)

Като скорост: ~3ms за блок от 64 байта, PIC18 @ 64MHz.


Сря Фев 15, 2017 3:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
повечето съвременни микроконтролери имат крипто ускорители.
такак че избери си контролер, и ще имаш - най-вероятно AES с повечето модове хардкоднати и SHA
така че си имаш криптопериферия дето може да я ползваш с ДМА и прочие.
другото е да си пишеш алого сам, което не еголама философия, но да се провери имплементацията и по-голямата философия.

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Сря Фев 15, 2017 5:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Симетричните алгоритми не покриват условието описано като "комутативност" в заданието.


Сря Фев 15, 2017 6:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
може да си го обърнеш на Ц, че не мога да си намеря либ-а

function Encrypt(const InString: string; StartKey, MultKey, AddKey: Integer):string;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[i]) xor (StartKey shr 8) xor (Length(InString)+1-i));
StartKey := (Byte(Result[i]) + StartKey) * MultKey + AddKey;
end;
end;

function Decrypt(const InString: string; StartKey, MultKey, AddKey: Integer): string;
var
i: Integer;
begin
Result := '';
for i := 1 to Length(InString) do
begin
Result := Result + CHAR(Byte(InString[i]) xor (StartKey shr 8) xor (Length(InString)+1-i));
StartKey := (Byte(InString[i]) + StartKey) * MultKey + AddKey;
end;
end;

_________________
main[-1u]={1};


Сря Фев 15, 2017 6:44 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Това, че криптирането е с "комутативен алгоритъм" малко ме притеснява да не се получи някой тривиален хак.
Данни0 -> кодиране с ключ1 -> Данни01
Данни01 -> кодиране с ключ2 -> Данни012

ХакДанни0 -> кодиране с ключ1 -> ХакДанни01
ХакДанни01 -> кодиране с ключ2 -> ХакДанни012

Данни012 xor ХакДанни012 xor ХакДанни0 = Данни0

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Фев 15, 2017 7:03 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
const MultKey, AddKey: PRIVATE
първи в масива START_KEY( RND при криптиране (или Данни:Номер, нещо да се променя) )

const MultKey, AddKey: PRIVATE
при декрипт: get START_KEY...MultKey, AddKey

готин за малки приложения (горе от примера на паскал)... ползвал съм го много пъти - бачка си екстра

_________________
main[-1u]={1};


Сря Фев 15, 2017 7:43 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
офтопик: някой знае ли как се нарича алгоритъмa, при който PRIVATE KEY е масив BYTE[256] разбъркани числата от 0 до 255

_________________
main[-1u]={1};


Сря Фев 15, 2017 7:56 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Наложиха ми Diffie–Hellman key exchange.
Моля, препоръчайте ми embeded библиотека :)


Чет Фев 16, 2017 12:09 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Нещо подобно и аз щях да ти кажа, ама хич не се връзва с условията ти за бавно MCU.


Чет Фев 16, 2017 3:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
NikB написа:
Наложиха ми Diffie–Hellman key exchange.
Моля, препоръчайте ми embeded библиотека :)

мхъмм, само им кажи на наложилите Diffie–Hellman key exchange, е малко податливо на men-in-the-middle аттаки.

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Чет Фев 16, 2017 4:49 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 3:36 pm
Мнения: 953
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Diffie-Hellman key exchange е каквото казва името му - метод за обмен на ключове. Този метод решава въпроса с получаването на един и същи ключ и при двете страни, които си комуникират по несигурен канал. Имаш обаче още въпроси за решаване: автентикацията и самото криптиране.

За автентикацията:
За да си сигурен, че комуникираш с правилното у-во и то да е сигурно че комуникира с правилния сървър трябва да имаш асиметрични ключове и да ползваш "Static" версията на DH. Ключовете трябва да са заредени в у-вото с микроконтролера и в сървъра предварително! Ако ползваш нормалната версия на DH, която се нарича "Ephemeral" - тя е без автентикация и както колегата преди мен е написал - е податлива на MITM атака.

За криптирането:
След като и двете ти системи имат ключа от предната стъпка - трябва да измислиш как да криптираш... Най-добре ползвай класиката AES-128. Няма голям смисъл от повече битове, а и става прекалено тежко за микроконтролер. За да е читаво криптирането с AES трябва много добре да се измисли "схемата на осоляване", тоест какво и как да добавяш в криптирането за да не може да бъде хванат ключа! На алгоритъма AES се подават две 128-битови числа и той изплюва трето 128-битово число. Ако едното от входящите е ключа от предната стъпка, то второто трябва да е нещо различно за всяко криптирано съобщение (примерно случайно 96-битово число, а останалите 32 бита да са пореден номер на блок). Няма проблем да добавиш променливата част в хедъра на съобщението - то не може да послужи за нищо без да разполагаш с ключа. Самото криптиране на данните се прави с XOR между тях и резултата от AES алгоритъма. Декриптирането от другата страна е по същия начин защото резултата от алгоритъма ще е същия - имаш същия ключ, същото случайно число и правилния номер на блок.

Има една библиотека която се казва libtom - в нея има и DH и AES и още много други крипто-алгоритми - мисля че ще ти свърши идеална работа.


Съб Фев 18, 2017 6:20 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Благодаря ти за изчерпателния отговор!
Вече имам AES-256 (заради твоя пост се замислям за 128 :)). Взех от от тук: http://www.literatecode.com/aes256

Имам десетина дни да реша какво и как да правя.
Това с "осоляването" го разбирам като промяна на алгоритъма, за да бъде уникален, и да не влиза в стандартните схеми за декриптиране ли?

Мисля DH да го модифицирам малко: От двете страни (девайса и сървъра) да помня по две таблици с прости числа и вместо обмяна на самите числа (p и q, по популярните означения) , да обменям индексите им.
Това би ли имало смисъл?

ПП
А, да :) : Изискванията са за "средно ниво ма сигурност ":)


Съб Фев 18, 2017 7:50 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Криптиране: търся прост, надежден, комутативен алгоритъм
NikB написа:
ПП
А, да :) : Изискванията са за "средно ниво ма сигурност ":)


Явно съм прекалено анален, но не бих могъл да спя спокойно, ако не съм го направил както трябва.
Осносно осоляването, прочети първия резултат от wiki, като напишеш сол и криптиране.

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Фев 18, 2017 8:04 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 23 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 12 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни