Перейти к содержимому

Постура TAK Server и управляемый ingest Cursor-on-Target

Источник tak управляет развёртыванием TAK (Team Awareness Kit) как ещё одной поверхностью. Он выполняет две независимые задачи, каждую из которых можно включить отдельно:

  • Постура TAK Server — сообщает конфигурацию сервера (его входы и их протоколы/порты, параметры TLS/keystore, backend подписи сертификатов) как находки с минимальными данными. Обоснованный источник — собственный CoreConfig.xml сервера, читаемый офлайн с диска; по сети читается только необязательная live-проверка версии. Федерация TAK не читается.
  • Управляемый ingest CoT — принимает события Cursor-on-Target на собственных UDP- и TCP-listener коннектора и превращает каждое в управляемое ребро доступа.

Коннектор придерживается принципа «сначала чтение»: он никогда не пишет в TAK Server, не входит в федерацию и не переизлучает payload. Если не настроены ни учётные данные, ни listener, он честно ничего не делает — ничего не выводит вместо того, чтобы выдумывать постуру развёртывания, к которому не обращался.

ПолеЗначение
Источник сигналаcot
Режимwrite — эмиттер CoT вносит состояние ситуационной осведомлённости в feed
Инициаторuid эмиттера, по умолчанию хешированный (cot_uid_mode)
Confidenceвсегда approximate — базовый CoT не аутентифицирован (см. ниже)
Находкиотмены drop-track, события с неограниченной ошибкой и агрегированные отказы listener (rate-limit / oversize / malformed / conn-limit)

1. Постура: сначала прочитайте сервер офлайн

Заголовок раздела «1. Постура: сначала прочитайте сервер офлайн»

Обоснованный источник постуры — собственный конфигурационный файл сервера. При установке пакета это /opt/tak/CoreConfig.xml. Укажите его коннектору, и тот прочитает настроенные входы, параметры TLS/keystore и backend подписи сертификатов, не обращаясь к сети. Элемент <federation> намеренно не моделируется, поэтому постура федерации не создаётся.

Live-проверка версии необязательна и добавляет только запущенную версию. Поскольку TAK Server аутентифицирует операторов через mTLS, проверка работает deny-closed: если включить posture и указать server_url, но не указать клиентский сертификат, коннектор откажется запускаться, а не станет анонимно опрашивать сервер и сообщать неаутентифицированную постуру. server_url должен использовать https.

// OLIVARES_SOURCES_CONFIG — posture only
{
"sources": [{
"name": "tak-server",
"kind": "tak",
"tenant": "<tenant-id>",
"config": {
"core_config_path": "/opt/tak/CoreConfig.xml",
"server_url": "https://takserver.example.mil:8443",
"client_cert": "${TAK_CLIENT_CERT_PEM}",
"client_key": "${TAK_CLIENT_KEY_PEM}"
}
}]
}

Включите listener, и коннектор будет принимать CoT: одно сообщение на UDP-датаграмму и одно на TCP-соединение («open-squirt-close»). Направьте TAK feed или клиентов CoT на адрес listener коннектора. Коннектор является получателем; он не подключается к серверу, чтобы забирать данные.

// OLIVARES_SOURCES_CONFIG — ingest
{
"sources": [{
"name": "tak-edge",
"kind": "tak",
"tenant": "<tenant-id>",
"config": {
"cot_udp_listen": "0.0.0.0:6969",
"cot_multicast_group": "239.2.3.1",
"cot_tcp_listen": "0.0.0.0:8087",
"allow_public_bind": true,
"feed_ref": "tak"
}
}]
}

Ключи конфигурации (из поставляемого descriptor коннектора)

Заголовок раздела «Ключи конфигурации (из поставляемого descriptor коннектора)»
КлючТипПо умолчаниюСекретЗначение
core_config_pathstringnoПуть к CoreConfig.xml (установка пакета: /opt/tak/CoreConfig.xml) — обоснованный офлайн-источник постуры
server_urlstringnoБазовый URL TAK Server (например, https://takserver.example.mil:8443). Необязателен: включает только live-проверку версии
version_pathstring/Marti/api/versionnoEndpoint версии Marti на server_url. Настраивается, поскольку справочник API tak.gov доступен только с учётной записью
client_certstringyesКлиентский сертификат PEM для mTLS TAK Server, по ссылке
client_keystringyesЗакрытый ключ PEM клиентского сертификата, по ссылке
ca_certstringnoBundle CA PEM для сертификата TAK Server. Пустое значение использует хранилище доверия хоста
posturebooltruenoВыводить находки постуры TAK Server
request_timeoutduration15snoTimeout каждого запроса к API TAK Server
feed_refstringtaknoСтабильная ссылка этого feed CoT — source_ref, область которого задаёт привязка sourcescope (source_type=data)
cot_udp_listenstringnoАдрес UDP-listener для CoT (например, 127.0.0.1:6969). Пустое значение отключает ingest UDP
cot_tcp_listenstringnoАдрес TCP-listener для CoT open-squirt-close (например, 127.0.0.1:8087). Пустое значение отключает ingest TCP
cot_multicast_groupstringnoНеобязательная multicast-группа для входа на UDP-listener (значение SA по умолчанию для TAK — 239.2.3.1)
cot_max_event_bytesint65536noМаксимальный размер одного события CoT в байтах
cot_max_detail_bytesint32768noМаксимальный размер непрозрачного диапазона <detail> одного события CoT в байтах
cot_rate_limit_epsint500noМаксимум принятых событий CoT в секунду по всем listener; превышение отбрасывается и подсчитывается
cot_max_tcp_connsint128noМаксимум одновременных TCP-соединений CoT
cot_uid_modestringhashnoКак uid покидает коннектор: hash (по умолчанию, односторонний) или raw. uid идентифицирует устройство, а устройство — носящего его человека

Ниже приведён контекст интеграции. Собственные listener коннектора привязываются к любому настроенному host:port; в примерах эти номера повторяются только для удобства.

Порт / группаСоглашение
8089Вход потокового CoT по TLS — аутентифицированный канал клиент↔сервер
6969 + multicast 239.2.3.1Multicast-группа ситуационной осведомлённости (SA)
8087Обычный входной порт; канонический пример руководства привязывает его как UDP. Протокол настраивается: 8087 не является TCP по своей природе
8088stcp — незашифрованный вход TCP, только для тестирования
8443Административный web UI
8446Регистрация сертификатов

Приватность: координаты и detail не покидают коннектор

Заголовок раздела «Приватность: координаты и detail не покидают коннектор»

CoT — протокол передачи местоположения, наиболее насыщенный PII сигнал из всех, которые загружает продукт, поэтому минимизация данных принуждается жёстко:

  • lat / lon / hae элемента <point> никогда не покидают коннектор. Координата — это местоположение человека. Продукт записывает, что событие принято, от какого эмиттера и какого типа CoT, но никогда — где находился человек.
  • Непрозрачный диапазон <detail> не покидает коннектор; сохраняются только его размер и дайджест SHA-256, чтобы одинаковые payload можно было коррелировать без их хранения.
  • uid эмиттера по умолчанию хешируется (cot_uid_mode=hash, с разделением доменов и односторонне). raw требует явного opt-in оператора.

Confidence: uid CoT не является аутентифицированной идентичностью

Заголовок раздела «Confidence: uid CoT не является аутентифицированной идентичностью»

Базовый CoT не содержит никакой аутентификации: любой хост, способный достичь listener, может заявить любой uid. TLS TAK Server защищает канал клиент↔сервер (порт 8089), но ничего не говорит о событии, которое этот коннектор принимает на собственном открытом UDP/TCP-listener. Поэтому каждое ребро от базового CoT-listener по конструкции оценивается как approximate: пути кода, возвращающего attributed, нет.

Feed — первоклассный управляемый источник. Привязка sourcescope задаёт, кто может его использовать, через source_type=data и source_ref=<feed_ref> по любой оси субъекта: session / agent / user / user_group / role. Эффекты — allow (по умолчанию) или forbid, причём forbid абсолютен (forbid перекрывает allow).

POST /v1/m/sourcescope/bindings
Content-Type: application/json
{
"source_type": "data",
"source_ref": "tak",
"scope_tree": "agent",
"scope_ref": "agent:recon-planner",
"effect": "allow",
"enabled": true
}

Задайте "effect": "forbid" (например, с "scope_tree": "user_group"), чтобы отнять доступ у всей группы, даже если существует allow.

Формат передачи CoT реализован методом clean-room только по публично выпущенной спецификации MITRE. Исходный код TAK или ATAK не читался, не копировался и не использовался для производной работы:

  • The Developer’s Guide to Cursor on Target, Butler, MITRE, август 2005 — DTIC ADA637348, MITRE Case #06-0249.
  • Event-PUBLIC.xsd, схема базового события CoT (версия 2.0) — MITRE Case #11-3895.
  • TAK Server Configuration Guide v5.2 — для соглашений портов/протоколов.

ATAK-CIV и TAK Server распространяются под GPLv3 и запрещены для коннектора (Apache-2.0), что принуждается проверкой лицензионной границы. Оба имеют федеральную маркировку США «Distribution A», которая является правительственным заявлением о выпуске, а не лицензией ПО: деревья кода остаются GPLv3. Законность реализации clean-room обеспечивают публично выпущенные MITRE схема и руководство.

  • Нет носителей mesh/radio — только UDP и TCP; без serial, TAK mesh и radio.
  • Нет плагинов ATAK/WinTAK — коннектор не реализует пользовательский клиент TAK.
  • Нет федерации TAK — он только наблюдает, что федерация настроена, но никогда не участвует в ней.
  • Нет Link-16 / MIL-STD или тактического протокола, требующего сертификации, и нет аккредитации Iron Bank / DoD — это отдельные необязательные пути для клиентов.
  • Подсхема CoT <detail> не моделируется — разбирается только базовое событие; detail остаётся непрозрачными байтами с ограничением размера и дайджестом.
  • Потери UDP невозможно подсчитать — backpressure замедляет listener; в UDP ядро отбрасывает датаграммы до того, как процесс их увидит, и эти потери подсчитать нельзя. В находки отказов агрегируются только события, которые коннектор действительно отклонил.