СИСТЕМА НА КРИСТАЛЛЕ ДЛЯ ВЫПОЛНЕНИЯ БЕЗОПАСНОЙ НАЧАЛЬНОЙ ЗАГРУЗКИ, ИСПОЛЬЗУЮЩЕЕ ЕЕ УСТРОЙСТВО ФОРМИРОВАНИЯ ИЗОБРАЖЕНИЯ И СПОСОБ ЕЕ ИСПОЛЬЗОВАНИЯ
SYSTEM ON-A-CHIP TO IMPLEMENT SAFE BOOTSTRAP LOADING, USING ITS DEVICE OF IMAGE FORMATION AND METHOD OF ITS USE

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[1] Способы и устройства примерных вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением относятся к системе на кристалле, к использующему ее устройству формирования изображения, и к способу ее использования, и более конкретно к системе на кристалле, которая выполняет безопасную начальную загрузку, используя зашифрованные данные, к использующему ее устройству формирования изображения, и к способу ее использования.
УРОВЕНЬ ТЕХНИКИ
[2] При разработке электронных технологий были разработаны различные виды электронных приборов. В частности, поскольку компьютеры входят в широкое употребление, все больше используются компьютерные периферийные устройства. Компьютерное периферийное устройство относится к устройству, которое улучшает использование компьютера. Принтеры, сканеры, копировальные устройства и многофункциональные периферийные устройства являются представительными примерами таких компьютерных периферийных устройств.
[3] Устройство формирования изображения относится к устройству, которое выполняет формирование изображения, то есть формирует изображение на бумаге или других носителях. Для того, чтобы выполнить формирование изображения, может использоваться проявитель, такой как чернила или тонер. Устройство формирования изображения, которое использует лазерный способ с использованием тонера, может включать в себя блок заряда, проявочный блок, блок переноса, блок лазерного сканирования, а также блок термического закрепления. Такие блоки, которые расходуются по мере выполнения работы, включая вышеупомянутые блоки, могут быть названы расходными блоками. Если расходный блок используется в течение предопределенного времени, его характеристика может измениться, и таким образом хорошее качество печати не может быть обеспечено. В частности тонер-картридж, который содержит тонер, должен быть заменен новым, когда тонер заканчивается. Поэтому производители продукта продают расходные блоки отдельно от готовых продуктов в случае, если такая ситуация возникает.
[4] В последние годы расходный блок может иметь встроенную в него память для того, чтобы точно определить, когда расходный блок должен быть заменен. В памяти может быть сохранена разнообразная информация об использовании расходного блока. Однако, существует такая проблема, что для неавторизованной персоны легко получить доступ к памяти, встроенной в расходный блок. Соответственно, информация, хранимая в памяти, может быть изменена, и таким образом может быть трудно использовать и управлять расходным блоком. Поэтому была предпринята попытка усилить безопасность памяти расходного блока.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
ТЕХНИЧЕСКАЯ ЗАДАЧА
[5] Однако, неавторизованная персона может взломать не память, а устройство, обменивающееся данными с расходным блоком. В частности, может быть разработан способ взлома технологии безопасности, примененной в расходном блоке, путем изменения процесса начальной загрузки оперативной памяти, встроенной в корпус устройства.
РЕШЕНИЕ ЗАДАЧИ
[6] Соответственно, существует потребность в способе улучшения безопасности процесса начальной загрузки. Один или более примерных вариантов осуществления могут преодолеть вышеупомянутые недостатки и другие недостатки, не описанные выше. Однако, подразумевается, что один или более примерных вариантов осуществления не требуются для преодоления недостатков, описанных выше, и, могут не преодолевать какой-либо из проблем, описанных выше.
[7] Один или более примерных вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением обеспечивают систему на кристалле, которая выполняет безопасную начальную загрузку, используя энергонезависимую память, в которой хранятся зашифрованные данные, устройство формирования изображения, содержащее эту систему, а также способ ее использования.
[8] Дополнительные функции и выгоды представленной общей концепции в соответствии с настоящим изобретением будут сформулированы частично в следующем описании, и частично будут очевидны из описания или могут быть изучены при реализации общей концепции в соответствии с настоящим изобретением.
[9] В соответствии с одним примерным вариантом осуществления представленной общей концепции в соответствии с настоящим изобретением обеспечена система на кристалле, включающая в себя первую память для хранения множества ключей шифрования, вторую память, третью память для хранения значения задания ключа шифрования, и центральный процессор (ЦП) для дешифрования зашифрованных данных, которые хранятся во внешней энергонезависимой памяти, с использованием ключа шифрования, соответствующего значению задания ключа шифрования из множества ключей шифрования, для сохранения дешифрованных данных во второй памяти, и для выполнения начальной загрузки с использованием данных, сохраненных во второй памяти.
[10] Данные инициализации могут храниться в первой памяти отдельно от множества ключей шифрования, и ЦП может выполнить инициализацию, используя данные инициализации, и может дешифровать зашифрованные данные.
[11] Система на кристалле может дополнительно включать в себя первую схему для ограничения доступа к ЦП через внешний порт в течение предопределенного времени.
[12] Когда включается питание, первая схема может вывести сигнал отключения для того, чтобы отключить доступ к ЦП, и, когда по меньшей мере дешифрование и аутентификация дешифрованных данных будут завершены, первая схема может вывести сигнал включения для того, чтобы включить доступ к ЦП.
[13] Первая схема может включать в себя первый регистр, и когда дешифрование и аутентификация дешифрованных данных будут завершены, ЦП может изменить значение, хранимое в первом регистре.
[14] Система на кристалле может включать в себя вторую схему и третью схему для управления доступом к первой памяти.
[15] Вторая схема может включать в себя второй регистр, и третья схема может включать в себя третий регистр. Когда дешифрование и аутентификация дешифрованных данных завершаются, ЦП может сохранить во втором регистре управляющее значение для отключения доступа к первой памяти, и может сохранить управляющее значение для изменения доступа к первой памяти на доступ ко второй памяти в третьем регистре.
[16] ЦП может выполнять бесконечный цикл, когда дешифрование терпит неудачу.
[17] Когда включается питание, ЦП может идентифицировать память, которая назначается значением задания, сохраненным в третьей памяти, или внешний вывод, и, когда первая память назначена, ЦП может выполнить безопасную начальную загрузку, используя зашифрованные данные, и, когда вторая память определена, ЦП может выполнить нормальную начальную загрузку, используя незашифрованные данные, которые хранятся в энергонезависимой памяти.
[18] Первая память может быть постоянной памятью (ROM) с масочным программированием или одноразово программируемой (OTP) постоянной памятью, а вторая память может быть статической оперативной памятью (SRAM). Третья память может быть постоянной памятью, программируемой с помощью плавких перемычек (EFUSE).
[19] Система на кристалле может включать в себя контроллер памяти, связанный с возможностью обмена данными с ЦП, включающий в себя по меньшей мере один переключатель для выбора состояния соединения с внешней памятью, где контроллер памяти выборочно выводит сигнал записи, полученный от ЦП, во внешнюю память в соответствии с результатом сравнения между первым значением ключа и вторым значением ключа.
[20] Система на кристалле может включать в себя контроллер памяти, управляющий упомянутым по меньшей мере одним переключателем для выбора состояния соединения с тем, чтобы вывести сигнал записи во внешнюю память, когда первое значение ключа и второе значение ключа совпадают.
[21] Система на кристалле может включать в себя контроллер памяти, управляющий упомянутым по меньшей мере одним переключателем так, чтобы отключить соединение с внешней памятью, чтобы препятствовать выводу сигнала записи во внешнюю память.
[22] Система на кристалле может включать в себя контроллер памяти, управляющий операцией считывания внешней памяти, даже когда контроллеру памяти запрещено выводить сигнал записи во внешнюю память.
[23] Система на кристалле может включать в себя упомянутый по меньшей мере один переключатель, включающий в себя первый переключатель и второй переключатель, с контроллером памяти для управления первым переключателем так, чтобы управлять операцией считывания внешней памяти, и для управления вторым переключателем для управления соединением вторым переключателем так, чтобы управлять соединением со вторым переключателем так, чтобы управлять выводом сигнала записи во внешнюю память.
[24] Система на кристалле может включать в себя такую функцию, что когда первое значение ключа и предварительно сохраненное второе значение ключа отличаются друг от друга, контроллер памяти блокирует операцию записи во внешнюю энергонезависимую память.
[25] Примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением могут также обеспечить устройство формирования изображения, включающее в себя расходный блок, в котором смонтирована микросхема контроля заменяемого пользователем блока (CRUM), и контроллер для выполнения формирования изображения с использованием расходного блока и обновления данных, записанных на микросхеме CRUM, в соответствии с формированием изображения. Этот контроллер может включать в себя энергонезависимую память для записи зашифрованных данных и систему на кристалле для выполнения безопасной начальной загрузки с использованием зашифрованных данных при включении устройства формирования изображения и управления устройством формирования изображения в соответствии с пользовательской командой, когда безопасная начальная загрузка завершена.
[26] Система на кристалле может включать в себя первую память для хранения множества ключей шифрования, вторую память, третью память для хранения значения задания ключа шифрования, и ЦП для дешифрования данных, хранимых в энергонезависимой памяти, с использованием ключа шифрования, соответствующего значению задания ключа шифрования из числа множества ключей шифрования, для сохранения дешифрованных данных во второй памяти, а также выполнения начальной загрузки с использованием данных, хранящихся во второй памяти.
[27] Данные инициализации могут храниться в первой памяти отдельно от множества ключей шифрования, и ЦП может выполнять инициализацию с использованием данных инициализации, а затем может дешифровать зашифрованные данные.
[28] Когда происходит событие начальной загрузки, система на кристалле может ограничивать доступ к ЦП через внешний порт в течение предопределенного времени.
[29] Система на кристалле может дополнительно включать в себя первую схему, которая при включении устройства формирования изображения выводит сигнал отключения для отключения доступа к ЦП, а когда по меньшей мере дешифрование и аутентификация дешифрованных данных завершены, выводит сигнал включения для включения доступа к ЦП.
[30] Первая схема может включать в себя первый регистр, и когда по меньшей мере дешифрование и аутентификация дешифрованных данных будут завершены, ЦП может изменить значение, хранимое в первом регистре.
[31] Когда по меньшей мере дешифрование и аутентификация дешифрованных данных завершены, ЦП может выполнить установку регистра для того, чтобы отключить доступ к первой памяти и изменить доступ к первой памяти на доступ ко второй памяти.
[32] Когда устройство формирования изображения включается, ЦП может идентифицировать память, которая назначена значением задания, сохраненным в третьей памяти, или внешний вывод, и, когда первая память определена, ЦП может выполнить безопасную начальную загрузку, используя зашифрованные данные, и, когда вторая память определена, ЦП может выполнить нормальную начальную загрузку, используя незашифрованные данные, которые хранятся во внешней энергонезависимой памяти.
[33] Первая память может быть постоянной памятью (ROM) с масочным программированием или одноразово программируемой (OTP) постоянной памятью, а вторая память может быть статической оперативной памятью (SRAM). Третья память может быть постоянной памятью, программируемой с помощью плавких перемычек (EFUSE).
[34] Примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением также обеспечивают способ начальной загрузки устройства формирования изображения, включающего в себя энергонезависимую память и систему на кристалле, включающий в себя инициализацию с использованием данных инициализации, которые хранятся в первой памяти системы на кристалле, когда инициализация выполняется, дешифрование зашифрованных данных, которые хранятся в энергонезависимой памяти, с использованием одного из множества ключей шифрования, которые хранятся в первой памяти, сохранение дешифрованных данных во второй памяти системы на кристалле и выполнение начальной загрузки с использованием данных, которые хранятся во второй памяти.
[35] Данный способ может дополнительно включать в себя при включении устройства формирования изображения идентификацию памяти, которая назначена согласно входному значению, введенному через третью память системы на кристалле, или внешний вывод, и, когда назначенная память является первой памятью, отключение доступа к ЦП системы на кристалле.
[36] Данный способ может дополнительно включать в себя при завершении по меньшей мере дешифрования и аутентификации дешифрованных данных включение доступа к ЦП.
[37] Данный способ может включать в себя при завершении по меньшей мере дешифрования и аутентификации дешифрованных данных отключение доступа к первой памяти и выполнение установки регистра, чтобы изменить доступ к первой памяти на доступ ко второй памяти.
[38] Примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением могут также обеспечить электронное устройство, имеющее запоминающее устройство, и систему на кристалле, включающую в себя центральный процессор (ЦП) и контроллер памяти, связанный с возможностью обмена данными с ЦП и запоминающим устройством для выборочного вывода сигнала записи, полученного от ЦП, в запоминающее устройство согласно результату сравнения между первым значением ключа и вторым значением ключа.
[39] Электронное устройство может включать в себя контроллер памяти, управляющий по меньшей мере одним переключателем для выбора состояния соединения с тем, чтобы вывести сигнал записи в запоминающее устройство, когда первое значение ключа и второе значение ключа совпадают.
[40] Электронное устройство может включать в себя контроллер памяти, управляющий этим по меньшей мере одним переключателем так, чтобы отключить соединение с запоминающим устройством, чтобы препятствовать выводу сигнала записи в запоминающее устройство.
[41] Электронное устройство может включать в себя контроллер памяти, управляющий операцией считывания запоминающего устройства, даже когда контроллеру памяти запрещено выводить сигнал записи в запоминающее устройство.
[42] Примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением могут также обеспечивать главное устройство, включающее в себя память для хранения множества шифрованных текстов, соответствующих каждой из множества версий, блок связи для приема шифрованного текста, хранящегося в устройстве формирования изображения, когда происходит предопределенное событие, контроллер для управления устройством формирования изображения так, чтобы оно находилось в состоянии ожидания печати, когда шифрованный текст, соответствующий версии встроенного программного обеспечения устройства формирования изображения, совпадает с полученным шифрованным текстом, а когда шифрованный текст и версия встроенного программного обеспечения отличаются друг от друга, контроллер блокирует использование устройства формирования изображения.
ПОЛЕЗНЫЕ ЭФФЕКТЫ ИЗОБРЕТЕНИЯ
[43] В соответствии с вышеописанными примерными вариантами осуществления безопасность процесса начальной загрузки может быть улучшена, и таким образом вред, причиненный злонамеренным взломом со стороны неавторизованной персоны, может быть минимизирован и/или предотвращен.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[44] Эти и/или другие функции и выгоды представленной общей концепции в соответствии с настоящим изобретением станут очевидными и понятными из следующего описания вариантов осуществления в совокупности с сопроводительными чертежами, в которых:
[45] Фиг. 1 представляет собой блок-схему, иллюстрирующую систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[46] Фиг. 2 представляет собой блок-схему последовательности операций, иллюстрирующую способ безопасной начальной загрузки согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[47] Фиг. 3 представляет собой блок-схему, иллюстрирующую систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[48] Фиг. 4 представляет собой блок-схему, иллюстрирующую системную плату, на которой система на кристалле монтируется согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[49] Фиг. 5 представляет собой блок-схему последовательности операций, иллюстрирующую способ безопасной начальной загрузки согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[50] Фиг. 6 представляет собой блок-схему последовательности операций для иллюстрации способа безопасной начальной загрузки согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[51] Фиг. 7 представляет собой принципиальную электрическую схему, более подробно иллюстрирующую один пример системы на кристалле, изображенной на Фиг. 4;
[52] Фиг. 8 иллюстрирует пример расположения безопасного встроенного программного обеспечения;
[53] Фиг. 9 иллюстрирует пример карты памяти для выполнения безопасной начальной загрузки;
[54] Фиг. 10 представляет собой блок-схему, иллюстрирующую пример устройства формирования изображения, в котором установлена система на кристалле;
[55] Фиг. 11 представляет собой блок-схему, иллюстрирующую пример микросхемы CRUM, которая устанавливается в расходном блоке;
[56] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую способ использования памяти системы на кристалле согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[57] Фиг. 13 представляет собой блок-схему, иллюстрирующую пример системы на кристалле согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением, изображенному на Фиг. 12;
[58] Фиг. 14 и 15 представляют собой блок-схемы, иллюстрирующие пример системы на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[59] Фиг. 16 иллюстрирует пример блока генерирования кода, который может использоваться в примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированных на Фиг. 14 и 15;
[60] Фиг. 17 иллюстрирует примерный вариант осуществления блока генерирования кода, изображенного на Фиг. 16;
[61] Фиг. 18 и 19 иллюстрируют примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением программного кода, который генерируется в блоке генерирования кода, изображенном на Фиг. 19;
[62] Фиг. 20-22 изображают примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением различной энергонезависимой памяти, которая может использоваться с системой на кристалле;
[63] Фиг. 23 иллюстрирует способ обработки вывода записи энергозависимой памяти, деактивируемой согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[64] Фиг. 24 представляет собой блок-схему последовательности операций, иллюстрирующую способ управления памятью согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[65] Фиг. 25 иллюстрирует примерный вариант осуществления контроллера памяти для выполнения способа управления памятью примерного варианта осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированного на Фиг. 24;
[66] Фиг. 26 представляет собой временную диаграмму, иллюстрирующую способ управления печатью согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением;
[67] Фиг. 27 иллюстрирует примерный вариант осуществления главного устройства для выполнения способа управления печатью согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированного на Фиг. 26;
[68] Фиг. 28 и 29 иллюстрируют примерный вариант осуществления различных шифрованных текстов;
[69] Фиг. 30 иллюстрирует примерный вариант осуществления взломанного шифрованного текста; и
[70] Фиг. 31 представляет собой блок-схему последовательности операций, иллюстрирующую способ управления устройством формирования изображения согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением.
СПОСОБ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[71] Далее примерные варианты осуществления будут описаны более подробно со ссылками на сопроводительные чертежи.
[72] Ссылки будут делаться на варианты осуществления представленной общей концепции в соответствии с настоящим изобретением, примеры которых иллюстрируются в сопроводительных чертежах, в которых одинаковые ссылочные позиции, относятся к одинаковым элементам. Варианты осуществления описываются ниже для того, чтобы объяснить представленную общую концепцию в соответствии с настоящим изобретением, ссылаясь на чертежи.
[73] В следующем описании одинаковые ссылочные позиции используются для одинаковых элементов, когда они изображены на различных чертежах. Сущности, определенные в описании, такие как подробная конструкция и элементы, приводятся для того, чтобы помочь всестороннему пониманию примерных вариантов осуществления. Таким образом, очевидно, что примерные варианты осуществления могут быть выполнены без этих конкретно определенных сущностей. Кроме того, функции или элементы, известные в предшествующем уровне техники, не описываются подробно, поскольку они загромоздили бы примерные варианты осуществления ненужными деталями.
[74] Обычно электронное устройство при включении выполняет процесс начальной загрузки для того, чтобы нормально работать. Электронное устройство выполняет инициализацию и загружает и выполняет программу посредством процесса начальной загрузки. Процесс начальной загрузки, который определяет первоначальное состояние электронного устройства, может менять рабочий параметр (например, важный рабочий параметр) электронного устройства и таким образом может фактически влиять на электронное устройство, когда он используется. Следовательно, если процесс начальной загрузки является доступным так, что любой может изменить его, существует риск, что может быть загружена не та программа, которую предполагал загрузить пользователь. Таким образом, хакер может изменить процесс начальной загрузки таким образом, чтобы загрузить программу, нужную хакеру, загрузку которой пользователь не запрашивал. Поэтому существует потребность в таком способе надежной начальной загрузки, чтобы процесс начальной загрузки не мог быть изменен произвольно, то есть в способе безопасной начальной загрузки. Чтобы достигнуть безопасной начальной загрузки, данные начальной загрузки могут храниться в энергонезависимой памяти электронного устройства в зашифрованном состоянии. Система 100 на кристалле управляет операцией доступа электронного устройства к энергонезависимой памяти, дешифрует зашифрованные данные и выполняет безопасный процесс начальной загрузки. Далее будут объяснены система на кристалле и способ ее безопасной начальной загрузки согласно различным примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением.
[75] Фиг. 1 представляет собой блок-схему, иллюстрирующую систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением; Что касается Фиг. 1, система 100 на кристалле выполняет безопасную начальную загрузку, используя энергонезависимую память 200, в которой хранятся зашифрованные данные. Система 100 на кристалле и энергонезависимая память 200, изображенные на Фиг. 1, могут быть встроены в электронное устройство (например, одиночное электронное устройство). Например, система 100 на кристалле может быть встроена в устройство формирования изображения, такое как устройство 1000 формирования изображения, проиллюстрированное и описанное в связи с Фиг. 10. Система 100 на кристалле может быть встроена в любое подходящее электронное устройство. Система на кристалле может быть интегральной схемой, программируемым логическим устройством, программируемой на месте матрицей логических элементов и/или любым подходящим устройством для выполнения безопасной начальной загрузки согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытой в настоящем документе.
[76] Система 100 на кристалле выполняет процесс начальной загрузки с использованием зашифрованных данных, которые хранятся в энергонезависимой памяти 200. В частности, различные данные, такие как символ начала блока начальной загрузки (BSS), ядро, программа инициализации, операционная система (ОС), другая ОС (беспроводного стека), механизм, эмулятор, фиксированный сегмент, «куча», ключ аутентификации, зашифрованная ОС и драйвер устройства могут быть зашифрованы и сохранены в энергонезависимой памяти 200.
[77] Данные могут быть зашифрованы различными способами. Например, могут использоваться способ стандарта шифрования данных (DES), способ тройного DES (TDES), способ усовершенствованного стандарта шифрования (AES), алгоритм SEED, способ Райвеста-Шамира-Адлемана (RSA) и алгоритм академия-исследовательский институт-агентство (ARIA).
[78] Способ DES относится к способу, который шифрует и дешифрует данные, используя алгоритм шифрования с симметричным ключом длиной 56 битов. Способ TDES относится к способу, который повторяет DES три раза. Способ AES относится к способу, который шифрует и дешифрует блок размера 128 битов, используя ключ с любой длиной, кратной 32 битам, например 128, 160, 192, 224, или 256 битов. Способ SEED, который подобен способу AES, относится к 128-разрядному способу блочного шифрования, который шифрует и дешифрует данные, используя ключ шифрования длиной 128 битов или 256 битов. Способ RSA представляет собой разновидность системы шифрования с открытым ключом, которая использует одностороннюю функцию, а алгоритм ARIA представляет собой способ блочного шифрования, который шифрует и дешифрует блок длиной 128 битов, используя ключ длиной 128, 192, или 256 битов.
[79] Различные данные, которые шифруются в различных способах шифрования, описанных выше, могут храниться в энергонезависимой памяти 200. Хранимые данные или способ шифрования могут быть выборочно применены в соответствии с характеристикой продукта, в котором установлены система 100 на кристалле и энергонезависимая память 200, изображенные на Фиг. 1, или в соответствии с другими условиями среды.
[80] Что касается Фиг. 1, система 100 на кристалле включает в себя первую память 110, вторую память 120 и центральный процессор (ЦП) 130. ЦП 130 может быть процессором и/или любым подходящим устройством для выполнения примерных вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением. Ключ шифрования может храниться в первой памяти 110. Первая память 110 может быть реализована путем использования масочной постоянной памяти (ROM) или однократно программируемой памяти (OTP).
[81] Масочная постоянная память представляет собой память, которая запоминает данные заранее во время производства и не позволяет пользователю изменять данные. Память OTP может использоваться в системном программировании, но является разновидностью программируемой ROM, которая не позволяет изменять данные после того, как они будут запрограммированы.
[82] Ключ шифрования представляет собой ключ для дешифрования данных, которые хранятся в энергонезависимой памяти 200, в частности кода начальной загрузки. Энергонезависимая память 200 может хранить данные, которые шифруются одним из вышеописанных способов, и ключ шифрования, соответствующий зашифрованным данным, может быть сохранен в первой памяти 110.
[83] Первая память 110 может хранить информацию о загрузчике для начальной загрузки. Загрузчик для начальной загрузки относится к программе, которая выполняется прежде, чем запускается ОС, заканчивает все операции, необходимые для запуска ядра, и наконец запускает ОС. Таким образом, ОС делится на ядро, в котором выполняются реальные команды, платформу, которая передает ядру команды, включенные в программу, и пользовательский интерфейс (UI), который выполняется на ядре и платформе. Загрузчик для начальной загрузки относится к программе, которая подготавливает аппаратные средства перед запуском ядра. В частности, конфиденциальная информация загрузчика для начальной загрузки может храниться в первой памяти 110. Конфиденциальная информация загрузчика для начальной загрузки может включать в себя информацию, необходимую для инициализации системы.
[84] Вторая память 120 является внутренней памятью, которая используется для выполнения операции начальной загрузки. Вторая память 120 может представлять собой SRAM, которая не требует инициализации. Однако, это не должно рассматриваться как ограничение, и вторая память 120 может быть любой памятью, подходящей для выполнения примерных вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытых в настоящем документе.
[85] ЦП 130 дешифрует зашифрованные данные, которые хранятся в энергонезависимой памяти 200, расположенный вне системы 100 на кристалле, используя ключ шифрования, хранящийся в первой памяти 110, и сохраняет дешифрованные данные во второй памяти 120. ЦП 130 может выполнять начальную загрузку, используя данные, хранящиеся во второй памяти 120. Способ дешифрования может соответствовать способу шифрования данных.
[86] Например, если применяется способ AES, данные шифруются путем повторения процесса Ad-dRoundKey, который выполняет операцию XOR на шифруемых данных с использованием первоначально введенного ключа шифра, процесса SubBytes, который заменяет результат операции XOR в соответствии с конкретным правилом, процесса ShiftRows, который сдвигает строку данных, и процесса MixColumn, который перемешивает строку данных 10 раз. Энергонезависимая память 200 может хранить данные, которые шифруются в вышеописанном способе. ЦП 130 может дешифровать зашифрованные данные путем повторения обратных процессов, соответствующих вышеописанным процессам шифрования. Дешифрованные данные хранятся во второй памяти 120, и ЦП 130 выполняет последующий процесс начальной загрузки, используя хранимые данные.
[87] Если применяется способ RSA, данные шифруются и дешифруются с использованием открытого ключа {N, E} и закрытого ключа {N, D}. В частности, выбираются два больших простых числа 'p' и 'q' (то есть, простые числа, больше чем предопределенное число), и вычисляются модуль N=p*q и PI(N). Кроме того, E произвольно выбирается так, чтобы E было простым относительно PI(N)=(p-a)(q-1). D, которое имеет соотношение E*D mod PI(N)-1, вычисляется с использованием расширенного алгоритма Евклида. В результате шифрование RSA может быть выполнено с использованием открытого ключа {N,E} и закрытого ключа {N,D}. Шифрование RSA может быть выполнено c использованием уравнения E(M)=M^E mod N=C, где М означает шифруемые данные.
Энергонезависимая память 200 может хранить код начальной загрузки, который шифруется согласно этому уравнению. В этом случае ЦП 130 может выполнять дешифрование RSA, используя уравнение D(C)=C^D mod N=((M^E)^D) mod N=M. Дешифрованные данные сохраняются во второй памяти 120, и ЦП 130 выполняет последующий процесс начальной загрузки, используя сохраненные данные.
[88] В соответствии с вышеописанным способом система 100 на кристалле загружает данные, хранящиеся во внешней памяти 200 в зашифрованном состоянии, дешифрует данные и выполняет операцию начальной загрузки. Соответственно, даже если неавторизованная персона взламывает данные, передаваемые между внешней памятью 200 и системой 100 на кристалле, процесс начальной загрузки не может быть изменен, и безопасность начальной загрузки может быть улучшена.
[89] Фиг. 2 представляет собой блок-схему последовательности операций, подробно иллюстрирующую способ безопасной начальной загрузки согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. Обращаясь к Фиг. 2, если электронное устройство, в котором установлена система на кристалле (например, система 100 на кристалле), включается на стадии S210, система на кристалле получает доступ к первой памяти 110 и считывает данные, хранящиеся в первой памяти 110, на стадии S220. В частности, ЦП 130 переходит по вектору сброса, в котором находится конкретный адрес, и выбирает инструкцию. В данном примерном варианте осуществления адрес вектора сброса может определяться как адрес первой памяти 110.
[90] Если определена первая память 110, ЦП 130 выполняет безопасную начальную загрузку, используя данные, хранящиеся в первой памяти 110. Первая память 110 может хранить различные данные, такие как код инициализации системы (например, системы 100 на кристалле) и код или ключ шифрования для того, чтобы дешифровать зашифрованный код внешней программы.
[91] ЦП 130 обнаруживает код инициализации системы в первой памяти 110 и выполняет инициализацию аппаратных средств электронного устройства на стадии S230. Инициализация может включать в себя подачу сигнала синхронизации, используемого в системе 110 на кристалле с использованием внутренней схемы фазовой автоподстройки (PLL) или инициализацию контроллера двойной скорости передачи данных (DDR) для того, чтобы использовать память DDR. Инициализация может дополнительно включать в себя различные операции инициализации, такие как начальное управление различными приложениями, инициализация настроек для формирования канала связи с внутренними или внешними устройствами электронного устройства, инициализация значения в памяти, задание значения внутреннего регистра, настройка ввода/вывода (I/O), настройка последовательного порта, получение MAC-адреса и настройка порта Ethernet. Инициализация может включать в себя подготовку других аппаратных средств, смонтированных в электронном устройстве с системой 100 на кристалле. Такие операции инициализации могут быть реализованы различными способами в соответствии с разновидностью электронного устройства, в котором установлена система 100 на кристалле. Код, сохраненный в первой памяти 110, может использоваться для других операций. Например, ЦП 130 считывает значение задания вывода параметра начальной загрузки (SPI/NAND/SD), и выводит (то есть записывает) данные во вторую память 120 согласно соответствующему параметру начальной загрузки.
[92] ЦП 130 дешифрует зашифрованные данные, которые загружаются в систему 100 на кристалле, на стадии S240. ЦП 130 может дешифровать данные, используя ключ шифрования, сохраненный в первой памяти 110. ЦП 130 сохраняет дешифрованные данные во второй памяти 120 или в памяти DDR на стадии S250. ЦП 130 выполняет начальную загрузку с использованием дешифрованных данных на стадии S260.
[93] Таким образом, ЦП 130 может выполнять начальную загрузку с использованием данных, таких как дешифрованный символ начала блока начальной загрузки (BSS), код ядра, программа инициализации, ОС, другая ОС (беспроводного стека), механизм, эмулятор, фиксированный сегмент и «куча». Начальная загрузка относится к операциям загрузки ядра, выполнения платформы, выполнения UI и запуска ОС.
[94] В соответствии с описанным выше примерным вариантом осуществления безопасная начальная загрузка может быть выполнена с использованием первой памяти 110 и второй памяти 120 системы 100 на кристалле, которые не являются зашифрованными, где зашифрованные данные хранятся во внешней энергонезависимой памяти 200.
[95] Фиг. 3 представляет собой блок-схему, иллюстрирующую систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. Обращаясь к Фиг. 3, система 100 на кристалле может включать в себя третью память 140 в дополнение к первой памяти 110, второй памяти 120 и ЦП 130.
[96] В соответствии с примерным вариантом осуществления представленной общей концепции настоящего изобретения множество ключей шифрования может быть сохранено в первой памяти 110. Значение задания для выбора одного из множества ключей шифрования может быть сохранено в третьей памяти 140. Такое значение задания упоминается как значение задания ключа шифрования. Третья память 140 может быть памятью, программируемой с помощью плавких перемычек (EFUSE), которая является разновидностью памяти OPT. Однако, это не должно рассматриваться как ограничение, и третья память 140 может быть любой памятью, подходящей для выполнения примерных вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытых в настоящем документе.
[97] ЦП 130 определяет, какой из множества ключей шифрования, сохраненных в первой памяти 110, будет выбран согласно значению задания (то есть, значению задания ключа шифрования), сохраненному в третьей памяти 140. Если использованный ключ становится известным, производитель системы 100 на кристалле или электронного устройства, в котором установлена система 100 на кристалле, изменяет ключ, изменяя значение задания ключа шифрования в третьей памяти 140.
[98] В соответствии с данным примерным вариантом осуществления, даже если один ключ шифрования становится известным, нет никакой необходимости заменять целую систему на кристалле, и ЦП 130 может решать эту проблему, изменяя значение задания, запрограммированное в третьей памяти 140.
[99] Другие операции второй памяти 120 и ЦП 130 являются такими же, как описано в вышеупомянутом первом примерном варианте осуществления, и таким образом избыточное объяснение опускается.
[100] Фиг. 4 представляет собой блок-схему, иллюстрирующую системную плату 300, на которой монтируется система 100 на кристалле и энергонезависимая память 200. Системная плата 300 может быть расположена, например, в электронном устройстве. Обращаясь к Фиг. 4, система 100 на кристалле и энергонезависимая память 200 могут быть смонтированы на одной системной плате 300. Помимо системы 100 на кристалле и энергонезависимой памяти 200, на системной плате 300 могут быть смонтированы различные детали (например, аппаратные компоненты электронного устройства, такие как, например, интерфейс связи, пользовательский интерфейс, процессор изображения, датчик изображения, аудио процессор и т.д.), но они не показаны для удобства объяснения.
[101] Система 100 на кристалле включает в себя первую память 110, вторую память 120, ЦП 130, третью память 140 и шину 150. Обращаясь к Фиг. 4, ЦП 130 может быть соединен с различными элементами, включая с первой по третью память 110, 120 и 140, через шину 150. Шина 150 может включать в себя различные виды шин, такие как адресная шина, шина данных и шина управления.
[102] Система 100 на кристалле, проиллюстрированная на Фиг. 3 и 4, может подходящим образом выбирать способ шифрования, используя третью память 140 (например, DES, TDES, SEED, RSA, ARIA и т.д.).
[103] Фиг. 5 представляет собой блок-схему последовательности операций, иллюстрирующую способ безопасной начальной загрузки системы на кристалле, проиллюстрированной на Фиг. 3 или 4. Обращаясь к Фиг. 5, если электронное устройство, в котором установлена система 100 на кристалле, включается на стадии S510, ЦП 130 системы 100 на кристалле получает доступ к первой памяти 110 на стадии S520 и идентифицирует данные инициализации. Доступ к первой памяти 110 может быть выполнен согласно инструкции, которая загружается из вектора сброса. ЦП 130 инициализирует аппаратные средства (например, аппаратные компоненты электронного устройства, такие как одно или более запоминающих устройств, интерфейс связи и т.д.) согласно идентифицированным данным инициализации на стадии S530. Пример операции инициализации был описан выше со ссылкой на Фиг. 2, и поэтому избыточное объяснение опускается. ЦП 130 может запретить доступ к себе через внешний порт на время выполнения безопасной начальной загрузки.
[104] Если инициализация завершена, ЦП 130 идентифицирует значение задания, которое сохранено в третьей памяти 140, на стадии S540, и выбирает ключ шифрования, соответствующий значению задания, из числа множества ключей шифрования, сохраненных в первой памяти 110, на стадии S550. Если ключ шифрования выбран, ЦП 130 дешифрует зашифрованные данные, которые хранятся в энергонезависимой памяти 200, с использованием ключа шифрования и выполняет аутентификацию на стадии S560. Дешифрованные данные копируются во вторую память 120 или в память DDR.
[105] Как описано выше, данные дешифруются согласно различным алгоритмам шифрования,
таким как способ DES, способ TDES, способ AES, алгоритм SEED, способ RSA и способ ARIA.
[106] Аутентификация представляет собой процесс проверки эффективности кода аутентификации данных. Для выполнения аутентификации может использоваться алгоритм аутентификации, такой как HMAC-SHA256, HMAC-SHA1 и HMAC-MD5, и/или любой алгоритм, подходящий для выполнения примерного варианта осуществления представленной общей концепции в соответствии с настоящим изобретением. Эти алгоритмы представляют собой основанные на ключе алгоритмы, которые совместно используют единственный секретный ключ. В частности, HMAC определяется в стандарте RFC 204 (хеширование с ключом для кода аутентификации сообщений). Значение ключа шифрования для дешифрования и значение ключа для аутентификации могут быть сохранены в первой памяти 110, как описано выше.
[107] Если код аутентификации не является эффективным или дешифрование не выполнено на стадии S570, ЦП 130 останавливает выполнение программы безопасной загрузки и/или входит в бесконечный цикл на стадии S595.
[108] Если дешифрование и аутентификация выполнены успешно, и все системные приготовления завершены, ЦП 130 изменяет таблицу адресов на стадии S580. Соответственно, когда происходит попытка получить доступ к первой памяти 110, доступ принудительно изменяется на доступ ко второй памяти 120.
[109] ЦП 130 выполняет начальную загрузку, используя дешифрованные данные, которые копируются во вторую память 120 на стадии S590. Процесс начальной загрузки был описан выше, и таким образом избыточное объяснение опускается.
[110] В вышеприведенном примерном варианте осуществления была описана система на кристалле, которая выполняет безопасную начальную загрузку, и ее операции. Однако, в соответствии с примерным вариантом осуществления безопасная начальная загрузка или нормальная начальная загрузка могут быть выборочно выполнены в соответствии со средой, в которой используется система на кристалле.
[111] Фиг. 6 представляет собой блок-схему последовательности операций, иллюстрирующую способ использования памяти системы на кристалле согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. В соответствии с примерным вариантом осуществления энергонезависимая память 200 может хранить зашифрованные данные и незашифрованные данные вместе.
[112] В этом состоянии, если электронное устройство включается на стадии S610, ЦП 130 определяет, выполнять ли ему безопасную начальную загрузку или нормальную начальную загрузку, на стадии S615. Таким образом, если питание включается, ЦП 130 переходит по вектору сброса и загружает инструкцию. Первая память 110 или вторая память 120 могут быть определены в качестве вектора сброса. Таким образом, первая память 110 и вторая память 120 отображаются на один и тот же адрес (например, 0xffff0000) с помощью шины 150. Если ЦП 130 идентифицирует адрес 0xffff0000 из вектора сброса, ЦП 130 получает доступ к одной из первой памяти 110 и второй памяти 120, в зависимости от того, что определено. Память может определяться указывающим значением, которое вводится через внешний вывод, соединенный с ЦП 130, или указывающим значением, которое сохранено в третьей памяти 140.
[113] Если указана вторая память 120, то определяется, что нормальная начальная загрузка, а не безопасная начальная загрузка выполняется на стадии S615: N. В этом случае ЦП 130 получает доступ к энергонезависимой памяти 200 и выполняет нормальную начальную загрузку с использованием незашифрованных данных.
[114] Если указана первая память 110, то определяется, что безопасная начальная загрузка выполняется на стадии S615: Y. Если выполняется безопасная начальная загрузка, ЦП 130 получает доступ к первой памяти 110 на стадии S625 и обнаруживает данные инициализации на стадии S630. Перед этим ЦП 130 может запретить доступ к себе через внешний порт.
[115] ЦП 130 инициализирует базовое оборудование, используя данные инициализации, на стадии S630. ЦП 130 загружает зашифрованные данные, которые хранятся в энергонезависимой памяти 200, во вторую память 120.
[116] ЦП 130 определяет, установлен ли режим безопасной начальной загрузки, на стадии S635. То есть ЦП 130 может определить, выполнять ли безопасную начальную загрузку, независимо от того, указана ли первая память 110 или нет с использованием внешнего вывода (или первого внешнего вывода) или третья память 140. Например, даже если незашифрованные данные хранятся в энергонезависимой памяти 200, ЦП 130 может выполнить начальную загрузку, используя первую память 110. В этом случае дешифрование опускается. Безопасный или обычный режим начальной загрузки определяется на основании другого указывающего значения, сохраненного в третьей памяти 140 или на другом внешнем выводе (в дальнейшем называемом второй внешний вывод).
[117] Если задан режим безопасной начальной загрузки, ЦП 130 выполняет дешифрование и аутентификацию с использованием ключа шифрования, который сохранен в первой памяти 110, на стадии S640. Дешифрование и аутентификация могут быть выполнены в соответствии с вышеописанными различными алгоритмами (например, DES, TDES, AES, SEED, RSA, ARIA и т.д.).
[118] Если по меньшей мере одно из дешифрования и аутентификации завершается неудачей на стадии S645: N, ЦП 130 входит в бесконечный цикл на стадии S660. Таким образом, ЦП 130 останавливает выполнение режима безопасной начальной загрузки. Если дешифрование и аутентификация завершаются успешно на стадии S645: Y, ЦП 130 изменяет таблицу адресов на стадии S650. ЦП 130 может управлять второй памятью 120 так, чтобы она использовалась вместо первой памяти 110. Соответственно, становится невозможно получить доступ к коду, сохраненному в первой памяти 110, после того, как таблица адресов изменена. В это время невозможно проследить код и значение ключа с помощью JTAG, и при доступе будет читаться адрес 0xffffff.
[119] Когда таблица адресов изменена, ЦП 130 переходит к данным, скопированным во вторую память 120 (например, к первому загрузчику для начальной загрузки), и выполняет операцию начальной загрузки с использованием этих данных на стадии S655. Первый загрузчик для начальной загрузки относится к загрузчику для начальной загрузки, загружающему в память второй загрузчик для начальной загрузки. Базовые функции загрузчика для начальной загрузки по обеспечению UI и загрузке ядра выполняются вторым загрузчиком для начальной загрузки. Загрузчик для начальной загрузки может быть разделен на первый и второй загрузчики для начальной загрузки с учетом недостаточного пространства.
[120] Как описано выше, система 100 на кристалле может быть реализована в различных формах и выполняет безопасную начальную загрузку. Вышеописанные примерные варианты осуществления могут быть изменены в комбинации по меньшей мере с одним из других примерных вариантов осуществления. Чертежи и описания, относящиеся к этим примерным вариантам осуществления, опускаются.
[121] Фиг. 7 подробно иллюстрирует пример системы на кристалле. Обращаясь к Фиг. 7, система 100 на кристалле может включать в себя контроллер DDR 185 и различные схемы 155, 160, 165, 170, 175 и 180 в дополнение к первой памяти 110, второй памяти 120, ЦП 130, третьей памяти 140 и шине 150. На Фиг. 7 первая память 110 реализуется с помощью использования масочной ROM, а вторая память 120 реализуется путем использования SRAM. Третья память 140 реализуется путем использования памяти EFUSE. Третья память 140 может хранить значение задания (ключи 1, 2, и 3) для выбора ключа шифрования и указывающего значения (масочная ROM) для задания того, выполнять ли безопасную начальную загрузку.
[122] Каждая из схем 155, 160, 165, 170, 175 и 180 может быть, например, регистром, логической схемой и мультиплексором. Первая схема 155 включает в себя первый регистр 155-1. ЦП 130 может управлять доступом к ЦП через внешний порт, используя первую схему 155. В частности, первая схема 155 вводит сигнал JTAG_EN, соответствующий значению, находящемуся в первом регистре 155-1, в ЦП 130.
[123] Таким образом, если происходит событие начальной загрузки, четвертая схема 170 выводит результат операции ИЛИ, выполняемой по отношению к значению, которое вводится через внешний вывод, и указывающему значению, которое вводится через третью память 140. Событие начальной загрузки включает в себя событие, при котором включается система 100 на кристалле или устройство (например, электронное устройство), в котором установлена система на кристалле. Если должна быть выполнена безопасная начальная загрузка, '1' может быть записана в третьей памяти 140. Соответственно, четвертая схема 170 выводит '1'. Выходное значение четвертой схемы является входным для второй схемы 160 и для третьей схемы 165.
[124] Вторая схема 160 и третья схема 165 включают в себя второй и третий регистры 160-1 и 165-1, соответственно, чтобы управлять доступом к первой памяти 110. Выходное значение '1' четвертой схемы 170, подаваемое на вход второй схемы 160, инвертируется. Соответственно, во вторую схему 160 вводится '0'. Вторая схема 160 выводит результат операции ИЛИ, выполняемой логическим элементом ИЛИ относительно входного значения '0' и значения, хранящегося во втором регистре 160-1. Так как '0' может быть записан во втором регистре 160-1 в начальном состоянии, вторая схема 160 в конечном счете выводит '0' на первую схему 155.
[125] Первая схема 155 включает в себя первый регистр 155-1. Первая схема 155 включает в себя мультиплексор для выборочного вывода значения, хранящегося в первом регистре 155-1, или внешнего значения. Если '0' вводится из второй схемы 160, первая схема 155 выводит сигнал отключения доступа к ЦП 130. Соответственно, доступ к ЦП через внешний порт может быть ограничен в течение предопределенного времени, то есть того времени, в течение которого выполняется безопасная начальная загрузка после включения устройства 100 с системой на кристалле.
[126] Если устройство включено, ЦП 130 идентифицирует память, которая определена согласно значению задания, хранящемуся в третьей памяти 140, или входному значению, введенному через внешний вывод. Если назначенной памятью является первая память 110, ЦП 130 сохраняет первое значение (например, '1') в первом регистре 155-1 для того, чтобы отключить доступ к ЦП.
[127] Если системная подготовка (например, по меньшей мере дешифрование и аутентификация дешифрованных данных) завершена, ЦП 130 сохраняет в первом регистре 155-1 второе значение (например, '0') для того, чтобы включить доступ к ЦП. Значение, хранимое во втором регистре 160-1 второй схемы 160, также может быть изменено.
[128] В частности, если системная подготовка завершена, ЦП 130 записывает во второй регистр 160-1 управляющее значение (например, '1') для того, чтобы отключить доступ к первой памяти 110, и блокирует данные всех областей первой памяти 110 от считывания. Если значение, хранящееся во втором регистре 160-1, изменяется на '1', выходное значение второй схемы 160 изменяется на '1'.
[129] ЦП 130 записывает в третий регистр 165-1 управляющее значение (например, '1') для того, чтобы изменить доступ к первой памяти 110 на доступ ко второй памяти 120. В этом случае доступ к первой памяти 110 автоматически изменяется на доступ ко второй памяти 120, когда ЦП 130 обращается к первой памяти 110. Так как дешифрованный код копируется во вторую память 120 заранее, ЦП 130 может его использовать.
[130] Четвертая схема 170 может включать в себя логический элемент ИЛИ для того, чтобы обеспечить указывающее значение, которое вводится через внешний вывод или третью память 140. ЦП 130 может определить, выполнять ли безопасную начальную загрузку или нет, в соответствии с указывающим значением, которое вводится через четвертую схему 170.
[131] Мультиплексор 175 выборочно вводит значение, выводимое второй памятью 120 или второй схемой 160, на шину 150.
[132] Флэш-загрузчик 180 для начальной загрузки относится к флэш-памяти для хранения загрузчика для начальной загрузки. Флэш-загрузчик 180 для начальной загрузки загружает конфиденциальный загрузчик для начальной загрузки, хранящийся в энергонезависимой памяти 200, при выполнении нормальной начальной загрузки. ЦП 130 выполняет нормальную начальную загрузку, используя флэш-загрузчик 180 для начальной загрузки.
[133] Контроллер DDR 185 представляет собой контроллер, который управляет считыванием/записью (R/W) данных из/на внешнюю память DDR 400. Как было описано выше, система 100 на кристалле может быть реализована в различных формах и может использоваться вместе с энергонезависимой памятью 200 и памятью DDR 300. Подробная конфигурация системы 100 на кристалле не ограничивается тем, что проиллюстрировано на Фиг. 7, и может быть воплощена в других различных формах. Другой примерный вариант осуществления системы 100 на кристалле будет объяснен подробно со ссылками на сопроводительные чертежи.
[134] Фиг. 8 иллюстрирует пример расположения данных, которые хранятся в первой памяти 110. Обращаясь к Фиг. 8, первая память 110 хранит код 910 аутентификации, заголовок 920 безопасного загрузчика для начальной загрузки, а также первый загрузчик 930 для начальной загрузки.
[135] Код 910 аутентификации может быть зашифрован и сохранен в соответствии с различными алгоритмами шифрования (например, DES, TDES, AES, SEED, RSA, ARIA и т.д.). Например, код 910 аутентификации может быть зашифрован (например, зашифрован с использованием способа шифрования, такого как DES, TDES, AES, SEED, RSA, ARIA и т.д.) и сохранен в соответствии с алгоритмом аутентификации, таким как HMAC-SHA256, HMAC-SHA1 и HMAC-MD5 как описано выше.
[136] Заголовок 920 безопасного загрузчика для начальной загрузки может включать в себя информацию об электронной подписи, значение смещения, размер, информацию о погоде, а также идентификатор пользователя. Заголовок 920 безопасного загрузчика для начальной загрузки может быть зашифрован и сохранен в одном из различных алгоритмов шифрования, таких как способ DES, способ TDES, способ AES, алгоритм SEED, способ RSA, и алгоритм ARIA.
[137] Первый загрузчик 930 для начальной загрузки может быть зашифрован и сохранен в зашифрованном состоянии в целях внутренней безопасности.
[138] На Фиг. 8 загрузчик 930 для начальной загрузки может быть настроен так, чтобы запускаться в соответствии с множеством инструкций NOP (то есть «нет операции») в целях внутренней безопасности.
[139] Фиг. 9 иллюстрирует пример карты 940 памяти системы 100 на кристалле. Обращаясь к Фиг. 9, конфиденциальный загрузчик для начальной загрузки хранится по конкретному адресу первой памяти 110. Конфиденциальный загрузчик для начальной загрузки может использоваться для нормальной начальной загрузки.
[140] Если выполняется безопасная начальная загрузка, ЦП 130 может загрузить первый загрузчик для начальной загрузки, сохраненный в энергонезависимой памяти 200, в область 191 регистра (второй памяти 120) или в конкретную область 192 второй памяти 120. ЦП 130 дешифрует первый загрузчик для начальной загрузки, используя ключ шифрования, и копирует дешифрованный первый загрузчик для начальной загрузки в конкретную область 121 второй памяти 120. Вторая память 120 может быть снабжена одной или более областей, таких как секция RW 122 для считывания-записи тех данных, которые могут быть считаны или записаны, а также область общего назначения 123.
[141] Как было описано выше, система 100 на кристалле может обрабатывать зашифрованные данные внешней энергонезависимой памяти 200 с использованием различной внутренней памяти.
[142] Производитель электронного устройства или поставщик услуг, который использует электронное устройство, может пожелать безопасно сохранить свой собственный секретный ключ в электронном устройстве. Секретный ключ может использоваться в различных целях. Например, секретный ключ может использоваться при шифровании некоторых или всех областей ядра или для создания безопасного канала связи между электронным устройством и производителем или между электронным устройством и поставщиком услуг. Первая память 110 или третья память 140 системы 100 на кристалле могут быть реализованы путем использования памяти OTP и могут хранить вышеописанный секретный ключ.
[143] Система 100 на кристалле согласно вышеописанным различным примерным вариантам осуществления может использоваться в различных видах электронных устройств. Например, система на кристалле может использоваться в устройстве формирования изображения, таком как принтер, многофункциональное периферийное устройство, факсимильный аппарат или сканер.
[144] В соответствии с одним примерным вариантом осуществления устройство формирования изображения может включать в себя множество расходных блоков (например, автоподатчик бумаги, зарядное устройство, лазерный блок сканирования, блок проявки, блок переноса, блок термического закрепления, блок выдачи бумаги, блок сканирования и двигатель сканирования), а также контроллер. Контроллер выполняет работу по формированию изображения, используя расходные блоки. Если микросхема CRUM (контроля заменяемого пользователем блока) установлена в расходном блоке, контроллер может обновить данные, которые записываются на микросхему CRUM в соответствии с работой по формированию изображения.
[145] Контроллер может включать в себя энергонезависимую память (например, энергонезависимую память 200) и систему на кристалле (например, систему 100 на кристалле). Энергонезависимая память может записывать на себя зашифрованные данные. Если устройство формирования изображения включается, система на кристалле выполняет безопасную начальную загрузку, используя зашифрованные данные, которые хранятся в энергонезависимой памяти, и, если безопасная начальная загрузка завершена, управляет устройством формирования изображения в соответствии с командами пользователя.
[146] Фиг. 10 представляет собой блок-схему, иллюстрирующую пример устройства формирования изображения. Обращаясь к Фиг. 10, устройство 1000 формирования изображения включает в себя контроллер 1100, память 1200, пользовательский интерфейс 1300, блок 1400 связи, источник питания 1500, а также множество расходных блоков 1600-1 - 1600-n.
[147] Память 1200 может включать в себя жесткий диск (HDD) или другую память (например, твердотельный диск (SSD), запоминающее устройство, и т.д.). Память 1200 не обязательно реализуется с помощью использования внутренней памяти, и может быть реализована с использованием внешней памяти, которая съемным образом устанавливается на устройстве 1000 формирования изображения.
[148] Пользовательский интерфейс 1300 может получать различные команды выбора от пользователя. Пользовательский интерфейс 1300 может включать в себя панель отображения и по меньшей мере одну кнопку. В этом случае панель может быть реализована с использованием сенсорного экрана. По меньшей мере одна кнопка может быть реализована как часть сенсорного экрана. Пользовательский интерфейс 1300 может предусматривать различные экраны UI, и пользователь может вводить различные пользовательские команды, непосредственно касаясь экрана UI или управляя кнопкой пользовательского интерфейса 1300.
[149] Блок 1400 связи может быть соединен с внешним устройством через сеть или локальную сеть (LAN) и может получать данные и команды. Таким образом, блок 1400 связи может быть соединен с главным PC (персональным компьютером) через локальный интерфейс или может быть соединен со множеством внешних устройств проводным или беспроводным способом по сети. Американский стандарт IEEE 802,11, европейский стандарт hyperLAN или японский стандарт MMAC-PC могут использоваться в качестве стандарта беспроводной связи. Помимо них, для связи могут использоваться различные способы связи, такие как Wi-Fi, Bluetooth, Zigbee или связь малой дальности (NFC).
[150] Источник питания 1500 подает питание к каждому из элементов устройства 1000 формирования изображения (например, к контроллеру 1100 и множеству расходных блоков 1600-1 - 1600-n). В частности, источник питания 1500 получает обычное напряжение переменного тока от внешнего источника (AC_IN), преобразует его в питание постоянного тока с напряжением, подходящим для каждого элемента, используя такие элементы, как трансформатор, инвертор и выпрямитель, и подает на выход питание постоянного тока (DC_OUT).
[151] Контроллер 1100 включает в себя систему 100 на кристалле и энергонезависимую память 200. Соответственно, если устройство 1000 формирования изображения включается, контроллер 1100 выполняет безопасную начальную загрузку. Безопасная начальная загрузка может быть выполнена различными способами, как описано выше (например, как описано выше со ссылками на Фиг. 5-6). Система 100 на кристалле, которая выполняет безопасную начальную загрузку и другие операции, была описана выше, и таким образом избыточное объяснение опускается.
[152] Если начальная загрузка завершена, контроллер 1100 управляет всей работой устройства формирования изображения в соответствии с данными и командами внешнего устройства, которое соединяется с устройством формирования изображения через блок 1400 связи, или в соответствии с пользовательскими командами выбора, которые вводятся через пользовательский интерфейс 1300.
[153] В частности, если команда печати выполняется в драйвере принтера, который установлен на главном PC или в приложении, драйвер принтера главного PC генерирует данные печати, преобразуя соответствующий документ на предопределенный язык принтера. Контроллер 1100 получает такие данные печати через блок 1400 связи. Контроллер 1100 преобразует данные печати в растровое изображение, состоящее из '0' и '1', с использованием полутоновой таблицы, и управляет множеством расходных блоков 1600-1 - 1600-n так, чтобы напечатать растровое изображение на бумаге.
[154] Различные виды расходных блоков 1600-1 - 1600-n могут быть предусмотрены в соответствии с видом устройства формирования изображения 100. Если устройство формирования изображения представляет собой лазерное многофункциональное периферийное устройство, расходные блоки 1600-1 - 1600-n могут быть автоподатчиком бумаги, зарядным устройством, лазерным блоком сканирования, блоком проявки, блоком переноса, блоком термического закрепления, блоком выдачи бумаги, блоком сканирования, а также двигателем сканирования. По меньшей мере некоторые из расходных блоков 1600-1 - 1600-n могут включать в себя микросхемы 1610-1 - 1610-n CRUM.
[155] Микросхемы 1610-1 - 1610-n CRUM могут быть реализованы путем использования только памяти, или могут быть реализованы с использованием как памяти, так и ЦП. Микросхемы 1610-1 - 1610-n CRUM могут иметь ОС (операционную систему) отдельно от контроллера 1100, и могут выполнять инициализацию с использованием этой ОС. Микросхемы 1610-1 - 1610-n CRUM выполняют аутентификацию относительно контроллера 1100, и если аутентификация выполняется успешно, могут выполнять обмен данными шифрования. Микросхемы 1610-1 - 1610-n CRUM могут быть реализованы в различных формах.
[156] Фиг. 11 представляет собой блок-схему, подробно иллюстрирующую пример микросхемы CRUM. Обращаясь к Фиг. 11, микросхема 1610 CRUM включает в себя память ОС 1611, энергонезависимую память 1612, энергозависимую память 1613, ЦП 1614, криптографический блок 1615, детектор взлома 1616 и интерфейс 1617. Хотя это и не проиллюстрировано, микросхема 1610 CRUM может включать в себя блок синхронизации для вывода сигнала синхронизации и генератор случайных чисел для генерирования случайных чисел для аутентификации. Однако, некоторые из этих элементов могут быть удалены и могут быть включены в другой элемент. Криптографический блок 1615 может быть интегральной схемой, процессором, программируемой на месте матрицей логических элементов, программируемым логическим устройством и/или любым устройством, подходящим для выполнения криптографии (например, шифрования данных и/или дешифрования данных) согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытой в настоящем документе. Детектор трамбовки 1616 может быть интегральной схемой, датчиком, процессором, программируемой на месте матрицей логических элементов, программируемым логическим устройством, и/или любым подходящим устройством, чтобы обнаружить подделку в расходный блок (например, первый расходный блок 1600-1, второй расходный блок 1600-2, и т.д.) согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытым в настоящем документе. Интерфейс 1617 может быть любым интерфейсом связи, подходящим для передачи данных и получения данных из, например, главного контроллера 1100 (например, как проиллюстрировано на Фиг. 10), который включает в себя систему 100 на кристалле.
[157] Память ОС 1611 хранит операционную систему (ОС) для управления расходным блоком 1600-1 - 1600-n. Энергонезависимая память 1612 может хранить один или более наборов данных и программ, относящихся к расходному блоку (например, к любому из расходных блоков 1600-1 - 1600-n) и микросхеме CRUM (например, к любому одному или более из первых микросхем 1610-1 - 1610-n CRUM). В частности, энергонезависимая память 1612 может хранить информацию электронной подписи, один или более кодов программы шифрования, информацию о состоянии расходных блоков (например, информацию об оставшемся количестве тонера, информацию о времени замены, количество оставшихся копий для печати), уникальную информацию (например, информацию о производителе, информацию о дате производства, серийный номер, название модели продукта), а также информацию о сервисном обслуживании. ЦП 1614 может загрузить программу и данные, которые хранятся в энергонезависимой памяти 1612, в энергозависимую память 1613, и может использовать их.
[158] Криптографический блок 1615 поддерживает алгоритм шифрования и может заставить ЦП 1614 выполнять аутентификацию относительно контроллера 1100, предусмотренного в устройстве формирования изображения, или выполнять обмен зашифрованными данными (например, через интерфейс 1617). В частности, криптографический блок 1615 может выполнять аутентификацию или обмен данными шифрования, используя вышеописанные различные алгоритмы шифрования.
[159] Детектор взлома 1616 предназначен для защиты и/или предотвращения различных физических попыток взлома. Таким образом, детектор взлома 1616 обнаруживает попытку вмешательства и защищает расходный блок (например, любой из расходных блоков 1600-1 - 1600-n). В частности, детектор взлома 1616 отслеживает параметры рабочей среды, такие как напряжение, температуру, давление, свет и частоту, и если обнаружена попытка вмешательства, такого как вскрытие микросхемы 1610 CRUM для того, чтобы определить, как она работает, или любая другая попытка вмешательства, детектор взлома 1616 удаляет или физически блокирует данные (например, данные, хранящиеся в энергозависимой памяти 1613, энергонезависимой памяти 1612 и/или памяти OS 1611). В этом случае детектор взлома 1616 может включать в себя отдельный источник питания.
[160] Путем обеспечения криптографического блока 1615 и детектора взлома 1616 как описано выше, можно обеспечить систематическую безопасность данных с использованием как аппаратного, так и программного обеспечения.
[161] Интерфейс 1617 соединяет ЦП 1614 и контроллер 1100 друг с другом через соединение с помощью проводной и/или беспроводной связи. В частности, интерфейс 1617 может быть реализован путем использования последовательного интерфейса, или проводного и/или беспроводного интерфейса.
[162] Как описано выше, система 100 на кристалле может быть установлена в устройстве формирования изображения и может выполнять безопасную начальную загрузку. Соответственно, система на кристалле может минимизировать вероятность и/или препятствовать тому, чтобы неавторизованная персона изменила процесс начальной загрузки или взломала данные расходного блока (например, любого из расходных блоков 1600-1 - 1600-n). Система 100 на кристалле может быть смонтирована и использоваться в различных электронных устройствах помимо устройства формирования изображения.
[163] Как описано выше, система 100 на кристалле первоначально использует первую память 110, и впоследствии выполняет операции с использованием второй памяти 120. Важная информация, такая как различные данные, относящиеся к инициализации, ключ шифрования для дешифрования кодов, а также коды начальной загрузки и т.д. может быть сохранена в первой памяти 110. Таким образом, когда использование первой памяти 110 завершено, необходимо минимизировать и/или предотвратить изменение данных в первой памяти 110 или их утечку путем отключения доступа к первой памяти 110. Для этого, как описано в со ссылкой на Фиг. 7, вторая схема 160 и третья схема 165 могут быть дополнительно включены в систему 100 на кристалле. Однако конфигурация системы 110 на кристалле не ограничивается этим, и могут быть применены различные модификации.
[164] Фиг. 12 представляет собой блок-схему последовательности операций, иллюстрирующую способ использования памяти в системе на кристалле согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. В соответствии с Фиг. 12, когда питание устройства формирования изображения включается на стадии S1210, ЦП 130 получает доступ к первой памяти 110 на стадии S1220. Соответственно, ЦП 130 выполняет различные операции путем использования программы и данных, которые хранятся в первой памяти, на стадии S1230. Например, когда данные инициализации хранятся в первой памяти 110, ЦП 130 выполняет инициализацию устройства формирования изображения путем использования данных инициализации. Когда инициализация завершена, ЦП 130 считывает зашифрованные данные в энергонезависимой памяти 200 и дешифрует эти данные путем использования ключа шифрования, сохраненного в первой памяти 110. ЦП 130 сохраняет дешифрованные данные во второй памяти 120.
[165] Операция начальной загрузки выполняется путем использования второй памяти 120, а не первой памяти 110. Таким образом, ЦП 130 больше не нуждается в использовании первой памяти 110. Следовательно, ЦП 130 отключает доступ к первой памяти 110 на стадии S1240. ЦП 130 выполняет следующую операцию путем получения доступа ко второй памяти 120 на стадии S1250.
[166] Так как операция дешифрования и операция начальной загрузки конкретно описаны в различных примерных вариантах осуществления, показанных выше, повторные описания опускаются.
[167] Фиг. 13 иллюстрирует примерный вариант осуществления представленной общей концепции в соответствии с настоящим изобретением системы на кристалле. Как проиллюстрировано на Фиг. 13, система 100 на кристалле может включать в себя первый контроллер 1310 памяти, второй контроллер 1320 памяти, и переключающий блок 1330. Система 100 на кристалле может включать в себя первую память 110, вторую память 120, ЦП 130, третью память 140, шину 150, контроллер DDR 185, а также схемы 155, 160, 165, 170, 175 и 180. Другие элементы, кроме первого контроллера 1310 памяти, второго контроллера 1320 памяти и переключающего блока 1330 конкретно описаны со ссылками на Фиг. 7 выше, и таким образом повторные описания опускаются.
[168] Первый контроллер 1310 памяти является элементом и/или устройством для управления доступом к первой памяти 110. Первый контроллер 1310 памяти может быть интегральной схемой, процессором, программируемым логическим устройством, программируемой на месте матрицей логических элементов и/или любым устройством, подходящим для управления доступом к первой памяти 110 согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением. Когда сигнал считывания получается от ЦП 130, первый контроллер 1310 считывает данные из области, определяемой сигналом считывания в пределах первой памяти 110, и выводит данные на ЦП 130. Второй контроллер 1320 памяти может управлять доступом ко второй памяти 120. Второй контроллер 1320 памяти может выполнять считывание и запись точно так же, как и первый контроллер 1310 памяти. Второй контроллер 1320 памяти может быть интегральной схемой, процессором, программируемым логическим устройством, программируемой на месте матрицей логических элементов и/или любым устройством, подходящим для управления доступом к первой памяти 110 согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением.
[169] Переключающий блок 1330 представляет собой элемент и/или электронное устройство для выборочного соединения одного из первого контроллера 1310 памяти и второго контроллера 1320 памяти с шиной 150. То есть, как описано выше, ЦП 130 использует первую память 110 с момента включения устройства (например, устройства формирования изображения, электронного устройства и т.д.) до тех пор, пока данные энергонезависимой памяти 200 не будут дешифрованы, а после этого ЦП 130 использует вторую память 120. Переключающий блок 1330 соединяет первый контроллер 1310 памяти с шиной 150, когда ЦП 130 находится в состоянии работы с использованием первой памяти 110, и соединяет второй контроллер 1320 памяти с шиной 150, когда использование первой памяти 110 завершено.
[170] Как проиллюстрировано на Фиг. 13, первый контроллер 1310 памяти включает в себя регистр 1311. Значение, управляющее доступом к первой памяти 110, сохраняется в регистре 1311. Значение, управляющее доступом, представляет собой значение для включения или отключения доступа к первой памяти 110. Значение, управляющее доступом, может включать в себя одно или более битовых значений.
[171] Как проиллюстрировано на Фиг. 13, данные в регистре 1311, встроенном в первый контроллер 1310 памяти, являются входными для третьей схемы 165. В отличие от примерного варианта осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированной на Фиг. 7, третья схема 165 не включает в себя инвертор и логический элемент OR. Вместо этого третья схема 165 может включать в себя логический элемент И 165-2. Логический элемент И 165-2 выводит '1', когда все из значения, хранящегося в третьем регистре 165-1, значения, хранящегося в регистре 1311, и выходного значения четвертой схемы 170 равны '1'. Таким образом, когда ЦП 130 сохраняет значение управления доступом, равное '0', в регистре 1311, третья схема 165 выводит '0' независимо от значения, хранящегося в третьем регистре 165-1, и выходного значения четвертой схемы 170.
[172] Когда система 100 на кристалле включается и/или получает питание от источника питания, значение управления доступом, например '1', хранится в регистре 1311. Таким образом, третья схема 160 выводит '1' на переключающий блок 1330. Переключающий блок 1330 включает в себя первый мультиплексор 1331, второй мультиплексор 1332 и третий мультиплексор 1333. Первый мультиплексор 1331 выборочно выводит одно из значений, которые выводятся из первого контроллера 1310 памяти и второго контроллера 1320 памяти, на шину 150 в соответствии со значением, которое выводится из третьей схемы 160.
[173] Фиг. 13 иллюстрирует структуру схемы, где, когда из третьей схемы 165 выводится '1', значение, которое выводится из первого контроллера 1310 памяти, передается на шину 150, а когда из третьей схемы 165 выводится '0', значение, которое выводится из второго контроллера 1320 памяти, передается на шину 150. Второй мультиплексор 1332 и третий мультиплексор 1333 выводят значение, которое вводится с шины 150 в соответствии со значением, выводимым с третьей схемы 165, в первый контроллер 1310 памяти или второй контроллер 1320 памяти.
[174] В соответствии с примерными вариантами осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированными и описанными со ссылками на Фиг. 12 и 13, первая память 110, то есть такая как масочная ROM, и вторая память 120, то есть такая как внутренняя память, могут быть выделены для одного и того же адресного пространства и использоваться выборочно согласно порядку начальной загрузки. То есть, после того, как сначала используется код, сохраненный в первой памяти 110, на заключительной стадии только команда шины '1' и ввод данных '1' могут влиять на переключающий блок 1330 путем задания регистра 1311. Даже если ЦП 130 получает доступ к тому же самому адресу, вторая память 120 является подсоединенной, и таким образом безопасность первой памяти 110 увеличивается и/или усиливается. Хотя Фиг. 13 иллюстрирует, что регистр 1311 располагается внутри первого контроллера 1310 памяти, это конечно же не ограничивается данным случаем. Например, регистр 1311 может быть расположен вне первого контроллера 1310 памяти, и другая логическая схема, которая может быть задана на начальной стадии (то есть установлена только однажды, и не изменяется позже), может быть встроена в первый контроллер памяти 1310 вместо регистра 1311.
[175] Как только переключающий блок 1330 подготовлен (например, путем установки регистра 1311, и/или в соответствии с выходами второго контроллера 1320 памяти и/или второй схемы 160), система 100 на кристалле не нуждается в непосредственном соединении с подчиненными устройствами, такими как первый контроллер 1310 памяти и второй контроллер 1320 памяти, с помощью шины 150, и таким образом размер логики может быть уменьшен.
[176] В примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, как обсуждено выше, система 100 на кристалле выполняет инициализацию или безопасную начальную загрузку путем использования различных программных кодов, сохраненных в первой памяти 110, третьей памяти 140 и т.д. Однако, существует риск, что злоумышленник может выполнить взлом непосредственно на ROM внутри системы 100 на кристалле, например, первой памяти 110, посредством процесса вскрытия. Таким образом, в примерном варианте осуществления представленной общей концепции в соответствии с настоящим изобретением программный код может быть сгенерирован в системе 100 на кристалле автономно, и может использоваться, как подробно обсуждено ниже.
[177] Фиг. 14 представляет собой блок-схему, иллюстрирующую систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. Как проиллюстрировано на Фиг. 14, система 100 на кристалле включает в себя первую память 110, вторую память 120, ЦП 130, третью память 140, шину 150 и блок 1400 генерирования кода. Первая память 110, вторая память 120, ЦП 130, третья память 140, и шина 150 подробно описаны выше.
[178] Блок 1400 генерирования кода генерирует один или более программных кодов. ЦП 130 может использовать не только данные, хранящиеся в памяти с первой по третью 110, 120 и 140, но также и программный код, сгенерированный в блоке 1400 генерирования кода.
[179] Как описано выше, различные данные, такие как код для инициализации системы, код для дешифрования зашифрованного кода внешней программы, ключ шифрования и т.д., могут быть сохранены в первой памяти 110. Блок 1400 генерирования кода может генерировать по меньшей мере часть данных, которые хранятся в первой памяти 110, и предоставлять ЦП 130 эти данные.
[180] ЦП 130 может выполнять инициализацию путем использования программного кода, сгенерированного в блоке 1400 генерирования кода, вместе с данными, хранящимися в первой памяти 110. Например, не все коды инициализации хранятся в первой памяти 110, и в некоторых примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением некоторые коды, которые не хранятся, генерируются блоком 1400 генерирования кода. В настоящем документе ЦП 130 может выполнять инициализацию путем получения некоторых программных кодов от блока 1400 генерирования кода при переходе по вектору сброса и считывания кода инициализации в первой памяти 110. В примерном варианте осуществления представленной общей концепции в соответствии с настоящим изобретением ЦП 130 может выполнять различные операции путем использования значения, сохраненного в первой памяти 110, и данных, полученных от блока 1400 генерирования кода. Следовательно, даже если первая память 110 взламывается, третье лицо (то есть хакер) не может узнать весь код инициализации.
[181] Фиг. 15 иллюстрирует систему на кристалле согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением; Как проиллюстрировано на Фиг. 15, система 100 на кристалле не содержит первой памяти 110, и включает в себя блок 1400 генерирования кода. Система 100 на кристалле включает в себя вторую память 120, ЦП 130 и третью память 140, а также шину 150, которые подробно описаны выше. Блок 1400 генерирования кода может генерировать различные данные, такие как код инициализации системы, дешифрованный код, ключ шифрования и т.д. ЦП 130 вводит адрес в блок 1400 генерирования кода, и получает программный код, который генерируется в соответствии с адресом. Таким образом, в примерном варианте осуществления, проиллюстрированном на Фиг. 15, который не включает в себя первую память 110, ЦП 130 может выполнять инициализацию путем использования кодов, сгенерированных блоком 1400 генерирования кода (например, в противоположность сохраненному в памяти, такой как первая память 110).
[182] Фиг. 16 иллюстрирует примерный вариант осуществления блока 1400 генерирования кода, который используется в примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, проиллюстрированных на Фиг. 14 и/или 15. Как проиллюстрировано на Фиг. 16, блок 1400 генерирования кода включает в себя декодер 1410 адреса, множество регистров 1420-1, 1420-2 - 1420-n, а также мультиплексор 1430. Декодер 1410 адреса может быть схемой, интегральной схемой, программируемой на месте матрицей логических элементов, программируемым логическим устройством и/или любым устройством, подходящим для декодирования адреса. Регистры 1420-1, 1420-2 и 1420-n могут быть регистрами в одном или более запоминающих устройствах.
[183] Декодер 1410 адреса получает адрес от ЦП 130, и декодирует его. Мультиплексор 1430 получает адрес, декодированный в декодере 1410 адреса, и получает доступ к одному или более из множества регистров 1420-1 - 1420-n в соответствии с адресом.
[184] В частности, мультиплексор 1430 выборочно считывает значения регистров (например, значения данных в одном или более регистрах), сохраненные в регистре, определяемом адресом, декодированным в декодере 1410 адреса, из множества регистров 1420-1 - 1420-n, и генерирует программный код путем объединения значений регистров.
[185] Фиг. 17 иллюстрирует примерный вариант осуществления блока генерирования кода согласно представленной общей концепции в соответствии с настоящим изобретением. Блок 1700 генерирования кода, проиллюстрированный на Фиг. 17, может занимать место блока 1400 генерирования кода, проиллюстрированного на Фиг. 14 и/или 15. Как проиллюстрировано на Фиг. 17, блок 1700 генерирования кода включает в себя декодер 1710 адреса, первый блок 1720 генерирования, множество регистров инструкций 1730-1 - 1730-n и 1750-1 - 1750-m, множество мультиплексоров инструкций 1740 и 1760, средство 1770 форматирования кода, второй блок 1780 генерирования, множество регистров данных 1790-1 - 1790-x, мультиплексор 1800 данных и мультиплексор 1810.
[186] Декодер 1710 адреса получает адрес от ЦП 130 и декодирует адрес, и передает декодированный адрес первому блоку 1720 генерирования и второму блоку 1780 генерирования. Первый блок 1720 генерирования считывает адрес инструкции из декодированного адреса в декодере 1710 адреса, и генерирует адрес инструкции. Адрес инструкции, сгенерированный в первом блоке 1720 генерирования, передается множеству мультиплексоров инструкций (например, мультиплексорам 1740 и 1760 инструкций, соответственно).
[187] Хотя Фиг. 17 иллюстрирует только два мультиплексора 1740 и 1760 инструкций, количество мультиплексоров инструкций может быть изменено в соответствии с количеством групп, которые различает регистр инструкций. То есть регистры инструкций могут быть сгруппированы в соответствии с количеством выводов из первого блока 1720 генерирования, который выводит адреса инструкций, и мультиплексор может быть предусмотрен для каждой группы регистров инструкций.
[188] Регистры инструкций 1730-1 - 1730-n и 1750-1 - 1750-m могут быть сгруппированы в соответствии с полем, составляющим программный код, и поделены на множество групп. Регистры инструкций 1730-1 - 1730-n и 1750-1 - 1750-m могут хранить конкретный код, чтобы составить программный код, или данные размером по меньшей мере один бит. Фиг. 17 иллюстрирует регистр инструкций, поделенный на n групп (например, регистры 1730-1, 1730-2 и 1730-n).
[189] Множество мультиплексоров 1740 и 1760 инструкций выборочно читают значение регистра (например, значение данных в регистре) из регистра инструкций (например, регистров инструкций 1730-1 - 1730-n и 1750-1 - 1750-m), который является соответствующим адресу инструкции. Например, когда первый, третий, четвертый и пятый регистры в первой группе, и второй, третий, пятый и шестой регистры в n-й группе обозначены в адресе инструкции, первый мультиплексор 1740, который соответствует первой группе, считывает значение регистра из первого, третьего, четвертого и пятого регистров 1740-1, 3, 4 и 5. Первый мультиплексор 1760, который соответствует следующей группе, считывает значение регистра из второго, третьего, пятого и шестого регистров 1750-2, 3, 5 и 6. Считанные значения передаются средству 1770 форматирования кода.
[190] Средство 1770 форматирования кода объединяет значения, которые считаны из множества мультиплексоров 1740 и 1760 инструкций, и генерирует код (то есть инструкции). Средство 1770 форматирования кода может быть, например, схемой и/или любым устройством, подходящим для объединения значений и генерирования кода и/или инструкций.
[191] Второй блок 1780 генерирования генерирует адрес данных на основе адреса, который декодируется в декодере 1710 адреса. Второй блок 1780 генерирования передает
мультиплексору 1800 данных сгенерированный адрес данных.
[192] Мультиплексор 1800 данных выборочно считывает значение регистра (например, значение данных в регистре) из множества регистров данных 1790-1 - 1790-x в соответствии с адресом данных. Различные данные делятся на части и могут храниться в одном или больше из множества регистров данных 1790-1 - 1790-x. Одно или более значений регистров (например, значения данных, сохраненные в регистрах 1790-1 - 1790-x), которые получаются мультиплексором 1800 данных, мультиплексируются мультиплексором 1800 данных и передаются мультиплексору 1810.
[193] Мультиплексор 1810 может объединять код, сгенерированный в средстве 1770 форматирования кода, и данные, сгенерированные в мультиплексоре 1800 данных, и генерировать программный код. Сгенерированный программный код может быть передан ЦП 130 или может быть скопирован во вторую память 120.
[194] ЦП 130 может выполнять не только операцию инициализации, но также и различные операции путем использования программного кода, сгенерированного в блоке 1400 генерирования кода.
[195] Фиг. 18 и 19 иллюстрируют различные примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением программного кода, сгенерированного в блоке генерирования кода (например, в блоке 1400 генерирования кода, проиллюстрированном на Фиг. 14 и 15, и/или в блоке 1700 генерирования кода, проиллюстрированном на Фиг. 17).
[196] В соответствии с Фиг. 18, программный код может включать в себя множество областей 1910 - l950. Различные данные, такие как условие (показанные как поле 1910 на Фиг. 18), код операции (то есть код операции, который определяет операцию, которая будет выполняться; показанный как поле 1920 на Фиг. 18), и значение регистра (например, значения в любом из регистров 0, 1 или 2, показанных в полях 1930, 1940 и 1950, соответственно, на Фиг. 18), могут быть сохранены в одном или более полей 1910 - 1950. Блок 1400 генерирования кода или блок 1700 генерирования кода может генерировать программный код, как проиллюстрировано на Фиг. 18, путем считывания значений регистров соответственно из регистра группы, соответствующей каждому полю, и объединения этих значений (например, путем использования мультиплексора).
[197] Фиг. 19 иллюстрирует примерный вариант осуществления представленной общей концепции в соответствии с настоящим изобретением для программного кода. В то время как программный код, изображенный на Фиг. 18, может включать в себя поля, которые имеют одинаковый размер, программный код, изображенный на Фиг. 19, может включать в себя поля, размеры которых отличаются друг от друга. Как проиллюстрировано на Фиг. 19, поле 1960 условия и поле 1970 кода операции (то есть код операции) подготавливаются, а другие данные могут храниться в отдельном поле 1980. Таким образом, поле 1960 условия и поле 1970 кода операции могут иметь одинаковый размер, а отдельное поле 1980 может иметь другой (то есть больший) размер. Альтернативно, каждое из поля 1960 условия, поля 1970 кода операции и отдельного поля 1980 может иметь различный размер.
[198] Программный код может конфигурироваться в различных формах. Обычно программный код делится на определенные секции, такие как часть команды, часть оператора и т.д.
Эти команды обычно подобны по своей структуре, и таким образом, если код является оптимизированным, и устройство создается с учетом оптимизированного кода, возможно уменьшить размер устройства. Таким образом, код может быть оптимизирован так, чтобы он выполнялся более быстро, либо так, чтобы он использовал меньшее количество памяти или других ресурсов, либо так, чтобы он потреблял меньше питания. Устройство, такое как система 100 на кристалле, может быть уменьшено в размере путем, например, уменьшения количества и/или размера памяти (например, первой памяти 110, второй памяти 120 и/или третьей памяти 140). Устройство (например, система 100 на кристалле) может также потреблять меньше питания, когда выполняется оптимизированный код.
[199] Как описано в вышеупомянутых различных примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, программы шифрования или данные шифрования хранятся во внешней памяти 200 (проиллюстрированной, например, на Фиг. 1, 3, 4, 7 и 13-15), которая не встроена в систему 100 на кристалле. Внешняя память 200 может быть энергонезависимой флэш-памятью, которая позволяет записывать или считывать данные.
[200] Флэш-память (то есть энергонезависимая память 200) может иметь различные типы в соответствии со спецификацией интерфейса и внутренней структурой. В частности, флэш-память может быть последовательной и/или параллельной флэш-памятью, с точки зрения спецификации ЦП 130 и интерфейса, и может быть NAND или NOR флэш-памятью с точки зрения внутренней структуры флэш-памяти.
[201] Фиг. 20 иллюстрирует структуру выводов NOR флэш-памяти 2000. NOR флэш-память 2000 может использоваться в качестве энергонезависимой флэш-памяти 200, проиллюстрированной на Фиг. 1, 3, 4, 7 и 13-15. Как проиллюстрировано на Фиг. 20, NOR флэш-память 2000 может включать в себя различные выводы, такие как вывод WE# 2010. Вывод WE# 2010 используется для того, чтобы управлять операцией записи шины командного интерфейса. То есть, когда вывод WE# 2010 получает сигнал, операция записи может быть выполнена на NOR флэш-памяти 2000.
[202] Фиг. 21 иллюстрирует структуру выводов NAND флэш-памяти 2100. NAND флэш-память 2100 может использоваться в качестве энергонезависимой флэш-памяти 200, проиллюстрированной на Фиг. 1, 3, 4, 7 и 13-15. Как проиллюстрировано на Фиг. 21, NAND флэш-память 2100 может включать в себя различные выводы, такие как вывод WE# 2110. Вывод WE# 2110 используется для того, чтобы получить сигнал записи для NAND флэш-памяти 2100.
[203] Фиг. 22 иллюстрирует структуру выводов флэш-памяти 2200 с последовательным периферийным интерфейсом (SPI). SPI флэш-память 2200 может использоваться в качестве энергонезависимой флэш-памяти 200, проиллюстрированной на Фиг. 1, 3, 4, 7 и 13-15. В соответствии с Фиг. 22 SPI флэш-память 2200 включает в себя вывод W# 2210 для операции записи.
[204] ЦП 130 может выполнять операцию записи путем использования вывода, встроенного в каждую флэш-память (например, энергонезависимую память 200, которая может быть NOR флэш-памятью 2000, NAND флэш-памятью 2100 и/или SPI флэш-памятью 2200). Как описано выше, флэш-память шифруется, но значение ключа шифрования системы 100 на кристалле может быть раскрыто. Когда значение ключа шифрования становится раскрытым, существует риск того, что встроенное программное обеспечение, сохраненное во флэш-памяти, может быть изменено. Таким образом, необходимо заранее минимизировать и/или предотвращать изменение флэш-памяти. Согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением вывод записи внешней памяти может быть деактивирован. Таким образом, вывод WE# 2010 NOR флэш-памяти 2000, вывод WE# 2110 NAND флэш-памяти 2100 и/или вывод W# 2210 SPI флэш-памяти 2200 может быть деактивирован для минимизации и/или предотвращения того, чтобы флэш-память была изменена путем несанкционированной операции (то есть, операции взлома).
[205] Фиг. 23 иллюстрирует систему 100 на кристалле и структуру внешней памяти согласно примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. Фиг. 23 иллюстрирует случай, в котором NOR флэш-память (такая как NOR флэш-память 2000, проиллюстрированная на Фиг. 20), используется в качестве внешней памяти (например, энергонезависимой памяти 200). В настоящем документе система 100 на кристалле может дополнительно включать в себя контроллер 2310 NOR флэш-памяти, чтобы управлять NOR флэш-памятью 2000. Контроллер 2310 NOR флэш-памяти может быть, например, схемой и/или интегральной схемой для управления операциями NOR флэш-памяти 2000, такими как операция считывания и/или операция записи.
[206] ЦП 130 может считывать различные данные и программное обеспечение, которые сохранены в NOR флэш-памяти 2000, через контроллер 2310 NOR флэш-памяти. ЦП 130 может выводить сигнал записи на NOR флэш-память 2000 через контроллер 2310 NOR флэш-памяти.
[207] Однако, как проиллюстрировано на Фиг. 23, вывод 2010 записи NOR флэш-памяти 2000 может быть деактивирован. Процесс деактивации может быть выполнен различными способами. Фиг. 23 иллюстрирует состояние, в котором вывод записи связывается с деактивированным терминалом 2320, который подготовлен в системной плате, которая содержит систему 100 на кристалле и NOR флэш-память 2000. В настоящем документе, даже если сигнал записи выводится в контроллер 2310 NOR флэш-памяти, сигнал записи не может быть введен на вывод записи 2010, и таким образом невозможно изменить данные NOR флэш-памяти 2000, когда вывод 2010 записи деактивирован.
[208] Фиг. 23 иллюстрирует только NOR флэш-память 2000, но как описано выше, энергонезависимая память, то есть внешняя память (например, энергонезависимая память 200) может конфигурироваться в различных формах, таких как NAND флэш-память 2100 или SPI флэш-память 2200 и т.д., и одна система 100 на кристалле может быть соединена с различными типами флэш-памяти. Вывод записи может быть деактивирован в этой флэш-памяти 2100 и 2200, блокируя таким образом операцию изменения данных.
[209] В соответствии с примерным вариантом осуществления представленной общей концепции настоящего изобретения, когда система на кристалле соответствует особому условию, запись во внешнюю память может быть выполнена.
[210] Фиг. 24 представляет собой блок-схему последовательности операций, иллюстрирующую способ управления памятью согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. В соответствии с примерным вариантом осуществления система 100 на кристалле может включать в себя контроллер памяти для того, чтобы управлять доступом к внешней энергонезависимой памяти.
[211] Когда событие записи происходит на стадии S2410, контроллер памяти получает сигнал записи и первое значение ключа от ЦП 130 на стадии S2420. Пользователь может ввести первое значение ключа, которое получается системой 100 на кристалле через пользовательский интерфейс (например, пользовательский интерфейс 1300, проиллюстрированный на Фиг. 10), или первое значение ключа может быть введено из ЦП 130 автоматически. ЦП 130 может случайным образом выбрать одно значение из предварительно сохраненного множества значений ключа, и может ввести номер выбранного значения ключа в контроллер памяти, или может ввести само значение ключа.
[212] Когда первое значение ключа получается на стадии S2420, контроллер памяти (например, контроллер 2310 NOR флэш-памяти, проиллюстрированный на Фиг. 23), сравнивает полученное первое значение ключа с предварительно сохраненным вторым значением ключа на стадии S2430. Когда на стадии S2440 определяется, что эти два значения ключа совпадают, контроллер памяти (например, контроллер 2310 NOR флэш-памяти, проиллюстрированный на Фиг. 23), выполняет операцию записи во внешнюю память (например, NOR флэш-память 2000, проиллюстрированную на Фиг. 23) на стадии S2450. Когда полученное первое значение ключа не совпадает с предварительно сохраненным вторым значением ключа на стадии S2430, контроллер памяти блокирует и/или предотвращает операцию записи во внешнюю память.
[213] Фиг. 25 иллюстрирует примерный вариант осуществления контроллера памяти, который выполняет способ управления памятью, как проиллюстрировано на Фиг. 24. В соответствии с Фиг. 25 контроллер 2500 памяти включает в себя блок 2510 передачи сигнала, память 2520 значения ключа, сравнивающий блок 2530, контроллер 2540 доступа к памяти, сигнальный процессор 2550 и блок 2560 генерирования сигнала. В примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением контроллер 2500 памяти может быть заменен контроллером 2310 NOR флэш-памяти, проиллюстрированным на Фиг. 23. Блок 2510 передачи сигнала может быть схемой, интегральной схемой и/или любым устройством, подходящим для сравнения и передачи сигналов согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытым в настоящем документе. Память 2520 значения ключа может быть запоминающим устройством. Сравнивающий блок 2530 может быть схемой, интегральной схемой, программируемым логическим устройством, или программируемой на месте матрицей логических элементов и/или любым устройством, подходящим для сравнения сигналов.
[214] Блок 2560 генерирования сигнала может быть схемой, интегральной схемой, программируемым логическим устройством или программируемой на месте матрицей логических элементов и/или любым устройством, подходящим для генерирования сигнала (например, сигнала синхронизации, сигнала выбора подчиненного устройства и/или сигнала выбора микросхемы и т.д.) согласно примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением. Блок 2560 генерирования сигнала может получать и генерировать сигналы так, чтобы обмениваться данными с одним или более устройствами, связанными с возможностью обмена данными с интерфейсом, таким как последовательный периферийный интерфейс (SPI). Блок 2560 генерирования сигнала может обмениваться данными, например, с датчиками, управляющими устройствами, интерфейсами связи, памятью и/или дисплеем, которые могут быть смонтированы, например, на системной плате 300, проиллюстрированной на Фиг. 4 и описанной выше. Конечный автомат 2561, который может генерировать и выводить одно или более операционных состояний блока генерирования сигнала во время связи с одним или более устройствами.
[215] Как проиллюстрировано на Фиг. 25, блок 2510 передачи сигнала получает различные сигналы через шину (например, шину 150, проиллюстрированную на Фиг. 4 и 13-15), такую как APB (усовершенствованная периферийная шина), и передает сигналы сравнивающему блоку 2530 или сигнальному процессору 2550 и т.д. В частности, когда первое значение ключа передается из ЦП 130, блок 2510 передачи сигнала сохраняет первое значение ключа в регистре 2511 и предоставляет сравнивающему блоку 2530 сохраненное первое значение ключа.
[216] По меньшей мере одно второе значение ключа может быть сохранено в памяти 2520 значения ключа.
[217] Когда первое значение ключа передается через блок 2510 передачи сигнала, сравнивающий блок 2530 сравнивает второе значение ключа, сохраненное в памяти 2520 значения ключа, с полученным вторым значением ключа.
[218] Сравнивающий блок 2530 может выводить сигнал, такой как '0' или '1', в соответствии с результатом сравнения. Таким образом, сравнивающий блок 2530 может сравнивать первое значение ключа и второе значение ключа, и выводить сигнал в соответствии с тем, является ли первое значение ключа тем же самым, что и второе значение ключа (например, '1' может быть выведена сравнивающим блоком 2530), и выводить другой сигнал, когда первое значение ключа отличается от второго ключевого сигнала (например, '0' может быть выведен сравнивающим блоком 2530).
[219] Сигнальный процессор 2550 может выборочно выводить сигнал записи, переданный от ЦП 130, во внешнюю энергонезависимую память (например, энергонезависимую память 200, проиллюстрированную на Фиг. 1, 3, 4, 7 и 13-15, и/или NOR флэш-память 2000, проиллюстрированную на Фиг. 23), в соответствии с результатом сравнения, определяемым сравнивающим блоком 2530. Сигнальный процессор 2550 может передать сигнал, который считывается во внешней энергонезависимой памяти 200, контроллеру 2540 доступа к памяти.
[220] Сигнальный процессор 2550 может включать в себя первый переключатель 2551-1 для управления операцией записи, второй переключатель 2551-2 для управления операцией считывания, преобразователь 2552 для преобразования отправленного или полученного сигнала в предопределенные форматы данных, и блок 2553 фильтра и т.д. Первый переключатель 2551-1 или второй переключатель 2551-2 могут быть одной или более логическими схемами. Преобразователь 2552 и блок 2553 фильтра могут быть схемами, интегральными схемами и/или любым устройством, подходящим, соответственно, для преобразования сигнала или фильтрования сигнала согласно примерным вариантам осуществления, раскрытым в настоящем документе. Таким образом, контроллер 2540 доступа к памяти и преобразователь 2552 могут быть соединены или блокированы в соответствии с выходным значением результата сравнения в сравнивающем блоке 2530.
[221] Например, когда первое значение ключа, которое сохранено в регистре 2511, отличается от второго значения ключа, которое сохранено в памяти 2520 значения ключа, сравнивающий блок 2530 выводит '0', а когда первое значение ключа совпадает со вторым значением ключа, сравнивающий блок 2530 может выводить '1'. Когда сравнивающий блок 2530 выводит '0', первый переключатель 2551-1 может отключить соединение с преобразователем 2552. Соответственно, когда первый переключатель 2551-1, который управляет операцией записи, отключает соединение с преобразователем 2552, ничего не может быть выведено. То есть, соединение между контроллером 2540 доступа к памяти и преобразователем 2552 сигнального процессора 2550 отключается первым переключателем 2551-1. Альтернативно, фиксированное значение, например, только '0', может быть выведено, даже если какое-либо значение вводится из контроллера 2540 доступа к памяти. Когда '1' выводится из сравнивающего блока 2530, первый переключатель 2551-1 передает сигнальный выход от контроллера 2540 доступа к памяти преобразователю 2552.
[222] Преобразователь 2552 преобразует вывод сигнала записи из контроллера 2540 доступа к памяти в данные памяти, и передает данные во внешнюю энергонезависимую память 200 (например, как проиллюстрировано на Фиг. 1, 3, 4, 7 и 13-15), или, альтернативно, в NOR флэш-память 2000, проиллюстрированную на Фиг. 23.
[223] Блок 2553 фильтра фильтрует данные, которые считаны из энергонезависимой памяти 200 (например, как проиллюстрировано на Фиг. 1, 3, 4, 7 и 13-15, или, альтернативно, из NOR флэш-памяти 2000, проиллюстрированной на Фиг. 23), и передает данные преобразователю 2552. Преобразователь 2552 предоставляет второму переключателю 2551-2 переданные данные. Второй переключатель 2551-2 выполнен с возможностью передавать значение, введенное из преобразователя 2552, контроллеру 2540 доступа к памяти. Когда из сравнивающего блока 2530 вводится '0', второй переключатель 2555-2 также отключает соединение между преобразователем 2552 и контроллером 2540 доступа к памяти, а когда из сравнивающего блока 2530 вводится '1', второй переключатель 2555-2 соединяет преобразователь 2552 и контроллер 2540 доступа к памяти. Фиг. 25 иллюстрирует второй переключатель 2551-2 наряду с первым переключателем 2551-1, но в соответствии с примерным вариантом осуществления представленной общей концепции второй переключатель 2551-2 может быть опущен, так что операция считывания всегда доступна. То есть в примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением второй переключатель 2551-2 может быть опущен, так что данные могут быть считаны из энергонезависимой памяти 200 или NOR флэш-памяти 2000, и считанные данные могут быть обеспечены для преобразователя 2552 и контроллера 2540 доступа к памяти так, чтобы считанные данные могли быть обеспечены для ЦП 130.
[224] Контроллер 2540 доступа к памяти выполняет операцию записи или операцию считывания для внешней памяти 200 (например, как проиллюстрировано на Фиг. 1, 3, 4, 7 и 13-15, или, альтернативно, для NOR флэш-памяти 2000, проиллюстрированной на Фиг. 23) в соответствии с сигналом записи или сигналом считывания, который вводится через APB или AHB (усовершенствованную высокопроизводительную шину). Как описано выше, когда первое значение ключа, введенное из ЦП 130 (и, например, сохраненное в регистре 2511 блока передачи сигнала 2510) является тем же самым, что и предварительно сохраненное второе значение ключа (например, сохраненное в блоке 2520 хранения значения ключа), контроллер 2540 доступа к памяти может записывать различные данные в энергонезависимую память 200 (или, альтернативно, в NOR флэш-память 2000, проиллюстрированную на Фиг. 23). В противном случае контроллер 2540 доступа к памяти не может записывать данные в энергонезависимую память 200, даже если контроллер 2540 доступа к памяти выводит сигнал записи.
[225] Как описано выше, согласно различным примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, попытки изменить программу или данные, которые хранятся в энергонезависимой памяти, могут быть минимизированы и/или предотвращены.
[226] Как и в примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, описанных выше, зашифрованный код может быть сохранен в энергонезависимой памяти. Когда значение ключа не существует, этот код не может быть дешифрован. Однако, когда значение ключа известно, зашифрованный код, сохраненный в энергонезависимой памяти, может использоваться путем его дешифрования, и может использоваться путем генерирования кода встроенного программного обеспечения, который был модифицирован случайным образом. Даже если значение ключа не может быть считано из устройства формирования изображения, может произойти утечка значения ключа у производителя устройства формирования изображения. Примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытые в настоящем документе, минимизируют и/или препятствуют тому, чтобы код встроенного программного обеспечения был произвольно изменен хакером, когда значение ключа известно.
[227] Фиг. 26 представляет собой блок-схему последовательности операций, иллюстрирующую способ управления печатью согласно одному примерному варианту осуществления представленной общей концепции в соответствии с настоящим изобретением. Как проиллюстрировано на Фиг. 26, главное устройство 2600 связывается с устройством 1000 формирования изображения и управляет операциями устройства 1000 формирования изображения. Связь между главным устройством 2600 и устройством 1000 формирования изображения может осуществляться посредством соединения с помощью проводной и/или беспроводной связи. Главное устройство 2600 может быть сервером, персональным компьютером, ноутбуком, планшетным компьютером, смартфоном, переносным медиапроигрывателем, цифровым фотоаппаратом и/или любым другим электронным устройством.
[228] Как описано выше, когда значение ключа, сохраненное в устройстве 1000 формирования изображения, известно, становится возможным изменить встроенное программное обеспечение. Таким образом, хакер может зашифровать или дешифровать случайным образом, или выполнить шифрование и/или дешифрование в соответствии с командами хакера, и таким образом становится затруднительно управлять устройством формирования изображения. В этом примерном варианте осуществления представленной общей концепции в соответствии с настоящим изобретением главное устройство 2600 сравнивает шифрованный текст, используемый устройством 1000 формирования изображения, с предварительно сохраненным шифрованным текстом, и может определить, находится ли устройство 1000 формирования изображения в нормальном состоянии или во взломанном состоянии.
[229] В частности, главное устройство 2600 сохраняет шифрованный текст на стадии S2610. Шифрованный текст включает в себя программу, такую как встроенное программное обеспечение, которая шифруется как предопределенное значение ключа. Встроенное программное обеспечение может обновляться (например, часто обновляться, периодически обновляться и т.д.) для того, чтобы улучшить емкость или возможности устройства 1000 формирования изображения, и генерируется так, чтобы оно было новой версией. Таким образом, шифрованный текст изменяется в соответствии с версией встроенного программного обеспечения, но шифрованный текст одной и той же версии встроенного программного обеспечения всегда является одним и тем же. Когда значение ключа становится известным и встроенное программное обеспечение взламывается, модифицированное встроенное программное обеспечение работает нормально, но шифрованный текст модифицированного встроенного программного обеспечения изменяется на другую версию, которая отличается от исходной версии. Главное устройство 2600 может сопоставлять шифрованный текст встроенного программного обеспечения, зашифрованного нормально, с информацией о версии встроенного программного обеспечения, и сохранять их. Шифрованный текст и информация о версии могут быть сохранены вместе с драйвером принтера главного устройства 2600.
[230] Когда происходит некоторое событие (например, случайное событие), главное устройство 2600 может запросить шифрованный текст и информацию о версии у устройства 1000 формирования изображения на стадии S2615. В настоящем документе такое событие может включать в себя различные события, такие как событие, предопределенный временной интервал которого приближается, событие ввода команды печати, событие установки драйвера принтера, событие установления связи между главным устройством 2600 и устройством 1000 формирования изображения, и событие включения устройства формирования изображения 100 и завершения загрузки. Помимо этих событий событие может включать в себя различные ситуации, такие как проверка, подделан ли шифрованный текст или нет.
[231] Когда запрос на шифрованный текст и информацию о версии получен от главного устройства 2600 на стадии S2615, в то время как начальная загрузка завершена на стадии S2620, устройство 1000 формирования изображения передает предварительно сохраненный шифрованный текст и информация о версии главному устройству 2600 на стадии S2625.
[232] Главное устройство 2600 может получать шифрованный текст и информацию о версии от устройства 1000 формирования изображения. Главное устройство 2600 может хранить различную информацию о версии и шифрованный текст, сопоставленный с информацией о версии. Главное устройство 2600 сравнивает шифрованный текст, сопоставленный с полученной информацией о версии, с полученным шифрованным текстом из предварительно сохраненной информации о версии на стадии S2630.
[233] После сравнения шифрованного текста, сопоставленного с полученной информацией о версии, с полученным шифрованным текстом из предварительно сохраненной информации о версии на стадии S2630, если эти два шифрованных текста не совпадают друг с другом, на стадии S2635 определяется, что шифрованный текст подделан. Если определено, что шифрованный текст подделан, главное устройство 2600 регистрирует устройство 1000 формирования изображения в списке принтеров на стадии S2645. Принтеры в списке принтеров могут быть блокированы от выполнения операции печати, делая таким образом устройство 1000 формирования изображения недоступным.
[234] Если определено, что шифр не подделан, главное устройство 2600 переходит в состояние ожидания печати на стадии S2640. Когда пользователем вводится команда печати (например, главное устройство 2600 получает команду печати от пользователя), главное устройство 2600 передает данные печати и команду печати устройству 1000 формирования изображения, и выполняет печать.
[235] Фиг. 27 представляет собой блок-схему иллюстрирующую примерный вариант осуществления представленной общей концепции в соответствии с настоящим изобретением главного устройства для выполнения способа управления печатью, проиллюстрированного на Фиг. 26. Как проиллюстрировано на Фиг. 27, главное устройство 2600 включает в себя память 2610, контроллер 2620 и блок 2630 связи. Главное устройство 2600 может представлять собой персональный компьютер, ноутбук, мобильный телефон, персональный цифровой помощник (PDA), планшетный ПК, сервер и т.д. Память 2610 может быть запоминающим устройством, а контроллер может быть ЦП, процессором, интегральной схемой, программируемым логическим устройством, программируемой на месте матрицей логических элементов, и/или любым подходящим устройством контроллера. Блок связи может быть любым устройством для приема и передачи данных посредством соединения с помощью проводной или беспроводной связи.
[236] Память 2610 может сохранять шифрованный текст. Шифрованный текст может быть сохранен в памяти 2610 индивидуально (то есть отдельно от других данных, хранящихся в памяти 2610) в соответствии с различными версиями встроенного программного обеспечения. Когда память 2610 соединяется с одним или более устройствами (то есть главное устройство 2600, включающее в себя память 2610, соединяется с возможностью обмена данными с одним или более устройствами через блок 2630 связи), шифрованный текст, включающий в себя идентификационную информацию, такую как название модели, имя производителя, порядковый номер, имя встроенного программного обеспечения, версия встроенного программного обеспечения и т.д. каждого устройства, может быть сохранен индивидуально.
[237] Когда происходит предопределенное событие, блок 2630 связи может получать шифрованный текст, сохраненный в устройстве формирования изображения. Как описано выше, предопределенное событие может включать в себя проверку, подделан ли шифрованный текст или нет, запрос блоком связи шифрованного текста у устройства формирования изображения, а также получение шифрованного текста. Здесь наряду с шифрованным текстом могут быть получены информация о версии и идентификационная информация.
[238] Контроллер 2620 считывает шифрованный текст, соответствующий версии встроенного программного обеспечения устройства 1000 формирования изображения, из шифрованных текстов, сохраненных в памяти 2610, путем использования информации о версии и идентификационной информации, и т.д., которые получены от устройства 1000 формирования изображения. Контроллер 2620 сравнивает считанный шифрованный текст с полученным шифрованным текстом. Если эти два шифрованных текста совпадают, контроллер 2620 определяет, что шифрованный текст не подделан, и контроллер 2620 управляет устройством 1000 формирования изображения так, чтобы оно было в состоянии ожидания печати. Когда эти два шифрованных текста отличаются друг от друга, контроллер 2620 определяет, что шифрованный текст подделан, и контроллер 2620 блокирует использование устройства 1000 формирования изображения.
[239] Фиг. 28 и 29 иллюстрируют примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением для простого текста и шифрованного текста, соответствующих версиям, которые отличаются друг от друга. На Фиг. 28, когда простой текст (версии 1) 2820 шифруется значением ключа 2810 в соответствии с версией 1 на стадии S2830, генерируется шифрованный текст (версии 1) 2840. Шифрованный текст (версии 1) 2840 может быть сохранен в энергонезависимой памяти. Как и в различных примерных вариантах осуществления представленной общей концепции в соответствии с настоящим изобретением, раскрытых выше, когда выполняется начальная загрузка, или когда должны быть выполнены различные операции, ЦП 130 считывает код шифрования, сохраненный в энергонезависимой памяти (например, энергонезависимой памяти 200), то есть шифрованный текст (версии 1) 2840. ЦП 130 дешифрует шифрованный текст (версии 1) 2840 на стадии S2850 путем использования значения 2810 ключа, который является тем же самым значением ключа (например, ключа 2810), которое использовалось при шифровании на стадии S2830, и генерирует простой текст (версии 1) 2820, и использует простой текст (версии 1) 2820.
[240] Фиг. 29 изображает примерный вариант осуществления простого текста и шифрованного текста в соответствии с версией 2. Даже если предполагается, что значение 2810 ключа на Фиг. 29 совпадает со значением 2810 ключа версии 1, простой текст 2920 в соответствии с версией 2 отличается от простого текста 2820 версии 1, и таким образом шифрованный текст 2940 после шифрования на стадии S2930 также отличается от версии 1. На стадии S2950 шифрованный текст 2940 дешифруется ЦП 130 с использованием значения 2810 ключа так, чтобы сгенерировать версию 2 простого текста 2920, чтобы ЦП 130 мог использовать простой текст (версии 2) 2920.
[241] По существу, шифрованный текст в соответствии с версией устройства хранится и используется в каждом устройстве формирования изображения, но множество шифрованных текстов, соответствующих каждой из множества версий, может быть сохранено в главном устройстве 2600.
[242] Фиг. 30 иллюстрирует состояние, когда произошла утечка значения ключа, и код был взломан. Шифрованный текст 3020 взломанного кода не является официально выпущенной версией, но является шифрованным текстом 3020, который был изготовлен путем модификации оригинального текста хакером так, чтобы сгенерировать новый простой текст 3010, а затем применения значения 2810 ключа (которое стало известным хакеру) к простому тексту 3010 во время операций S2930 и S2950 шифрования и дешифрования, соответственно. Таким образом, новый простой текст (то есть взломанный код) 3010 шифруется на стадии S2930 с использованием ключа 2810 для того, чтобы сформировать шифрованный текст 3020. Шифрованный текст 3020 дешифруется на стадии S2950 с использованием ключа 2810 для того, чтобы сформировать новый простой текст 3010 (то есть взломанный код). Когда этот шифрованный текст 3020 сохраняется в энергонезависимой памяти, ЦП 130 должен выполнить начальную загрузку в соответствии с намерениями хакера, и таким образом становится затруднительным управлять устройством формирования изображения обычным образом. Однако здесь шифрованный текст не регистрируется в главном устройстве 2600, и таким образом главное устройство 2600 может определить, находится ли устройство 1000 формирования изображения в нормальном состоянии или во взломанном состоянии, путем проверки шифрованного текста.
[243] В частности, когда информация о версии устройства 1000 формирования изображения не совпадает с предварительно сохраненной информацией о версии, или даже если она является предварительно сохраненной информацией о версии, когда шифрованный текст, сопоставленный с информацией о версии, отличается от шифрованного текста устройства 1000 формирования изображения, контроллер 2620 определяет, что информация находится во взломанном состоянии. Следовательно, контроллер 2620 блокирует использование соответствующего устройства 1000 формирования изображения.
[244] В соответствии с этим примерным вариантом осуществления, даже когда значение ключа становится известным, возможность модификации встроенного программного обеспечения хакером может быть минимизирована и/или предотвращена.
[245] Когда устройство формирования изображения выполняет начальную загрузку, главный контроллер, включающий в себя систему 100 на кристалле, может выполнять задание, затребованное пользователем, путем управления работой различных расходных блоков (например, расходных блоков в устройстве 1000 формирования изображения). Как описано на Фиг. 10, расходные блоки 1600-1 - 1600-n могут быть подготовлены различным образом в соответствии с типом устройства 1000 формирования изображения. Один или больше расходных блоков 1600-1 - 1600-n могут включать в себя микросхемы 1610-1 - 1610-n CRUM.
[246] Микросхемы 1610-1 - 1610-n CRUM могут выполнять аутентификацию между главным контроллером 1100 (то есть тем, который включает в себя систему 100 на кристалле), и когда аутентификация завершена, может быть выполнен обмен данными шифрования. Аутентификация может быть выполнена различными способами.
[247] В качестве примерного варианта осуществления процесса аутентификации, если главный контроллер (например, главный контроллер 1100) должен выполнить аутентификацию, запрос на аутентификацию может быть передан микросхеме CRUM (например, по меньшей мере одной из микросхем 1610-1 - 1610-n CRUM). Здесь главный контроллер может передать первое значение по меньшей мере одной микросхеме CRUM. Главный контроллер может генерировать первое значение случайным образом, или оно может быть предварительно сохраненным фиксированным значением. Когда запрос на аутентификацию получен, микросхема CRUM генерирует второе значение (например, значение может быть сгенерировано случайным образом), и микросхема CRUM генерирует сеансовый ключ путем использования первого значения и второго значения, а затем генерирует первый MAC (код аутентификации сообщений). Микросхема CRUM может передать сгенерированный первый MAC вместе со вторым значением главному контроллеру. Второе значение, так же как и первое значение, может быть случайным значением и/или случайным фиксированным значением. Когда второе значение получено, главный контроллер генерирует сеансовый ключ путем использования первого значения и второго значения, которые сгенерированы главным контроллером, и генерирует второй MAC путем использования сеансового ключа. Главный контроллер сравнивает второй MAC с первым MAC, и если они совпадают, определяет, что аутентификация для микросхемы CRUM завершена. В этом процессе главный контроллер проверяет информацию электронной подписи, хранящуюся в микросхеме CRUM, и выполняет аутентификацию.
[248] Когда первый MAC отличается от второго MAC, главный контроллер (например, главный контроллер 1100, проиллюстрированный на Фиг. 10), определяет что аутентификация не удалась, и выполняет аутентификацию снова. Здесь частота выполнения аутентификации может быть ограничена. Альтернативно, аутентификация может периодически выполняться главным контроллером.
[249] Фиг. 31 представляет собой блок-схему последовательности операций, иллюстрирующую способ управления согласно примерному варианту осуществления. Как проиллюстрировано на Фиг. 31, на стадии S3110 определяется, успешно ли завершилась аутентификация микросхемы CRUM. Если аутентификация микросхемы CRUM завершилась безуспешно, устройство формирования изображения сохраняет частоту отказов путем подсчета количества отказов на стадии S3120. Таким образом, на стадии S3120 количество выполнений аутентификации микросхемы CRUM (а также количество неудачных аутентификаций) может быть подсчитано и сохранено. Главный контроллер (например, главный контроллер 1100, проиллюстрированный на Фиг. 10), или система на кристалле (например, система 100 на кристалле) устройства формирования изображения (например, устройства 1000 формирования изображения) на стадии S3130 определяет, не превысила ли частота отказов некоторую предопределенную пороговую частоту.
[250] Если на стадии S3130 определено, что частота отказов превышает пороговую частоту, на стадии S3140 выполняется штрафная функция. В частности, могут быть выведены голосовое сообщение или визуальное сообщение, указывающее, что аутентификация не прошла, или устройство формирования изображения может быть выключено, или его состояние может быть изменено так, чтобы печать была невозможна. Соединение между соответствующей микросхемой CRUM и главным контроллером может быть блокировано, а внешнее главное устройство или другие серверные устройства могут быть уведомлены, что аутентификация не выполнена.
[251] Если на стадии S3130 определено, что частота меньше, чем пороговая частота, на стадии S3150 главный контроллер делает запрос пользователю, не хочет ли он снова выполнить аутентификацию. Таким образом, когда пользователь снова запрашивает аутентификацию, главный контроллер выполняет аутентификацию на стадии S3160 вышеописанным способом.
[252] Когда на стадии S3110 определяется, что аутентификация прошла успешно, главный контроллер на стадии S3170 выполняет шифрованную связь с помощью соответствующей микросхемы CRUM. Например, главный контроллер может передавать зашифрованное сообщение обмена данными путем шифрования различных данных и команд, а микросхема CRUM может отвечать зашифрованным сообщением обмена данными. В зашифрованном коммуникационном сообщении может использоваться MAC. Например, когда генерируется сообщение обмена данными, передаваемое микросхеме CRUM, главный контроллер генерирует третий MAC путем применения к данным ключа и алгоритма шифрования. Сообщение обмена данными может быть дополнено третьим MAC, и может быть передано микросхеме CRUM.
[253] Микросхема CRUM извлекает части данных из полученного сообщения обмена данными, и генерирует четвертый MAC, применяя вышеописанный ключ и алгоритм шифрования. Микросхема CRUM сравнивает третий MAC, считанный из переданного сообщения обмена данными, и сгенерированный четвертый MAC. Если третий и четвертый MAC совпадают, это расценивается как разрешенное сообщение обмена данными, и выполняется операция, соответствующая сообщению. Если третий и четвертый MAC отличаются друг от друга, это расценивается как неразрешенное сообщение обмена данными, и таким образом оно может быть отменено.
[254] Как описано выше, согласно различным примерным вариантам осуществления представленной общей концепции в соответствии с настоящим изобретением, взлом устройства формирования изображения может быть минимизирован и/или предотвращен. В вышеописанных различных примерных вариантах осуществления это для удобства объясняется на основе устройства формирования изображения, но примерные варианты осуществления представленной общей концепции в соответствии с настоящим изобретением не ограничиваются работой устройства формирования изображения. Таким образом, различные типы электронных устройств, отличных от устройства формирования изображения, могут использовать способы вышеупомянутых описанных различных примерных вариантов осуществления.
[255] Вышеупомянутые различные способы или операции могут быть выполнены программой, которая сохранена на энергонезависимом машиночитаемом носителе. Энергонезависимый машиночитаемый носитель относится к носителю, который хранит данные полупостоянным образом вместо того, чтобы хранить данные в течение очень короткого времени, как, например, регистр, кэш и память, и может быть считан с помощью некоторого устройства. В частности, вышеописанные различные приложения или программы могут быть сохранены на энергонезависимом машиночитаемом носителе, таком как компакт-диск (CD), цифровой универсальный диск (DVD), жесткий диск, диск Blu-ray, устройство памяти с интерфейсом универсальной последовательной шины (USB), карта памяти и постоянная память (ROM), и могут быть обеспечены.
[256] В частности, энергонезависимый машиночитаемый носитель, который хранит код программы, может выполнять инициализацию с использованием данных инициализации, которые хранятся в первой памяти системы на кристалле. При выполнении инициализации может быть выполнено дешифрование зашифрованных данных, которые хранятся в энергонезависимой памяти, с использованием одного из множества ключей шифрования, которые сохранены в первой памяти. Дешифрованные данные могут находиться во второй памяти системы на кристалле, и операция начальной загрузки может быть выполнена с использованием данных, которые хранятся во второй памяти.
[257] Хотя несколько вариантов осуществления представленной общей концепции в соответствии с настоящим изобретением были показаны и описаны, специалистам в данной области техники будет понятно, что изменения могут быть сделаны в этих вариантах осуществления без отступления от принципов и духа общей концепции в соответствии с настоящим изобретением, область охвата которой определяется в прилагаемой формуле изобретения и ее эквивалентах.