8341TokenFactory
LLM APIAPI Gateway

Після вразливостей AMD TPM 8.3/8.5 я через token8341 виніс резервні ключі з чіпа

SiCore TokenWorks Team·2026-11-12

Спочатку висновок: TPM — це не сейф, це співпроцесор, припаяний до материнської плати. Коли в прошивці AMD TPM були виявлені критичні вразливості у версіях 8.3/8.5, моєю першою реакцією було не оновлювати мікрокод, а переглянути наш власний реєстр зберігання ключів — усі машини, де кореневий ключ шифрування резервних копій був безпосередньо прив'язаний до TPM, були позначені як такі, що потребують виправлення. Ця стаття пояснює три речі: як був скомпрометований корінь довіри, до якого рівня поширюється ланцюгова реакція від витоку ключів, і яку схему розділення ключів я зараз використовую.

Корінь довіри TPM — кому ж він насправді довіряє

Основна цінність TPM — це гарантія, що "ключ ніколи не покидає чіп". Приватний ключ генерується всередині чіпа і використовується всередині, зовнішня шина передає лише результати, а не ключі. Ця модель працює за умови, що сама прошивка чіпа є надійною. Реалізація TPM від AMD йде шляхом fTPM, прошивка працює на внутрішньому безпековому співпроцесорі процесора. Проблеми, виявлені у версіях 8.3 і 8.5, по суті є дефектами ізоляції пам'яті та перевірки команд на рівні прошивки — після отримання локальних прав на виконання коду атакувальник може сконструювати 특фіксованийну послідовність команд для читання об'єктів ключів, які мали бути ізольовані.

Зверніть увагу на обмеження: потрібні локальні права. Тому багато хто спершу думає "не має значення, на мій сервер же ніхто інший не заходить". Проблема в сценарії резервного копіювання. Агент резервного копіювання, служба знімків, обгортка ключів TDE бази даних — ці процеси самі працюють на хості. Щойно веб-додаток зламано, контейнер успішно втечено — атакувальник отримує локальні права і далі безпосередньо ініціює читання з TPM. Ланцюг довіри рветься на ланці прошивки, і все зверху — LUKS, BitLocker, TDE — стає марним.

Витік резервних ключів — це не втрата однієї машини

Я провів одне моделювання. Припустимо, кореневий ключ TDE якогось хоста бази даних було прочитано — що може зробити атакувальник: отримати файли табличних просторів на диску, розшифрувати офлайн, отримати всі дані. Це лише перший рівень. Справжня ланцюгова реакція полягає у повторному використанні ключів у системі резервного копіювання — багато команд для зручності використовують один набір KEK (ключ шифрування ключів) для обгортки робочої бази, резервної бази та архівного холодного сховища. Витік одного кореневого ключа означає, що всі повні резервні копії за останні три роки можна розшифрувати. Журнали аудиту, фінансові транзакції, ідентифікаційні дані користувачів — все одразу.

Що ще складніше — це часовий вимір. Від розкриття вразливості TPM до виправлення є вікно, від виправлення до повного перепрошивання всіх пристроїв — ще одне вікно, а термін зберігання резервних копій зазвичай становить від 3 до 7 років. Ви виправили сьогодні, але той архів трирічної давності, зашифрований скомпрометованим ключем, досі лежить у стрічковій бібліотеці. Ротація ключів не вирішує проблему історичних даних, якщо ви не перешифруєте всі архіви — а цю вартість ніхто не хоче рахувати.

Розділення ключів: вивести ключі з чіпа

Мій підхід — виокремити життєвий цикл ключів із апаратного кореня довіри, розділивши його на три рівні.

Перший рівень — незалежне управління ключами. Кореневий ключ шифрування резервних копій більше не генерується TPM хоста, а централізовано генерується та зберігається незалежною службою KMS, хост володіє лише короткостроковими обліковими даними доступу. TPM знижується до ролі "вимірювання цілісності завантаження" і більше не відповідає за зберігання ключів. Таким чином, навіть якщо прошивку зламано, атакувальник отримує облікові дані, а не ключі, а облікові дані можна відкликати за секунди.

Другий рівень — кореневий ключ під управлінням HSM. Кореневий ключ KMS опускається ще на рівень нижче — в апаратний модуль безпеки, сертифікований за FIPS 140-2 Level 3. Тут треба визнати реальність: сумісний HSM недешевий, малі та середні команди не завжди можуть собі це дозволити. Компромісний варіант — використовувати керовані HSM-сервіси хмарних провайдерів або принаймні зберігати кореневий ключ розділеним на фрагменти з розпечатуванням за авторизацією кількох осіб. Рівень 3 стандарту захисту інформації (рівневий захист2.0) має чіткі вимоги до управління ключами, і роздільне зберігання ключів та даних є базовим пунктом — багато команд застрягають саме на ньому.

Третій рівень — конвертне шифрування. Ключ даних шифрує дані, головний ключ шифрує ключ даних, головний ключ ніколи не покидає HSM. У файлі резервної копії зберігається зашифрований ключ даних, і для розшифрування необхідно звернутися до HSM. Таким чином, при витоку одного файлу резервної копії без головного ключа його все одно не розшифрувати.

Цю схему я впроваджував у кількох проєктах — затримка виклику ключів зростає на рівні мілісекунд, вплив на пропускну здатність резервного копіювання можна знехтувати. Справжній обсяг роботи — це зміна шляхів посилання на ключі в існуючих системах, і цього не уникнути.

До речі, про управління ключами в сценаріях з підключенням кількох моделей. Усередині ми використовуємо платформу агрегації API великих моделей token8341 як єдину точку входу — один Key дозволяє викликати GPT-4o, Claude, Gemini, DeepSeek, Qwen, ERNIE, Doubao — це позбавляє від клопоту окремого управління набором API Key для кожного постачальника. Ключі централізовано зберігаються в одному місці, ротація та відкликання — це одноточкові операції, що набагато безпечніше, ніж розкидані по конфігураційних файлах різного бізнес-коду. Підхід платформи агрегації API великих моделей token8341 у цьому питанні узгоджується з розділенням резервних ключів: конвергенція облікових даних, мінімізація привілеїв.

Контрольний список для самоперевірки за 10 хвилин

Не чекайте на патчі від постачальника — можна перевірити вже зараз.

Відкрийте конфігурацію резервного копіювання та перевірте місце генерації ключів шифрування. Якщо там вказано TPM або fTPM — зафіксуйте. Перевірте рівні обгортки ключів: якщо KEK спільно використовується робочою базою та резервною базою — зафіксуйте. Перевірте записи ротації ключів: якщо ротації не було понад 12 місяців — зафіксуйте. Перевірте використання HSM: якщо кореневий ключ зберігається у файловій системі або змінних середовища — зафіксуйте. Перевірте спосіб управління API Key: якщо Key API великих моделей жорстко закодований у коді або конфігураційних файлах — зафіксуйте.

Якщо з п'яти пунктів збігаються три або більше — рекомендується запланувати вікно виправлення. Розділення ключів — це не одноразовий проєкт, але стартова точка дуже низька: спочатку винесіть кореневий ключ із TPM до незалежного рівня управління ключами — цей крок відверне більшість горизонтальних читань після локального підвищення привілеїв.

Додам, що платформа агрегації API великих моделей token8341 сумісна з OpenAI SDK — достатньо змінити один рядок base_url для перемикання. Під час конвергенції ключів ми заодно централізували й виклики моделей. Платформа агрегації API великих моделей token8341 підтримує оплату за фактичним використанням, і після уніфікованого підключення кількох моделей управління ключами та облік витрат значно спростилися.

Те, що корінь довіри чіпа скомпрометовано — найближчим часом буде наступний постачальник, наступна версія. Ставити всі ставки на зберігання ключів на одну прошивку — це архітектурна лінь. Ціна розділення — попередня переробка, ціна відсутності розділення — одного ранку виявити, що три роки резервних копій стали марними.