Я вот сейчас чужой код ревьюил, хотел сказать, что при скачивании по https проверка чексумм не нужна, потому что https гарантирует integrity.
А потом я задумался о том, что находится с той стороны https, и понял, что нет, таки нужна.
Причина простая: больше 50% вероятность, что где-то там, между SSL акселератором/прокси/ингрессом и бэкэндом http. И память, и диски, и чексуммы данных во всём этом никак и ничем не защищены (окей, окей, ip чексуммы, которые вообще-то не проверяются на localhost'е).
Чексумма, посчитанная при сборке артефакта, служит финальной проверкой для данных во всей цепочке передачи артефакта из системы сборки в хранилище, холодное/долгосрочное хранение на (non-)spinning rust, трансферы по SAS/SATA, возможный http между несколькими серверами и т.д. У всех у них микроскопическая вероятность, что их чексуммы проскочат, но как только одна подсистема пропустила испорченные данные, все последующие этому верят и "защищают" чексуммами уже битые данные, то есть вероятности складываются. И чем более сложная система с той стороны, тем больше этих вероятностей.
Ответ на вопрос из заголовка: файл не может побиться при передаче по https, но может побиться ДО передачи по https, так что проверяйте чексуммы, иначе могут быть странные сюрпризы.
А потом я задумался о том, что находится с той стороны https, и понял, что нет, таки нужна.
Причина простая: больше 50% вероятность, что где-то там, между SSL акселератором/прокси/ингрессом и бэкэндом http. И память, и диски, и чексуммы данных во всём этом никак и ничем не защищены (окей, окей, ip чексуммы, которые вообще-то не проверяются на localhost'е).
Чексумма, посчитанная при сборке артефакта, служит финальной проверкой для данных во всей цепочке передачи артефакта из системы сборки в хранилище, холодное/долгосрочное хранение на (non-)spinning rust, трансферы по SAS/SATA, возможный http между несколькими серверами и т.д. У всех у них микроскопическая вероятность, что их чексуммы проскочат, но как только одна подсистема пропустила испорченные данные, все последующие этому верят и "защищают" чексуммами уже битые данные, то есть вероятности складываются. И чем более сложная система с той стороны, тем больше этих вероятностей.
Ответ на вопрос из заголовка: файл не может побиться при передаче по https, но может побиться ДО передачи по https, так что проверяйте чексуммы, иначе могут быть странные сюрпризы.
no subject
Date: 2024-02-25 12:30 pm (UTC)Мудрый подход. Логично.
no subject
Date: 2024-02-26 10:17 am (UTC)Опыт боевого применения https поверх мобильных сетей говорит, что побиться может всё что угодно, как угодно и даже сколь угодно сильно. (Теоретически нет, но в теории и разницы между теорией и практикой нет, а на практике есть.)
Так что да, end-to-end чексуммы, а лучше — end-to-end криптоподписи, рулят.
no subject
Date: 2024-02-26 01:53 pm (UTC)no subject
Date: 2024-02-26 02:33 pm (UTC)Я, увы, не держал свечку в том месте, где должна проверяться целостность https. Но ниже по стеку json-парсер ломался и отладочный вывод перед ним показывал бинарный мусор.
no subject
Date: 2024-02-26 02:56 pm (UTC)Я не слышал, чтобы https кому-то удавалось поменять нормальными средствами (без модификации клиентского устройства).