Здравствуйте, gulfsrteam, Вы писали:
G>Было впечатление, что кто-то атакует PIN коды и добивается их блокировки. Только через 3 года после моего ухода, когда уже уволились все, кто был под подозрением в колдовстве и порче, начальник отдела СКЗИ Константин Демченко признал, что проблема на стороне железа. Но к этому времени Jacarta уже сдала все позиции.
А вы не думали о такой классике жанра как отсутствие аппаратного супервизора питания? Его еще иногда называют brown-out detector. Смысл работы этого модуля таков: когда питание микропроцессора нестабильное, он может начать выполнять инструкции неправильно или вообще прыгать по кускам вашей программы хаотически исполняя/неисполняя код. Чтобы этого избежать, супервизор питания заранее видит что с линией питания есть проблемы и отправляет процессор в состояние перманентного сброса — чтобы тот не натворил дел. И это состояние сброса продолжается до тех пор, пока стабильное питание не восстановится или пока оно полностью не пропадёт.
Этот же модуль обеспечивает и стабильный старт процессора, т. к. если электропитание по той или иной причине еще не стабилизировалось (например, не все конденсаторы полностью зарядились), процессор может наворотить дел и при старте.
Сбой процессра в моменты нестабильного питания — это причина №1 повреждения содержимого EEPROM во встраиваемых системах.
Такая нестабильность чаще всего происходит при включении и выключении системы, но может возникать и при других факторах, всех не преугадаешь. Поэтому когда в системе есть EEPROM или от работоспособности системы зависят жизни людей, наличие супервизора питания обязательно. Иначе гарантированы периодические глюки с соответствующими последствиями.
Самое обидное, что эти глюки нечастые, поэтому их бывает проблематично повторить, на что и натыкаются очень и очень многие производители аппаратуры.