К обсуждениям

Node.js 24.20.0: KT128/KT256 ограничивают customization до 512 байт

Редакция VOne Технологии

Node.js 24.20.0: KT128/KT256 ограничивают customization до 512 байт. Изолированный test/control, измеримая матрица, дерево решения, stop-line и обезличенный пакет поддержки.

Что именно изменилось

Документированная граница для этой страницы: customization для экспериментальных Web Crypto KT128 и KT256 ограничена 512 байтами. Она отвечает на запрос «почему customization KT128 или KT256 длиннее 512 байт отклоняется в Node.js 24.20.0 и как проверить границу» и не означает, что любой похожий сбой имеет ту же причину. Наблюдаемая боль сформулирована узко: параметр персонализации проходит на коротком значении, но длинная конфигурация получает другой класс ошибки. Сначала запишите версию runtime, ожидаемые состояния и конечный timeout. Только затем запускайте локальный fixture. Успешный результат подтверждает одну ветку Node.js 24.20.0; он не доказывает массовость проблемы, совместимость всего приложения или необходимость срочного production-обновления.

Паспорт воспроизведения

Test-паспорт T18-01: локальный Web Crypto script с публичными byte arrays длиной 511, 512 и 513 и одинаковым пустым message. Он использует только синтетические markers и временные объекты. Измеритель: «algorithm × customization bytes × accepted × error.name × output bytes». Каждое поле записывается до интерпретации, чтобы ожидаемый вывод не менял наблюдение. Не добавляйте реальный трафик, базу, ключи, cookies, account identifiers или пользовательские файлы. Если требуемое поле нельзя получить безопасно, отмечайте его неизвестным и блокируйте вывод, а не расширяйте доступ. В этом опыте длину считайте по байтам Uint8Array, а не по числу символов исходной строки. Создавайте три новых массива отдельно, чтобы subarray или общий backing store не скрыли границу. Сравнивайте только факт принятия параметра и длину результата; криптографическое качество или пригодность экспериментального алгоритма этот fixture не оценивает.

Контрольная ветка

Control не является повтором test: KT128 без customization и KT128 с 512 нейтральными байтами. Для обеих веток закрепите один Node binary, архитектуру, locale, clock source и порядок операций. Снимите baseline A, выполните B один раз, закройте ресурсы и повторите A2. Если A2 расходится с A, опыт оставил состояние — дальнейшие повторы только запутают диагностику. Нельзя одновременно менять input shape, codec, policy, transport option и timing: в таком опыте причинность не восстанавливается.

Как заполнить матрицу исходов

Рабочая таблица этой темы: «algorithm × customization bytes × accepted × error.name × output bytes». Не заменяйте её словами «быстрее», «сломалось» или «вроде прошло». Для promise фиксируйте settled state и reason, для stream — точный event order и counters, для buffer/codec — constructors, lengths и equality, для QUIC — только обезличенные codes и transitions. Повторите test с теми же значениями ровно один раз. Расхождение повторов означает неопределённость, а не редкий подтверждённый дефект.

Решение по результату

Основное правило: 511/512 принимаются, 513 управляемо отклоняется — лимит подтверждён; падает control — алгоритм недоступен или fixture неверен. Есть ещё три обязательные ветки. Если test и control падают одинаково, исправьте fixture. Если control чист, но test не воспроизводится, вывод остаётся неопределённым. Если после cleanup A2 отличается от A, остановитесь и найдите оставшийся handle, cache entry или session. Нельзя переносить узкий результат на другую версию Node.js, OpenSSL backend, ОС, network path или пользовательский workload без нового сравнимого опыта.

Когда немедленно остановиться

Предметная stop-line: не включать экспериментальный алгоритм в рабочую схему и не использовать секрет как customization. Также останавливайтесь при crash вне child process, зависании без deadline, неожиданном внешнем соединении, изменении файла за temp root, запросе повышенных прав или появлении приватных данных в error/log. Нельзя добиваться зелёного результата отключением TLS validation, безразмерным buffer, глобальным exception handler, бесконечным retry или уничтожением рабочего состояния. Нулевой безопасный вывод лучше удобной выдуманной причины.

Что передать в поддержку

Минимизированный пакет: алгоритм, три длины, error.name, output length и Node.js version. Добавьте Moscow timestamp, архитектуру, точный `node --version`, один command line без секретных flags и строки матрицы A/B/A2. Уберите абсолютные домашние пути, hostnames, содержимое key material, payload, IP, authorization headers и full dumps. Получатель должен повторить один transition без доступа к вашей инфраструктуре. Если пакет требует рабочую базу или внешний сервис, он ещё не минимизирован.

Почему T18-01 — отдельная статья

Предметная трасса T18-01 начинается с состояния «параметр персонализации проходит на коротком значении, но длинная конфигурация получает другой класс ошибки». Зафиксируйте его без объяснения причины, затем соберите ровно такой стенд: локальный Web Crypto script с публичными byte arrays длиной 511, 512 и 513 и одинаковым пустым message. Наблюдения раскладываются по колонкам «algorithm × customization bytes × accepted × error.name × output bytes»; пустая колонка делает опыт незавершённым. После полного cleanup запустите независимую ветку «KT128 без customization и KT128 с 512 нейтральными байтами». Сопоставлять разрешено только строки с одинаковыми version, architecture и input markers. Предметный критерий разбора: 511/512 принимаются, 513 управляемо отклоняется — лимит подтверждён; падает control — алгоритм недоступен или fixture неверен. Если он не выполнен буквально, сохраните статус unknown и не переносите гипотезу в production. Особая граница безопасности этого case: не включать экспериментальный алгоритм в рабочую схему и не использовать секрет как customization. Для эскалации оставьте только «алгоритм, три длины, error.name, output length и Node.js version»; остальные runtime details удалите. Такой маршрут отделяет изменение «customization для экспериментальных Web Crypto KT128 и KT256 ограничена 512 байтами» от соседних симптомов с иным event order, buffer ownership, cancellation path или error class. Самостоятельность T18-01 задаёт не слово Node.js, а неделимая комбинация: намерение «почему customization KT128 или KT256 длиннее 512 байт отклоняется в Node.js 24.20.0 и как проверить границу»; боль «параметр персонализации проходит на коротком значении, но длинная конфигурация получает другой класс ошибки»; boundary «customization для экспериментальных Web Crypto KT128 и KT256 ограничена 512 байтами»; test «локальный Web Crypto script с публичными byte arrays длиной 511, 512 и 513 и одинаковым пустым message»; control «KT128 без customization и KT128 с 512 нейтральными байтами»; таблица «algorithm × customization bytes × accepted × error.name × output bytes». Решение применяется только как «511/512 принимаются, 513 управляемо отклоняется — лимит подтверждён; падает control — алгоритм недоступен или fixture неверен», а право остановиться — «не включать экспериментальный алгоритм в рабочую схему и не использовать секрет как customization». Пакет поддержки ограничен полями «алгоритм, три длины, error.name, output length и Node.js version». Соседняя статья с другим lifecycle, buffer ownership, error class или transport event не отвечает на этот вопрос. После опыта удалите fixture и подтвердите, что process, listener, timer, stream или session не остались активными. Идентификатор наблюдения: node-24200-kangaroo-customization-512.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.