Объявление

Свернуть
Пока нет объявлений.

Персональный криптопроцессор

Свернуть
X
Свернуть

  • Персональный криптопроцессор

    DS1957B
    Персональный криптопроцессор

    Е. Левин
    В. Синкевич

    При совершении транзакций через Internet существует две фундаментальные проблемы: установление подлинности и защищенность передачи. Иными словами, никто не уверен в том, что вы – это вы, так как кто-нибудь может украсть ваш идентификатор и изменить данные.
    Многие компании предлагают решения для защиты транзакций в Интернет, и на этом фоне выделяется новое изделие компании Dallas Semiconductor – персональный криптопроцессор DS1957B.
    Новый идентификатор для Интернет относится к хорошо известному семейству iButton и размещен в стандартном для этих устройств 16мм стальном корпусе. Но DSC никогда ранее не производил ничего подобного. Новое устройство – это фактически персональный криптографический компьютер, который обеспечивает управление доступа к Web-страницам, позволяет подписывать документы, шифровать важные файлы, защищать почту Email, и безопасно проводить финансовые транзакции – даже если ваш компьютер, программное обеспечение и линии коммуникаций сомнительны с точки зрения защищенности. Если программное и аппаратное обеспечение подверглись нападению хакера, критическая информация о персональных кодах и шифровальных ключах пользователя останется для него недоступной в физически защищенном чипе iButton.
    Криптопроцессор iButton, являясь по природе сопроцессором терминала, персонального компьютера, рабочей станции или сервера, открывает новый мир удобств. Легко подключив его к порту компьютера с помощью стандартного считывателя, вы можете:
    · получить защищенный доступ к конфиденциальной информации условно-доступных Web-страниц
    · подписывать документы международно-признанными цифровыми сертификатами, так что получатель уверен в подлинности подписи
    · шифровать и расшифровать конфиденциальные сообщения для пересылки по Email.
    · проводить денежные платежи, выпускать собственные электронные почтовые штампы, печатать и подписывать электронные чеки (которые вскоре придут вместе с внедрением электронной сетевой экономики).
    Степень защищенности повышается за счет того, что носить свой Интернет-идентификатор вы можете закрепленным на часах, цепочке для ключей, бумажнике, кольце. Принцип использования двухфакторной идентификации (иметь что-то + знать что-то) аналогичен тому, что используется в банкоматах. Общая идея заключается в том, что вы носите свой iButton на тщательно охраняемом аксессуаре, и заботитесь о том. чтобы его не потерять. Ниже приведено несколько причин, по которым вы можете захотеть иметь iButton:
    · Это защищенное хранилище личных паролей-ключей, необходимых для совершения транзакций.
    · Он избавляет от необходимости запоминания секретных паролей
    · Вместо громоздкой операции ввода ключевых символов, вы обходитесь простым касанием контактного устройства
    · Вы всегда имеете с собой компьютер
    · Вы становитесь частью электронной сетевой экономики.
    Как и все микросхемы iButton, новый криптопроцессор выполнен по жестким стандартам. Попробуйте согнуть его – это невозможно. Бросьте его на пол, наступите на него, забудьте его снять, ныряя в бассейн. Никаких проблем. iButton испытан на ношение в течение 10 лет и на 1 миллион контактов со считывателем.
    Вовсе необязательно верить на слово в высокую защищенность iButton. Национальный институт стандартов (NIST) и Канадское общество безопасности (CSE) подтвердили способность iButton сохранять конфиденциальную неклассифицированную информацию. Сертификат FIPS 140-1 гарантирует правительственным агентствам, что данный продукт является надежным, физически защищенным модулем для хранения конфиденциальной информации. Стальной корпус позволяет легко обнаружить попытки физического взлома. Память SRAM на монолитном чипе специально сконструирована так, что содержимое уничтожается при попытке вскрытия корпуса. Доступ к личным ключам в SRAM невозможен, т.к. взломщик должен преодолеть защитные барьеры iButton и считать содержимое памяти за время, меньшее, чем время, необходимое для стирания содержимого.


    2. ОСНОВНАЯ ИНФОРМАЦИЯ

    Компания Dallas Semiconductor недавно представила портативный Java-компьютер с объемом памяти, достаточной для хранения личных электронных документов. Микросхема DS1957B из семейства iButton с брелком, получившим название “ 2-in-1 ” может служить ключом для физического доступа в здания или компьютерным ключом для безопасного доступа в сеть, а также выполнять роль электронной подписи в Internet. Внутри 16-имиллиметрового стального корпуса iButton размещен Java-компьютер с памятью программ ROM 64 килобайта и оперативной памятью ОЗУ 134 килобайта, которая может сохранять более чем 30 цифровых сертификатов (удостоверений) с 1024-разрядными ключами, использующими стандарт ISO X.509v3 - наиболее широко признанный формат сертификата ключа общественного пользования. Кроме того, DS1957B может сохранять сотни имен пользователей и паролей, цветную фотографию и прикладные программы многих различных поставщиков услуг через Web.
    Все персональные данные в микросхеме защищены криптографически, а физически кристалл защищен стальным корпусом. Испытания на изнашиваемость позволяют гарантировать работоспособность в течение 10 лет, что требуется для обеспечения надежности, необходимой для хранения цифрового идентификатора личности. Поскольку iButton носят на цепочке для ключей, он всегда под рукой.
    Может ли выпущенная корпорацией для своих служащих или приобретенная в личное пользование Java-iButton охватить персональные, корпоративные, финансовые и правительственные приложения?. Обладая памятью большой емкости, iButton может иметь множество приложений, включая:
    · управление доступом в здания и к оборудованию
    · гарантированное вхождение в сеть, используя установление подлинности вызова / ответа
    · хранение имен и паролей пользователя
    · хранение данных пользователя для быстрого заполнения форм в Internet
    · хранение цифровой подписи пользователя для электронного бизнеса
    · хранение цифровой фотографии и биометрики отпечатка пальца.
    Поскольку память может быть загружаема и перезаписана неограниченное количество раз, iButton может быть адаптирована для еще не созданных приложений Web, а выпущенное новое программное обеспечение действующих приложений может загружаться через Internet, делая доступными новые услуги.

    Возможности DS1954B по генерации пар ключей для электронной цифровой подписи, условия для верификации подписей третьей стороной и загружаемый Java-компьютер закладывают основы для совершения весьма ответственных транзакций через Internet. В дополнение к мощным 1024-разрядным ключам, внутри своего криптографического модуля iButton имеет встроенные истинные часы, которые нельзя перенастроить извне и которые применяются для установки временной отметки при осуществлении электронной подписи. Напомним, что такая подпись является теперь юридически законной согласно законам, подписанным Американским конгрессом и другими правительствами.

    Java iButton является защищенным средством хранения личного секретного ключа и цифрового сертификата, выпущенного заслуживающим доверия юридическим субъектом. Программное обеспечение для систем цифровых сертификатов (Public Key Infrastructure) выпускается такими авторитетными фирмами, как Verisign, Entrust Technologies, Baltimore Technologies, Microsoft. Оно доступно для свободной загрузки на сайтах этих фирм или по адресу www.ibutton.com/pki.html. Выполнив описанные процедуры, каждый может получить персональный секретный криптографический ключ и цифровой сертификат, который затем будет использован в переписке или для иных целей

    Java iButton может носиться на каком-либо аксессуаре по выбору. Dallas Semiconductor предлагает на выбор кольцо, часы, бумажник, металлическую карточку, футляр для ключей – так, чтобы вы всегда могли ей воспользоваться и не терять. Для доступа в здание или к компьютеру пользователь просто прикасается карточкой iButton к контактному устройству Blue Dot.

    Новая разработка Dallas, брелок 2-in-1, поддерживает двойное использование микросхем DS1957B – как для физического, так и для компьютерного доступа. С одной стороны брелка фиксируется iButton, которую можно стандартным образом применять в системах контроля доступа в помещения, с другой стороны брелок имеет разъем шины USB для универсального доступа к компьютерам. iButton вместе с брелком 2-in-1–это смарт-карта супер-емкости со встроенным считывающим устройством. Данная комбинация неотличима от смарт-карт ISO 7816 со считывающим устройством. Ее использование значительно упрощено прямым подключением к порту USB, стандартному (www.usb.org) для сотен миллионов персональных компьютеров, изготовленных начиная с 1997. Для подключения к компьютерам, изготовленным до 1996 года могут использоваться адаптеры последовательного или параллельного порта. Открытые стандарты платформы Java-card, спецификации открытой платформы и разъема USB позволяют работать с любыми конкретными аппаратными и программными интерфейсами.

    Как известно, в операционную систему Windows2000 встроена процедура аутентификации доступа, ориентированная на применение смарт-карт. Все подсистемы безопасности в полном объеме будут работать и с DS1957B. Процедура входа в WindowsТ 2000 компьютера проста: только вставьте брелок 2-in-1 в порт USB (www.lock-out.net). Программное обеспечение, необходимое для этого, доступно в www.ibutton.com/pki.html. Светодиод на брелке может светиться, подтверждая подключение, или мигать, индицируя успешную транзакцию. Реализованы функции “горячего” подключения к порту USB и автоматического обнаружения появления и исчезновения брелка на входе порта, что делает использование устройства интуитивно понятным и лёгким.
    Платформа Sun Microsystems Java Card 2 была выбрана потому, что это обеспечивает универсальный канал распространения для многих новых услуг, которые начнут внедряться в последствие, по мере того, как новые технологии безопасности и обслуживания через Интернет начнут массово внедряться. Располагая в 6 раз большей памятью, чем смарт-карта "Blue Card" Американ Экспресс, Java-iButton является исключительно персональным компьютером. Ее более высокая емкость памяти позволяет хранить множество сертификатов, так, чтобы каждый мог выбирать, какой из них использовать в данной конкретной транзакции (сделке) для обеспечения необходимой секретности.
    Никому не хочется иметь карман, наполнненный, наполненный “таблетками”, так же, как и карман, набитый карточками. Гибкий Java-компьютер iButton легко перепрограммируется, и поэтому может открывать двери, обеспечивать доступ в сети, подписывать электронные документы, безопасно сохранять список имен/паролей пользователя, сохранять копию фотографии и принимать программные апгрейды от новых поставщиков услуг в области электронной коммерции. "
    Брелок 2-in-1 может применяться с любой микросхемой семейства iButton - от самой простой (DS1990), до наиболее сложного нового прибора DS1957B. Прибор DS1957B с брелком 2-in-1 продается фирмой в розницу за $ 32 через www.iButton.com. Покупатели должны получить соответствующие лицензии. Свободно распространяемые программные средства делают использование быстрым и простым. Комплект Java Development доступен в http://www.javasoft.com/products/jdk...d-windows.html. Инструмент поддержки iB-IDE от Dallas Semiconductor (www.ibutton.com/jibkit/index.html) обеспечивает интерактивную справку online и помогает редактировать, эмулировать, и отлаживать программное обеспечение для iButton.






    iButton и 1-Wire – зарегистрированные торговые марки Dallas Semiconductor.
    Java и Java Card – торговые марки Sun Microsystems, Inc. в США и других странах.
    PC Postage – торговая марка U.S. Postal Service.


    Источник: rtcs.ru
      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • Эссе об авторизации таксофонных карт
      admin
      Путешествуя по рунету в поисках любой информации об эмуляторах смарт карт синхронного режима стандарта ISO7816 заметил интересную особенность: информации почти нет, а то что можно найти списано с одного источника (Phrack Magazine 48 выпуск) в разных вариациях. И ни слова я не нашел об авторизации смарт карт в таксофоне. На самом деле, любой кто подумывал о создании эмулятора...
      04.02.2017, 10:48
    • Устройства бесконтактной идентификации
      admin
      В общем случае система бесконтактной идентификации состоит из двух частей: ключ и считыватель.
      Ключ

      Ключ представляет собой миниатюрный чип и антенну, которые затем запрессовываются в некоторый корпус (пластиковая карточка, авторучка, подошва обуви и т. д.). На рисунке, взятом из технического описания на чип H4100 фирмы EM-Marin показана схема такого ключа. ...
      04.02.2017, 10:48
    • Трактат о проектировании эмуляторов таксофонных карт
      admin
      Я считаю, что было бы совершенно неправильно, если бы вообще кто-либо публиковал рабочую прошивку эмулятора, тем самым обесценивая полученный результат. Потом каждый ламер сможет фыркнуть на вашу работу - "это все из инета скачать можно ...". Если вы трахались над нею более года, вам будет очень обидно. А если учесть, что "золотые" телефонные карты продаются в питере по цене около ста баков за штуку, то и тем более не стоит.
      К тому же, очень многим прошивка не поможет. Такого, чтобы заработало сразу - не бывает. Грабли будут. А грабли обходить - нужно понимать, что ты делаешь, как оно все работает и как оно должно работать. В общем случае, достаточно наличия восхищения двумя книгами - "искусство программирования" кнута и "искусство схемотехники" хоровица / хилла. А большинству читателей этой конфы неплохо бы перечесть школьный курс физики в разделе "электричество". Чтобы было поменьше "гениальных" идей, типа ламинирования магнитной карты.
      А то, к примеру, вам потребуется собрать считыватель телефонных карточек. Вы припаяете правильно все проводки, запустите правильную прогу... А в сетапе компа стоит двунаправленный /eрр/ режим параллельного порта...
      И - жопа...
      Работать не будет. А это даже не грабля, это так - грабелька. В этой конфе постоянно жалуются, что не получается считать карточку. Прикидываю, поля, усеянные граблями, на которых заблудились эти несчастные.
      Но, я прикололся, и хочу показать, как примерно должна выглядеть разработка эмулятора. Дабы было меньше неконкретных вопросов на эту тему. При этом будут использованы ошметки моих первых, порой забавных, попыток в этой области. Ценность их для меня сейчас не велика, поскольку я и сам не знаю можно ли их довести до рабочего результата /то была тупиковая ветвь разработки/, но жалко, если какие-то изюминки пропадут, когда-нибудь, без следа, раздавленные клавишей F8. Пусть будут в эхе.
      Во избежание разглашения know нow я сменю микропроцессорную платформу, при обсуждении. Ее выбор будет более или менее дебильным. Таким, чтобы воспользоваться этим текстом, как инструкцией по сборке, было бы совершенно невозможно. Только, как руководством к действию. На пик процессоре эмулятор вы уж реализуйте на досуге как-нибудь сами...
      Итак, предположим вам втемяшилось в голову разработать эмулятор на самой неподходящей для этого платформе. Например, на однокристалке из семейства mcs-48 фирмы интел i8048, КР1816ВЕ48, i8035, i8039, etc./. Ну уперлись рогом и все тут.
      Процессоры 8048, 8035, при максимальной тактовой частоте 6 mнz исполняют одну команду за 2.5 или 5 мкс. А минимальные времена импульса и промежутка между импульсами сигнала clk при чтении карточки определены в 8 и 10 мкс. На период событий в нашей системе будут приходится 3-7 команд процессора. Ясно, что это недопусимо мало. Процессоры i8049 и i8039 чуть быстрее. К ним можно прилепить кварц 11 Mнz и команда будет выполняться за 1.36 или 2.72 мкс. Поскольку, таксофон, наверняка, работает с карточкой на частоте меньше максимальной (для надежности), может быстродействия нам и хватит. Если Будем экономить каждый такт процессора. Короче говоря, столь странный Камень выбран для того, чтобы сделать более выпуклой битву за быстродействие, которая является непременным спутником разработки любого эмулятора.
      Поскольку таксофон, при отнятии единицы, снимает питание с карточки и перечитывает ее заново, а встроенной энергонезависимой памяти в нашем проце нет, то ясно, что придется сделать внешнее питание. А то, при снятии питания, проц будет забывать сколько осталось единиц. Чтобы батарейка работала подольше, берем кмоп вариант проца. Чтобы никакие дополнительные мелкоcхемы, типа защелки или пзу-хи /27C16/ не потребляли лишнего тока, берем проц со встроенным перешиваемым пзу. Будем лить программу внутрь. Короче говоря, выбираем i87C49 (кажется у него даже есть аналог КР1835ВЕ49). Максимально допустимая частота кварца для этого процессора 11 mнz (одна команда за 1.36 или 2.72 мкс). Но, не забудем, что процессоры можно разгонять. Поэтому эксперименально подберем максимальную частоту кварца, при которой проц будет работать без глюков. Не забудем, при этом, контролировать частоту генерации Частотомером на ноге xtal2. А то, при подключении слишком высокочастотных кварцев, генерация может начаться на паразитных r и c, а не на частоте резонатора. Пик-процессоры, например, разгоняются аж в 2 раза. Мой PIC16C84-04/SO работал на 10 mнz-ах и изредка глючил на 11.7. А PIC16F84-10I/SO еще Пахал на 21mнz-е и напрочь отказался лишь на 24-х.
      Поскольку, эмулятор получается батарейным, то отпадает проблема, которая мучит разработчика эмулятора с питанием от таксофона - минимизация времени старта процессора. Таксофон, после подачи питания, делает жутко малую выдержку прежде, чем начать читать карту. Если, к этому времени поцессор не успел стартовать, исполнить секцию инициализации программы и добраться до главного цикла, то данные, прочитанные таксофоном, будут представлять совершеннейший shit. Но процессору-то надо дать время сброситься, а тактовому генератору раскочегариться и устаканить свои колебания. Напомню, что кварцевый резонатор начинает генерацию вовсе не сразу после подачи на него питания. Пик-процессор, например, при старте отсчитывает 1024 импульса от кварца, в качестве выдержки на стабилизацию его частоты, прежде чем начать ход по программе. Очевидно, что время между подачей напряжения питания и первым импульсом от кварца является просто мертвым временем, бесполезно увеличивающим время прихода процессора в чувство. Мертвое время зависит от величин емкостей, подключенных к выводам кварца и имеет четко выраженный минимум. Оно велико при слишком маленьких и слишком больших емкостях. У керамического резонатора это время порядка десятков микросекунд, а у кварца это - единицы миллисекунд ! Так-что, взяв двухлучевой запоминающий осциллограф, желательно минимум этого мертвого времени, для конкретного экземпляра кварца, найти, перебирая величины подключенных к нему емкостей.
      Опять таки, поскольку эмулятор получается батарейным, нет необходимости оптимизировать секцию инициализации программы. Можно, не торопясь, скопировать все или часть данных из пзу в озу. В нашем случае в озу Будут храниться только изменяемые данные, соответствующие кредиту карты. Неизменяемые данные (серийный номер карты, сертификат и т.п.) будут храниться в пзу. Для ускорения доступа к данным будем, при старте Программы, копировать данные в озу по тем-же адресам, что они лежали в третьей странице пзу. Это позволит использовать один указатель для доступа и к изменяемым и к неизменяемым данным.
      Теперь изобретаем схему. Схему всегда нужно проектировать так, чтобы программа для нее имела максимальное быстродействие. То есть первый этап оптимизации программы - схемотехнический.
      Во первых, смотрим - можно-ли обнаруживать какие-либо события аппаратно (а не программно), заводя сигналы на ноги прерывания микропроцессора. Пусть железо, жесткая логика, вберет в себя часть алгоритма. Нужно максимально использовать аппаратные возможности микросхемы, обрабатывая импульсы по прерываниям, а не опросом линии в цикле.
      Карточка, при чтении, по фронту clk увеличивает на один внутренний адресный счетчик. Но состояние своего выхода не меняет. И выдает новый Бит лишь по спаду сlk. Наш-же эмулятор, обнаружив clk, будет в течение нескольких команд процессора соображать по программе, что к чему и какой бит вывести. Поэтому ясно, что эмулятор должен срабатывать по фронту clk. Он будет выдавать следующий бит с задержкой от фронта. Если таксофон будет очень привередничать можно, вставляя noр-ы, манипулируя частотой кварца, а также выравнивая плечи по временам исполнения, приурочить этот момент как раз на спад clk. Хотя реально такие тонкости вряд-ли понадобятся. То есть необходимо прерывание по фронту clk. Но наш гребаный процессор имеет вход int, который срабатывает по отрицательному перепаду /из 1 в 0/. ну не ставить-же инвертор в самом деле. Волей-неволей с идеей прерываний приходится распрощаться. Будем опрашивать линии сами.
      Куда-же засунуть этот clk. Какой-нибудь программист тут-же ляпнул бы - да на порт ввода-вывода /например р1.0/. И обрабатывал линию бы так :
      in a,р1
      jb0 clock_рrisнel - в 4 такта процессора а если-бы условный переход нужен был бы по отсутствию clk : in a,р1
      cрl a
      jb0 netu_clocka - 5 тактов
      / команды jnb в этой варварской системе команд нету / А вот человек, исповедующий идею аппаратной оптимизации программ, засунул бы линию clk на ногу t0, а линию rst на ногу t1 и ветвился бы в два такта по обоим условиям - jt0, jnt0, jt1, jnt1.
      Вот линию out некуда присоединить, кроме как к какой-нибудь линии порта ввода-вывода. Причем приверженец схемотехничесого вылизывания программ предпочел бы именно нулевой бит какого-нибудь порта /например р1.0/. Почему ? А это предоставляет возможность писать максимально лаконичные куски кода для манипулирования этим выходом. Ниже вы это увидите.
      Но сначала вопрос - как хранить данные карточки, для максимально быстрого оперирования ими. Во первых как их вообще представлять - по биту в байте или упаковать по 8 бит в байт. Если хранить весь дамп Карты в 16-и байтах, то при чтении, а это самая быстрая операция карточки, пришлось бы проверять постоянно - надо ли читать следующийБайт или все еще вращать / сдвигать этот. Зато как легко выполнялся бы Writecarrу - послал в память байт ff и все. Но операция writecarrу будет происходить около 10 мс. Поэтому оптимизируем по быстродействию в пользу read, а уж при writecarrу времени послать 8 байт хватит. То есть храним данные карточки в 128-и байтах, причем смысл данных будет иметь только младший бит в байте. При этом, все операции получаются легко и непринужденно.
      Посылка следующего бита на выход :
      1. Неизменяемых данных из rom
        inc r0 - увеличение на единицу адресного счетчика
        mov a,r0
        movр3 a,@a - чтение байта из встроенного пзу
        outl р1,a - нужный бит данных на выходе р1.0
        остальные бита порта р1 никуда не подключены пусть изменяются как им угодно
      2. Изменяемых данных из ram inc r0 - увеличение на единицу адресного счетчика
        mov a,@r0 - чтение байта из встроенного озу
        outl р1,a - нужный бит данных на выходе р1.0

      Теперь в алгоритме нужно, как-то, определять какой байт читать из озу а какой из пзу. В каждом байте у нас осталось по 7 бесхозных бит. Пусть один из них (например первый) определяет статус данных - если он Сброшен, то данные надо искать в озу, а если выставлен - в пзу :
      inc r0 - увеличение на единицу адресного счетчика
      mov a,r0
      movр3 a,@a - чтение байта из встроенного пзу
      jb1 rom
      RAM: mov a,@r0 - чтение байта из встроенного озу
      ROM: outl р1,a - нужный бит данных на выходе р1.0
      Очень просто получается операция write :
      anl р1,#0feн - сбросить линию out в ноль
      inc @r0 - поскольку до write бит был заведомо выставлен, то после inc он будет заведомо сброшен.
      Операция writecarrу тоже выглядит вполне ничего для 10 мс, отведенных для нее. Поскольку до writecarrу восемь бит были заведомо нулевыми, восемь inc-ов сделают их заведомо единичными -
      mov a,r0 - текущий адресный счетчик
      anl a,#0f8h
      add a,#8 - вычислено начало восьмерки бит /лотка 8-чного абака/
      mov r1,a
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      inc r1
      inc @r1
      Короче говоря, исходный текст того, что получилось вы увидите в хвосте этого документа. В программе сами собой получились фичи, существенно необходимые для эмулятора, например, наличие 512-битного кольца данных. В реальной карте 9-битный адресный счетчик и он запросто переполняется. Правда, у нас получилось 256-битное кольцо. Но раз есть 256-битное, то и 512-битное тоже есть.
      Получившаяся программа обладает вполне не дурными временными характеристиками. По приходу clk, данные на выходе, появляются спустя 9-13 тактов процессора. Для 11 mнz-ового кварца это - спустя 12-18 мкс после фронта clk. Вполне пристойный результат для такой убогой архитектуры. Это лишь в 2-3 раза хуже того, что можно получить на пик-е. Впрочем, для некоторых типов таксофонов этого вполне достаточно. Кстати, у процессора i8049 128 байт встроенного озу, в отличие от 64 байт у i8048. Поэтому, можно, при инициализации программы, переместить все данные в озу. В результате в быстродействии операции чтения можно выиграть еще 2 такта. Переключать чтение данных из пзу в озу и обратно уже будет не нужно. Read: mov a,r0 - текущий адресный счетчик inc a - его увеличение anl a,#7fн - кольцо теперь должно быть 128-битным mov r0,a mov a,@r0 - чтение из озу outl р1,a - бит данных на выход Но я, из принципа, написал код, который бы работал на любом процессоре cемейства mcs-48. А теперь пара нетривиальных советов по программированию однокристалок. Напрочь забудьте то, как вас учили программировать. Программу надо писать так, чтобы дейкстра (основатель структурного программирования), Прочитав ее, #%нулся бы в обморок. И приправить ее солидной порцией шизы. Есть примета, что программы для такого рода вещей, написанные без доли шизы, реально не работают. На некоторых архитектурах, особливо интеловских, без извращений - никак. Например, в нашей программе часть данных, соответствующая кредиту карты копируется в озу. Причем эти данные полностью перекрывают область стека. Но, поскольку, я нигде не вызываю подпрограмм и прерывания у Меня запрещены, то что тут такого ? Дамп карточки в программе лежит не по порядку, а завернувшись в кольцо, используя то обстоятельство, что адресный счетчик r0 переполняется /точнее лежит полузавернувшись в кольцо, или завернувшись в полукольцо, как кому больше нравится/. В результате возможно всего двумя командами mov a,r0 jb7 failure Различать попытку записи в область единиц и попытку записи в Manufacturer area. Таксофон так делает, в качестве противодействия Эмуляторам. Эта изюминка с кольцом, требует волей-неволей организовать другую - адреса 0 и 1 используются одновременно и как рабочие регистры r0 и r1, И как ячейки для хранения двух бит кредита карты. Фокус в том, что приходящиеся на эти ячейки биты дампа карты (два старших бита кредита) всегда должны быть нулевыми, поскольку не бывает карт с кредитом больше Чем 7*4096-1=28671 единица. И всегда, когда к r0 и r1 обращаются, как к хранителям дынных карточки, они оказываются с нулевым младшим битом ! Каким образом так получается ? Регистр r0 используется как адресный счетчик (указатель). Когда ему случится указать на самого себя, он, естественно, будет равен нулю, а значит и младший бит его будет равен нулю. Регистр r1 всегда, по окончании использования, - anl a,#0f8н ; a.0 ...
      04.02.2017, 10:48
    • Тайна карт Московского метрополитена
      admin
      ...
      04.02.2017, 10:48
    • Протокол POCSAG и его применение
      admin
      Формат POCSAG-кода.
      Информация на пейджер в стандарте POCSAG передается в двоичном виде,по битам. Структура посылки изображена рис. 1.
      Преамбула Пакет 1 . . . Пакет N
      рис. 1
      Каждая передача начинается с преамбулы - последовательности битов:10101010... - по этому сигналу производится предварительное включение пейджера и определяется скорость передачи данных ( 512/1200/2400 ). Далее следуют пакеты с данными. Каждый пакет представляет собой последовательность из 17-ти кодовых слов (рис. 2), кодовое слово (CW) - последовательность из 32-х битов. Кодовые слова бывают:
      • синхронизации - для синхронизации фреймов в пакетах.
      • адреса - для передачи САР - кода, рис.3.
      • сообщения - для передачи текста сообщения, рис.4.
      • пустые - для заполнения пустых фреймов.
      Фрейм 0 Фрейм 1 Фрейм 2 Фрейм 3 Фрейм ... Фрейм 7
      ...
      04.02.2017, 10:48
    • Приемники пейджинговых сообщений
      admin
      Телевизор в качестве приёмника...
      04.02.2017, 10:48
    Обработка...
    X