|
Возможно ли? |
|
|
|
 |
Ответов
(15 - 29)
|
Aug 1 2009, 17:40
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(scifi @ Aug 1 2009, 20:00)  Тогда подскажите, какие арифметические операции доступны и над какими операндами. Вы упоминали +,-,*,/,XOR,табличное преобразование, некую маску (с неким ограничением по число битов?). Есть ли ограничение на число операций? Поскольку, похоже, недоступны ветвления (типа IF-THEN-ELSE), то нужны какие-то "нелинейные" операции типа побитового OR или AND. Табличные преобразования могут делать почти всё, но опять же, какие есть ограничения, связанные с ними? Табличное преобразование - макс. ОБЩИЙ объём памяти для ВСЕХ преобразований (В СУММЕ) 64 кбайта. Арифметические - любые, над любым операндом. Сдвиг любой. В приципе не оговаривается число самих операций, но хотелось бы по-менее (аппаратура не резиновая, к сожалению). Для начала рассмотрим ЛЮБОЕ количество операций. IF-THEN-ELSE - нет. Побитовые логические - любые.
|
|
|
|
|
Aug 1 2009, 18:13
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(scifi @ Aug 1 2009, 20:51)  Как насчёт такого варианта: Берём введённый код 0xAABBCCDD и наклыдываем на него при помощи XOR первый код доступа (32 бита). В результате - ноль, если числа совпали, а иначе - не ноль. Далее то же самое с вторым кодом доступа, третьим и т.д. В результате получаем набор чисел, и если одно из них - ноль, то есть одно совпадение. Перемножив все эти числа, получаем 0, если одно из них 0, а иначе в произведении будет не ноль. Подойдёт? Нет. Все коды доступа надо хранить. Это опять простая дешифрация при помощи масок (кодов доступа). Они известны, но в качестве масок прямого поиска использованы быть НЕ могут. Только для формирования чего-ль то в табличных преобразованиях и то - не на аппаратуре пользователя. Только при прграммировании устройства. 30 лет работаю - такое попало впервые....
Сообщение отредактировал Adv - Aug 1 2009, 18:16
|
|
|
|
|
Aug 1 2009, 18:41
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(scifi @ Aug 1 2009, 21:31)  Я опять запутался. Значит, есть аппаратура пользователя и есть устройство, которое надо программировать. А где происходит дешифрация? И почему нельзя использовать маски прямого поиска? Чтобы пользователь не раскрыл код, что ли? А ещё говорите, что всё договариваете... Как говорила Алиса, "Curiouser and curiouser!" Естественно - дешифрация происходит в аппаратуре пользователя. Хотя в моём случае - это тоже весьма условное понятие (Один чип программирует другой, причём есть разное программирование стартовое или текущее - "на лету"). И я не умею НЕ договаривать. Молчать - умею. Проверяли. И не надо на эту тему (не договаривания) далее. Скажу ВСЁ, что поможет делу. По существу - формирование таблиц для табличных преобразований выполняется ВНЕ устройства (чипа) во втором устройстве (чипе) при старте системы из этих двух (и других, разумеется ) чипов. В устройство (чип) выполняющий эту математическую "дешифрацию" (назовём это так) можно достучаться только при старте. Поэтому и все данные туда могу попасть только при старте. Ресурсы чипа - ограничены крайне (в известном смысле - для кого-то их там ну просто завались на первый взгляд 15000 ячеек), а дешифрировать надо 12-18 тысяч ключей (масок). И памяти - нет (достаточной....).
Сообщение отредактировал Adv - Aug 1 2009, 18:50
|
|
|
|
|
Aug 1 2009, 18:58
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(scifi @ Aug 1 2009, 21:49)  Если за это время мы не нашли решение, то дальше продолжать смысла не вижу. Может быть, кто-то ещё подключится. Удачи! Спасибо.
|
|
|
|
|
Aug 1 2009, 19:12
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(тау @ Aug 1 2009, 22:07)  Сорри за идиотизм с моей стороны, но почему бы не разделить входное адресное пространство на 2 одинаковых половины по 2^31 комбинаций. За валидность отвечает какой-нить бит, хоть первый хоть последний хоть средний.
Требований то по криптозащите нетути никаких. Допустим, а далее??
|
|
|
|
|
Aug 1 2009, 19:48
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(тау @ Aug 1 2009, 22:40)  Что далее? проще не бывает же. Сообщаете на старте некоему приемному контроллеру что 3-й (например) бит будет служить выходной величиной "1-Да, 0-нет" и автоматом любые адреса с установленным в 1 -цу третьим битом оказываются "своими" , остальные "чужимим". И всё.
Слишком примитивно? Ну так Вы же не сказали сколько "своих" значений а сколько "чужих " и в какой пропорции из множества 2^32 возможных комбинаций. Криптозащиты никакой. Но она вам ,похоже, и не нужна. А если нужна - опишите как-нибудь. Простите, но выше по теме я указал количество ПРАВИЛЬНЫХ ключей - 12000-18000..... Значения - любые из возможных в 32-х битном коде. Как вы говорите, сорри за идиотизм но разъясните твердолобому что Вы предлагаете?
Сообщение отредактировал Adv - Aug 1 2009, 19:49
|
|
|
|
|
Aug 1 2009, 20:25
|

.
     
Группа: Участник
Сообщений: 2 424
Регистрация: 25-12-08
Пользователь №: 42 757

|
Цитата(Adv @ Aug 1 2009, 23:48)  Простите, но выше по теме я указал количество ПРАВИЛЬНЫХ ключей - 12000-18000..... Значения - любые из возможных в 32-х битном коде. предположим Вам нужно 16536==2^14 валидных ключей с простейшей механикой определения из множества всех 32 битных входных величин. Вырабатываете маску , в которой любые 14 бит из 32-х имеющихся устанавливаете в 1-цу. Это получится некое число M. Сообщаете приемному контроллеру эту маску на старте. при поступлении входных величин (32 разряда) приемник тупо делает AND с инверсией маски М. Анализируете результат операции AND . Если не равен 0 - входная переменная не соответсвует критерию отбора , то есть на выходе ЛОЖЬ. Таким образом приемник выдаст на выход ИСТИНА только для тех комбинаций , где после AND получится 0. Замаскированные 14 бит при этом представляют подмножество валидных ключей, точное значение каждого из которых уже Вас и Ваш приемный контроллер вроде и не интересуют. А если интересуют - то дальше можно по сжатой таблице с 14 разрядным адресом 1 битных результатов или 11 разрядным адресом 8-битных результатов , взятых из под бит маски из входной величины, получить уникальное значение для каждого девайса , если эту таблицу в девайсах прописывать на старте. Это если я Вас правильно понял.
|
|
|
|
|
Aug 1 2009, 20:51
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 6-08-05
Из: Винница
Пользователь №: 7 407

|
Цитата(тау @ Aug 1 2009, 23:25)  предположим Вам нужно 16536==2^14 валидных ключей с простейшей механикой определения из множества всех 32 битных входных величин. Вырабатываете маску , в которой любые 14 бит из 32-х имеющихся устанавливаете в 1-цу. Это получится некое число M. Сообщаете приемному контроллеру эту маску на старте. при поступлении входных величин (32 разряда) приемник тупо делает AND с инверсией маски М. Анализируете результат операции AND . Если не равен 0 - входная переменная не соответсвует критерию отбора , то есть на выходе ЛОЖЬ. Таким образом приемник выдаст на выход ИСТИНА только для тех комбинаций , где после AND получится 0. Замаскированные 14 бит при этом представляют подмножество валидных ключей, точное значение каждого из которых уже Вас и Ваш приемный контроллер вроде и не интересуют. А если интересуют - то дальше можно по сжатой таблице с 14 разрядным адресом 1 битных результатов или 11 разрядным адресом 8-битных результатов , взятых из под бит маски из входной величины, получить уникальное значение для каждого девайса , если эту таблицу в девайсах прописывать на старте.
Это если я Вас правильно понял. Т.е если я правильно разобрался, в каждом из таблично мною запрограммированных числах должен быть указан один из 14-ти битных кодов? Если во всех 4-х числах этот код один и тотже, то число в 14 бит валидное, соответсвует принятому адресу и может подлежать сокращённой дешифровке? Так? Цитата(asdf @ Aug 1 2009, 23:32)  Может быть я тоже не правильно понял задачу, но почему нельзя в качестве маски или ключа использовать какие нибудь последовательности, генерируемые аппаратно, например М - последовательности, или расширенные? Беда - в повторениях, или ложных срабатываниях дешифратора. Понимаете, для ОДНОГО И ТОГОЖЕ ВХОДНОГО ЧИСЛА НЕЛЬЗЯ поставить ДВА РАЗНЫХ КЛЮЧА ( доп. числа, и проч. подобное). Т.е. есть код FF AA 00 22, это одна комбинация(адрес), 00 AA 77 11 - вторая, но внё входит одно и тоже число AA. Разумеется такое возможно не только для двух адресов - для намного большего количества. Выше я приводил точную аналогию с ОЗУ. Адреса - любые..... ЗЫ. Для ОРИГИНАЛЬНЫХ (в которых ни один байт не порвторяется с другими адресами, подлежащими дешифрации) адресов такое прекрасно работает.
Сообщение отредактировал Adv - Aug 1 2009, 20:41
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|