Доброго времени суток.
Позвольте сказать свое МЯУ.
Занимался и копированием чужого и защитой своего.
Стратегически пришел к выводам -
- Чаще всего прототип берется как образец для подражания и потом делается свое железо и свой софт.
- Если работа девайса - конечный автомат - защитаться от копирования бессмыслено, можно просто для очистки совести поставить биты защиты. Либо - выпускать новые модели дешевле и(или) с более крутым функционалом достаточно часто, чтобы не было смысла копировать.
Стоит отметить вопрос использования любой криптографии - даже из открытых исходников. Для разработки и продажи изделий (тем паче экспорта/импорта), имеющих что то криптографическое нужна лицензия ФСБ. Иначе можно сесть. Шутки щутками, а законодательсво надо соблюдать.
Стоит еще упомянуть - использование бутлодера (в случае отправки прошивки на завод для заливки в изделия), который расшифровывает прошивку по симметричному алгоритму - зло.
Я конечно не криптоаналитик - но ... Для подбора ключа нужны зашифрованные данные и открытый текст. Прошивка для микроконтроллера сурово детерминирована и имеет большие куски шаблонного кода.
Например область векторов прерываний или типичные для компилятора куски. Так что лобовая атака на современных ПК вполне возможна.
Надо помнить об этом..

))
Чем больше разных шифр-данных для одного открытого текста - тем лучше.
Т.е. если я куплю штук десять ваших девайсов и получу зашифрованные прошивки для них - это упростит задачу, так как исходный текст один - а его шифрованных собратьев аж 10 штук и более.
Я пробовал делать в одном проекте так, чтобы шифровались не только данные, но и расположение блоков в зависимости от от ключа.
1. Защита от копирования железа
1.1 Плату защитить от копирования невозможно. Цена вопроса в китае (сам занимался копирование чужих девайсов) - от 50$ за двухслойку, 1000$ сменя взяли за копирование 6-ти слойной платы. Причем отдали гербера, проект в Protel и фотографии слоев (слой снимали фрезой на специальном оборудовании). Потом по этим же герберам сделали платы и собрали. Все заработало. ДЛя копивроания надо 2-3 штуки, причем желательно работающие - вывод : плату защищать бессмысленно.
1.2 Стирать маркировку есть смысл - затрудняет опознание ( но не сильно).
1.3 В п.1.1 прошивка контроллера лежала во внешней флэш. Причем пины для загрузки были выведены на разъем - копируй не хочу. - вывод - такие вещи в рабочей версии прятать внутрь. Затрудняет чтение.
1.4. Отрезать выводы JTAG (эту фишку мне советовал один товарищ) + отжигать их высоким напряжением. Но это не тривиальная процедура. Процент выхода брака высокий...
1.5 Административная мера - продажа изделий под номерами четко идентифицированным пользователям..
1.6 Стоит помнить - любой сигнал на плате можно считать потенциально открытм для измерения. Все что вне микроконтроллера может быть измерено.

2 Защита от копирования прошивки
2.1 Если нужно что то серьезное то действительно стоит посмотреть в сторону специализированных контроллеров - не крипто AVR, а заточенных под защиту прошивки. Я например знаю BF513 и т.п. от AD. У них есть технология защиты прошивки. Внутри процессора есть ячека которая прошивается однократно. Наверняка есть и другие чипы от других производителей. В таком варинте считанная прошивка не будет работать на другом камне. В принципе у TI и NXP етсь уникальный серийный номер внутри(в спец регистрах) - если генерить прошивку под это номер то тупое копирование тоже не прокатит.
2.2 Можно добавить еще один процессор или CPLD/FPGA. Соответственно это существенно увеличит стоимость копирования. В таком варианте микроконтроллер должен детектировать работы сопроцессора/CPLD/FPGA. При обнаружении ошибки не сразу ломаться, а начинать сбоить, причем желательно через разные интервалы времени. Это затруднит детектирование алгоритма работы. И при детекции попытки взлома (запуск вхолостую) писать что нить в EPROM или сурово затирать прошивку (как реальный пацан), чтобы не было что копировать в принципе.
2.3 Обратить внимание на административные меры при серийном производстве, чтобы в открытом виде прошивка не ушла на свободу.

)) Враг может скопировать прошивку прямо с программатора.
2.4 Продумать вопрос обновления софта - получения серийника от клиента, генерация индивидуальной прошивки, отправка клиенту и загрузка в девайс..
2.5 Как вариант делать индивидульную прошивку, хранить ключ в RAM микроконтроллера и сделать питание от батарейки + добавить линии проверки целостности корпуса. При отключении батарейного питания или детекции нарушении целостности корпуса - сбрасывать ключ(см. ниже как сделана защита в пин клавиатуре). НО - срок службы такого изделия равен сроку службы батарейки + возможны проблемы при жестких условиях эксплуатации.
Собственно комплект этих мер даст определнный уровень защиты.
Кстати о стоимости - если цена конечного изделия или прошивки больше 20-30 тыс. $ - надо очень задуматься....Скорее всего этих мер будет недостаточно если реальные пацаны возьмутся за копирование.
Еще хочу рассказать как сделана защита в пин клавиатурах от банкоматов - давно давно попадалась в руки старая списанная железка.
1. На основной плате стоит специализированный микроконтроллер от DALLAS типа 8051. Ессно полной документации на него нет. Только короткая справка.
2. МК запитан от литиевой часовой батарейки.
3. Провода для кнопок выведены наружу.
4. Вся эта плата замотана в тонкую гибкую печатную плату, на которой разведены параллельные дорожки с шагом 0.1-0.2 мм. Причем гибка плата обмотана вокру основной хаотически, как убдто бумагу смяли. Дорожки гибкой печатной платы припаяны к основной и микроконтроллер проверяет их целостность.
5. Все из п.1-4 залито компаундом. Сурово залито с вкраплениями металла и уже этот кирпичик установлен в корпус пин-клавиатуры.
Следует учесть что такие конструкции используются и сертифицированы(были в то время) для защиты информации стоимостью до 30000 евро. Т.е. стоимость взлома такого девайса должна быть больше 30000 евро..
И вот еще нюанс - если есть что то оригинальное именно в алгоритме работы или в применении девайса - есть смысл помимо защиты задуматься о патентовании.
Да прибулет с Вами сила

))