Flash uefi boot: Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΡƒΡŽ Ρ„Π»Π΅ΡˆΠΊΡƒ с Windows 10 для UEFI ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Secure Boot β€” ESP32 β€” β€” Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ESP-IDF, послСдняя докумСнтация

Π’Π°ΠΆΠ½ΠΎ

ВсС ссылки Π² этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ относятся ΠΊ Secure Boot V1 (схСма бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° основС AES). ESP32 Revision 3 ΠΈ Π²Ρ‹ΡˆΠ΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ схСмой бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ являСтся Secure Boot V2.
Π‘ΠΌ. Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Secure Boot V2 для ESP32 Revision 3 ΠΈΠ»ΠΈ ESP32-S2.

БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это функция, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вашСго ΠΊΠΎΠ΄Π° Π½Π° Ρ‡ΠΈΠΏΠ΅. Π”Π°Π½Π½Ρ‹Π΅, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ ΠΈΠ· Ρ„Π»ΡΡˆ-памяти, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сбросС.

БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π»ΡΡˆ-памяти, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π±Π΅Π· ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ содСрТимого Ρ„Π»ΡΡˆ-памяти. Однако для бСзопасной срСды ΠΎΠ±Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π»ΡΡˆ-памяти».

Π’Π°ΠΆΠ½ΠΎ

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ваши возмоТности для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ вашСго ESP32. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ ΠΏΠΎΠΉΠΌΠΈΡ‚Π΅ послСдствия Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π€ΠΎΠ½

  • Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… хранится Π²ΠΎ Ρ„Π»ΡΡˆ-памяти. Доступ ΠΊ Ρ„Π»ΡΡˆ-памяти Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΎΡ‚ физичСского доступа для обСспСчСния бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Π°ΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ хранятся (нСдоступныС для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния) Π² Efuses, встроСнном Π² микросхСму.

  • Efuses ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния бСзопасного ΠΊΠ»ΡŽΡ‡Π° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° (Π² efuse BLOCK2), Π° Ρ‚Π°ΠΊΠΆΠ΅ записываСтся ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ‚ Efuse (ABS_DONE_0) (записываСтся Π² 1), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚ΠΎΡΠ½Π½ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ‡ΠΈΠΏΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ прСдохранитСлях eFuse см. Π² ВСхничСском справочном руководствС ESP32 9.0024 > ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ eFuse (eFuse) [PDF].

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ процСсс бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, сначала ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ со стандартным процСссом Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ESP-IDF.

  • Оба этапа процСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ€Π°Π·Π΄Π΅Π»Π° ΠΈ прилоТСния) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ процСссом бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Β«Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ довСрия».

ΠžΠ±Π·ΠΎΡ€ процСсса бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ процСсса бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒΒ». Π‘ΠΎΠ»Π΅Π΅ подробная информация прСдставлСна ​​в Ρ€Π°Π·Π΄Π΅Π»Π΅ «ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈΒ»:

  1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ прСдставлСны Π² мСню ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ».

  2. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° подписываСт ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π² процСссС сборки. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Β«Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» β€” это ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°Ρ€Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ECDSA Π² Ρ„Π°ΠΉΠ»Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° PEM.

  3. ΠžΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ esp-idf с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ скомпилированной Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи) ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠΈΠ³Π°Π΅Ρ‚ со смСщСниСм 0x1000.

  4. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния слСдуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ процСссу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ:

    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ создаСт ΠΊΠ»ΡŽΡ‡ бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° устройства (сгСнСрированный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π“Π‘Π§, Π·Π°Ρ‚Π΅ΠΌ сохранСнный Π² Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΌ ΠΎΡ‚ чтСния/записи Ρ„Π°ΠΉΠ»Π΅ efuse) ΠΈ бСзопасный дайдТСст. ДайдТСст получаСтся ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π°, IV ΠΈ содСрТимого ΠΎΠ±Ρ€Π°Π·Π° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°.

    • Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ дайдТСст ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ 0x0 Π²ΠΎ Ρ„Π»ΡΡˆ-памяти.

    • Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Ρ‹ efuses Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ JTAG ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ROM BASIC (Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹).

    • Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ постоянно Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, записывая efuse ABS_DONE_0. ПослС этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ становится Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ (Ρ‡ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли дайдТСст совпадаСт).

  5. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠŸΠ—Π£ Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» записан, считываСт сохранСнный дайдТСст ΠΏΠΎ адрСсу 0x0 ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Π½ΠΎΠ²Ρ‹ΠΌ вычислСнным дайдТСстом. Если дайдТСст Π½Π΅ совпадаСт, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π°. ДайдТСст ΠΈ сравнСниС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, Π° рассчитанный дайдТСст Π½Π΅ читаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм. ВСхничСскиС подробности см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° оборудования для бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ».

  6. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡ подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ встроСн Π² сам Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈ поэтому провСряСтся ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи, добавляСмой ΠΊΠΎ всСм ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π·Π°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

ΠšΠ»ΡŽΡ‡ΠΈ

Π’ процСссС бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ:

  • Β«ΠΊΠ»ΡŽΡ‡ бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°Β» β€” это 256-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ AES, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² Π±Π»ΠΎΠΊΠ΅ Efuse 2. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ сам ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠ»ΡŽΡ‡ ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ этот ΠΊΠ»ΡŽΡ‡, см. Re-Flashable Software Bootloader). Efuse, ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ этот ΠΊΠ»ΡŽΡ‡, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΎΡ‚ чтСния ΠΈ записи (прСдотвращая доступ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния) Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°.

    • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ схСма кодирования Efuse Block 2 ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «НСт», ΠΈ Π² этом Π±Π»ΠΎΠΊΠ΅ хранится 256-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. На Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ESP32 для схСмы кодирования установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3/4 Encoding (CODING_SCHEME efuse ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1), ΠΈ Π² этом Π±Π»ΠΎΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ 192-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

    Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ВСхничСском справочном руководствС ESP32. > ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ eFuse (eFuse) > БистСмный ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ coding_scheme [PDF].

    Алгоритм Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с 256-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π²ΠΎ всСх случаях, 192-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ΡΡ Π·Π° счСт повторСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ² (Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ).

  • Β«ΠšΠ»ΡŽΡ‡ для подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» β€” это стандартная ΠΏΠ°Ρ€Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ECDSA (см. Алгоритм подписи ΠΎΠ±Ρ€Π°Π·Π°) Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PEM.

    • ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈΠ· этой ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи, Π½ΠΎ Π½Π΅ для создания подписи) компилируСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ этапа Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², ΠΎΠ±Ρ€Π°Π· прилоТСния) ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΌΠΎΠΆΠ½ΠΎ свободно Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ, Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² сСкрСтС.

    • Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈΠ· этой ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ любой, Ρƒ ΠΊΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ этот ΠΊΠ»ΡŽΡ‡, ΠΌΠΎΠΆΠ΅Ρ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅, настроСнном Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅.

Π Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ/ΠΈΠ»ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π»ΡΡˆ-памяти ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ обновлСния смСщСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². Π‘ΠΌ. Π Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°.

Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ мСню ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Β«ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠžΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Π°Ρ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°Β». (Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Β«ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉΒ», см. Β«ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΒ».)

  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ имя для ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚Π° опция появится послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π€Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² вашСй систСмС. ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π€Π°ΠΉΠ» Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

  3. УстановитС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ мСню (ΠΏΠΎ ТСланию). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Β«ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°Β», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ· menuconfig ΠΈ сохранитС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ

  4. .

  5. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запускС make , Ссли ΠΊΠ»ΡŽΡ‡ подписи Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ сообщСниС ΠΎΠ± ошибкС с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ для создания ΠΊΠ»ΡŽΡ‡Π° подписи Ρ‡Π΅Ρ€Π΅Π· espsecure.py generate_signing_key .

Π’Π°ΠΆΠ½ΠΎ

ΠšΠ»ΡŽΡ‡ подписи, сгСнСрированный Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ источник случайных чисСл, доступный для ОБ ΠΈ Π΅Π΅ установки Python ( /dev/urandom Π² OSX/Linux ΠΈ CryptGenRandom() Π² Windows). Если этот источник случайных чисСл слаб, Ρ‚ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π±ΡƒΠ΄Π΅Ρ‚ слабым.

Π’Π°ΠΆΠ½ΠΎ

Для производствСнных срСд ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ openssl ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стандартной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

  1. ЗапуститС Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ idf.py , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ сборки Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ с использованиСм esptool.py write_flash .

  1. Когда Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, запуститС ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ввСсти Π΅Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, make Π½Π΅ выполняСт этот шаг) ΠΈ Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это одноразовая ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°, послС этого Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ! .

  2. ЗапуститС idf.py flash , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный ΠΎΠ±Ρ€Π°Π· прилоТСния. ΠžΠ±Ρ€Π°Π· прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ подписан с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π° подписи, созданного Π½Π° шагС 4.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

idf.py flash Π½Π΅ запускаСт Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, Ссли Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°.

  1. Π‘Π±Ρ€ΠΎΡΡŒΡ‚Π΅ ESP32, ΠΈ ΠΎΠ½ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ установили. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Ρ‡ΠΈΠΏΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ провСряСт подпись ΠΎΠ±Ρ€Π°Π·Π° прилоТСния ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ консоли ΠΈΠ· ESP32, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ошибок ΠΈΠ·-Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сборки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡˆΠΈΡ‚Ρ‹ допустимая Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π· прилоТСния. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для прСдотвращСния нСсчастных случаСв Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ систСма Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настроСна.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Если ESP32 сбрасываСтся ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΎΠ½ снова запустит процСсс ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

  1. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°Ρ… ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ для бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Π½Π΅ измСнился Π»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡ бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°), Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π· прилоТСния (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ).

ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

«БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°: одноразовая ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°Β» β€” рСкомСндуСмая конфигурация для производствСнных устройств. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ устройство ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ хранится Π²Π½Π΅ устройства.

Однако Ρ‚Π°ΠΊΠΆΠ΅ доступСн Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Secure Boot: Reflashable. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠ»ΡŽΡ‡Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ для Π½ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹Π΅ дайдТСсты.

Π’ процСссС сборки esp-idf этот 256-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠ»ΡŽΡ‡Π° извлСкаСтся ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π° подписи прилоТСния ECDSA, сгСнСрированного ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (см. шаг Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» Π½ΠΈΠΆΠ΅). ДайдТСст этого Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° SHA-256 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС бСзопасного ΠΊΠ»ΡŽΡ‡Π° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Π² efuse (ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ для схСмы кодирования None ΠΈΠ»ΠΈ усСкаСтся Π΄ΠΎ 192 Π±Π°ΠΉΡ‚ΠΎΠ² для кодирования 3/4). Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ/Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π₯отя это ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π½Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ устройство Π² производствСнной срСдС. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Β«ΠžΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Π°Ρ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°Β» рСкомСндуСтся для производствСнных срСд.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ:

  1. Π’ мСню ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°Β» -> CONFIG_SECURE_BOOT -> CONFIG_SECURE_BOOT_V1_ENABLED -> CONFIG_SECURE_BOOTLOADER_MODE -> Reflashable.

  2. ΠŸΡ€ΠΈ нСобходимости установитС CONFIG_SECURE_BOOTLOADER_KEY_ENCODING Π½Π° основС схСмы кодирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ устройством. Π‘Ρ…Π΅ΠΌΠ° кодирования ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² строкС Features ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ esptool.py ΠΊ Ρ‡ΠΈΠΏΡƒ, Π»ΠΈΠ±ΠΎ Π² строкС Π’Ρ‹Π²ΠΎΠ΄ сводки espefuse.py .

  3. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ подписи, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ дСйствия, описанныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. ΠŸΡƒΡ‚ΡŒ ΠΊ сгСнСрированному ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² мСню Β«Secure Boot ConfigurationΒ».

  4. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ idf.py . Π‘ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для подписи. Π‘ΡƒΠ΄ΡƒΡ‚ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° шагов ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ шагов Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ espefuse.py burn_key secure_boot_v1 path_to/secure-bootloader-key-xxx.bin , которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для записи ΠΊΠ»ΡŽΡ‡Π° Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Π² efuse. (ΠŸΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° этого ΠΊΠ»ΡŽΡ‡Π° β€” ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ процСсс.) Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π±ΠΎΡ€ шагов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ рассчитанным дайдТСстом (сгСнСрированным Π² процСссС сборки).

  5. Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ с шага 6, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π’Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдитС Π·Π° Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΆΡƒΡ€Π½Π°Π»Π° консоли, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² отсутствии ошибок Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

БистСма сборки ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ подписи Ρ‡Π΅Ρ€Π΅Π· espsecure.py generate_signing_key . ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° python-ecdsa, которая, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Python os.urandom() Π² качСствС источника случайных чисСл.

ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π° подписи ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π° (Π°) источнику случайных чисСл Π² систСмС ΠΈ (Π±) ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Для производствСнных устройств ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ подписи ΠΈΠ· систСмы с качСствСнным источником энтропии ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠ΅ доступныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для создания ΠΊΠ»ΡŽΡ‡Π΅ΠΉ EC.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ подписи с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки openssl:

`
openssl ecparam -name prime256v1 -genkey -noout -out my_secure_boot_signing_key.pem
`

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ зависит ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠ»ΡŽΡ‡Π° подписи.

УдалСнная подпись ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Для производствСнных сборок рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр подписи, Π° Π½Π΅ ΠΊΠ»ΡŽΡ‡ подписи Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ сборки (Ρ‡Ρ‚ΠΎ являСтся ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ esp-idf ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки espsecure.py ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для подписи ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² для бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ систСмС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ подпись, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ врСмя сборки». Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ подписи Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² систСмС сборки. Однако ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ скомпилирован Π² Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ (ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π²ΠΎ врСмя ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ OTA).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈΠ· Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°:

 espsecure.py extract_public_key --keyfile PRIVATE_SIGNING_KEY PUBLIC_VERIFICATION_KEY
 

ΠŸΡƒΡ‚ΡŒ ΠΊ общСдоступному ΠΊΠ»ΡŽΡ‡Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ мСню Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ бСзопасный Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ.

ПослС создания ΠΎΠ±Ρ€Π°Π·Π° прилоТСния ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² систСма сборки распСчатаСт этапы подписания с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ espsecure.py:

 espsecure. py sign_data --keyfile PRIVATE_SIGNING_KEY BINARY_FILE
 

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° добавляСт подпись изобраТСния ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ –output , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ подписанный Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

 espsecure.py sign_data --keyfile PRIVATE_SIGNING_KEY --output SIGNED_BINARY_FILE BINARY_FILE
 

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅

  • Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ подписи Π² систСмС с качСствСнным источником энтропии.

  • ВсСгда Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ подписи Π² сСкрСтС. Π£Ρ‚Π΅Ρ‡ΠΊΠ° этого ΠΊΠ»ΡŽΡ‡Π° поставит ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ систСму бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ.

  • НС позволяйтС Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ Π»ΠΈΡ†Π°ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π·Π° ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ аспСктами процСсса Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈΠ»ΠΈ подписи с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ espsecure.py. Оба процСсса уязвимы для Ρ‚Π°ΠΉΠΌΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ‚Π°ΠΊ ΠΏΠΎ сторонним ΠΊΠ°Π½Π°Π»Π°ΠΌ.

  • Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. К Π½ΠΈΠΌ относятся ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π»ΡΡˆ-памяти, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ JTAG, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° BASIC ROM ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа ΠΊ Ρ„Π»ΡΡˆ-памяти Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° UART.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² сочСтании с ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π»ΡΡˆ-памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ локальноС считываниС содСрТимого Ρ„Π»ΡΡˆ-памяти.

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ содСрТат Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ справочныС описания Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… элСмСнтов бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ:

Аппаратная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°) выполняСтся Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ. АппаратноС обСспСчСниС бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ESP32 ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

  1. ГСнСрация случайной ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл.

  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ дайдТСста ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΠ· Ρ„Π»ΡΡˆ-памяти) с использованиСм ΠΊΠ»ΡŽΡ‡Π°, хранящСгося Π² Π±Π»ΠΎΠΊΠ΅ Efuse 2. ΠšΠ»ΡŽΡ‡ Π² Efuse ΠΌΠΎΠΆΠ΅Ρ‚ (ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½) Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΎΡ‚ чтСния/записи, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ доступ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Для получСния ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± этом Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ см. Алгоритм дайдТСста бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°. ДайдТСст ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Efuse ABS_DONE_0 Ρ€Π°Π²Π½ΠΎ , Π° Π½Π΅ (Ρ‚.Π΅. ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ 0).

  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ дайдТСст ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΎΠ±Ρ€Π°Π· Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈΠ· Ρ„Π»ΡΡˆ-памяти), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π² шагС 2, ΠΈ сравнитС Π΅Π³ΠΎ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ рассчитанным дайдТСстом, хранящимся Π² Π±ΡƒΡ„Π΅Ρ€Π΅ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ считываСтся со смСщСния Ρ„Π»ΡΡˆ-памяти 0x0). АппаратноС обСспСчСниС Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сравнСниС true/false, Π½Π΅ дСлая дайдТСст доступным для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚Π° функция доступна Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ записи Efuse ABS_DONE_0.

Алгоритм дайдТСста бСзопасного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°

Начиная с Β«ΠΎΠ±Ρ€Π°Π·Π°Β» Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ дайдТСст Π² качСствС Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ДайдТСст ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Β«Ρ€Π΅Π·ΡŽΠΌΠ΅Β» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ. 9) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ограничСниям, Π° Π½Π΅ криптографичСским ограничСниям.

  1. Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ AES ΠΈΠ· Π±Π»ΠΎΠΊΠ° efuse 2 Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС Π±Π°ΠΉΡ‚ΠΎΠ². ) 9)

  2. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ SHA-512 Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСкста.

Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ дайдТСст содСрТит 192 Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…: 128-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ IV, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт 64-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ дайдТСст SHA-512.

Алгоритм подписи изобраТСния

Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ECDSA, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² RFC 6979.

  • ΠšΡ€ΠΈΠ²Π°Ρ β€” NIST256p (openssl Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΊΡ€ΠΈΠ²ΡƒΡŽ Β«prime256v1Β», ΠΈΠ½ΠΎΠ³Π΄Π° Π΅Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ secp256r1).

  • Π₯эш-функция SHA256.

  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для хранСния, β€” PEM.

  • Подпись изобраТСния ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 68 Π±Π°ΠΉΡ‚ΠΎΠ² β€” 4-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ΅ слово вСрсии (Π² настоящСС врСмя Π½ΡƒΠ»Π΅Π²ΠΎΠ΅), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ 64 Π±Π°ΠΉΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… подписи. Π­Ρ‚ΠΈ 68 Π±Π°ΠΉΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠ±Ρ€Π°Π·Ρƒ прилоТСния ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Π ΡƒΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² систСму сборки esp-idf, поэтому make Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· прилоТСния, Ссли Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ idf. py создаст дайдТСст Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, Ссли для Π½Π΅Π³ΠΎ настроСно menuconfig.

Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт espsecure.py для создания Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… подписСй ΠΈ дайдТСстов.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·:

 espsecure.py sign_data --keyfile ./my_signing_key.pem --output ./image_signed.bin image-unsigned.bin
 

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» β€” это Ρ„Π°ΠΉΠ» PEM, содСрТащий Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ подписи ECDSA.

Для создания дайдТСста Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°:

 espsecure.py дайдТСст_бСзопасный_Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ --keyfile ./securebootkey.bin --output ./bootloader-digest.bin build/bootloader/bootloader.bin
 

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» β€” это 32-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ для устройства.

Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ espsecure.pydigest_secure_bootloader прСдставляСт собой ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΊΠ°ΠΊ дайдТСст, Ρ‚Π°ΠΊ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊ Π½Π΅ΠΌΡƒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ дайдТСст плюс Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π½Π° устройство:

 esptool.py write_flash 0x0 bootloader-digest. bin
 

БСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π»ΡΡˆ-памяти

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π±Π΅Π· ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ Ρ„Π»ΡΡˆ-памяти, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ «врСмя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° врСмя использования», ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТимоС Ρ„Π»ΡΡˆ-памяти подкачиваСтся послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ запуска ΠΎΠ±Ρ€Π°Π·Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вмСстС.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписанного прилоТСния Π±Π΅Π· Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

Π¦Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ†ΠΈΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ схСму подписи прилоТСния, Ρ‡Ρ‚ΠΎ ΠΈ аппаратная Π·Π°Ρ‰ΠΈΡ‚Π°.
boot, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π΅ прСпятствуСт физичСскому обновлСнию Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ устройство ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ΠΎ
ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа ΠΊ сСти, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ² физичСского доступа. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹Π΅ инструкции см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ подписанного прилоТСния.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ, ΠΏΡ€ΠΈ нСобходимости, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ: Ссли этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, подпись автоматичСски провСряСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° API-интСрфСйсы esp_ota_ops.h ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ OTA. Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° аппаратная бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ всСгда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½. Если аппаратная бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ обСспСчиваСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ сСтСвых Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², прСдотвращая ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΡƒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ OTA.

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅: Ссли этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ скомпилирован с ΠΊΠΎΠ΄ΠΎΠΌ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ подписано ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° аппаратная бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ всСгда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½. Если аппаратная бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сам ΠΏΠΎ сСбС Π½Π΅ обСспСчиваСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСзопасности, поэтому Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ захотят ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ.

Как Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ подписанного прилоТСния

  1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ мСню ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° -> Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ бСзопасности -> Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT

  2. МоТно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Β«Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ провСряСт подписи ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

  3. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Β«ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ врСмя сборки» Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Β«Π’Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ подписанныС ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ процСсса сборки. Π€Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Β«Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π΅ подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для подписи ΠΎΠ±Ρ€Π°Π·Π°.

  4. Если Π²Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ врСмя сборки», Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ввСсти ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ подписанных ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π² Β«ΠšΠ»ΡŽΡ‡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ».
    Π’ этом случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ подписи, слСдуя инструкциям Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° подписи бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ»; ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ подписанноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ сгСнСрированы Π² соотвСтствии с инструкциями Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ подписаниС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΡ‚Π»Π°Π΄ΠΊΠ° JTAG

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° бСзопасная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° JTAG ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· eFuse. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π΄Π΅Π»Π°Π΅Ρ‚ это ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± использовании ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ JTAG с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ подписанного прилоТСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ JTAG с ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π»ΡΡˆ-памяти ΠΈΠ»ΠΈ бСзопасной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

usb — Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ„Π»ΡΡˆ-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ BIOS/UEFI с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ диска

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° этот вопрос ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ диски ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…. Π­Ρ‚ΠΎ Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π― сдСлал это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ QEMU-KVM. Если Ρƒ вас ΡƒΠΆΠ΅ установлСна β€‹β€‹Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина QEMU-KVM Π½Π° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС Ubuntu ΠΈΠ»ΠΈ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Ubuntu, способный Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ QEMU-KVM, Ρ‚ΠΎ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ТСстких дисков ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина (Π’Πœ) ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для управлСния ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ установками Ubuntu Π½Π° USB. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я Π½Π°ΡΡ‚Ρ€ΠΎΡŽ Π΅Π³ΠΎ, я ΠΌΠΎΠ³Ρƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ установку USB Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΅, Π½Π΅ закрывая свой основной Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол Ubuntu.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования

  1. QEMU-KVM ДиспСтчСр Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ГрафичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ubuntu 20.04.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° установит всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹:

 sudo apt install --install-recommends virt-manager
 
  1. ΠŸΡƒΡΡ‚ΠΎΠΉ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ, достаточно большой для ΠΏΠΎΠ»Π½ΠΎΠΉ установки Ubuntu
    ΠΈ достаточно мСста для хранСния Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…
  2. ISO-ΠΎΠ±Ρ€Π°Π· Ubuntu 20.04, хранящийся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π³Π΄Π΅ установлСн QEMU-KVM.
    Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Найти имя USB-устройства

Нам Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ имя устройства USB-накопитСля. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Gnome Disks :

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΠΎΠΉ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ называСтся /dev/sdc . Π’Π°Ρˆ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Π­Ρ‚Π° информация понадобится Π²Π°ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС.

Π Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ всС Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π»Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ½ΠΎΠΏΠΊΡƒ Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² Π΅Π΅ Π² Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ.

Π’Π°ΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС USB-Ρ€Π°Π·Π΄Π΅Π»Ρ‹ USB.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ установки Ubuntu Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ доступа ΠΊ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ для использования USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅ΠΉ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²Π°ΠΌ прСдлагаСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ТСсткий диск (Ρ„Π°ΠΉΠ»), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ установлСна β€‹β€‹ΠžΠ‘. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прямой доступ ΠΊ USB ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Ubuntu. Для этого трСбуСтся новая настройка Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ BIOS, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ UEFI.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ДиспСтчСр Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π€Π°ΠΉΠ» > Новая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина :

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ubuntu 20. 04.2.0 Desktop ISO. Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π’ΠΏΠ΅Ρ€Π΅Π΄Β» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ экрану:

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΠ±Π·ΠΎΡ€Π° ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ISO. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠΌ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ имя ОБ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ устанавливаСтС, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ количСство ЦП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ для этой Π’Πœ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ самоС Π²Π°ΠΆΠ½ΠΎΠ΅. Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ создайтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя вашСго USB-устройства:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρƒ мСня /dev/sdc , Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Если Π²Ρ‹ сдСлали это Ρ€Π°Π½ΡŒΡˆΠ΅, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Диск «/dev/sdc» ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ гостями… . НаТмитС Π”Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти диски.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Настройка ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ установкой :

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ BIOS ΠΈΠ»ΠΈ UEFI:

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ BIOS, Ссли ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ UEFI создаваСмого USB-накопитСля, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ всС описанныС Π²Ρ‹ΡˆΠ΅ шаги ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ UEFI для Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ» Π²Π½ΠΈΠ·Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти измСнСния.

Когда всС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΠ°Ρ‡Π°Ρ‚ΡŒ установку Π²Π²Π΅Ρ€Ρ…Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ запустит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ загрузится с ISO-ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ BIOS. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ этот экран:

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ экран, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈΡΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ UEFI. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ экран с надписью ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Ubuntu Π±Π΅Π· установки :

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Β«ΠŸΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ UbuntuΒ». Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ внСсти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния послС установки. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол Ubuntu со Π·Π½Π°Ρ‡ΠΊΠΎΠΌ Β«Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ UbuntuΒ».

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π―Π·Ρ‹ΠΊ, ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ установка, Установка Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ стороны… .

ΠŸΡ€ΠΈ установкС Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ‚Π΅Π³ Β«Π‘Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ диск ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ UbuntuΒ», Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΒ». НаТмитС Β«Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LVM с Π½ΠΎΠ²ΠΎΠΉ установкой UbuntuΒ», Π° Π·Π°Ρ‚Π΅ΠΌ Β«Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ установку Ubuntu для бСзопасности».

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ бСзопасности. ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ пустоС мСсто Π½Π° дискС.

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ страну, Π·Π°Ρ‚Π΅ΠΌ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ тСстированиС , Ρ‡Ρ‚ΠΎΠ±Ρ‹ внСсти измСнСния Π² USB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ загруТался Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… BIOS ΠΈ UEFI.

Π’ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Ubuntu, всС Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ· установочного ISO, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «Диски» ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ Π½Π° Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° имя устройства, /dev/vda . Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ /dev/sdc , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ смотрим Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ USB ΠΈΠ· Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π Π°Π·Π΄Π΅Π»Π° 1 ΠΈ Π Π°Π·Π΄Π΅Π»Π° 5, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 537 ΠœΠ‘ ΠΈ 767 ΠœΠ‘ соотвСтствСнно. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ Π½Π°ΠΉΡ‚ΠΈ эти Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅.

Π‘ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ эти Π΄Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π°, Π½Π°ΠΆΠ°Π² Π½Π° Ρ‡Π΅Ρ€Π½Ρ‹Π΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ² ΠΈΡ… Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Π€Π°ΠΉΠ»Ρ‹Β» (Ρ‚Π°ΠΊΠΆΠ΅ извСстноС ΠΊΠ°ΠΊ Nautilus) Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ +Π”Ρ€ΡƒΠ³ΠΈΠ΅ располоТСния > ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ > cdrom . Π­Ρ‚ΠΎ установочный ISO-ΠΎΠ±Ρ€Π°Π· Ubuntu, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈΡΡŒ.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ экзСмпляры прилоТСния Β«Π€Π°ΠΉΠ»Ρ‹Β» Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ + Π”Ρ€ΡƒΠ³ΠΈΠ΅ располоТСния > Π’ΠΎΠΌ 537 ΠœΠ‘. Π­Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π» 1.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ пСрСмСститС Π΄Π²Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΎΠΊΠ½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… ΠΎΠ±Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ boot ΠΈ EFI с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска Π² Π Π°Π·Π΄Π΅Π» 1 :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ +Π”Ρ€ΡƒΠ³ΠΈΠ΅ располоТСния > 767 ОбъСм ΠœΠ‘ > grub Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΠΎΠΊΠ½Π΅ Β«Π€Π°ΠΉΠ»Ρ‹Β».

И Π² +Π”Ρ€ΡƒΠ³ΠΈΠ΅ мСста > 537 ΠœΠ‘ Volume > boot > grub Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΎΠΊΠ½Π΅ Files, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

ea5c-487c-a14a-90b6edcea385/grub β€” /media/ubuntu/4281-A2FB/boot/grub , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅.

Π‘Π½ΠΎΠ²Π° ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ диски прилоТСния ΠΈ Ρ€Π°Π·ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» 1 ΠΈ Ρ€Π°Π·Π΄Π΅Π» 5. Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ дисков.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС ΠΈ смонтируйтС Ρ€Π°Π·Π΄Π΅Π» 1 ΠΈΠ· /mnt ΠΈ установитС grub с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠ°Π½Π΄:

 sudo mount /dev/vda1 /mnt
sudo grub-install --boot-directory=/mnt/boot/dev/vda
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ здСсь ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ USB-Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ /dev/vda , Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» β€” /dev/vda1 .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ понадобится ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для sudo ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Live install.

Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ. НаТмитС Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ появлСнии запроса.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ настроСк Π’Πœ, ΠΊΠΎΠ³Π΄Π° Π’Πœ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Π° Π·Π°Ρ‚Π΅ΠΌ SATA CDROM Π½Π° Π»Π΅Π²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ:

Π£Π΄Π°Π»ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π· ISO ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния вступили Π² силу. ЗапуститС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»Π°ΡΡŒ с USB-накопитСля.

ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ экран вмСсто запроса ΠΏΠ°Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„Ρ€Π°Π·Ρ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° я Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽ USB с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅: