Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
skitter-creek-bath-salts — DRAM Scrambling Research
Это проект Кристофера Домаса (Christopher Domas, xoreaxeaxeax) — исследователя, известного работами по внутренней архитектуре x86 CPU (SINKHOLE, Dawson, и др.).
Суть техники
Репозиторий посвящён DRAM scrambling — механизму скремблирования (перемешивания/шифрования) данных на шине памяти между интегрированным контроллером памяти (IMC) и чипами DRAM.
Что происходит на физическом уровне
Код:
CPU Core → L1/L2/L3 → Memory Controller (IMC) → [SCRAMBLE] → DRAM chips
↑
XOR с паттерном,
зависящим от адреса
и внутреннего ключа
Современные CPU (Intel, AMD) не записывают данные в DRAM в открытом виде даже когда TME/SME/MKTME формально отключены. Контроллер памяти применяет XOR-скремблирование с паттерном, который:
генерируется при загрузке (boot);
хранится во внутренних регистрах CPU, недоступных программно;
зависит от физического адреса (address-dependent scrambling);
предназначен для обеспечения целостности сигнала (EMI, DC balance, crosstalk reduction).
Почему это важно для безопасности
Cold Boot Attack — при физическом извлечении DIMM и чтении содержимого вы получаете не plaintext, а скремблированные данные. Без знания алгоритма и ключа извлечь секреты (ключи шифрования, пароли) невозможно.
Reverse scrambling — если алгоритм и ключ восстановлены, cold boot capture становится тривиально дешифруемым.
Связь с TME/MKTME — скремблирование на уровне IMC является нижним слоем под TME. Понимание одного помогает понять другое.
Что конкретно делает репозиторий
Реверс-инжиниринг алгоритма скремблирования для конкретных моделей CPU (Intel/AMD);
Извлечение или восстановление ключа скремблирования через side-channel или анализ паттернов;
Демонстрация «разблокировки» — восстановление plaintext из скремблированного дампа DRAM;
Инструменты для анализа битовых паттернов в дампах памяти.
Как это работает на практике (лабораторный контекст)
Предпосылки
Физический доступ к целевой машине;
Возможность получить дамп DRAM (cold boot, DMA через PCIe, JTAG, или специализированный hardware);
Знание модели CPU для определения конкретного алгоритма скремблирования.
Общий workflow
Код:
1. Получить raw-дамп DRAM (например, cold boot → DIMM reader)
2. Определить модель CPU → выбрать алгоритм скремблирования
3. Восстановить ключ скремблирования:
- через known-plaintext (например, нулевые страницы,
известные структуры BIOS/UEFI);
- через анализ паттернов (LFSR, XOR-маски);
- через side-channel на самом CPU.
4. Применить обратное скремблирование (de-scramble) к дампу
5. Анализировать восстановленный plaintext
Пример: known-plaintext attack на скремблирование
Если в DRAM заведомо есть region с нулями (например, неиспользуемая память, заполненная 0x00), то:
Физическая защита — tamper-evident seals, locked server rooms;
Memory scrubbing — затирание памяти при выключении/перезагрузке;
ECC + patrol scrub — не защищает от cold boot напрямую, но усложняет анализ.
Обнаружение и журналирование
Мониторинг физических событий (chassis intrusion sensors);
Аудит DMA-доступов (IOMMU/VT-d logging);
Контроль загрузки (Secure Boot attestation, TPM PCR values);
Обнаружение аномальных паттернов доступа к памяти через performance counters.
Итого
Это исследовательский проект, демонстрирующий, что DRAM scrambling — не является криптографической защитой, а лишь механизмом целостности сигнала, который при понимании алгоритма тривиально обращается. Для реальной защиты памяти нужна полноценная криптография (TME/MKTME/SEV) с ключами, не покидающими CPU.
Зачем производители CPU применяют DRAM scrambling
Изначальная цель — не безопасность, а целостность сигнала на шине памяти:
EMI reduction — скремблирование устраняет длинные последовательности одинаковых битов (all-0 или all-1), которые создают узкополосные излучения и мешают соседним линиям.
DC balance — выравнивает соотношение единиц и нулей, предотвращая деградацию сигнала на длинных трассах.
Crosstalk mitigation — рандомизация паттернов снижает перекрёстные помехи между линиями данных.
Row hammer mitigation (частично) — усложняет предсказуемость битовых паттернов, что немного затрудняет целенаправленный row hammer.
Это побочный эффект инженерной оптимизации, а не криптографическая защита.
────────────────────
Что можно сделать, понимая и обращая DRAM scrambling
1. Cold Boot Attack (извлечение секретов из памяти)
Сценарий: физический доступ к выключенной/замороженной машине.
Код:
1. Охладить DIMM (спрей, жидкий азот) → данные живут секунды/минуты
2. Извлечь DIMM или загрузиться с внешнего носителя
3. Считать raw-содержимое DRAM
4. Применить de-scramble с восстановленным ключом
5. Извлечь: ключи шифрования диска, сессионные токены,
пароли из кэша, ключи TLS, содержимое процессов
Без понимания scrambling — вы получаете мусор. С пониманием — plaintext.
2. Обход «защиты» при отсутствии TME/MKTME
На многих системах (особенно десктопных, embedded, IoT) Total Memory Encryption отключена или отсутствует. Единственный барьер между атакующим и plaintext в DRAM — это scrambling. Если он обращён, барьера нет.
3. DMA-атаки через PCIe / Thunderbolt
Код:
Атакующее устройство → PCIe DMA → чтение физической памяти
↓
скремблированные данные
↓
de-scramble (если алгоритм известен)
↓
plaintext: ключи, пароли, данные
IOMMU (VT-d / AMD-Vi) может блокировать DMA, но если он отключён или сконфигурирован некорректно — scrambling остаётся единственной «защитой».
4. Forensics и incident response
Легитимное применение: извлечение данных из конфискованного/изъятого оборудования для криминалистического анализа.
Восстановление ключей BitLocker/LUKS/FileVault из дампа памяти, если машина была в состоянии suspend-to-RAM.
5. Исследование микроархитектуры CPU
Понимание scrambling раскрывает внутреннюю структуру IMC (Integrated Memory Controller).
Помогает в реверс-инжиниринге TME/MKTME — как ключ шифрования взаимодействует со scrambling-слоем.
Даёт insight в address translation на уровне контроллера памяти.
6. Row Hammer и fault injection
Знание точного битового расположения в DRAM (после de-scramble) позволяет точно нацеливать row hammer на конкретные биты.
Без de-scramble вы не знаете, какой физический бит соответствует какому логическому значению.
7. Verification и testing
Производители памяти и CPU используют de-scramble для верификации корректности записи/чтения на уровне DRAM.
Тестирование ECC, patrol scrub, memory training.
────────────────────
Сводка: что даёт обращение scrambling
| Задача | Без de-scramble | С de-scramble |
|--------|----------------|---------------|
| Cold boot → извлечение ключей | Мусор | Plaintext |
| DMA-атака → чтение памяти | Мусор | Plaintext |
| Row hammer → targeted flip | Слепо | Точно |
| Forensics дампа памяти | Невозможно | Возможно |
| Исследование IMC/TME | Чёрный ящик | Понимание |
────────────────────
Ключевой вывод
DRAM scrambling — это не защита, а инженерный артефакт. Его обращение превращает физический доступ к памяти в полный доступ к данным. Для реальной защиты нужна аппаратная криптография памяти (Intel TME/MKTME, AMD SME/SEV-SNP), где ключ генерируется внутри CPU и никогда не появляется на шине в открытом виде.