roboforum.ru

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

умный замок

умный замок

crazy » 12 апр 2005, 17:41

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

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

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

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

P.S. В качестве контроллера используется at90s2313 но так как он снят с производства, предпологается заменить его на atmega8(нужен uart).

setar » 12 апр 2005, 18:26

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

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

реализовано на практике и применяется во многих авто сигналках,
код по понятным причинам закрыт.

ASin » 12 апр 2005, 18:28

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

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

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

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

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

А вообще, ключевые слова -- криптография, открытое шифрования, RSA. Тема очень богато представлена в инете.

=DeaD= » 12 апр 2005, 18:41

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

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


Думается даже, что К2 может быть открытым :)

ASin » 12 апр 2005, 19:33

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


Может... А смысл (в контексте ключа и замка)?  :roll:
Веселее делать его разным для разных ключей. И вести лог доступа  :lol:

crazy » 12 апр 2005, 20:21

как возвести в степень - это понятно =)
немоглибы вы обьяснить ламеру - что такое "по модулю"??

ASin » 12 апр 2005, 20:32

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

а ещё есть такой дивный сайт -- Яндекс  :lol:

crazy » 12 апр 2005, 20:47

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

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

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

приношу извенения за своё ламерство...  :oops:

ASin » 12 апр 2005, 21:17

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


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

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


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

Интуитивно, имхо, для 128 бит передача по ИК будет происходить дольше.

=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-бит вроде уже в коммерции применяют...

Надеюсь нигде сильно не ошибся :)


cron
Rambler\'s Top100 Mail.ru counter