|
|
  |
Шифрование данных в памяти, Механизмы реализации шифрования данных обрабатываемых микроконтроллеро |
|
|
|
Apr 2 2009, 18:42
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112

|
Интересует тема шифрования даннх обрабатываемх контроллером и в последствии ханищихся во внешней памти . Сосотав устройства - некий источник ASC кода ( к примеру возьмём последовательный интерфейс ) , данные приходят в микроконтроллер , маркируются и отправляются на хранение в энергонезависимую память. В определённой степени накопитель данных. По запросу данные считываются из памяти , только вот считываться они длжны уже шифроваными. Каковы могут быть алгоритмы шифрования данных по средствам контроллеров семейства AVR. Может есть библиотеки для подобных задач? Или опыт решения подобных технических заданий .
|
|
|
|
|
Apr 2 2009, 19:11
|

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

|
Не так давно обсуждали некоторые моменты аналогичного устройства. В основном, все зависит от стоимости данных, сохраняемых на носитель. А технические моменты не очень сложны - вполне по силам и RSA, и AES. Часто хватает XTEA.
Если злоумышленник не имеет возможности подменить само устройство, то возможна организация системы с одноразовым блокнотом - взлом такого не по силам никому, но можно подломить саму организацию системы - например, уже упомянутой подменой самого девайса.
Рассказывайте подробности, будем обсуждать.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 3 2009, 04:38
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Из постановки вопроса не понятно, данные должны храниться зашифрованными во внешней памяти для того, чтобы: Злоумышленник, физически выдрав энергонезависимую память из платы, не смог считать из нее данные as-is ? или Их нужно считать в зашифрованном виде просто для передачи по какому-то открытому каналу, чтобы не тратить время на шифрование при передаче в run-time ? Или вы имели ввиду что-то еще? А канал, по которому поступают данные в устройство, не проще будет перехватить? Цитата(Rst7 @ Apr 3 2009, 00:11)  Если злоумышленник не имеет возможности подменить само устройство, то возможна организация системы с одноразовым блокнотом Можно про одноразовый блокнот пояснить, что он из себя представляет, какой алгоритм?
--------------------
Пасу котов...
|
|
|
|
|
Apr 3 2009, 05:32
|

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

|
Цитата Можно про одноразовый блокнот пояснить, что он из себя представляет, какой алгоритм? http://ru.wikipedia.org/wiki/Шифр_ВернамаА основная идея в регистраторах такая - когда снимается информация, на ее место пишется новый шифроблокнот. Потом, по мере поступления информации, выполняется xor с уже имеющимся шифроблокнотом. Цитата т.к. поток данных не ограничен Ограничен. Размером накопителя
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 4 2009, 07:52
|
Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 22-01-09
Пользователь №: 43 819

|
Цитата(Stasevuch @ Apr 2 2009, 21:42)  Интересует тема шифрования даннх обрабатываемх контроллером и в последствии ханищихся во внешней памти. По запросу данные считываются из памяти, только вот считываться они длжны уже шифроваными. В целом задача достаточно тривиальна. Вам надо определиться с несколькими вопросами: 1) Насколько велика ценность хранимых данных. Другими словами как много усилий надо потратить злоумышленнику что бы вы сказали "узнал - ну и бог с тобой" 2) Насколько велика вероятность взлома используемой однокристалки. Опытные люди понижают(или снимают) напряжение питания через строго заданный промежуток времени после подачи команды стирания. В результате стираются биты защиты, а данные во Flash остаются. После этого дешифрование данных становится тривиальной задачей. 3) Но (1) и (2) это всё мелочи. Проблемы со взломом оборудования составляют совсем не большой процент по сравнению с отказами самого оборудования. Вам надо выбирать такой алгоритм шифрования, при котором потеря одного (или нескольких) блоков данных во внешней памяти не повлияла на шифрование-расшифровывание остальных. Собственно без решения этих вопросов определиться с алгоритмом или библиотекой вам не удасться. Сразу хотелось бы предостеречь от "самой лучшей" защиты. От хороших фокусников вы не защититесь. Озвучьте ваши мысли по этим вопросам, после этого можно будет предложить что-либо.
Сообщение отредактировал ssvSerge - Apr 4 2009, 07:54
|
|
|
|
|
Apr 4 2009, 16:15
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112

|
К вопросу об определении ряда факторов влиющих на степень ценности информации и вероятности их взлома на аппаратном уровне. Предположим что такие пути подхода к информации , как демонтаж микросхемы памяти ,или взлом Flash не рассматриваются. И вполне допустим простой алгоритм криптовки. Проблемма разве что может заключаться в том , что шифрованию подлежат исключительно цифры , а не символы.(ну это на мой неопытный взгляд проблемма , может не всё так уж проблематично). Это может быть некий алгоритм , котрорый прячет полезную информацию в бесполезном "мусоре" знаков . В том то вся и беда , что ранее не сталкивался с подобной задачей.
Нарыл алгоритм TEA. Но его реализация изображена на примере С. Не пинайте , но на бейсик это может кто перевести.
Routine, written in the C language, for encoding with key k[0] - k[3]. Data in v[0] and v[1]. void code(long* v, long* k) { unsigned long y=v[0],z=v[1], sum=0, /* set up */ delta=0x9e3779b9, /* a key schedule constant */ n=32 ; while (n-->0) { /* basic cycle start */ sum += delta ; y += ((z<<4)+k[0]) ^ (z+sum) ^ ((z>>5)+k[1]) ; z += ((y<<4)+k[2]) ^ (y+sum) ^ ((y>>5)+k[3]) ; } /* end cycle */ v[0]=y ; v[1]=z ; }
Decode Routine void decode(long* v,long* k) { unsigned long n=32, sum, y=v[0], z=v[1], delta=0x9e3779b9 ; sum=delta<<5 ; /* start cycle */ while (n-->0) { z-= ((y<<4)+k[2]) ^ (y+sum) ^ ((y>>5)+k[3]) ; y-= ((z<<4)+k[0]) ^ (z+sum) ^ ((z>>5)+k[1]) ; sum-=delta ; } /* end cycle */ v[0]=y ; v[1]=z ; }
|
|
|
|
|
Apr 5 2009, 05:55
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата на бейсик это может кто перевести Для PIC, но якобы на Бейсике http://www.picbasic.co.uk/forum/showthread.php?p=54888Привет от google;)
--------------------
aka Vit
|
|
|
|
|
Apr 5 2009, 18:03
|
Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 22-01-09
Пользователь №: 43 819

|
Цитата(Stasevuch @ Apr 4 2009, 19:15)  Предположим что такие пути подхода к информации , как демонтаж микросхемы памяти, или взлом Flash не рассматриваются. И вполне допустим простой алгоритм криптовки. А вы уверены, что вам вообще нужна шифрование - расшифровывание? Судя по тому, что вы написали, то "оно" вам не нужно вообще. Ведь вы даже не предполагаете факт доступа ко внешней памяти. Ну, а если у вас задача стоит именно так, как вы сказали, то посмотрите на алгоритм DES. Если вы выберете старый вариант (не 3DES, а простой DES) то будет всё очень быстро и весьма надёжно. У него есть дополнительные режимы "ECB", "CBC", "CBF, "OBF". ECB - ваш выбор. Остальные вам не нужны. Более того - они для вас - зло. Получите весьма хороший "набор знаков". Реализаций - полно. Добавил полсе редактирования - вы ставите перед собой задачу разобрать текст (лексический анализ). В общем случае это во много десятков раз сложнее, чем ваша задача. Не изобретайте велосипед. Шифруйте блоки по 512 байт. Сергей.
Сообщение отредактировал ssvSerge - Apr 5 2009, 18:14
|
|
|
|
|
Apr 8 2009, 11:56
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 6-11-07
Пользователь №: 32 112

|
Может подход и делетанский в вопросе шифрования , но вот так вот ! Я без понятия что за алгоритм шифрования в итоге получилось следующее : Берём строку длинной в 48 символов . Её содержание : (цифры + доп знаки) по таблице ASC Dec (48-63) В этой же строке в конце последние 8 символов - временная метка ЧЧ:ММ:СС Выделяю из временной метки секунды , прибавляю 32 к значению секунд , что бы при декодировании не влезть в служебные непечатные символы ASC кода . и к ASC коду каждого символа в строке прибался значение временной метки. Потом что что получилось (секунды из временной метки+32+код ASC шифруемого символа+ № позиции в строке шифруемого символа ) переожу вновь в ASC код и отправляю в открытый канал . Да , и значение ключа (секундная метка + 32 ) вписываю в тело шифрованой строки , место ключа в строке , так же меняется. Может такой код и раз-плюнуть взломать, но для моих целей - с головой хватает . И не надо меня пинать за бейсик. Мы в институтах на програмёра не учились .
|
|
|
|
|
Apr 8 2009, 19:54
|
Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 22-01-09
Пользователь №: 43 819

|
Цитата(Stasevuch @ Apr 8 2009, 14:56)  Я без понятия что за алгоритм шифрования... Может такой код и раз-плюнуть взломать, но для моих целей - с головой хватает. Если вас устраивает качество такого шифрования, то и отлично. Реализуйте и используйте. Вы только должны чётко понимать, что является секретом в вашем случае. Это - алгоритм. Секрет никому раскрывать нельзя по определению (в том числе и заказчику). Иначе мероприятие теряет всякий смысл. Да, еще момент - продумайте что надо будет сделать в случае компрометации секрета. И, вы правы, не стоит рассчитывать на какую-либо стойкость вашего решения. Взломать его можно будет автоматическим способом.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|