защищенные загрузка и хранение данных в устройстве обработки данных
Классы МПК: | G06F21/24 путем прямой защиты данных, например нанесением меток H04L9/32 со средствами для установления личности или полномочий пользователя системы G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин |
Автор(ы): | ГЕРМАНН Кристиан (SE), СМЕТС Бернард (SE) |
Патентообладатель(и): | ТЕЛЕФОНАКТИЕБОЛАГЕТ ЛМ ЭРИКССОН (ПАБЛ) (SE) |
Приоритеты: |
подача заявки:
2005-09-07 публикация патента:
27.12.2010 |
Изобретение относится к способам защиты загрузки данных в устройство обработки данных. Технический результат - обеспечение более эффективного в вычислительном отношении механизма обеспечения безопасности, который защищает программное обеспечение и во время загрузки программного обеспечения в устройство. Способ содержит прием элемента данных полезной нагрузки с помощью устройства обработки; выполнение процесса криптографической аутентификации для проверки подлинности элемента данных полезной нагрузки; сохранение аутентифицированного принятого элемента данных полезной нагрузки в устройстве обработки данных и защиту целостности сохраненного элемента данных полезной нагрузки. Процесс криптографической аутентификации содержит вычисление контрольного значения хэш-функции по меньшей мере для принятого элемента данных. Защита целостности дополнительно содержит вычисление эталонного значения кода аутентификации сообщения по меньшей мере для контрольного значения хэш-функции, используя в качестве входных данных секретный ключ, хранящийся в устройстве обработки данных. 9 н. и 25 з.п. ф-лы, 11 ил.
Формула изобретения
1. Способ загрузки данных в устройство обработки данных, причем способ содержит этапы, на которых:
принимают элемент данных полезной нагрузки с помощью устройства обработки данных; выполняют процесс криптографической аутентификации для обеспечения подлинности элемента данных полезной нагрузки, причем выполнение процесса криптографической аутентификации содержит вычисление контрольного значения хэш-функции по меньшей мере для принятого элемента данных;
сохраняют аутентифицированный принятый элемент данных полезной нагрузки в устройстве обработки данных; и
защищают целостность сохраненного элемента данных полезной нагрузки,
отличающийся тем, что
защита целостности дополнительно содержит вычисление эталонного значения кода аутентификации сообщения по меньшей мере для контрольного значения хэш-функции, вычисленного во время указанного процесса криптографической аутентификации, причем вычисление значения кода аутентификации сообщения использует в качестве входных данных секретный ключ, хранящийся в устройстве обработки данных.
2. Способ по п.1, в котором процесс криптографической аутентификации включает в себя этапы, на которых:
принимают эталонное значение хэш-функции; и
сравнивают принятое эталонное значение хэш-функции с вычисленным контрольным значением хэш-функции для проверки подлинности принятого элемента данных полезной нагрузки.
3. Способ по п.2, в котором процесс криптографической аутентификации включает в себя подписание с помощью цифровой подписи элемента данных в соответствии с криптосистемой с открытым ключом.
4. Способ по п.3, содержащий этапы, на которых:
принимают элемент данных полезной нагрузки, элемент данных цифровой подписи и подписанный с помощью цифровой подписи элемент данных цифрового сертификата, причем элемент данных цифрового сертификата включает в себя первый открытый ключ, и причем элемент данных цифровой подписи включает в себя эталонное значение хэш-функции, зашифрованное с первым закрытым ключом, соответствующим первому открытому ключу;
аутентифицируют подписанный с помощью цифровой подписи элемент данных цифрового сертификата по отношению к корневому открытому ключу, хранящемуся в устройстве обработки данных;
аутентифицируют элемент данных цифровой подписи по отношению к аутентифицированному цифровому сертификату;
сравнивают принятое эталонное значение хэш-функции с вычисленным контрольным значением хэш-функции для проверки подлинности принятого элемента данных полезной нагрузки.
5. Способ по п.3 или 4, дополнительно содержащий криптографическую аутентификацию эталонного значения хэш-функции; и в котором вычисление эталонного значения кода аутентификации сообщения выполняют, только если эталонное значение хэш-функции успешно аутентифицировано.
6. Способ по п.1, в котором защита целостности дополнительно содержит хранение вычисленного эталонного значения кода аутентификации сообщения для принятого элемента данных полезной нагрузки.
7. Способ по п.1, в котором вычисление эталонного значения кода аутентификации сообщения дополнительно содержит вычисление эталонного значения кода аутентификации сообщения для объединенного элемента данных, полученного по меньшей мере из контрольного значения хэш-функции и случайного числа.
8. Способ по п.1, в котором вычисление эталонного значения кода аутентификации сообщения дополнительно содержит вычисление эталонного значения кода аутентификации сообщения для объединенного элемента данных, полученного по меньшей мере из контрольного значения хэш-функции и элемента данных контроля версии.
9. Способ по п.8, дополнительно содержащий хранение записи данных контроля версии в структуре данных контроля версии, причем запись данных контроля версии включает в себя информацию о принятом элементе данных полезной нагрузки, включающем в себя по меньшей мере элемент данных контроля версии.
10. Способ по п.9, в котором обеспечивают защиту целостности сохраненной записи данных контроля версии.
11. Способ по п.9 или 10, в котором запись данных контроля версии содержит счетчик версии.
12. Способ по п.11, в котором запись данных контроля версии дополнительно содержит обратный счетчик, идентифицирующий количество предыдущих версий, которыми можно заменять текущую версию элемента данных полезной нагрузки.
13. Способ по п.1, в котором секретный ключ является секретным элементом данных, уникальным для устройства обработки данных.
14. Способ по п.1, в котором секретный ключ является секретным элементом данных, известным только устройству обработки данных.
15. Способ по п.1, в котором прием элемента данных полезной нагрузки содержит прием дельта-обновления ранее принятого текущего элемента данных и генерацию элемента данных полезной нагрузки как обновленного элемента данных полезной нагрузки из ранее принятого текущего элемента данных и принятого дельта-обновления.
16. Считываемый компьютером носитель, содержащий средства кода программы, выполненные с возможностью побуждения устройства обработки данных выполнять этапы способа по любому из пп.1-15, когда указанную компьютерную программу выполняют в устройстве обработки данных.
17. Устройство обработки данных, содержащее первую схему обработки, выполненную с возможностью выполнения способа по любому из пп.1-15.
18. Устройство обработки данных по п.17, дополнительно содержащее средство хранения, выполненное с возможностью хранения принятого элемента данных полезной нагрузки; и вторую схему обработки, связанную со средством хранения и с первой схемой обработки; причем вторую схему обработки выполняют с возможностью обеспечения первой схеме обработки по меньшей мере доступа для чтения к средству хранения.
19. Устройство обработки данных по п.17 или 18, в котором первая схема обработки содержит локальное средство хранения, предназначенное для хранения корневого открытого ключа асимметричной криптографической системы.
20. Устройство обработки данных по п.17, в котором первая схема обработки содержит локальное средство хранения, предназначенное для хранения указанного секретного ключа.
21. Способ защиты целостности текущей версии элемента данных, хранящегося в устройстве обработки данных, причем способ содержит этапы, на которых:
определяют эталонное значение хэш-функции по меньшей мере элемента данных;
вычисляют эталонное значение кода аутентификации сообщения из определенного эталонного значения хэш-функции, используя секретный ключ, хранящийся в устройстве обработки данных;
сохраняют вычисленное эталонное значение кода аутентификации сообщения для элемента данных,
отличающийся тем, что
вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции и по меньшей мере из части записи данных контроля версии, причем запись данных контроля версии включает в себя счетчик версии; и в котором вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции, и по меньшей мере счетчик версии.
22. Способ по п.21, в котором запись данных контроля версии дополнительно содержит обратный счетчик, идентифицирующий количество предыдущих версий, которыми можно заменять текущую версию; и в котором вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции и по меньшей мере из обратного счетчика.
23. Способ по любому из пп.21 и 22, в котором запись данных контроля версии дополнительно содержит эталонное значение хэш-функции для текущей версии элемента данных.
24. Способ по п.21, дополнительно содержащий генерацию записи данных контроля версии; и сохранение записи данных контроля версии в структуре данных контроля версии.
25. Способ по п.24, дополнительно содержащий обеспечение защиты целостности записи данных контроля версии.
26. Способ по п.21, в котором секретный ключ является секретным элементом данных, уникальным для устройства обработки данных.
27. Способ по п.21, в котором секретный ключ является секретным элементом данных, известным только устройству обработки данных.
28. Способ по п.21, дополнительно содержащий этапы, на которых:
принимают дельта-обновление ранее принятого текущего элемента данных; и
генерируют элемент данных, как обновленный элемент данных, из ранее принятого текущего элемента данных и принятого дельта-обновления.
29. Способ проверки целостности текущей версии элемента данных, хранящегося в устройстве обработки данных, причем способ содержит этапы, на которых:
вычисляют контрольное значение хэш-функции элемента данных;
вычисляют контрольное значение кода аутентификации сообщения из вычисленного контрольного значения хэш-функции, используя секретный ключ, хранящийся в устройстве обработки данных;
сравнивают вычисленное контрольное значение кода аутентификации сообщения с эталонным значением кода аутентификации сообщения, хранящимся для элемента данных,
отличающийся тем, что
способ дополнительно содержит извлечение записи данных контроля версии, причем запись данных контроля версии включает в себя счетчик версии, указывающий текущую версию элемента данных; и
что вычисление контрольного значения кода аутентификации сообщения содержит вычисление контрольного значения кода аутентификации сообщения из объединенного элемента данных, полученного из вычисленного контрольного значения хэш-функции, и по меньшей мере счетчик версии.
30. Способ по п.21 или 29, в котором элемент данных загружают с помощью выполнения способа по любому из пп.1-15.
31. Устройство обработки данных, содержащее средство хранения, для хранения текущей версии элемента данных и записи данных контроля версии, причем запись данных контроля версии включает в себя информацию контроля версии о текущей версии элемента данных; и средство обработки, выполненное с возможностью выполнения способа по любому из пп.21-28.
32. Устройство обработки данных, содержащее средство хранения, для хранения текущей версии элемента данных и записи данных контроля версии, причем запись данных контроля версии включает в себя информацию контроля версии о текущей версии элемента данных; и средство обработки, выполненное с возможностью выполнения способа по любому из пп.29 и 30.
33. Считываемый компьютером носитель, содержащий средства кода программы, выполненные с возможностью предписывания устройству обработки данных выполнять этапы способа по любому из пп.21-28, когда указанную компьютерную программу выполняют в устройстве обработки данных.
34. Считываемый компьютером носитель, содержащий средства кода программы, выполненные с возможностью предписывания устройству обработки данных выполнять этапы способа по любому из пп.29 и 30, когда указанную компьютерную программу выполняют в устройстве обработки данных.
Описание изобретения к патенту
Раскрыты способ, программный продукт и устройство для защищенной загрузки и хранения данных в устройстве обработки данных.
Встроенные системы, такие как мобильные телефоны и другие устройства обработки данных, зависят от выполнения правильного программного обеспечения, которое не подвергалось воздействию запрещенным способом. Несанкционированные манипуляции с программным обеспечением могут привести к неправильной работе устройства или даже к нарушению основных особенностей обеспечения безопасности устройства. Следовательно, особенно важно защищать основное программное обеспечение устройства. Этого можно достичь, например, с помощью хранения программы в защищенной памяти. Память можно или физически защищать от незаконного доступа, или защищать криптографическими способами. Практически трудно или дорого создавать память с хорошей физической защитой и особенно защищать интерфейсы памяти. Следовательно, самое привлекательное решение состоит в том, чтобы использовать некоторый вид криптографической защиты программного обеспечения, хранящегося в памяти.
Кроме того, программное обеспечение даже для довольно маленьких систем становится все более и более сложным, таким образом увеличивая риск ошибок и непреднамеренных действий, особенно в ранних выпусках в течение цикла жизни программного обеспечения. Кроме того, функциональные возможности ранних выпусков программ обычно ограничиваются. Следовательно, существует увеличивающаяся потребность в частых обновлениях программного обеспечения, хранящегося во встроенных устройствах.
Потребность в частых обновлениях и желание обеспечивать достаточную защиту для программного обеспечения устройства обработки данных создают потребность в решениях по обеспечению безопасности, которые защищают программное обеспечение устройства обработки данных при хранении, и это учитывают при защищенных обновлениях программного обеспечения.
Патент США № 6026293 раскрывает способ для предотвращения вмешательства в электронную память электронного устройства. Согласно этому способу предшествующего уровня техники когда требуется перепрограммировать электронное устройство с помощью устройства передачи данных, электронное устройство инициирует схему аутентификации с запросом и подтверждением открытого/закрытого ключа для аутентификации устройства передачи данных. После аутентификации устройству передачи данных разрешают доступ для перепрограммирования памяти. После перепрограммирования памяти электронное устройство выполняет вычисление хэш-функции измененного содержимого памяти. Вычисленное значение хэш-функции посылают устройству передачи данных для цифровой подписи, и подписанное значение хэш-функции возвращают на электронное устройство для хранения. Подписанное значение хэш-функции впоследствии используют для контроля целостности содержимого памяти, например, во время начальной загрузки или периодически.
Даже при том, что приведенный выше способ предшествующего уровня техники обеспечивает и защиту аутентификации во время этапа загрузки, и защиту целостности содержимого памяти электронного устройства, он вовлекает довольно сложную схему генерации и подписания сгенерированного значения хэш-функции, таким образом приводя к тому, что процесс загрузки занимает довольно длительное время.
Следовательно, проблемой является обеспечение более эффективного в вычислительном отношении механизма обеспечения безопасности, который защищает программное обеспечение и во время загрузки программного обеспечения в устройство, и впоследствии, когда программное обеспечение хранится в устройстве.
Указанные выше и другие проблемы решены с помощью способа загрузки данных в устройство обработки данных, данный способ содержит этапы:
- принимают элемент данных полезной нагрузки с помощью устройства обработки;
- выполняют процесс криптографической аутентификации для обеспечения подлинности элемента данных полезной нагрузки;
- сохраняют аутентифицированный принятый элемент данных полезной нагрузки в устройстве обработки данных и
- защищают целостность сохраненного элемента данных полезной нагрузки,
в котором выполнение процесса криптографической аутентификации содержит вычисление контрольного (проверочного) значения хэш-функции по меньшей мере для принятого элемента данных и
в котором защита целостности дополнительно содержит вычисление эталонного значения кода аутентификации сообщения по меньшей мере для контрольного значения хэш-функции, используя в качестве входных данных секретный ключ, хранящийся в устройстве обработки данных.
В частности, так как вычисленное во время процесса загрузки контрольное значение хэш-функции вычисляют из принятых данных полезной нагрузки и данное контрольное значение хэш-функции впоследствии многократно используют во время вычисления кода аутентификации сообщения, количество необходимых вычислений, выполняемых во время загрузки программного обеспечения, сокращается, таким образом увеличивая вычислительную эффективность способа.
Кроме того, так как регулярная защита целостности основана на секретном ключе, хранящемся в устройстве обработки данных, защита целостности не зависит ни от каких внешних криптографических ключей и, в частности, не зависит от механизма подписи с открытым ключом. Преимуществом является то, что проверка целостности, основанная на симметричном ключе, т.е. проверка целостности, основанная на коде аутентификации сообщения, является в вычислительном отношении более эффективной, чем проверка целостности, основанная на открытом ключе, которая вовлекает проверку подписи.
Термин «устройство обработки данных» содержит любое электронное устройство, содержащее память для хранения данных, в которую можно загружать данные из внешнего источника, например из системы передачи данных. В частности, термин «устройство обработки данных» содержит любое электронное оборудование, портативное оборудование радиосвязи и другие карманные или портативные устройства. Термин портативное оборудование радиосвязи включает в себя все оборудование, такое как мобильные телефоны, пейджеры, коммуникаторы, электронные записные книжки, смартфоны (интеллектуальные мобильные телефоны), персональные цифровые помощники (PDA), карманные персональные компьютеры или подобные устройства.
Термин элемент данных полезной нагрузки включает в себя любые данные, загружаемые в устройство обработки данных. В частности, термин элемент данных полезной нагрузки включает в себя данные конфигурации, код программы, например программное обеспечение среды операционной системы или прикладное программное обеспечение, предназначенное для выполнения устройством, или подобные данные.
Процесс криптографической аутентификации может быть любым соответствующим криптографическим процессом для проверки подлинности принятых данных, т.е. для того, чтобы удостовериться в том, что данные на самом деле отправил объект, имя которого они переносят, и что они не были подделаны или изменены.
В некоторых вариантах осуществления процесс криптографической аутентификации включает в себя этапы:
- принимают эталонное значение хэш-функции и
- сравнивают принятое эталонное значение хэш-функции с вычисленным контрольным значением хэш-функции для проверки подлинности принятого элемента данных полезной нагрузки.
В дополнительном варианте осуществления процесс криптографической аутентификации включает в себя подписание с помощью цифровой подписи элемента данных в соответствии с криптосистемой с открытым ключом. Подписание с помощью цифровой подписи программного обеспечения является эффективным и надежным принципом проверки программного обеспечения, загружаемого в мобильное устройство. Успешная проверка подписи гарантирует, что программное обеспечение выпущено законным источником. Кроме того, цифровые подписи, основанные на методиках открытого ключа, имеют преимущество, что открытый ключ, используемый для проверки, не должен быть надежно защищен при перемещении или хранении. Следовательно, тот же самый открытый ключ может быть установлен в большое количество устройств, не ставя под угрозу безопасность. Это предоставляет возможность эффективного выполнения процедур быстрого и защищенного обновления программного обеспечения.
В некоторых вариантах осуществления способ содержит этапы:
- принимают элемент данных полезной нагрузки, элемент данных цифровой подписи и подписанный с помощью цифровой подписи элемент данных цифрового сертификата, причем элемент данных цифрового сертификата включает в себя первый открытый ключ и элемент данных цифровой подписи включает в себя эталонное значение хэш-функции, зашифрованное с первым закрытым ключом, соответствующим первому открытому ключу;
- аутентифицируют подписанный с помощью цифровой подписи элемент данных цифрового сертификата по отношению к корневому открытому ключу, хранящемуся в устройстве обработки данных;
- аутентифицируют элемент данных цифровой подписи по отношению к аутентифицированному цифровому сертификату;
- сравнивают принятое эталонное значение хэш-функции с вычисленным контрольным значением хэш-функции для проверки подлинности принятого элемента данных полезной нагрузки.
Следовательно, подлинность цифровой подписи обеспечивают цифровым сертификатом, таким образом дополнительно увеличивая защищенность процесса загрузки. Следует понимать, что устройство обработки данных может принимать больше одного цифрового сертификата, формируя цепочку сертификатов, причем один сертификат в цепочке проверяют с помощью открытого корневого ключа, хранящегося в устройстве обработки данных.
В дополнительном варианте осуществления выполняют криптографическую аутентификацию эталонного значения хэш-функции и вычисление эталонного значения кода аутентификации сообщения выполняют, только если эталонное значение хэш-функции успешно аутентифицировано. Следовательно, выполнение процедуры кода аутентификации сообщения в устройстве обработки данных обусловлено получением аутентифицированного эталонного значения хэш-функции, таким образом сокращая риск использования противником процедуры кода аутентификации сообщения устройства обработки данных для вычисления неразрешенных значений кода аутентификации сообщения.
Коды аутентификации сообщения (MAC, КАС) - известный механизм для защиты целостности сообщений. MAC является функцией, которая использует входные данные переменной длины и ключ для создания выходных данных фиксированной длины, так называемого значения MAC, или значения метки. MAC обычно используются двумя участниками, которые совместно используют секретный ключ для подтверждения достоверности информации, передаваемой между этими участниками. В некоторых вариантах осуществления MAC вычисляют, применяя одностороннюю хэш-функцию к данным полезной нагрузки и шифруя результат, используя секретный ключ. Примеры соответствующих функций MAC, которые можно объединять с криптографической хэш-функцией, включают в себя HMAC (основанное на ключе хэширование для аутентификации сообщений), MAC сцепления блоков шифра (CBC), используя, например, AES или надежную одностороннюю хэш-функцию. В описанном способе загрузки код аутентификации сообщения используют для проверки целостности данных, хранящихся в ненадежном или незащищенном носителе, т.е. в этой ситуации MAC использует только один участник, т.е. устройство обработки данных, когда сохраняет и извлекает элемент данных полезной нагрузки.
Следовательно, в некоторых вариантах осуществления защита целостности содержит хранение вычисленного эталонного значения кода аутентификации сообщения относительно принятого элемента данных полезной нагрузки, таким образом делая его доступным для последующего контроля памяти с элементом данных полезной нагрузки с помощью устройства обработки данных. Следовательно, при контроле содержимого памяти устройство вычисляет значение кода аутентификации сообщения сохраненного элемента данных полезной нагрузки, используя секретный ключ, хранящийся в устройстве, и сравнивает результат с предварительно сохраненным эталонным значением MAC. Следовательно, в данном варианте осуществления секретный ключ должен быть известен только цифровому устройству обработки. В некоторых вариантах осуществления секретный ключ является секретным элементом данных, уникальным для устройства обработки данных, например секретным элементом данных, известным только устройству обработки данных.
В другом варианте осуществления вычисление эталонного значения кода аутентификации сообщения дополнительно содержит вычисление эталонного значения кода аутентификации сообщения объединенного элемента данных, полученного по меньшей мере из контрольного значения хэш-функции и случайного числа. Преимуществом данного варианта осуществления является то, что входные данные к MAC не полностью зависят от результата процесса аутентификации, таким образом дополнительно увеличивая надежность защиты данных.
Когда вычисление эталонного значения кода аутентификации сообщения дополнительно содержит вычисление эталонного значения кода аутентификации сообщения объединенного элемента данных, полученного по меньшей мере из контрольного значения хэш-функции и элемента данных контроля версии, защиту целостности эффективно объединяют с механизмом контроля версии, так как последующий контроль памяти будет успешным только тогда, когда и содержимое памяти, и информация контроля версии будут непротиворечивыми.
В некоторых вариантах осуществления запись данных контроля версии хранится в структуре данных контроля версии, запись данных контроля версии включает в себя информацию о принятом элементе данных полезной нагрузки, включающем в себя по меньшей мере элемент данных контроля версии. В некоторых вариантах осуществления обеспечивают защиту целостности структуры данных контроля.
В некоторых вариантах осуществления запись данных контроля версии содержит счетчик версии. В некоторых вариантах осуществления запись данных контроля версии дополнительно содержит обратный счетчик, идентифицирующий количество предыдущих версий, которыми можно заменять текущую версию элемента данных полезной нагрузки, таким образом обеспечивая простой и эффективный механизм контроля версии, включающий в себя механизм контроля совместимости вниз.
В известных схемах обновления программного обеспечения, где существующее программное обеспечение обновляют с помощью новой версии программного обеспечения, обновление программного обеспечения часто принимают как так называемый дельта-файл (разностный файл) или дельта-обновление. Такие дельта-обновления включают в себя отличия нового (обновленного) программного обеспечения от текущего программного обеспечения, таким образом сокращая размер пакета обновления. В некоторых методиках дельта-файла файл обновления также включает в себя команды для управления генерацией обновленной версии программного обеспечения из текущего программного обеспечения и принятого обновления. Методика дельта-файла также известна из предшествующего уровня техники и описана, например, в «Delta storage for arbitrary non-text files», by Christian Reichenberger, Proc. Of the 3rd International Workshop on Software Configuration Management, p. 144-152, Norway, June 1991. Желательно обеспечить эффективный механизм обеспечения безопасности, который может также применяться к дельта-обновлениям. Эта проблема решена, когда прием элемента данных полезной нагрузки содержит прием дельта-обновления ранее принятого текущего элемента данных, и элемент данных полезной нагрузки генерируют как обновленный элемент данных полезной нагрузки из ранее принятого текущего элемента данных и принятого дельта-обновления. Следовательно, согласно данному варианту осуществления генерируют обновленный элемент данных полезной нагрузки и контрольное значение хэш-функции вычисляют из сгенерированного обновленного элемента данных полезной нагрузки. Следовательно, контрольное значение хэш-функции может снова многократно использоваться для вычисления эталонного кода аутентификации сообщения обновленных данных полезной нагрузки, которые хранятся в устройстве.
Согласно второму аспекту проблемой указанной выше системы предшествующего уровня техники является обеспечение эффективного и надежного способа защиты целостности текущей версии элемента данных, хранящегося в устройстве обработки данных, в ситуации, когда происходят частые обновления различных версий хранящегося элемента данных.
Указанные выше и другие проблемы решены с помощью способа защиты целостности текущей версии элемента данных, хранящегося в устройстве обработки данных, данный способ содержит этапы:
- определяют эталонное значение хэш-функции по меньшей мере элемента данных;
- вычисляют эталонное значение кода аутентификации сообщения из определенного эталонного значения хэш-функции, используя секретный ключ, хранящийся в устройстве обработки данных;
- сохраняют вычисленное эталонное значение кода аутентификации сообщения для элемента данных;
отличающегося тем, что вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции и по меньшей мере из части записи данных контроля версии, запись данных контроля версии включает в себя информацию контроля версии о текущей версии элемента данных.
Следовательно, с помощью вычисления эталонного кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции и по меньшей мере из части записи данных контроля версии, защиту целостности сохраненных данных полезной нагрузки эффективно объединяют с надежным контролем версии сохраненных данных.
Эталонное значение хэш-функции по меньшей мере элемента данных можно определять, вычисляя значение хэш-функции для элемента данных или принимая значение хэш-функции вместе с элементом данных или из процесса аутентификации в связи с получением элемента данных, который описан в данной работе.
Термин объединенный элемент данных содержит любой элемент данных, сгенерированный как функция двух или большего количества элементов данных, например как соединение двух или большего количества элементов данных, где один элемент данных присоединяют к другому. Следовательно, объединенный элемент данных, полученный из определенного эталонного значения хэш-функции и по меньшей мере из части записи данных контроля версии, генерируют как функцию по меньшей мере эталонного значения хэш-функции и по меньшей мере части записи данных контроля версии.
В некоторых вариантах осуществления обеспечивают защиту целостности записи данных контроля версии.
В некоторых вариантах осуществления запись данных контроля версии содержит счетчик версии и вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного контрольного значения хэш-функции и по меньшей мере из счетчика версии.
В некоторых вариантах осуществления запись данных контроля версии дополнительно содержит обратный счетчик, идентифицирующий множество предыдущих версий, которыми можно заменять текущую версию элемента данных полезной нагрузки, таким образом обеспечивая простой и эффективный механизм контроля версии, включающий в себя механизм контроля совместимости вниз. В некоторых вариантах осуществления вычисление эталонного значения кода аутентификации сообщения содержит вычисление эталонного значения кода аутентификации сообщения из объединенного элемента данных, полученного из определенного эталонного значения хэш-функции и по меньшей мере из обратного счетчика.
В другом варианте осуществления запись данных контроля версии дополнительно содержит эталонное значение хэш-функции для текущей версии элемента данных, таким образом обеспечивая компактный «отпечаток пальца» (контрольную сумму) элемента данных.
В некоторых вариантах осуществления секретный ключ известен только цифровому устройству обработки. Кроме того, секретный ключ может быть секретным элементом данных, уникальным для устройства обработки данных.
В некоторых вариантах осуществления данные полезной нагрузки загружают указанным вначале способом, таким образом эффективно объединяя защищенную загрузку и хранение с надежным контролем версии.
В еще одном варианте осуществления способ дополнительно содержит этапы:
- принимают дельта-обновление ранее принятого текущего элемента данных и
- генерируют элемент данных как обновленный элемент данных из ранее принятого текущего элемента данных и принятого дельта-обновления.
В еще одном варианте осуществления способ дополнительно содержит генерацию записи данных контроля версии и хранение записи данных контроля версии в структуре данных контроля версии, таким образом делая ее доступной для последующей проверки памяти.
Соответственно, в другом аспекте способ проверки целостности элемента данных текущей версии, хранящегося в устройстве обработки данных, содержит этапы:
- вычисляют контрольное значение хэш-функции элемента данных;
- вычисляют контрольное значение кода аутентификации сообщения из вычисленного контрольного значения хэш-функции, используя секретный ключ, хранящийся в устройстве обработки данных;
- сравнивают вычисленное контрольное значение кода аутентификации сообщения с эталонным значением кода аутентификации сообщения, хранящегося для элемента данных.
Согласно данному аспекту способ дополнительно содержит извлечение записи данных контроля версии, запись данных контроля версии включает в себя информацию контроля версии о текущей версии элемента данных и
вычисление контрольного значения кода аутентификации сообщения содержит вычисление контрольного значения кода аутентификации сообщения из объединенного элемента данных, полученного из вычисленного контрольного значения хэш-функции и по меньшей мере из части записи данных контроля версии.
Настоящее изобретение относится к различным аспектам, включающим в себя описанные выше и далее способы, соответствующие устройства и компьютерные программы, каждый из которых приводит к одному или большему количеству преимуществ и выгод, описанных в связи с одним из указанных выше способов, и каждый из которых имеет один или большее количество вариантов осуществления, соответствующих вариантам осуществления, описанным в связи с одним из указанных выше способов.
Более конкретно, согласно другому аспекту устройство обработки данных содержит первую схему обработки, выполненную с возможностью выполнения способа загрузки данных в описанное выше и далее устройство обработки данных.
В частности обнаружено, что описанный механизм обеспечения безопасности может преимущественно применяться к устройству, имеющему многокристальную архитектуру. В частности, когда первый из кристаллов обращается к памяти через второй из кристаллов, первому кристаллу особенно важно гарантировать подлинность данных и целостность содержимого памяти.
Следовательно, в некоторых вариантах осуществления устройство обработки данных дополнительно содержит средство хранения, выполненное с возможностью хранения принятого элемента данных полезной нагрузки, и вторую схему обработки, связанную со средством хранения и с первой схемой обработки; причем вторая схема обработки выполнена с возможностью обеспечения первой схеме обработки по меньшей мере доступа для чтения к средству хранения.
В дополнительном варианте осуществления первая схема обработки содержит локальное средство хранения, предназначенное для хранения корневого открытого ключа асимметричной криптографической системы. В дополнительном варианте осуществления первая схема обработки содержит локальное средство хранения, предназначенное для хранения указанного секретного ключа, таким образом обеспечивая защищенное хранение под управлением первого кристалла криптографических ключей, используемых в механизме обеспечения подлинности и целостности данных.
Согласно другому аспекту устройство обработки данных содержит средство хранения, предназначенное для хранения текущей версии элемента данных и записи данных контроля версии, запись данных контроля версии включает в себя информацию контроля версии о текущей версии элемента данных, и средство обработки, выполненное с возможностью выполнения описанного выше и далее способа проверки целостности элемента данных текущей версии.
Следует отметить, что особенности описанных выше и далее способов могут воплощаться в программном обеспечении и выполняться в устройстве обработки данных или в другом средстве обработки на основе выполнения кода программы, например выполняемых компьютером команд. В данном описании термин средство обработки содержит любую схему и/или устройство, соответственно выполненное с возможностью выполнения указанных выше функций. В частности, указанный выше термин содержит программируемые микропроцессоры специального или общего назначения, цифровые процессоры сигналов (DSP), специализированные интегральные схемы (ASIC), программируемые логические матрицы (PLA), программируемые пользователем вентильные матрицы (FPGA), специальные электронные схемы и т.д., или их комбинацию.
Следовательно, согласно другому аспекту компьютерная программа содержит код программы, выполненный с возможностью побуждения устройства обработки данных к выполнению этапов описанного выше и далее способа, когда указанную компьютерную программу выполняют в устройстве обработки данных.
Например, код программы можно загружать в память, такую как оперативная память (RAM, ОП), с носителя данных или с другого компьютера через компьютерную сеть. Альтернативно, описанные особенности могут осуществляться аппаратной схемой вместо программного обеспечения или в комбинации с программным обеспечением.
Указанные выше и другие аспекты будут очевидны и понятны из вариантов осуществления, описанных далее относительно чертежей, на которых:
фиг.1 показывает схематическую структурную схему системы для загрузки данных в мобильный терминал;
фиг.2 показывает схематическую структурную схему примера мобильного терминала с однокристальной архитектурой;
фиг.3 показывает схематическую структурную схему примера мобильного терминала с двукристальной архитектурой;
фиг.4 показывает схематическую структурную схему другого примера мобильного терминала с двукристальной архитектурой;
фиг.5 иллюстрирует пример структуры сообщения, используемого в процессе загрузки программного обеспечения в мобильный терминал;
фиг.6 показывает последовательность операций процесса загрузки программного обеспечения для загрузки новой версии программного обеспечения;
фиг.7 иллюстрирует вариант осуществления вычисления кода аутентификации сообщения;
фиг.8 иллюстрирует другой вариант осуществления вычисления кода аутентификации сообщения, включающий в себя механизм контроля версии;
фиг.9 показывает последовательность операций процесса контроля версии;
фиг.10 иллюстрирует пример механизма контроля версии, и
фиг.11 показывает последовательность операций процесса загрузки программного обеспечения для обновления программного обеспечения.
Фиг.1 показывает схематическую структурную схему системы для загрузки данных в мобильный терминал. Система содержит станцию 101 загрузки и мобильный терминал 102.
Устройство загрузки может быть обычным, соответствующим образом запрограммированным компьютером, например ПК (персональным компьютером), содержащим соответствующий интерфейс связи. В некоторых вариантах осуществления устройство загрузки может генерировать данные полезной нагрузки, например версию программного обеспечения, данные конфигурации и/или подобные данные, которые будут загружать. В частности, устройство загрузки может генерировать цифровую подпись и сертификат, которые будут загружаться вместе с данными полезной нагрузки. В других вариантах осуществления устройство загрузки принимает данные полезной нагрузки и информацию заголовка от удаленного компьютера, например от персонального компьютера, рабочего места, сетевого сервера и т.д. Например, данные можно принимать через компьютерную сеть, например Интернет, локальную сеть, корпоративную сеть, экстрасеть и т.д., или с помощью любого другого подходящего средства, например, на считываемом компьютером носителе, таком как гибкий диск, компакт-диск (CD-ROM) и т.д. В данном варианте осуществления вычисление подписи и генерация сертификата могут выполняться удаленным компьютером, а не станцией загрузки. Устройство загрузки выполняет вместе с мобильным терминалом загрузку данных в мобильный терминал.
Мобильный терминал 102 содержит интерфейс 104 связи, содержащий схемы и/или устройства, подходящие для предоставления возможности мобильному терминалу обмениваться данными со станцией загрузки через проводной канал связи или через канал 103 радиосвязи, такой как прямой канал связи, система связи или подобный канал связи. Например, данные можно загружать через локальный канал беспроводной связи ближнего радиуса действия, например через соединение стандарта Bluetooth, инфракрасное соединение или подобное соединение, или через проводной интерфейс. В других вариантах осуществления данные можно загружать в мобильный терминал через систему связи, например по радиосвязи (OTA) через сотовую сеть передачи данных, например GSM (глобальную систему связи с подвижными объектами), WCDMA (широкополосный множественный доступ с кодовым разделением каналов) или подобную сеть.
Следовательно, примеры соответствующих модулей связи включают в себя проводное последовательное соединение, такое как канал связи стандарта RS-232 (стандартный интерфейс последовательной передачи данных), соединение стандарта USB (универсальной последовательной шины), соединение FireWire, которое описано в стандарте IEEE 1394, или подобное соединение. Дополнительные примеры включают в себя беспроводной инфракрасный интерфейс или радиочастотный (РЧ) интерфейс, такой как основная антенна мобильного телефона (не показан) или другая антенна в мобильном телефоне, например приемопередатчик стандарта Bluetooth, или подобное устройство. Другие примеры соответствующих интерфейсов включают в себя кабельный модем, телефонный модем, адаптер цифровой сети связи с комплексными услугами (ISDN), адаптер цифровой абонентской линии (DSL), спутниковый приемопередатчик, адаптер стандарта Ethernet или подобное устройство.
Мобильный терминал дополнительно содержит процессор 105, предназначенный для управления работой мобильного терминала, и запоминающее устройство 106. Например, процессор может содержать программируемый микропроцессор специального или общего назначения, процессор цифровых сигналов (DSP), специализированную интегральную схему (ASIC), программируемую логическую матрицу (PLA), программируемую пользователем вентильную матрицу (FPGA) и т.д. или их комбинацию. Запоминающее устройство 106 может быть флэш-памятью, стираемым программируемым постоянным запоминающим устройством (СППЗУ), электрически стираемым программируемым постоянным запоминающим устройством (ЭСППЗУ) или любым другим видом памяти или запоминающего устройства, например энергонезависимой памятью.
Когда данные загружают в мобильный терминал, процессор 105 выполняет описанные аутентификацию данных и защиту целостности и сохраняет данные в запоминающем устройстве 106.
Во время последующей работы мобильного терминала процессор может извлекать загруженные данные из запоминающего устройства 106. Например, в случае программного обеспечения процессор загружает программное обеспечение из запоминающего устройства 106 в оперативную память для выполнения.
Фиг.2 показывает структурную схему примера мобильного терминала с однокристальной архитектурой. Мобильный терминал 101 содержит контроллер 105 для управления работой мобильного терминала. Контроллер 105 работает вместе с флэш-памятью 106 для хранения программ и оперативной памятью (ОП) 209. Контроллер 105 включает в себя микропроцессор 208, внутреннее постоянное запоминающее устройство (ПЗУ, ROM) 207 и надежно сохраненный секретный ключ 218. Например, секретный ключ 218 может быть уникальным ключом кристалла, например, хранящимся в аппаратных средствах, например, используя так называемую технологию e-fuse (электрически пережигаемых перемычек). Альтернативно, секретный ключ может храниться в ПЗУ 207. ПЗУ 207 содержит загрузочный код, код хэширования, код MAC, код аутентификации и открытый корневой ключ. В некоторых вариантах осуществления код хэширования и/или код MAC могут воплощаться по меньшей мере частично в аппаратных средствах вместо или в дополнение к воплощению в ПЗУ. Система команд, связанная с обычной работой мобильного телефона, содержится во флэш-памяти 106 программ. Оперативная память 209 используется для операций, которые являются частью нормальной обработки вызовов мобильного терминала. В некоторых вариантах осуществления операции, в которых участвуют уязвимые данные, вычисления значений хэш-функции и процессы аутентификации выполняют вместе с защищенной статической оперативной памятью (PSRAM) (не показана), которую включает в себя микроконтроллер 105. Контроллер 105 осуществляет связь с флэш-памятью 106 программ и оперативной памятью 209 через шину 219 памяти.
Фиг.3 показывает схематическую структурную схему примера мобильного терминала с двукристальной архитектурой. В данном варианте осуществления контроллер 105 содержит два кристалла 310 и 313 соответственно, внешнее запоминающее устройство 106 и внутреннее запоминающее устройство 209. Каждый из этих двух кристаллов содержит по меньшей мере один микропроцессор 312 и 315 соответственно и ПЗУ 311 и 314 соответственно. Внешнее запоминающее устройство 106 - любой соответствующий вид энергонезависимой памяти, например флэш-память. Внутреннее запоминающее устройство 209 - запоминающее устройство с быстрым доступом, например оперативная память. В варианте осуществления на фиг.3 эти два кристалла совместно используют внутреннее запоминающее устройство 209. Кроме того, в данном варианте осуществления только кристалл 313 имеет прямой доступ к внешнему запоминающему устройству 106. Следовательно, когда процессор 312 из кристалла 310 должен выполнять программное обеспечение, хранящееся во внешнем запоминающем устройстве 106, прежде чем программное обеспечение сможет выполняться, его загружают во внутреннее запоминающее устройство 209 через кристалл 313. В данном варианте осуществления оба ПЗУ 311 и 314 содержат загрузочный код, но только ПЗУ 311 содержит код хэширования, код MAC, код аутентификации и открытый корневой ключ, и только кристалл 310 содержит секретный ключ 318. Как описано выше, секретный ключ 318 может храниться в аппаратных средствах, например, используя так называемую технологию e-fuse (электрически пережигаемых перемычек). Альтернативно, секретный ключ может храниться в ПЗУ 311. Кроме того, в некоторых вариантах осуществления код хэширования и/или код MAC могут воплощаться по меньшей мере частично в аппаратных средствах вместо или в дополнение к воплощению в ПЗУ.
Фиг.4 показывает схематическую структурную схему другого примера мобильного терминала с двукристальной архитектурой. Данный вариант осуществления подобен варианту осуществления на фиг.3 за исключением того, что эти два кристалла 310 и 313 из данного варианта осуществления не используют совместно обычную внутреннюю память. Вместо этого каждый кристалл имеет свою собственную внутреннюю память 416 и 417 соответственно. Как в варианте осуществления на фиг.3, только кристалл 313 имеет прямой доступ к внешнему запоминающему устройству 106. Следовательно, когда процессор 312 из кристалла 310 должен выполнять программное обеспечение, хранящееся во внешнем запоминающем устройстве 106, программное обеспечение, которое должно выполняться, загружают во внутреннее запоминающее устройство 416 из кристалла 310 через кристалл 313 прежде, чем оно может выполняться.
В альтернативных вариантах осуществления с двумя кристаллами с общедоступной или отдельной оперативной памятью (ОП) оба кристалла могут иметь прямой доступ к внешнему энергонезависимому запоминающему устройству и непосредственно выполнять программное обеспечение, которое должно выполняться, из этого запоминающего устройства или сначала загружать его в оперативную память и затем выполнять.
Фиг.5 иллюстрирует пример структуры сообщения, используемого в процессе загрузки программного обеспечения в мобильный терминал. Сообщение 520 содержит раздел 521 заголовка, раздел 522 полезной нагрузки, раздел 523 цифрового сертификата и цифровую подпись 524.
Раздел 522 полезной нагрузки содержит фактические данные полезной нагрузки, которые будут загружены в мобильный терминал. Данные полезной нагрузки могут содержать программное обеспечение, такое как прикладное программное обеспечение, программное обеспечение предварительной загрузки, предназначенное для организации и/или управления загрузкой другого программного обеспечения, части операционной системы мобильного терминала или подобное программное обеспечение. Альтернативно или дополнительно, данные полезной нагрузки могут содержать другие данные, например, данные конфигурации для хранения во флэш-памяти или в других блоках памяти мобильного терминала, например в СППЗУ, ЭСППЗУ или в подобных блоках памяти.
Раздел 521 заголовка содержит информацию, соответствующую процессу загрузки, такую как информация о данных полезной нагрузки, например данные контроля версии, информация о мобильном терминале, параметры управления, которые определяют, как мобильный терминал должен обрабатывать данные, и/или подобную информацию.
Раздел подписи содержит цифровую подпись полезной нагрузки 522. Цифровую подпись вычисляют, используя пару ключей открытый/закрытый асимметричной криптосистемы, например системы RSA (Райвеста (Rivest), Шамира (Shamir) и Эйдельмана (Adleman)). Цифровую подпись вычисляют, первоначально вычисляя одностороннюю хэш-функцию данных полезной нагрузки, т.е. программного обеспечения и/или данных, которые будут загружены в мобильный терминал. Вычисленное значение хэш-функции затем шифруют с закрытым ключом пары ключей открытый/закрытый.
Одностороннюю хэш-функцию используют для создания значения хэш-функции, которое представляет данные полезной нагрузки 522. Систему с открытым/закрытым ключом используют для защиты для правильного значения хэш-функции и аутентификации станции загрузки или устройства передачи данных, от которого посылают сообщение 520.
Односторонней хэш-функцией является функция, которую просто вычислять в прямом направлении, но трудно вычислять в обратном направлении. Односторонняя хэш-функция H(M) работает на входных данных произвольной длины М, которые в некоторых вариантах осуществления состоят из данных полезной нагрузки 522 или выбранных частей данных полезной нагрузки. Хэш-функция, выполняемая на М, возвращает значение хэш-функции фиксированной длины, h = H(M).
Существует много функций, которые берут входную информацию произвольной длины и возвращают выходную информацию фиксированной длины, но односторонние хэш-функции имеют следующие дополнительные характеристики: при заданном М просто вычислить h; при заданном h трудно вычислить М; и при заданном М трудно найти другое сообщение М', так чтобы H(M) = H(M'). Цель односторонней хэш-функции состоит в обеспечении уникальной подписи или «отпечатка пальца» М. Выходная информация хэш-функции упоминается как значение хэш-функции или как «дайджест» сообщения.
В вариантах осуществления описанного способа перед передачей сообщения 520 на мобильный терминал надежную одностороннюю хэш-функцию выполняют с данными полезной нагрузки 522 или с выбранным содержимым для создания эталонного значения хэш-функции. Сообщение 520 включает в себя эталонное значение хэш-функции как цифровую подпись, как дополнительно описано ниже. При получении сообщения 520 мобильный терминал вычисляет контрольное значение хэш-функции данных 522 полезной нагрузки (или выбранного их содержимого) и сравнивает контрольное значение хэш-функции с эталонным значением хэш-функции, принятым как часть сообщения 520.
Соответствующей односторонней хэш-функцией является, например, функция SHA-1. Другие примеры соответствующих функций включают в себя алгоритмы MD5, Snerfu, H-Hash, MD2, MD4 или подобные алгоритмы.
Алгоритмы с открытым ключом используют два ключа: один доступный всем и один закрытый (секретный ключ) для таких задач, как шифровка и расшифровка сообщений, аутентификация сообщений и цифровых подписей. Когда передатчик зашифровал сообщение с закрытым ключом, любой получатель с соответствующим открытым ключом может быть уверен в подлинности передатчика, так как только передатчик, имеющий закрытый ключ, может зашифровать сообщение. Последнюю схему используют для проверки подлинности данных полезной нагрузки в соответствии с описанным процессом загрузки. Соответствующим алгоритмом с открытым ключом является алгоритм RSA. Другие соответствующие примеры включают в себя алгоритмы Fiat-Shamir (FS), ELGAMAL, DSA (алгоритм цифровой подписи), Fiege-Fiat-Shamir или подобные алгоритмы.
В частности, в описанном процессе загрузки вычисленное значение хэш-функции шифруют с закрытым ключом устройства загрузки (или генератора полезной нагрузки) для создания цифровой подписи 524, которую включает в себя сообщение 520.
Раздел 523 цифрового сертификата сообщения 520 включает в себя сертификат, который включает в себя соответствующий открытый ключ. Цифровой сертификат является структурой данных, используемой в криптосистеме с открытым ключом для того, чтобы связать определенного аутентифицированного человека с определенным открытым ключом. Цифровой сертификат является цифровым представлением информации, которая идентифицирует центр сертификации, который его выпустил, называет или идентифицирует человека, открытый ключ которого он включает в себя, и содержит открытый ключ данного человека. Цифровой сертификат подписывают с помощью цифровой подписи центром сертификации, выпустившим его, таким образом предоставляя возможность получателю проверять подлинность сертификата при использовании открытого ключа центра сертификации.
Следует понимать, что раздел цифрового сертификата может содержать один цифровой сертификат или цепочку сертификатов. В любом случае сертификат или цепочку сертификатов можно аутентифицировать с помощью мобильного терминала посредством корневого открытого ключа, соответствующего одному сертификату или последнему сертификату в цепочке сертификатов. Пример ключевой иерархии в связи с загрузкой программного обеспечения в мобильные телефоны описан в WO 03/060673.
Следует понимать, что в некоторых вариантах осуществления полезную нагрузку для вычисления цифровой подписи можно разделять на меньшие части, как описано, например, в WO 03/060673, или можно просто вычислять данную подпись.
Обычно желательно защищать данные 521 заголовка, а также данные 522 полезной нагрузки. В некоторых вариантах осуществления это достигают с помощью защиты самих данных 521 заголовка с помощью цифровой подписи. В других вариантах осуществления указанное выше шифрование вычисленного значения хэш-функции дополнительно содержит шифрование значения хэш-функции, вычисленного для данных 521 заголовка, например, с помощью шифрования/подписания объединения h(SW) | h(H) значения h(SW) хэш-функции, вычисленного для программного обеспечения (и данных) 522, и значения h(H) хэш-функции, вычисленного для данных 521 заголовка.
Фиг.6 показывает последовательность операций процесса загрузки программного обеспечения для загрузки новой версии программного обеспечения.
На начальном этапе 601 мобильный терминал принимает пакет данных программного обеспечения от средства перепрограммирования по локальному или удаленному интерфейсу, например GSM, WCDMA и т.д., как описано выше. Пакет содержит новое программное обеспечение SW, один или большее количество сертификатов C и цифровую подпись S(hr) защищенного программного обеспечения и данных, как описано выше в связи с фиг.5. Дополнительно новое программное обеспечение может включать в себя данные, например данные конфигурации. Подпись S(h r) содержит по меньшей мере зашифрованное значение хэш-функции, вычисленное из программного обеспечения и данных. Подпись вычисляют так, что сначала вычисляют значение hr=H(SW) односторонней хэш-функции программного обеспечения и данных SW, а потом по меньшей мере вычисленное значение хэш-функции шифруют с закрытым ключом пары ключей открытый/закрытый, например пары ключей открытый/закрытый RSA. Пакет данных программного обеспечения включает в себя сертификат, который включает в себя соответствующий открытый ключ. При получении пакета программного обеспечения и данных мобильный терминал сохраняет программное обеспечение, данные, сертификат(ы) и подпись во внешнем запоминающем устройстве 106. Как указано выше в связи с фиг.5, в некоторых вариантах осуществления подпись может защищать не только полезную нагрузку, но также и данные заголовка, например, с помощью шифрования объединения значения хэш-функции, вычисленного для программного обеспечения, и значения хэш-функции, вычисленного для заголовка.
На этапе 602 процессор мобильного терминала считывает недавно сохраненное программное обеспечение и данные SW, сертификат(ы) C и подпись S(hr) в свое внутреннее запоминающее устройство.
На этапе 603 процессор вычисляет контрольное значение ha=H(SW) односторонней хэш-функции нового программного обеспечения и данных SW.
На этапе 604 процессор считывает корневой открытый ключ PK из памяти 605. В некоторых вариантах осуществления корневой открытый ключ надежно сохраняют, т.е. защищают целостность. В одном из вариантов осуществления корневой открытый ключ сохраняют во внутреннем ПЗУ процессора, как описано выше. Процессор использует корневой открытый ключ PK для проверки подписи S(hr ) нового программного обеспечения и данных. Если используется только один сертификат, то подпись S(hr) проверяют относительно открытого ключа в сертификате C. Сертификат C, в свою очередь, затем проверяют относительно корневого открытого ключа PK. Если используется несколько сертификатов, то проверяют всю цепочку сертификатов. В этом случае подпись последнего сертификата в цепочке проверяют относительно корневого открытого ключа. Затем на этапе 604 процессор проверяет открытый ключ, используемый для подписи нового программного обеспечения и данных. Если проверка заканчивается успешно, то процессор на этапе 606 продолжает проверку подписи. Иначе процесс загрузки программного обеспечения прекращают.
На этапе 606 процессор расшифровывает цифровую подпись S(hr) программного обеспечения и данных, используя открытый ключ, проверенный на этапе 604, получая эталонное значение hr хэш-функции.
На этапе 607 расшифрованную подпись, т.е. эталонное значение hr хэш-функции, проверяют по отношению к контрольному значению ha односторонней хэш-функции, вычисленному на этапе 603. Если проверка заканчивается успешно, т.е. если контрольное значение ha хэш-функции и эталонное значение hr хэш-функции равны, то процессор продолжает работу на этапе 608 с вычислением эталонного кода аутентификации сообщения (MAC). Иначе процесс загрузки программного обеспечения прекращают.
На этапе 608 процессор использует проверенное значение ha (=hr ) односторонней хэш-функции и уникальный ключ кристалла K (или значение, полученное из K) в качестве входного значения функции вычисления MAC, получая эталонное значение кода аутентификации сообщения tr=MAC (ha; K). Значение выходных данных функции MAC - эталонное значение MAC нового программного обеспечения и данных. В некоторых вариантах осуществления уникальный ключ кристалла K хранят в защищенной памяти, которая доступна только процессору. Например, уникальный ключ K может прожигаться в кристалле во время процесса изготовления, используя, например, так называемую технологию e-fuse (электрически пережигаемых перемычек). Варианты осуществления кода аутентификации сообщения будут описаны ниже. Процессор хранит новое эталонное значение MAC tr во внешнем запоминающем устройстве 106 вместе с новым программным обеспечением и данными SW. Дополнительно сертификат(ы) и значения цифровой подписи можно удалять из внешнего запоминающего устройства.
Описанным выше процессом загрузки управляет процессор мобильного терминала. В двукристальной архитектуре, как описано в связи с фиг.3 и 4, указанные выше этапы выполняют с помощью кристалла 311, который предназначен для того, чтобы впоследствии выполнять программное обеспечение.
Криптографические функции для аутентификации принятых данных и, в частности, функции MAC могут выполняться с помощью программного обеспечения специального назначения, которое хранится, например, как часть загрузочного кода во внутреннем ПЗУ процессора, который выполняет указанные выше этапы.
Следовательно, сохраненное эталонное значение MAC теперь доступно для последующей проверки программного обеспечения и данных процессором. Например, для проверки целостности сохраненного программного обеспечения процессор вычисляет контрольное значение h(SW) хэш-функции сохраненного программного обеспечения и данных и контрольное значение MAC ta = MAC (h(SW); K) вычисленного контрольного значения хэш-функции, используя уникальный ключ кристалла K. Процессор сравнивает вычисленное контрольное значение MAC ta с сохраненным эталонным значением MAC tr. Если два значения равны, то проверяют целостность программного обеспечения.
Например, такая проверка может выполняться во время процесса загрузки мобильного терминала, и/или каждый раз, когда программное обеспечение должно выполняться, и/или периодически в предопределенные промежутки времени, например, как описано в патенте США № 6026293.
Фиг.7 иллюстрирует вариант осуществления вычисления кода аутентификации сообщения (MAC). MAC является функцией, которая берет входные данные переменной длины М и ключ K для создания выходных данных фиксированной длины t, так называемого значения MAC, или значения метки (тэга): t=MAC (М; K). В некоторых вариантах осуществления MAC определяют так, что для злоумышленника, который знает М, но не имеет информации о значении K, трудно (невозможно) в вычислительном отношении найти сообщение М', отличающееся от М, но с тем же самым значением метки. Кроме того, функция MAC может определяться так, что злоумышленнику, который знает сообщение М, но не имеет информации о значении K, трудно предсказать правильное значение метки t. В описанном способе загрузки MAC используют для проверки целостности данных, хранящихся на ненадежном или незащищенном носителе, т.е. в этой ситуации MAC используется только одним участником, т.е. мобильным терминалом, при сохранении и извлечении данных полезной нагрузки. В некоторых вариантах осуществления функция MAC основана на криптографической хэш-функции и, в частности, на хэш-функции H, используемой для проверки подлинности принятых данных полезной нагрузки, как описано выше. Это предоставляет возможность многократного использования значения хэш-функции, вычисленного во время аутентификации принятых данных полезной нагрузки, вычисляя значение MAC для последующей защиты целостности, таким образом значительно сокращая объем вычислительных работ для вычисления значения MAC и, таким образом, сокращая время инсталляции.
Фиг.7 показывает структурную схему модуля вычисления MAC. Модуль вычисления MAC содержит блок 732 вычисления функции MAC. Блок 732 вычисления функции MAC принимает h в качестве входных данных, h является проверенным значением хэш-функции, которое было вычислено во время предыдущего процесса 736 проверки подписи для принятой полезной нагрузки, т.е. h=ha или h=hr. В качестве второй порции входных данных функция 732 MAC принимает секретный ключ K', который получают из уникального ключа кристалла K. В частности, ключ K' можно генерировать, используя псевдослучайную функцию 731, например псевдослучайную функцию, которая основана на хэш-функции, например, SHA-1, из уникального ключа кристалла K и идентификатора 735 режима. Например, уникальный ключ кристалла K может быть случайным числом, сгенерированным во время производства кристалла СпИС. Получение ключа K' из главного ключа K имеет преимущество, что различные ключи K' могут использоваться для различных целей, например для защиты различных видов программного обеспечения, различных частей программного обеспечения и т.д., таким образом обеспечивая криптографическое разделение и увеличивая гибкость способа. Идентификатор 735 режима позволяет выбирать различные режимы. Например, в многокристальном сценарии различные режимы могут использоваться для каждого заданного кристалла, для которого предназначено программное обеспечение. Примеры соответствующих функций MAC включают в себя HMAC (основанное на ключе хэширование для аутентификации сообщения), MAC сцепления блоков шифра (CBC), используя, например, AES или надежную одностороннюю хэш-функцию, например CBC-MAC, как определено в «Handbook of Cryptology», by A.J.Menezes, P.C van Oorschot, S.A.Vanstone, p.353, CRC Press, 1997, где шифр блочного шифрования AES используется как блочный шифр E. Функция 732 MAC производит соответствующее значение метки t, как описано выше.
Для предотвращения вычислений неразрешенных значений MAC схема MAC выдает вычисленное значение MAC t только тогда, когда успешная проверка подписи предшествует вычислениям. Следовательно, модуль вычисления MAC принимает в дальнейшем входные данные 733 от процесса 736 проверки подписи, указывая, была ли успешно проверена цифровая подпись принятых данных полезной нагрузки. Блок 734 принимает значение метки и сигнал 733 в качестве входных данных и выдает вычисленное значение метки, только если сигнал 733 указывает, что значение h хэш-функции является проверенным, т.е. подлинным значением хэш-функции. Например, в способе на фиг.6 сигнал 733 генерируют на этапе 607.
Следует отметить, что модуль вычисления MAC может воплощаться как отдельная схема вычисления MAC в кристалле процессора. Кроме того, последующее сравнение между вычисленным значением MAC и эталонным значением можно выполнять в схеме сравнения, присоединенной к схеме MAC. Кроме того, секретный ключ K может храниться как часть этой схемы. Следовательно, все вычисление MAC может быть ограничено в специальной схеме и, таким образом, не требует предъявления/передачи вычисленного MAC за пределы схемы.
Вычисление MAC на фиг.7 может быть дополнительно улучшено с очень небольшими затратами вычислительной мощности, чтобы оно дополнительно включало в себя надежный контроль версии и нарушало предсказуемость входных данных h для вычисления MAC. Этот альтернативный вариант осуществления вычисления MAC будет теперь описан в отношении фиг.8 и фиг.9.
Фиг.8 иллюстрирует другой вариант осуществления вычисления кода аутентификации сообщения, включающий в себя механизм контроля версии, и фиг.9 показывает последовательность операций процесса контроля версии.
Согласно данному варианту осуществления схемы 800 MAC вычисление MAC в блоке 732 выполняют на кортеже 844 из четырех элементов (rand, h, cnt, back_cnt). Кортеж 844 из четырех элементов содержит короткое (например, 64 бита) случайное значение, rand, которое обеспечивает ситуацию, при которой входные данные для вычисления MAC не находились под полным управлением входных данных от процесса 736 проверки подписи. Кортеж из четырех элементов дополнительно содержит проверенное значение h хэш-функции, как в предыдущем варианте осуществления. Наконец, кортеж из четырех элементов содержит счетчик контроля версии, cnt, и обратный счетчик контроля версии, back_cnt, механизма контроля версии, описанного далее. Функция 732 MAC, например HMAC, CBC-MAC или подобная функция, дополнительно принимает секретный ключ K', как описано в связи с фиг.7, и вычисляет значение MAC t из кортежа из четырех элементов и секретного ключа K'. Аналогично, как описано в связи с фиг.7, вычисленное значение метки t выдают, только если сигнал 703 подписи указывает, что процесс проверки подписи проверил значение h хэш-функции.
Кортеж 844 из четырех элементов генерируют с помощью модуля 841 контроля версии, который поддерживает список 842 контроля версии ранее принятых версий программ. В частности, список 841 контроля версии содержит список записей данных, где каждая запись данных содержит кортеж из четырех элементов, соответствующий ранее отмеченному значению хэш-функции. Запись с новым значением хэш-функции упоминается как верхний элемент списка 842, который соответствует программному обеспечению, которое фактически установлено/используется.
Модуль 841 контроля версии принимает проверенное значение h хэш-функции и цифровой сигнал 733, указывающий, что подпись была успешно проверена, от процесса проверки подписи, как описано выше. Кроме того, модуль 841 контроля версии принимает от процесса 736 проверки подписи счетчик версии программы, cnt, и число back_cnt. Число back_cnt указывает, сколько предыдущих версий можно еще установить, когда установлена данная версия программы. Например, back_cnt может быть числом между 0 и C MAX, например CMAX=15, где back_cnt=0 подразумевает, что новое программное обеспечение вообще не позволяет, чтобы его заменяли предыдущей версией. Следовательно, back_cnt воплощает простой, но эффективный механизм контроля совместимости вниз и вверх загружаемого программного обеспечения. В некоторых вариантах осуществления значения cnt и back_cnt принимают как часть пакета программного обеспечения, который принимают в процессе загрузки, например, как часть раздела заголовка принятого пакета программного обеспечения.
После получения (этап 901) нового значения h хэш-функции, нового счетчика cnt, нового значения back_cnt и сигнала 733 от процесса 736 проверки подписи во время процесса загрузки модуль 841 контроля версии использует сигнал 733 проверки (этап 902) о том, было ли значение h хэш-функции проверено во время процесса 736 проверки подписи. Если это не так, то модуль 841 контроля версии блокирует значение h, т.е. процесс контроля версии и вычисления MAC прекращают. Если сигнал 733 указывает, что значение хэш-функции является подлинным, то модуль 841 контроля версии продолжает работу на этапе 903.
На этапе 903 модуль 841 контроля версии сравнивает принятое значение хэш-функции со значениями хэш-функции в списке 842 контроля версии. Если принятое значение h хэш-функции равняется одному из предыдущих значений hprev хэш-функции в списке 842 контроля версии, то модуль 841 контроля версии продолжает работу на этапе 904; иначе процесс продолжается на этапе 906.
На этапе 904, т.е. в случае если принятое значение h хэш-функции равняется одному из предыдущих значений hprev хэш-функции, процесс извлекает соответствующий кортеж из четырех элементов (rand, h, cnt, back_cnt)prev и определяет, находится ли значение cntprev счетчика предыдущей версии в разрешенном диапазоне, который определен значениями cnt и back_cnt, принятыми от процесса 736 проверки подписи. В некоторых вариантах осуществления разрешенный диапазон определяют как диапазон [cnttop-back_cnt, ), где cnttop является значением cnt текущего верхнего элемента списка. Для простоты предполагается, что нет никакого верхнего предела для диапазона разрешенных значений. Однако следует понимать, что в других вариантах осуществления верхний предел может быть определен.
Если cnt prev находится в разрешенном диапазоне, то модуль 841 контроля версии генерирует (этап 905) новый кортеж из четырех элементов (rand, h, cnt, back_cnt)new с компонентами rand new - новым случайным значением, сгенерированным модулем 841 контроля версии, hnew = h, cntnew = cntprev, back_cntnew = back_cntprev , и модуль контроля версии заменяет предыдущий кортеж с тем же самым значением h новым кортежем и устанавливает новый кортеж в качестве верхнего элемента в списке.
В случае если проверка на этапе 903 показывает, что h не равно ни одному из предыдущих значений хэш-функции, то новое случайное значение, значение h хэш-функции и счетчик сохраняют вместе с разрешенным back_cnt (связанным с этим h) в списке контроля версии (этап 906). В этом случае новый кортеж из четырех элементов (rand, h, cnt, back_cnt)new создают согласно: randnew = новое случайное значение, hnew = h, cntnew = cnt, back_cntnew = минимальное значение (back_cnt, cnt - min_allowed_version), и новый кортеж становится верхним элементом в списке. В данном случае min_allowed_version - текущая самая младшая разрешенная любым кортежем версия в списке обновления. После того как запись была помещена на верх в списке обновления, min_allowed_version повторно вычисляют, как cnttop -back_cnttop, т.е. из счетчиков cnttop и back_cnt версии верхнего элемента (этап 907). Наконец, все элементы в списке обновляют (этап 908) так, чтобы их значения back_cnt были наибольшими значениями, которые не задают номер версии, который ниже наименьшей разрешенной версии min_allowed_version. Если список будет содержать запись с версией, которая выходит из разрешенного диапазона, то эта запись будет удалена.
В некоторых вариантах осуществления значение проверки MAC (MACLIST) связано со списком контроля версии для предотвращения неправомочной подделки записей в списке, таким образом дополнительно увеличивая защищенность способа. Значение MACLIST обновляют только тогда, когда список обновлен, т.е. после успешной проверки подписи. Перед доступом/использованием списка контроля версии текущее значение проверки MAC может быть проверено по отношению к значению MACLIST. Для предотвращения неразрешенных вычислений значения MACLIST схема MAC выдает вычисленное значение MAC только тогда, когда успешная проверка подписи предшествовала вычислениям (которой управляет блок 734 на фиг.7 и 8).
Следовательно, сохраненное эталонное значение MAC и список контроля версии теперь доступны для последующей проверки программного обеспечения и данных процессором. Например, для проверки целостности сохраненного программного обеспечения процессор вычисляет контрольное значение ha=h(SW) хэш-функции сохраненного программного обеспечения и данных и генерирует контрольный кортеж (rand, ha , cnt, back_cnt) со значениями rand, cnt и back_cont, извлеченными из списка контроля версии. Из этого процессор вычисляет контрольное значение MAC ta = MAC ((rand, ha, cnt, back_cnt); K) вычисленного контрольного кортежа, используя уникальный ключ кристалла K. Процессор сравнивает вычисленное контрольное значение MAC ta с сохраненным эталонным значением MAC tr. Если два значения равны, то проверяют целостность программного обеспечения.
Как описано выше, такая проверка может выполняться во время процесса загрузки мобильного терминала, и/или каждый раз, когда программное обеспечение должно выполняться, и/или периодически в предопределенные интервалы времени.
Указанный выше процесс будет теперь дополнительно иллюстрирован посредством примера и в отношении фиг.10.
Фиг.10 иллюстрирует пример механизма контроля версии, где используется список контроля версии размера 3, т.е. список контроля версии может хранить три кортежа. В данном примере дополнительно предполагается, что существует последовательность из 8 выпусков версии программного обеспечения со следующими значениями (h, cnt, back_cnt) значения h хэш-функции, счетчика cnt версии и обратного счетчика back_cnt, принятыми от процесса проверки подписи:
версия 1: (H1, 1, 0),
версия 2: (H2, 2, 1),
версия 3: (H3, 3, 2),
версия 4: (H4, 4, 3),
версия 5: (H5, 5, 2),
версия 6: (H6, 6, 3),
версия 7: (H7, 7, 4) и
версия 8: (H8, 8, 4).
Дополнительно предполагается, что указанные выше версии были применены последовательно, кроме версии 7, которая не была применена. Фиг.10 показывает список 1001 контроля версии после инсталляции версии 8. Каждая строка списка 1001 контроля версии включает в себя соответствующий кортеж из четырех элементов для одной из установленных версий: строка 1002, верхний элемент списка, соответствует версии 8, строка 1003 соответствует версии 6, и строка 1004 соответствует версии 5. R8, R6 и R5 - случайные числа, сгенерированные модулем контроля версии, как описано выше. После того как версия 8 была применена, самой младшей разрешенной версией стала 4 (так как значение cnt версии 8 равно 8, и значение back_cnt версии 8 равно 4, и 8-4=4), таким образом, min_allowed_version = 4. Соответственно, значения back_cnt остальных записей в списке были откорректированы во время инсталляции версии 8, чтобы соответствовать ограничению на самую младшую разрешенную версию после того, как версия 8 была добавлена. В частности, значение back_cnt в строке 1002 устанавливают в 2, а значение back_cnt в строке 1003 устанавливают в 1. До обновления версией 8 самой младшей разрешенной версией была 3, но это значение было поднято к 4 через версию 8.
Фиг.10 дополнительно показывает таблицу 1011 контроля версии после инсталляции версии 7. Прежде всего значение cnt счетчика версии 7 равно 7, т.е. находится в разрешенном диапазоне текущей версии. Значение H7 хэш-функции еще не существует в списке 1001 контроля версии, следовательно, новый кортеж 1007 из четырех элементов с новым значением H7 хэш-функции сохраняют в качестве нового верхнего элемента 1012 таблицы 1011 контроля версии. Предыдущий верхний элемент перемещают вниз в списке, и он соответствует строке 1013. Версию 6 теперь помещают в строку 1014, в то время как версию 5 удаляют из списка, потому что в этом примере существует место только для трех кортежей из четырех элементов в списке контроля версии. Значение back_cnt нового верхнего элемента 1012 устанавливают в 3, чтобы удовлетворить ограничению текущей самой младшей разрешенной версии (min_allowed_version=4).
Фиг.11 показывает последовательность операций процесса загрузки программного обеспечения для обновления программного обеспечения. Процесс подобен показанному на фиг.6 процессу начальной загрузки программного обеспечения.
На начальном этапе 1101 мобильный терминал принимает пакет данных обновления программного обеспечения от средства перепрограммирования по локальному или удаленному интерфейсу, например GSM, WCDMA и т.д., как описано выше. Пакет содержит новое обновление программного обеспечения, один или большее количество сертификатов C и цифровую подпись S(hr) защищенного программного обеспечения, как описано выше в связи с фиг.5. Кроме того, программное обеспечение может дополнительно включать в себя данные, например обновленные данные конфигурации. В одном из вариантов осуществления новое программное обеспечение загружают как так называемый дельта-файл, включающий в себя отличия нового программного обеспечения от текущего программного обеспечения, таким образом сокращая размер пакета обновления. Методика дельта-файла известна из предшествующего уровня техники и описана, например, в «Delta storage for arbitrary non-text files», by Christian Reichenberger, Proc. Of the 3rd International Workshop on Software Configuration Management, p. 144-152, Norway, June 1991. Альтернативно могут использоваться другие способы генерации файла обновления, или можно принимать новое программное обеспечение целиком. Подпись S(hr) содержит зашифрованное значение хэш-функции, вычисленное из нового программного обеспечения. Подпись вычисляют так, что сначала вычисляют значение hr =H(SW) односторонней хэш-функции нового программного обеспечения SW, а впоследствии значение хэш-функции шифруют с закрытым ключом пары ключей открытый/закрытый, например пары ключей открытый/закрытый RSA. Пакет обновления программного обеспечения включает в себя сертификат, который включает в себя соответствующий открытый ключ. При получении пакета обновления программного обеспечения мобильный терминал сохраняет обновление программного обеспечения, сертификат(ы) и подпись во внешнем запоминающем устройстве 106.
На этапе 1102 процессор мобильного терминала считывает недавно сохраненное обновление программного обеспечения, сертификат(ы) C и подпись S(hr) в свое внутреннее запоминающее устройство.
На этапе 1122 процессор выполняет контроль версии. Мобильный терминал принимает номер новой версии программного обеспечения как часть пакета обновления. Номер версии нового программного обеспечения проверяют по отношению к номеру версии текущего программного обеспечения, сохраненного во внешнем запоминающем устройстве (защищенном с помощью MAC). Если новый номер версии программного обеспечения ниже старого номера версии программного обеспечения, то мобильный терминал прекращает процесс обновления. В другом варианте осуществления выполняют процесс контроля версии, описанный в связи с фиг.8 и 9.
Если этап 1122 контроля версии закончился успешно, то процесс продолжается на этапе 1123, где процессор генерирует новое программное обеспечение SWnew из принятого дельта-файла и текущей версии программного обеспечения SWprev , сохраненного во внешнем запоминающем устройстве (защищенном с помощью MAC).
На этапе 1103 процессор вычисляет контрольное значение ha=H(SWnew) односторонней хэш-функции нового программного обеспечения SWnew.
На этапе 1104 процессор считывает корневой открытый ключ PK из запоминающего устройства 1105. В некоторых вариантах осуществления корневой открытый ключ надежно сохраняют, т.е. защищают целостность. В одном из вариантов осуществления корневой открытый ключ сохраняют во внутреннем ПЗУ процессора, как описано выше. Процессор использует корневой открытый ключ PK для проверки подписи S(hr) нового программного обеспечения. Если используется только один сертификат, то подпись S(hr ) проверяют по отношению к открытому ключу в сертификате C. Сертификат C, в свою очередь, затем проверяют по отношению к корневому открытому ключу PK. Если используется несколько сертификатов, то проверяют всю цепочку сертификатов. В этом случае подпись последнего сертификата в цепочке проверяют по отношению к корневому открытому ключу. Затем на этапе 1104 процессор проверяет открытый ключ, используемый для подписи нового программного обеспечения. Если проверка заканчивается успешно, то процессор продолжает работу на этапе 1106 с проверкой подписи. Иначе процесс загрузки программного обеспечения прекращают.
На этапе 1106 процессор расшифровывает цифровую подпись S(hr) программного обеспечения, используя открытый ключ, проверенный на этапе 1104, получая эталонное значение hr хэш-функции.
На этапе 1107 расшифрованную подпись, т.е. эталонное значение hr хэш-функции, проверяют по отношению к контрольному значению ha односторонней хэш-функции, вычисленному на этапе 1103. Если проверка заканчивается успешно, т.е. если контрольное значение ha хэш-функции и эталонное значение hr хэш-функции равны, то процессор продолжает работу на этапе 1108 с вычислением эталонного кода аутентификации сообщения (MAC). Иначе процесс загрузки программного обеспечения прекращают.
На этапе 1108 процессор использует проверенное значение ha односторонней хэш-функции и уникальный ключ кристалла K (или значение, полученное из K) в качестве входного значения функции вычисления MAC, получая эталонное значение tr = MAC (ha; K) кода аутентификации сообщения. Выходное значение функции MAC - эталонное значение MAC нового программного обеспечения. В некоторых вариантах осуществления уникальный ключ кристалла K прожигают в кристалле во время процесса изготовления, используя, например, так называемую технологию e-fuse (электрически пережигаемых перемычек). Альтернативно, ключ K сохраняют в другой защищенной памяти, которая доступна только процессору. Варианты осуществления кода аутентификации сообщения были описаны выше. Процессор хранит новое эталонное значение MAC tr во внешнем запоминающем устройстве 106 вместе с новым программным обеспечением. Предыдущее значение MAC удаляют. Дополнительно сертификат(ы) и значения цифровой подписи можно удалять из внешней памяти. Новую версию программного обеспечения SWnew сохраняют во внешнем запоминающем устройстве, а старую версию программного обеспечения удаляют.
Описанным выше процессом загрузки управляет процессор мобильного терминала. В двухкристальной архитектуре, как описано в связи с фиг.3 и 4, указанные выше этапы выполняют с помощью кристалла 311, который должен впоследствии выполнять программное обеспечение.
Следовательно, выше описан мощный механизм подписания программного обеспечения для защиты программного обеспечения для многих различных систем. Данный механизм эффективно объединяют с механизмом защиты целостности, основанном на симметричном ключе для надежного хранения программного обеспечения. Как только SW установлено на платформу, используется механизм, основанный на симметричном ключе, и используют преимущества сделанных ранее вычислений. Кроме того, в данной работе описан объединенный механизм защиты программного обеспечения и контроля версии.
Обеспечиваемая защита целостности при хранении особенно выгодна в связи с архитектурой с двумя ЦП, когда энергонезависимая память связана с ненадежным ЦП и когда существует потребность в обновлениях SW.
Хотя некоторые варианты осуществления подробно описаны и показаны, изобретение не ограничено ими, но может также воплощаться другими способами в рамках объекта изобретения, определенного в последующей формуле изобретения.
В частности, варианты осуществления описаны главным образом в отношении мобильного терминала как примера устройства обработки данных. Следует понимать, однако, что описанные способ, программный продукт и устройство могут также применяться к другим устройствам обработки данных.
Описанные способ, программный продукт и устройство могут воплощаться посредством аппаратных средств, содержащих несколько отличающихся элементов, и посредством соответствующим образом запрограммированного микропроцессора. В формуле изобретения устройства перечисляют несколько средств, некоторые из этих средств могут воплощаться с помощью одного и того же элемента аппаратных средств, например с помощью соответствующим образом запрограммированного микропроцессора, одного или большего количества процессоров цифровых сигналов или подобных устройств. Тот факт, что определенные критерии перечислены в отличающихся зависимых пунктах формулы изобретения или описаны в различных вариантах осуществления, не указывает, что комбинация этих критериев не может использоваться для получения преимущества.
Следует подчеркнуть, что термины «содержит/содержащий», которые используют в данном описании, используют для определения присутствия заявленных особенностей, этапов или компонентов, что не препятствует присутствию или добавлению одной или большего количества других особенностей, этапов, компонентов или их групп.
Класс G06F21/24 путем прямой защиты данных, например нанесением меток
Класс H04L9/32 со средствами для установления личности или полномочий пользователя системы
Класс G06F9/06 с хранимой программой, те с записью и хранением программы в устройствах памяти вычислительных машин