TGViewer
Go Update Go Update @go_update · 3.23K subscribers
Post #44 3.02K
❄️ runtime/secret: add new package: о тех кто застрял в лимбе.

Как часто вы зануляете память? Подозреваю, что ответ большинства Go разработчиков будет где-то между "никогда" и "зачем?". И действительно, в большинстве приложений такая задача никогда не появляется. Однако когда речь заходит о криптографии, этот вопрос резко становится важным, так как очистка ключей из памяти есть обязательное условие Perfect forward secrecy (совершенной прямой секретности).

И тут встает второй вопрос: а как это делать правильно? Короткий ответ: никак. Длинный ответ: зануление вручную не всегда помогает, т.к. компилятор имеет право переносить переменные из хипа в стек и обратно как посчитает нужным. А стек, при достижении порога, копируется в новое место, оставляя за собой кусок памяти который когда-то, возможно, будет перезаписан чем-то новым.

Джейсон Доненфельд (автор протокола WireGuard VPN и его реализации, как минимум, на C и Go) поднял эту проблему и вариант решения еще в 2017ом году, однако на обсуждение деталей ушло аж 4 года, перед принятием предложения в октябре 2021го. Само обсуждение интересно тем, что в нем не раз и не два поднимается вопрос об особенностях зачистки памяти в языках со автоматической сборкой мусора и количестве изменений которые необходимо сделать в рантайм для поддержки подобного.

Тем временем, на дворе ноябрь 2023го. И с момента принятия предложения по нему не было никакой работы. Такое впечатление, что про само предложение забыли, либо сложность его реализации перекрывает любые бенефиты. Однако отозвать предложение тоже нельзя, ибо противоречий к его реализации нет. Вот и получается, что вроде и приняли, а реализовывать его никто не хочет (или не может). Застряло в лимбе.

А какие вы знаете предложения которые находятся в похожей ситуации?
GitHub runtime/secret: add new package · Issue #21865 · golang/go Final API is here: #21865 (comment) Forward secrecy is usually only a thing if it's possible to ensure keys aren't actually in memory anymore. Other security properties, too, often require ...
  • 🤯 18
  • 👍 8
  • 😁 3
More from @go_update
  1. Aug 22, 2026Об изоляции LLM Да, это ещё один пост про работу с Codex/Claude/GLM/Qwen/DeepSeek и прочая…
  2. Aug 11, 2026И вот эти два минуса выглядят нерешенными (на данный момент времени). Можно ли их решить в…
  3. Aug 11, 2026🎂 Вечерний пост о том, что сегодня мне исполнилось 34. Прошёл еще один год, а значит врем…
  4. Jul 13, 2026📝 testing: allow examples with any signature Небольшое «Quality of Life» предложение. Сут…
  5. May 14, 2026📝 net/http/httptest: synctest support Я уже писал про пакет synctest и его возможности. Э…
  6. May 13, 2026Я редко пишу сюда о вещах которые не относятся к Go, но тут у меня появилась хорошая стать…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →