Вступление

В кармане у тебя, скорее всего, лежит компьютер. Не телефон — карта. В золотистом квадратике на банковской карте спрятан настоящий маленький компьютер: процессор, память и программа. Он хранит секрет и сам решает, что ответить терминалу. В этом наборе ты соберёшь такой компьютер из транзисторов — и в конце свернёшь его в один чип с восемью ногами, как контактная площадка на карте.

Внутри:

  • свой процессор — 8 бит, 16 команд, одна команда за такт;
  • ПЗУ с программой — микросхема; а как программа написана на ассемблере — разберём в уроке 7;
  • ОЗУ на защёлках — 8 ячеек по 8 бит, из транзисторов;
  • личные данные карты — номер счёта, ПИН и секретный ключ — матрица транзисторов, как в «Знакогенераторе»;
  • один провод данных — как у настоящих карт: карта и терминал говорят по очереди;
  • тестер карт — тумблеры, кнопка «послать» и табло: так проверяют карты разработчики.

Сколько это

Карта — 6 495 транзисторов и 8 резисторов, тестер — ещё 1 729 и резистор. Больше половины карты — процессор и ОЗУ: 64 защёлки памяти — самая длинная часть сборки, повторяющиеся строки удобно вставлять готовыми (Cmd+I).

В уроках есть врезки ⚠ Частая ошибка — это ошибки, которые случились на самом деле при сборке этой карты. Ни одна не видна сразу: карта отвечает, но не то. Поэтому после каждого урока — проверка по таблице, шаг за шагом.

Это модель, а не настоящая карта

Мы собираем принцип: как устроен компьютер в карте, как он говорит с терминалом по одному проводу, как проверяет ПИН и доказывает, что он настоящий. Всё работает в симуляторе — но размеры и стойкость у нас учебные, чтобы схему можно было собрать руками и увидеть насквозь. Чем наша карта отличается от настоящей:

ЧтоНастоящая картаНаша карта
процессор8–32 бита + криптосопроцессор8 бит, 16 команд
где ПИНEEPROM: меняется в банкомате командой
банка, подписанной его ключом
прошит в матрице транзисторов —
поменять можно только перепаяв
секретный ключ128 бит и больше (3DES, AES)32 бита
шифрстойкий: 3DES, AES; подписи RSA/ECCучебный: 4 раунда «+, XOR, поворот»
вызов / ответ4 байта / 8 байт2 байта / 2 байта
провод данныхстандарт ISO 7816, от ~1000 байт/ссвой кадр, 16 тактов на бит
кто проверяет ответбанк, ключи — в защищённом сейфе (HSM)мы сами, по таблице проверки

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

Что нужно

Вентили NOT, NAND, NOR, AND, OR, XOR: уже есть в библиотеке — бери; хочешь собрать с нуля из транзисторов — урок 0; сразу к делу — вставка урока 0. Остальное собираем здесь.

Что получится

Восемь уроков: калькулятор на тумблерах → огоньки по программе → память → циклы → провод и тестер → ПИН-код → вызов-ответ → карта-чип. В конце на столе две карты, одинаковые снаружи. Одна принимает ПИН 1234, другая — 4321, и на один и тот же вызов отвечают по-разному. Разница — несколько десятков транзисторов из шести с половиной тысяч.