roboforum.ru

Технический форум по робототехнике.


умный замок

Автомат, адаптивный автомат ... разум

умный замок

Сообщение crazy » 12 апр 2005, 17:41

Хотя это и не от носится напрямую к роботостроению, всёже думаю здесь найдутся люди которые смогут ответить на этот вопрос.

Хочу сделать электронный замок с ключом на ИК.

В данный момент всё работает так:
1. Замок посылает случайное число.
2. Ключ обрабатывает это число по зашитой в него формуле.
3. Замок обрабатывает тоже число по тойже формуле.
4. ключ возвращает результат замку.
5. замок сравнивает свой результат с ответом ключа и открывает\не открывает дверь.

Вопрос: какой должна быть формула, чтобы нельзя было по перехваченным данным её возпроизвести и сделать клон ключа?

P.S. В качестве контроллера используется at90s2313 но так как он снят с производства, предпологается заменить его на atmega8(нужен uart).
crazy
 
Сообщения: 30
Зарегистрирован: 10 апр 2005, 22:09

Сообщение setar » 12 апр 2005, 18:26

то что ты описал это шифрование с открытым ключём

читай алгоритмы на PGP шифрование.
логично использовать 64 , 128, 256 или 1024 бит ключа

реализовано на практике и применяется во многих авто сигналках,
код по понятным причинам закрыт.
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Сообщение ASin » 12 апр 2005, 18:28

Ну, например, облегчённый вариант шифра ЭльГамаля

Ключ -- два больших числа, К1 и К2
Замок посылает ключу случайное число Х
Ключ возводит Х в степень К1 по модулю К2, возвращает результат замку.

Вопрос: какой должна быть формула, чтобы нельзя было по перехваченным данным её возпроизвести и сделать клон ключа

Это зависит только от ценности того, что заперто  :lol:

atmega8 предпочтительнее, из-за её аппаратного умножения и бОльшей памяти.

А вообще, ключевые слова -- криптография, открытое шифрования, RSA. Тема очень богато представлена в инете.
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение =DeaD= » 12 апр 2005, 18:41

ASin писал(а):Ну, например, облегчённый вариант шифра ЭльГамаля

Ключ -- два больших числа, К1 и К2
Замок посылает ключу случайное число Х
Ключ возводит Х в степень К1 по модулю К2, возвращает результат замку.


Думается даже, что К2 может быть открытым :)
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Сообщение ASin » 12 апр 2005, 19:33

=DeaD= писал(а):Думается даже, что К2 может быть открытым :)


Может... А смысл (в контексте ключа и замка)?  :roll:
Веселее делать его разным для разных ключей. И вести лог доступа  :lol:
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение crazy » 12 апр 2005, 20:21

как возвести в степень - это понятно =)
немоглибы вы обьяснить ламеру - что такое "по модулю"??
crazy
 
Сообщения: 30
Зарегистрирован: 10 апр 2005, 22:09

Сообщение ASin » 12 апр 2005, 20:32

http://isec.net.ru/algoritms.php?art=2

а ещё есть такой дивный сайт -- Яндекс  :lol:
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение crazy » 12 апр 2005, 20:47

Спасибо, теперь я немного определился с шифрами, хотя с модулем так и не врубился..

http://criptograf.narod.ru/kr3.html вот тут прочитал, всё замечательно, с формулами.

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

приношу извенения за своё ламерство...  :oops:
crazy
 
Сообщения: 30
Зарегистрирован: 10 апр 2005, 22:09

Сообщение ASin » 12 апр 2005, 21:17

crazy писал(а):Спасибо, теперь я немного определился с шифрами, хотя с модулем так и не врубился..


Разделить по модулю А == Получить остаток от деления на А

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


Ну даже не знаю  :oops: Смотря как алгоритмы писать... Смотря что такое "стойкость алгоритма"...  Смотря какая частота контроллера... Опыта нет так навскидку оценить :oops:

Интуитивно, имхо, для 128 бит передача по ИК будет происходить дольше.
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение =DeaD= » 12 апр 2005, 21:21

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


Если не сильно оптимизируя, то получим - перемножить 2 числа длиной N байт займет для AVR-ки времени K*N*N где K - некая константа (зависит от метода умножения, ну скажем пусть будет 5), возведение числа длиной N байт в степень длиной N байт по модулю числа длиной N байт же займет времени соответственно что-то около 16*K*N*N*N (нам потребуется сделать 8*N шагов, на каждом шаге - 2 умножения длительностью K*N*N, еще и вычесть может придется, но это явно меньше K*N операций, так что не считаем вообще вычитание за затраты времени), это используя двоичное возведение в степень по модулю.

Итого если хотите делать все за 1 секунду, то получается что у вас при штатных максимальных 16МГц есть на все про все 16'000'000 операций, делим их на 16*5, получаем 200'000, извлекаем корень третьей степени и получаем чуть больше 50 байт, т.е. 400бит.

По всем меркам это очень неплохая стойкость, 256-бит вроде уже в коммерции применяют...

Надеюсь нигде сильно не ошибся :)
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов


Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2