Если вы интересуетесь программированием, то мир шифрования может отбить у вас всякую охоту этим заниматься.
Вы узнали новый способ обмена ключами? Но порою лучше использовать протоколы 1970-х. По крайней мере, в этом случае можно быть уверенным, что они действительно работают! Пришел в голову классный способ генерирования случайных чисел? Оно того не стоит. И не надо так закатывать глаза. Всякая новая идея — очередной повод ее покритиковать. Никто не поверит в то, что ваша работа выполнена безупречно. Даже если все сделано идеально, найдется то, кто все равно обвинит вас в сотрудничестве с ЦРУ.
Чистка кода способна свести с ума. Путь от начала аудита до обнаружения ошибки колоссален. Даже если криптографический мир на вашей стороне, как в случае с Signal, найдется бесчисленное количество вариантов дизайна и компромиссов с пользовательскими ожиданиями, которые сведут на нет все усилия. Ничто не совершенно. Тогда какая разница, как тщательно вы проверяете свой код?
Но все таки аудит кода имеет значение. В противном случае, если игнорировать эту необходимость полностью, произойдет то, что случилось с Confide.
Этот мессенджер уже несколько лет предлагает самоликвидирующиеся сообщения, набирая популярность на фоне слухов о том, что сотрудники Белого дома используют его для обмена сплетнями о Трампе. Но приложение никогда не проверялось сторонними специалистами в области криптографии по той простой причине, что их никогда и не приглашали для проверки кода. Когда же компания аудита безопасности IOActive изучила код, выяснилось, что ряд критических уязвимостей существуют и не исправлены уже в течение трех лет.
Но даже учитывая эту новость, трудно понять, насколько это плохо. Постоянно случаются какие-то ошибки. Но важен не сам факт наличия ошибки, а то как быстро ее находят и исправляют. Три года — приличный срок, и, обнаружение такого количества ошибок практически в самом начале аудита говорит о том, что отсутствие проверки не давало возможности выявить и куда боле серьезные ошибки. Если бы кому-то понадобилось заняться конкретным пользователем Confide — например, при расследовании утечек в ФБР — эти ошибки могли бы иметь очень серьезные последствия.
Урок достаточно прост: аудит очень важен. И в следующий раз, когда вы увидите специалистов в области шифрования, которые рвут на себе волосы из-за приложения для обмена сообщениями, не прошедшего аудит, вспомните эту заметку.