|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:14 am
Криптиране: търся прост, надежден, комутативен алгоритъм :)
| Автор |
Съобщение |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Криптиране: търся прост, надежден, комутативен алгоритъм :)
Извинявам се за дилетантското питане  : Криптиране: търся прост, надежден, комутативен алгоритъм (харчещ малко ресурси за нископроизводителен ембедед). Комутативен, в смисъл, да позволява "разместване" на декодиранията : Данни0 -> кодиране с ключ1 -> Данни01 Данни01 -> кодиране с ключ2 -> Данни012 Данни012 -> декодиране с ключ1 -> Данни02 Данни02 -> декодиране с ключ2 -> Данни0  Благодаря!
|
| Сря Фев 15, 2017 12:14 pm |
|
 |
|
t_i_t_o
Ранг: Почетен член
Регистриран на: Вто Окт 25, 2005 10:54 am Мнения: 896
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
XTEA - 64bit data chunk, 128bit key KeeLoq - 32bit data chunk, 64bit key
|
| Сря Фев 15, 2017 3:20 pm |
|
 |
|
tolstolob
Ранг: Ориентиран
Регистриран на: Вто Фев 06, 2007 2:45 am Мнения: 263
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
https://en.wikipedia.org/wiki/XXTEAKey sizes: 128 bits Block sizes: arbitrary, at least two words (64 bits) Като скорост: ~3ms за блок от 64 байта, PIC18 @ 64MHz.
|
| Сря Фев 15, 2017 3:43 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
повечето съвременни микроконтролери имат крипто ускорители. такак че избери си контролер, и ще имаш - най-вероятно AES с повечето модове хардкоднати и SHA така че си имаш криптопериферия дето може да я ползваш с ДМА и прочие. другото е да си пишеш алого сам, което не еголама философия, но да се провери имплементацията и по-голямата философия.
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Сря Фев 15, 2017 5:41 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Симетричните алгоритми не покриват условието описано като "комутативност" в заданието.
|
| Сря Фев 15, 2017 6:06 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 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  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  xor (Length(InString)+1-i)); StartKey := (Byte(InString[i]) + StartKey) * MultKey + AddKey; end; end;
_________________ main[-1u]={1};
|
| Сря Фев 15, 2017 6:44 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 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 |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 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 |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
офтопик: някой знае ли как се нарича алгоритъмa, при който PRIVATE KEY е масив BYTE[256] разбъркани числата от 0 до 255
_________________ main[-1u]={1};
|
| Сря Фев 15, 2017 7:56 pm |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Наложиха ми Diffie–Hellman key exchange. Моля, препоръчайте ми embeded библиотека 
|
| Чет Фев 16, 2017 12:09 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Нещо подобно и аз щях да ти кажа, ама хич не се връзва с условията ти за бавно MCU.
|
| Чет Фев 16, 2017 3:21 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
мхъмм, само им кажи на наложилите Diffie–Hellman key exchange, е малко податливо на men-in-the-middle аттаки.
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Чет Фев 16, 2017 4:49 pm |
|
 |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 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 |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Благодаря ти за изчерпателния отговор! Вече имам AES-256 (заради твоя пост се замислям за 128  ). Взех от от тук: http://www.literatecode.com/aes256 Имам десетина дни да реша какво и как да правя. Това с "осоляването" го разбирам като промяна на алгоритъма, за да бъде уникален, и да не влиза в стандартните схеми за декриптиране ли? Мисля DH да го модифицирам малко: От двете страни (девайса и сървъра) да помня по две таблици с прости числа и вместо обмяна на самите числа (p и q, по популярните означения) , да обменям индексите им. Това би ли имало смисъл? ПП А, да  : Изискванията са за "средно ниво ма сигурност ":)
|
| Съб Фев 18, 2017 7:50 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Криптиране: търся прост, надежден, комутативен алгоритъм
Явно съм прекалено анален, но не бих могъл да спя спокойно, ако не съм го направил както трябва. Осносно осоляването, прочети първия резултат от wiki, като напишеш сол и криптиране.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Съб Фев 18, 2017 8:04 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 12 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|