|
Помогите подобрать алгоритм шифрования |
|
|
|
Jan 7 2009, 10:40
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Есть устройство, которое принимает некие данные и записывает их на внешнюю EEPROM, сделано оно на МК, тини2313. Задача такая, что бы никто кроме пользователя устройства не мог расшифровать эти данные (ну или подбор ключа занимал как можно больше времени), алгоритм нужен асимметричный, что бы, даже если хакер получит дамп памяти микроконтроллера, открытые ключи которые он оттуда достанет не помогли ему в расшифровке. Плюс ко всему код алгоритма не должен занимать большим, так как осталось не особо много места на МК. Сейчас занялся алгоритмом RSA, но прочитал, что ключ для стойкости должен быть не менее 1024 бит, а я не представляю где его хранить.
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 36)
|
Jan 7 2009, 11:02
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Сейчас занялся алгоритмом RSA, Годится. Цитата но прочитал, что ключ для стойкости должен быть не менее 1024 бит, а я не представляю где его хранить. Как где? Это же всего 128 байт. На выбор - либо в EEPROM проца, либо в памяти программ. С доступом по LPM. Другое дело - скорости шифрования там очень маленькие. Не пугает?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 11:43
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(Rst7 @ Jan 7 2009, 14:02)  Годится. Как где? Это же всего 128 байт. На выбор - либо в EEPROM проца, либо в памяти программ. С доступом по LPM.
Другое дело - скорости шифрования там очень маленькие. Не пугает? Да не там скорости не большии данные идут порциями по 50 байт, в среднем каждые полчаса. А что такое LPM?
|
|
|
|
|
Jan 7 2009, 11:50
|
Частый гость
 
Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003

|
Цитата(Xenom0rph @ Jan 7 2009, 14:43)  .... А что такое LPM? LPM - ассемблерная команда (для архитектуры AVR) - загрузить (в регистр) байт из памяти программ. Наверное имелось ввиду, что ключ должен располагаться в той области памяти программ, для которой возможно исполнение данной команды.
Сообщение отредактировал smac - Jan 7 2009, 11:51
|
|
|
|
|
Jan 7 2009, 12:48
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 1-07-07
Пользователь №: 28 823

|
Цитата(Xenom0rph @ Jan 7 2009, 13:40)  ... как можно больше времени... необходимо Вам задать это время - час? месяц? год? - а потом выбирать алгоритм.
|
|
|
|
|
Jan 7 2009, 16:55
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата необходимо Вам задать это время - час? месяц? год? - а потом выбирать алгоритм. Вы много знаете алгоритмов шифрования с открытым ключем и более-менее обозримыми вычислениями? А ведь именно такая задача у топикстартера. Имеет смысл рассмотреть вопрос длинны ключа. Цитата Сильно сомневаюсь, что в Тиню влезет многознаковая арифметика Спокойно  Во-первых, кода там как раз немного, намного больше требуется ОЗУ. Во-вторых, надо взять ATMega48 вместо Tiny2313 - дешевле, размер на плате даже меньше, ресурсов больше. В-третьих, требуется произвести только 2 операции для шифрования - возведение в степень (причем, для быстродействия имеет смысл взять e=3, т.е. будет 3 умножения) и собственно остаток от деления. Теперь посмотрим, что мы имеем по ОЗУ. Если длинна ключа n-бит, и e=3, то после возведения в степень e имеем размер буфера 3n. Для умножения вроде бы дополнительных буферов не нужно, все можно выполнить по месту. Ключ можно брать прямо по месту, на него озу тратить не надо. Кроме того, нас не интересует результат деления, а только остаток. Значит, результат у нас получится прямо в буфере после возведения в степень. Т.е. при ключе 1024 бита (128 байт) необходим буфер ОЗУ размером 128*3=384 байта. ATMega48 имеет 512 байт ОЗУ супротив 128 у Tiny2313, так что как раз войдет  Вообщем, я вроде не вижу проблем в реализации шифрования RSA с ключем длинной 1024 бита на мелком AVR.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 17:18
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата требование алгоритма с открытым ключем неочевидно при постановке вопроса "стартпостером" А это что? Цитата алгоритм нужен асимметричный, что бы, даже если хакер получит дамп памяти микроконтроллера, открытые ключи которые он оттуда достанет не помогли ему в расшифровке.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 7 2009, 19:21
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 1-07-07
Пользователь №: 28 823

|
Цитата(Rst7 @ Jan 7 2009, 20:18)  А это что? Это и непонятно. Есть доступ к ключу - и только?
|
|
|
|
|
Jan 7 2009, 20:09
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 1-07-07
Пользователь №: 28 823

|
Цитата(Rst7 @ Jan 7 2009, 22:50)  Вам пофлудить охота? Русским языком топикстартером написано, что требуется шифрование с открытым ключем. Асимметричность - это тоже один из признаков такого шифрования. Где неясность? Что за тон? Чему обязан?
|
|
|
|
|
Jan 8 2009, 06:02
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 1-07-07
Пользователь №: 28 823

|
Цитата(cupertino @ Jan 8 2009, 04:36)  Ассиметричный алгоритм шифрования с меньшей длиной ключа и адекватной степенью защиты - ECC (Elliptic Curve Cryptography).
P.S. Неясность в постановке задачи - где происходит расшифровка? Если в том же микроконтроллере, то ассиметричность не поможет - в памяти окажутся оба ключа - и шифрования, и дешифрования. Совершеннно верно, если хакер емеет доступ к ключю (см. постановку задачи), то , вероятно, имеется доступ и к другим элементам и этапам шифрования, в том числе, возможно и до нелинейной функции преобразования.
|
|
|
|
|
Jan 8 2009, 08:52
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(cupertino @ Jan 8 2009, 03:36)  P.S. Неясность в постановке задачи - где происходит расшифровка? Если в том же микроконтроллере, то ассиметричность не поможет - в памяти окажутся оба ключа - и шифрования, и дешифрования. Давайте так. Я, конечно, не телепат, но мне кажется, что автором планируется система "даталоггер для сбора данных + Большой Брат для их выемки". Т.е. данные поступают каким-то потоком, шифруются, сохраняются во внешнюю еепром, а потом приходит дядя с ноутбуком и, вставляя шнурок, перекачивает инфу себе. В таком случае в камешке содержится только шифрование, а расшифровка на Большом Брате. Цитата(dch @ Jan 8 2009, 05:29)  а что локирвание для атмеги поставлено под сомнение ? Ну смотря по стоимости логгируемой информации. Цитата(Mig&L @ Jan 8 2009, 08:02)  Совершеннно верно, если хакер емеет доступ к ключю (см. постановку задачи), то , вероятно, имеется доступ и к другим элементам и этапам шифрования, в том числе, возможно и до нелинейной функции преобразования. Если рассматривать все этапы, то хакер, если имеет полный доступ к оборудованию, сможет подделать данные. Но прочитать уже записанные данные он не сможет. Если такой вариант устраивает - то все пучком. Кроме того, при более длительном размышлении я пришел к выводу, что для системы "отдельный даталоггер плюс Большой Брат для регулярного считывания" в рассматриваемом случае существует намного более простой и приницпиально нерасшифровываемый способ сохранения данных, конечно, при соблюдении некоторых условий (ну, например, защита от прослушивания коммуникации даталоггер<->Большой Брат). Однако, в этом способе хакер может добавить новые поддельные записи в лог, но не сможет изменить уже существующие, в отличии от способа с RSA. Кстати, о RSA. Каждая запись в логе будет размером кратным длинне ключа. Не пугает? PS Ан нет. Соврал некисло про принципиальность. Если хакер будет иметь доступ к брелку до и после записи данных в него, то можно. Вообщем, общая стойкость такой системы сильно зависит от факторов, никак не связанных с выбором метода шифрования. Надо рассматривать стойкость системы в общем. А для этого нужно намного больше подробностей от автора.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 8 2009, 10:18
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Да всё именно так, приходит человек и по RS232 скачивает сохранённую информацию. Про время для подборки ключа, ну хотя бы год, после эта информации будет уже не актуальна. Советовали, на мегу перейти, это конечно не сложно, но не хотелось бы так, как уже всё собрано и отлажено на тиньке, осталось только функцию шифрования сделать, может не RSA? А что ни будь попроще, вот только что? Про лок МК, насколько знаю, защита снимается, если нужно, а так как информация представляет коммерческий интерес, то это не остановит злоумышленника, ещё думал, чем ни будь плату залить, что бы к МК, доступ ни как не получить но вот материала пока не нашел!
|
|
|
|
|
Jan 8 2009, 12:46
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(cupertino @ Jan 8 2009, 04:36)  Ассиметричный алгоритм шифрования с меньшей длиной ключа и адекватной степенью защиты - ECC (Elliptic Curve Cryptography). А нет случайно толковых примеров на С++, или описания алгоритма, а то чего то ни чего толкового не могу найти, кроме как учебников в 300 стр.
|
|
|
|
|
Jan 8 2009, 13:25
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(Rst7 @ Jan 8 2009, 15:57)  Вы бы сначала определились, страшно Вам или нет, если хакер сможет подделывать записи в логе? Нет, он может изменять, их удалять, подставлять, да что угодно делать это не страшно, главное что бы он не смог прочитать зашифрованные данные!
|
|
|
|
|
Jan 10 2009, 12:19
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(cupertino @ Jan 10 2009, 01:11)  Если дочитаете до конца страницы  , там имеются ссылки на готовые имплементации Да я с этой страницы уже всё стянул, там вообще не реально разобраться (по крайней мере на моём уровне), что там, к чему много отдельных модулей, заточенных под другие цели и напичканные всем чем можно. Мне бы вот найти, по полочкам что бы было, вот функция создания ключей, вот функции шифрования, вот дешифрования и всё большего и не надо. 2cupertino а вы сами использовали этот ECC?
|
|
|
|
|
Jan 12 2009, 02:40
|

Профессионал
    
Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661

|
Цитата(Xenom0rph @ Jan 8 2009, 16:25)  главное что бы он не смог прочитать зашифрованные данные! таких задач масса - например проход по отпечатку пальца, логично их хранить в течении какогото периода - но потенциальное распространение биометрической информации не желательно. Цитата(Xenom0rph @ Jan 9 2009, 11:49)  Да уж там по русски ничего не понятно кстати болталась гдето в сети pdf русского перевода книжки Шнайдера. Набираете в google Шнайдер криптография вылезает куча ссылок. :-) лучше конечно шифровать симметричным ключом, а сам симметричный одноразовым.
|
|
|
|
|
Jan 12 2009, 17:23
|
Частый гость
 
Группа: Участник
Сообщений: 140
Регистрация: 2-01-08
Пользователь №: 33 768

|
Цитата(dch @ Jan 12 2009, 06:40)  кстати болталась гдето в сети pdf русского перевода книжки Шнайдера. Набираете в google Шнайдер криптография вылезает куча ссылок. :-) лучше конечно шифровать симметричным ключом, а сам симметричный одноразовым. Только он Шнайер. Брюс Шнайер (Schnyer), а не Шнайдер. В любом случае, от этой книжки до практической реализации как пешком до Луны, хотя без нее тяжко. Цитата(Xenom0rph @ Jan 7 2009, 14:40)  Сейчас занялся алгоритмом RSA, но прочитал, что ключ для стойкости должен быть не менее 1024 бит, а я не представляю где его хранить. Шифровать в лоб RSA не очень хорошо, он очень медленный. Так не делают даже на персоналках, где мощности процессоров несравнимы. Классический вариант заключается в шифровании основного потока данных быстрым блочным шифром (AES/Blowfish), а вот симметричные ключи к этому шифру закрыты уже RSA или ECC. Кроме того, есть методы снятия данных без влезания внутрь устройства. Например, анализируя потребление энергии можно сделать выводы о проходящих в данный момент операциях, ну и так далее. Почитайте FIPS-140-2 -- там много на эту тему.
|
|
|
|
|
Jan 13 2009, 08:20
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(Rst7 @ Jan 12 2009, 21:00)  Вообще, много есть разных способов. Я бы предложил топикстартеру немного более конкретизировать задачу. В частности, вопрос - данные приходят к устройству по незащищенному каналу? Где будет производится расшифровка? На том ноутбуке, который используется для считывания? Задача в сохранение данных в зашифрованном виде, и возможности расшифровать их только на ПК хозяина, хакер может только украсть это устройство, и дальше пытаться с ним возиться, но получить данные с eeprom, и получить ключ для дешифровки в будущем он не должен! вот основная задача. Кстати ту нашел простой алгорим ECC (http://www.intuit.ru/department/security/networksec/11/2.html) может кто нибудь на примере(на числах) показать, как это работает, а то как то туго у меня идёт!
|
|
|
|
|
Jan 13 2009, 09:10
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(Rst7 @ Jan 13 2009, 11:42)  Вот этот ноутбук, с которым ходят, собирают данные - это уже ПК хозяина? да, на нём установленна программа, котрая и будет дешифровывать!
|
|
|
|
|
Jan 13 2009, 09:27
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата да, на нём установленна программа, котрая и будет дешифровывать! Тогда дарю идею: После того, как из девайса считанны данные, большой брат генерирует случайную (именно случайную) последовательность байт длинной в размер EEPROM и передает ее девайсу, при этом девайс укладывает эту последовательность в EEPROM на место архива. Большой брат, конечно, сохраняет сгенерированную последовательность у себя. Эта последовательность - суть одна страничка одноразового шифроблокнота  Далее, девайс при очередной записи в EEPROM пишет байты как результат операции XOR собственно данных записи и значения, лежащего в той ячейке EEPROM, куда будем писать (т.е. с очередным байтом ключа). После чего указатель записи перемещается на следующую ячейку. Конечно, две записи в одну ячейку производить нельзя (да это и не требуется). Указатель на свободное место в архиве храните в другом месте. Когда в следующий раз приходит хозяин, то он считывает весь архив, делает ему XOR с ключем, который хранится на большом брате, получает расшифрованные значения, и затем заливает новый ключ. Старый ключ отбрасывается.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jan 13 2009, 10:11
|
Частый гость
 
Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646

|
Цитата(Rst7 @ Jan 13 2009, 12:27)  Тогда дарю идею: да можно, но проблемма в том, что ключи должны быть прочно зашиты в устройство и быть неизменны, так требует заказчик. От модератора. Из сообщения удалено излишнее цитирование.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|