Келісу конверті мен кері қайтару тізімінің пішімдері
Екі қол қойылған файл ойнатқыштың нені көрсетуге хақылы екенін шешеді: әр медиафайлмен бірге жүретін келісу конверті және келісуді кері қайтаратын кері қайтару тізімі. Бұл бетте екеуі де сипатталған, сонда ойнатқыш, CMS немесе тексеру құралы оларды біздің бағдарламамызсыз оқи алады.
Анықтамалық беттер: Келісу конверті мен кері қайтару тізімінің пішімдері және Құрылғы протоколы.
Келісу пакеті
Келісілген ролик жарияланған атаумен екі файл болып жеткізіледі: медиафайл және оның конверті, мысалы spot.mp4 және spot.mp4.p7s. Келісу конвертін интеграция API-і арқылы жүктеуге болады (GET /api/v1/approvals/{number}/envelope, read:approvals рұқсаты). Конверт өзі атайтын файлсыз пайдасыз, ал файл конвертсіз экранда болуға тиіс емес.
Конверт
Конверт DER пішіміндегі бір CMS SignedData (.p7s файлы). Қол қойылған мазмұны келісу манифесі, ол канондық JSON түрінде (RFC 8785) және медиафайлды оның SHA-256 мәні бойынша атайды.
Өндірістік келісуде екі қолтаңба бар (сынақ контуры бір қолтаңбалы конверттерді де шығара алады, бұл манифест ескертпесінде айтылады):
- Платформа қолтаңбасы, SHA-256 бар ECDSA P-256, платформаның келісу кілтімен жасалған. Кез келген ойнатқыш оны офлайн тексере алады.
- Келісушінің өзінің мемлекеттік қолтаңбасы (NCALayer-де жасалған GOST 2015 қолтаңбасы). Платформа қолтаңбасы мемлекеттік қолтаңбаның SHA-256 мәнін бекітеді, сондықтан мемлекеттік қолтаңбаны алып тастауға немесе ауыстыруға болмайды, ал қол қойылмаған атрибут ретінде қосылған кейінгі уақыт белгісі бекітуді бұзбайды.
Манифестте v нұсқасы, env ортасы (test немесе prod), келісу нөмірі, келісу және орган идентификаторлары, жарнама беруші, медиа (sha256, size, duration_ms, width, height), әрекет мерзімі (valid_from, valid_until), келісу қамтитын құрылымдар, регламент (code, version) және issued_at бар. /v1/approval/{number} жария беті жарнама берушінің нөмірі жасырылған дәл сол манифесті және түпнұсқа байттар хэші manifest_sha256 мәнін көрсетеді.
Қол қойылған атрибуттар және кілт мақсаттары
Платформа қолтаңбасы осы қол қойылған атрибуттарды алып жүреді, ал сертификаттар осы кеңейтілген кілт мақсаттарын алып жүреді. Барлық идентификаторлар 1.3.6.1.4.1.59999.1 тармағында жатыр.
| Идентификатор | Не үшін |
|---|---|
1.3.6.1.4.1.59999.1.1 | Қол қойылған атрибут: медиаларды тіркеу нөмірі |
1.3.6.1.4.1.59999.1.2 | Қол қойылған атрибут: келісуші орган идентификаторы |
1.3.6.1.4.1.59999.1.3 | Қол қойылған атрибут: келісудің аяқталу мерзімі |
1.3.6.1.4.1.59999.1.4 | Қол қойылған атрибут: мемлекеттік қолтаңба мәнінің SHA-256 мәні |
1.3.6.1.4.1.59999.1.5 | Қол қойылған атрибут: орта, test немесе prod |
1.3.6.1.4.1.59999.1.6 | Келісу сертификатының кеңейтілген кілт мақсаты |
1.3.6.1.4.1.59999.1.7 | Мәртебе сертификатының кеңейтілген кілт мақсаты: кері қайтару тізімдері, аудит зәкірлері, статистика мөрлері |
1.3.6.1.4.1.59999.1.8 | Құрылғыларға берілетін командалар сертификатының кеңейтілген кілт мақсаты |
Бұл тармақ уақытша: бұл жеке сынақ тармағы. Тіркелген тармақ микробағдарламаға өндірісте конвертке сенуді тапсырғанға дейін оның орнын басады, ал құрылғы протоколы сол уақытқа дейін «бета» мәртебесінде қалады. Бұл сандарды сынақ контурынан ұзақ өмір сүруге тиіс ештеңеге қатты жазбаңыз.
Ойнатқыш нені шешеді
Ойнатқыш файлды көрсетпес бұрын тексереді және бас тартуды дәл бір кодпен хабарлайды:
| Код | Мағынасы |
|---|---|
NO_SIGNATURE | Конверт жоқ |
BAD_SIGNATURE | Қолтаңба, сертификаттар тізбегі немесе кілт мақсаты дұрыс емес |
HASH_MISMATCH | Файл манифест атайтын файл емес |
EXPIRED_APPROVAL | Келісу мерзімінен тыс, одан бұрын немесе кейін |
REVOKED | Келісу қолданыстағы кері қайтару тізімінде бар |
Мемлекеттік қолтаңбаны платформа келісу жасалғанда тексереді. GOST кілттерін оқи алмайтын ойнатқыш платформа қолтаңбасы бойынша шешім қабылдайды және мемлекеттік қолтаңба бар, бірақ тексерілмегенін хабарлайды (tanba-verify бағдарламасында OUTER_NOT_VERIFIED). OpenSSL сияқты кәдімгі бағдарламалар да GOST кілтін оқи алмайды, сондықтан Жүктеулер бетіндегі tanba-verify бағдарламасын немесе өз ойнатқышыңыздың тексерулерін пайдаланыңыз.
Кері қайтару тізімі
Кері қайтару тізімі платформаның мәртебе кілтімен қол қойылған, тізім ішіне салынған CMS SignedData. Кілттің мәртебе мақсаты бар, сондықтан келісу сертификаты тізімді шығара алмайды. Ең жаңа тізімді https://verify.tanba-ooh.kz/v1/revocations/latest мекенжайынан алыңыз (?format=json болса, дене мен қолтаңба JSON түрінде келеді), берілген нұсқаны https://devices.tanba-ooh.kz/d/v1/revocations/{version} мекенжайынан. Шақырулар ашық және 60 секундқа кэштеледі.
Дене канондық JSON:
{"v": 1, "env": "prod", "version": 42, "issued_at": "2026-10-14T08:00:00Z", "not_after": "2026-10-15T08:00:00Z",
"revoked": [{"approval_number": "TNB-2026-000123", "revoked_at": "2026-10-14T07:30:00Z", "ground_code": "court_order"}],
"revoked_devices": [{"device_id": "5c0e8f3a-71d2-4b6e-9a14-d8e2f7b30c59", "cert_serial": "1234567890123", "revoked_at": "2026-10-14T07:45:00Z"},
{"device_id": "a41d7b20-93c6-4e58-8f1b-0d6e2a9c5473", "pubkey_sha256": "ab12c4d7e9f0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607182930", "revoked_at": "2026-10-14T07:50:00Z"}]}
versionәр жаңа тізім сайын бірге артады. Келісу немесе құрылғы кері қайтарылғанда жаңа тізім бірден шығарылады, сондай-ақ мерзімді түрде де шығарылады.- Кері қайтару түпкілікті: тізімдер тек өседі. Жазба тізімнен ешқашан кетпейді, ал платформа жазбасы түсіп қалған тізімді шығаруға келіспейді.
- Сертификат арнасында құрылғы бұрын-соңды ұстаған әр сертификаттың сериялық нөміріне бір жазба, ондық жазбада. Қолтаңбалы арнада жазба
pubkey_sha256мәнін, яғни DER ашық кілтінің hex түріндегі SHA-256 мәнін алып жүреді.revoked_devicesжоқ тізім ондай құрылғылар жоқ дегенді білдіреді. ground_codeкері қайтарудың құқықтық негізінің коды.
Ойнатқыш тізіммен не істейді
- Ол көрген ең жаңа тізімді сақтайды.
versionмәні қолданыстағыдан жоғары емес тізім еленбейді,not_afterмерзімі өткен тізім де еленбейді, сондықтан ескірген тізім кері қайтарылған келісуді қайтара алмайды. - Тізімдегі келісу
REVOKEDдеп қабылданбайды. - Өзінің емес құрылғы жазбаларын елемейді. Тізімде өзінің идентификаторы болса, ол
revokedкүйіне өтеді: қара бет, көрсетілім жоқ, heartbeat жоқ, телеметрия жоқ, және қайта іске қосқаннан кейін де осылай қалады.device_unauthorizedжауабын алған ойнатқыш себебін білу үшін жария тізімді өзі оқиды.
Тізімді офлайн tanba-verify revocations list.p7s --ca root.pem командасымен тексеруге болады: ол алдымен келісулерді, содан кейін құрылғыларды басып шығарады.