Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ryehr/hitms_steganography
Оборонительные ИнструментыЭксфильтрация данныхСтеганографияКриптографияМашинное ОбучениеСтатьи и ИсследованияБезопасность ИИ
GitHubryehr/hitms_steganography

HiTMS_steganography

Встраивайте несколько секретных сообщений в выбор токенов чата LLM с помощью арифметических/Discop стеганографических кодеров, с побитово точным декодированием и оценкой стегоанализа.

Репозиторий
371 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

HiTMS: высокопроизводительный многопотоковый фреймворк лингвистической стеганографии

Исследовательский код для лингвистической стеганографии в диалогах LLM-чатов, с однопотоковым базовым вариантом и пакетным многопотоковым (HiTMS) протоколом, который скрывает сразу несколько независимых секретных сообщений и использует пакетную обработку GPU для гораздо более высокой пропускной способности.

Модель Боба задаёт вопросы; модель Алисы отвечает, скрыто кодируя полезную нагрузку в свой выбор токенов с помощью стеганографического кодера; Боб повторно прогоняет модель на ответе Алисы, чтобы восстановить биты. Кодирование и декодирование побитово точны, поэтому секрет восстанавливается без потерь.

Ключевые особенности

  • Два кодера, оба с побитово идентичным кодированием/декодированием:
    • Арифметическое кодирование (arithmetic*.py)
    • Discop (сохраняющий распределение, discop*.py)
  • Однопотоковый протокол (single_stream.py): без накладных расходов на обрамление — каждый бит канала является полезной нагрузкой (~100% утилизация).
  • Многопотоковый протокол HiTMS (protocol.py): секретных потоков разбиваются на фрагменты по раундам, управляемое PRF отображение поток→слот, слоты-приманки, 16-битные заголовки длины и заполняющий keystream. Несколько ответов за раунд генерируются за , поэтому пропускная способность масштабируется с размером батча.
m
один пакетный прямой проход
  • Воспроизводимые драйверы экспериментов с детерминированными потоками запросов, контрольной точкой и возобновлением для каждого прогона, а также обработкой сбоев и пересоздания недействительных (void) ответов.
  • Оценка незаметности с помощью LLM-в-роли-судьи (естественность + связность).
  • Модели, использованные в экспериментах: meta-llama/Llama-3.2-3B-Instruct и google/gemma-3-4b-it. Наборы данных: креативные/открытые подмножества databricks/databricks-dolly-15k и HuggingFaceH4/no_robots.

    Структура репозитория

    PathОписание
    arithmetic.py, arithmetic_batch.pyСтего на арифметическом кодировании (одиночный + пакетный кодер/декодер потока).
    discop.py, discop_batch.pyСтего-кодер Discop + общий PRG (одиночный + пакетный).
    utils.pyОбщие вспомогательные функции (преобразование бит/целых чисел, энтропия, top-k, проверки завершения предложений).
    protocol.pyМногопотоковый протокол HiTMS (отображение потоков, приманки, заголовки, заполнитель).
    single_stream.pyОднопотоковый протокол (без обрамления; обрезание на L-м бите).
    round_trip.py, batch_round_trip.pyМинимальные одноразовые демо/тесты round-trip.
    multi_round_demo.pyЗапускатор многопотоковых прогонов (run_trial) + подробное демо одиночного прогона.
    single_stream_demo.pyЗапускатор однопотоковых прогонов (run_single_trial) + демо.
    run_sweep.pyМногопотоковый перебор по {model}×{pool}×{coder}, с возобновлением.
    run_single_sweep.pyОднопотоковый аналог перебора.
    run_scaling_sweep.pyПеребор масштабирования по количеству потоков (x ∈ {1,2,4,8,16,32,64}) для любых модель/пул/кодер.
    run_x1_shards.py, run_x1_finish.sh, merge_x1_shards.pyАбляция x=1: разбиение одной ячейки на несколько GPU с последующим слиянием и проверками покрытия.
    judge_quality.pyСкорер незаметности LLM-в-роли-судьи (один QA на вызов, с возобновлением).
    gen_cover.pyГенерация «обложечного» текста (cover) без полезной нагрузки (эталон для стеганализа).
    steganalysis_bert.pyДетектор cover-vs-stego (BERT / RoBERTa / DeBERTa-v3 / ELECTRA).
    export_data.pyСоздаёт публикуемое зеркало только со сводными данными в .

    Данные

    data/ содержит результаты каждого эксперимента из статьи — ёмкость, пропускную способность, утилизацию, оценки судьи и AUROC детекторов — в виде одного JSON-объекта на прогон. Полную схему см. в data/README.md.

    Сам сгенерированный стеготекст не включён: исходные логи содержат вопрос и ответ для каждого фрагмента, из-за чего они занимают ~1 ГБ, поэтому export_data.py удаляет эти поля и сохраняет все измерения (~24 МБ). Во всех драйверах зафиксированы сиды, поэтому повторный запуск перебора воспроизводит текст точно.

    Исходные выходные каталоги (sweep_logs/, single_sweep_logs/, scaling_logs/, judge_logs/, cover_logs/, run_logs/, steganalysis_logs/) находятся в .gitignore — они большие (последний содержит обученные контрольные точки детекторов на несколько ГБ) и полностью воспроизводимы.

    Установка

    root@kitploit:~
    conda create -n ems python=3.10 -y && conda activate ems
    pip install torch transformers datasets numpy
    pip install openai          # only needed for judge_quality.py
    

    Для запуска LLM требуется GPU CUDA. Контрольные точки Llama и Gemma ограничены доступом на Hugging Face Hub, поэтому перед первым использованием выполните huggingface-cli login (после предоставления доступа к этим моделям).

    Использование

    Соберите пулы вопросов (один раз):

    root@kitploit:~
    python build_question_pool.py        # -> dolly15k_creative_questions.json
    python build_norobots_pool.py        # -> norobots_creative_questions.json
    

    Одиночный подробный прогон (проверка корректности):

    root@kitploit:~
    # multi-stream
    CUDA_VISIBLE_DEVICES=0 python multi_round_demo.py
    # single-stream
    CUDA_VISIBLE_DEVICES=0 python single_stream_demo.py
    # override model / coder / pool via env
    ROUND_TRIP_MODEL=google/gemma-3-4b-it STEGO_ALGORITHM=discop \
      STEGO_QUESTION_POOL=norobots_creative_questions.json \
      CUDA_VISIBLE_DEVICES=0 python multi_round_demo.py
    

    Полные эксперименты (с возобновлением — повторный запуск той же команды продолжит выполнение):

    root@kitploit:~
    # multi-stream (8 streams x 1024 bits), all model/pool/coder combos, 500 trials
    CUDA_VISIBLE_DEVICES=0 python run_sweep.py --trials 500
    # single-stream baseline
    CUDA_VISIBLE_DEVICES=0 python run_single_sweep.py --trials 500
    # stream-count scaling (dolly + Llama + Discop)
    CUDA_VISIBLE_DEVICES=0 python run_scaling_sweep.py --x-values 4 8 16 32 64
    

    Оценка незаметности (требуется ключ OpenAI в OPENAI_API_KEY или локальный файл OPENAI_API_key.txt, оба в .gitignore):

    root@kitploit:~
    python judge_quality.py --dry-run        # plan only, no API calls
    python judge_quality.py --limit 2        # tiny live smoke test
    python judge_quality.py                  # full run (resumable)
    python judge_quality.py --aggregate-only # recompute the score table
    

    Воспроизводимость

    Каждый драйвер фиксирует свои сиды (перемешивание запросов, выборка полезной нагрузки, RNG выборки, torch.manual_seed) и потребляет запросы из детерминированного потока, учитывающего номер прохода, поэтому полный перебор воспроизводим от начала до конца и после прерывания возобновляется ровно с контрольной точки.

    Примечания

    • Это исследовательский код, сопровождающий готовящуюся статью; API могут меняться.
    • Никогда не коммитьте секреты — OPENAI_API_key.txt, *.key и .env игнорируются.
    Скачать инструмент
    data/
    build_question_pool.py, build_norobots_pool.pyСобирают пулы вопросов из наборов данных Hugging Face (HF).
    *_creative_questions.jsonГотовые пулы вопросов.
    legacy/Более ранние скрипты/пулы, сохранены для справки.