Почему у тебя всегда получается Big Ball of Mud?
Программирование - это чистая логика, как обычно считается, и курсов/книг "логика для программистов" немало...
Да, но ведь логика -- это по сути синтаксис, формальные правила композиции и вывода, и всё.
А онтология, смысл, семантика, аксиомы правильного конструирования кода -- это теория, которая превращает это всё в знание.
Логика/код - это инструмент, а вот теория - это построение карты системы.
Например, SSL/TLS из-за отсутствия формальной теоретической модели внутри спецификации быстро превратился в big ball of mud и кучу приляпок.
Да, так-то всё логично и стройно :) Чёткое разделение на слои (Record, Handshake, Alert), криптографические примитивы (симметричное шифрование, асимметрика, хеши) и строгие синтаксические правила обмена сообщениями.
А вот сверху единой модели безопасности (например, формальной композиционной модели, доказывающей стойкость протокола в целом) нету. Были лишь интуитивные допущения, что дескать "если каждый кусок криптостойкий, то и всё вместе будет хорошо". Ага, ну с какой стати-то, если это не категории Клейсли, не Йонеда, особенно если не топос со своим внутренним языком...
POODLE, BEAST, CRIME, Heartbleed -- это не просто "стандартные" баги типовой реализации, это прежде всего следствие того, что спецификация не запрещала опасные взаимодействия (сжатие + шифрование, повторное использование IV, блоковые режимы без аутентификации...) по причинам из предыдущего абзаца. В результате каждый патч тупо добавлял новый флаг/состояние без инвариантов, очередное расширение или хаотичную обратную совместимость (от SSLv2 до TLS 1.3) -- по сути сплошные приляпки поверх логических слоёв.
И только в TLS 1.3 подход наконец изменился: разработчики взяли за основу формальную модель (модель каналов безопасности с явным разделением ключей, обязательное AEAD-шифрование, исключили старые режимы...).
База: сперва теория (принципы), потом спецификации на её основе.
Без слоя теории "поверх" любая логика (код, спеки, software design, system design...) всегда деградирует в набор частных костылей и приляпок.
Post #2642
687
- ✍ 31
- ❤ 8
- 👍 3
- 💯 1