avatar
Миша пишет код
@misha_writes_code
26.02.2026 15:55
Провел пару про кэши во вторник!

https://youtu.be/Qff61KxVCk8

Не очень легко она мне далась. Во-первых, материала много и хочется рассказать самое-самое интересное, но при этом сделать связный рассказ, а не просто накидать набор фанфэктов. Во-вторых, я обновил hyprland и у меня как всегда задеприкейтилась половина конфига, а пока я его чинил, то доломал окончательно. Поэтому ночь не спал - одной рукой чинил комп, другой смотрел доклады про кэши, уязвимости и все такое.

Но несмотря на все это пара получилась интересной: с наглядными примерами и я даже не так жестко тупил (только воду пролил)! Да и студенты вопросы задавали и подсказывали)

Классный фанфэкт с пары про side channel через кэш процессора:
Можно сделать так, чтобы одна часть программы читала из памяти некоторый символ, а другая часть программы угадывала, что было прочитано.

Как это работает:
Возьмем массив чаров размером 256x4096 и будем считать, что в массиве 256 элементов, разделенных дырками по 4096 байт.

Перед чтением удаляем массив из кэша (`_mm_clflush`) и дальше читаем какой-то элемент из 256.

Дальше, чтобы угадать, нужно заново пройтись по всем элементам массива и замерить, сколько времени потребуется на чтение каждого. Самый быстро прочитанный элемент и должен быть тем, который уже читали до этого, посколько должен попасть в кэш.

Большие дырки в 4096 байт нужны для того, чтобы при чтении одного элемента не загрузились кэшлинии, содержащие другие элементы

(на картинке время чтения каждого элемента, попробуйте угадать, какой был загадан)

Поиграть с этим можно вот тут:
https://godbolt.org/z/nYdzYz65P

Данный side channel - часть уязвимости spectre. Исходное описание и код можно прочитать вот тут:

https://spectreattack.com/spectre.pdf

Также другие материалы по теме:
https://www.youtube.com/watch?v=_f7O3IfIR2k
https://www.youtube.com/watch?v=ehNkhmEg0bw
https://habr.com/ru/companies/skbkontur/articles/740564/
https://www.youtube.com/watch?v=bNAPVxvJPds
🔥 21
👍 2
🗿 2
6 7 779

Обсуждение 6

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram