Transaction Capabilities Application Part

aplikační protokol Signalling System 7

Transaction Capabilities Application Part (TCAP) je protokol aplikační vrstvy v Signalizačním systému č. 7, který umožňuje současné vedení několika dialogů mezi jednotlivými prvky mobilní, případně i pevné telefonní sítě.

Signalizační systém č. 7
SS7 protokoly podle OSI vrstvy
AplikačníTCAP, MAP, IS-41, INAP, CAP
TUP, ISUP, BSSAP
SíťováSCCP, SIGTRAN (IP7), MTP Level 3
LinkováMTP Level 2
FyzickáMTP Level 1

Pro přenos TCAP se používá protokol SCCP (resp. SUA), který zajišťuje adresování a směrování zpráv. TCAP slouží pro přenos MAP protokolu v mobilních sítích, pro přenos protokolu IS-41 v ANSI sítích a pro přenos protokolů INAP a CAP v Intelligent Networks. Uvedené protokoly fungují jako TC-uživatelé (TC User).

Protokol TCAP je založen na OSI protokolu Remote Operations Service Element (ROSE) a je definován doporučeními ITU-T Q.771-Q.775; ANSI varianta standardem T1.114.

Varianty TCAP editovat

TCAP existuje ve dvou variantách:

  • ITU TCAP popsaný v Q.771 až Q.775 se používá v sítích GSM/UMTS pro přenos MAP, CAP a INAP zpráv
  • ANSI TCAP popsaný v T1.114 se používá v sítích CDMA2000 (v minulosti AMPS a TDMA, cdmaOne) pro přenos IS-41 zpráv

Obě varianty jsou definovány pomocí ASN.1, kódovány pomocí Basic Encoding Rules (BER) a slouží k podobným účelům, ale jsou vzájemně nekompatibilní. ANSI varianta je navržena s důrazem na jednoduchost a snadnou rozšiřitelnost pouhým přidáváním nových parametrů (tagů), případně definováním nových typů zpráv, ITU varianta používá poměrně komplikovaný mechanismus aplikačních kontextů. Obě varianty se v telekomunikačních sítích zřídkakdy setkávají, ale pokud k tomu dojde, je možné je rozlišit pomocí BER typů; zatímco ITU TCAP používá BER tagy aplikační, univerzální, případně kontextově závislé třídy (s hodnotami 0x00-0xBF), ANSI TCAP preferuje privátní tagy (s hodnotami 0xC0-0xFF), ve vnořených strukturách doplněné tagy kontextově závislé (s hodnotami 0x80-0xBF).

Struktura TCAP editovat

TCAP lze rozdělit na dvě podvrstvy:

  • podvrstva komponent (Component Sublayer – CSL) – vyšší podvrstva, která využívá služeb TSL
  • podvrstva transakcí (Transaction Sublayer – TSL)

Funkce TCAP editovat

TCAP umožňuje současné vedení několika dialogů neboli transakcí mezi stejnými subsystémy na stejných strojích (pro rozlišení strojů lze použít jejich point kódy nebo IP adresy, pro rozlišení subsystémů jejich Subsystem Number).

Komponenty editovat

Komunikace pomocí TCAP se uskutečňuje předáváním dotazů a odpovědí (souhrnně nazývaných komponenty). Existují následující typy komponent:

Komponenta Význam
Invoke dotaz
Return Result odpověď – úspěch
Return Error odpověď – neúspěch
Reject odmítnutí komunikace (např. špatně zformátované zprávy)

Každá komponenta může (ale nemusí) nést data vyšší vrstvy – protokolu MAP, CAP nebo INAP. U některých operací stačí jako výsledek pouze informace o tom, že operace skončila úspěchem nebo chybou (a jakou), takže odpovědi často data vyšší vrstvy nenesou.

Reject znamená, že komponenta byl z nějakého důvodu odmítnuta (např. opakované vyvolání, chybné InvokeID, neznámá operace nebo chybný argument).

Dialogy editovat

Každá výměna komponent se uskutečňuje v rámci dialogu.

TCAP podporuje různé druhy dialogů:

  • jednoduché dialogy typu dotaz-odpověď nebo dotaz-odmítnutí; tyto dialogy se mohou řetězit za sebou
  • dialogy s vnořenými dotazy ve stylu „odpovím ti, ale napřed se tě taky na něco zeptám“
  • jednosměrná komunikace – zaslání dat bez čekání na odpověď; tento druh komunikace lze těžko považovat za dialog, ale TCAP jej nazývá nestrukturovaný dialog nebo unidialog; GSM MAP nestrukturované dialogy nepoužívá

TCAP zprávy editovat

Sítí se nepřenáší samotné komponenty, ale celé TCAP zprávy. Jejich typy shrnuje následující tabulka:

Účel zprávy ITU zpráva ANSI package type
Zahájení dialogu Begin Query
Ukončení dialogu End Response
Vnořený dotaz Continue Conversation
Odmítnutí dialogu Abort Abort
Jednosměrná komunikace Unidirectional Unidirectional

V případě ANSI zpráv Query a Conversation se rozlišuje, zda je protistraně dovoleno při odpovědi uzavřít dialog (transakci), proto existují varianty Query With Permission, Query Without Permission, Conversation With Permission a Conversation Without Permission.

ITU TCAP kromě zpráv definuje také tak zvaná primitiva. Každá zpráva je zároveň primitivem, ale existuje primitivum, které není zprávou, protože se nepředává mezi komunikujícími stroji. Jedná se o primitivum Cancel, které signalizuje, že odpověď nepřišla do zadaného časového limitu.

Identifikace dialogů a operací v TCAP editovat

Dialog je identifikován jedním nebo dvěma Identifikátory transakce (Transaction ID, TID), z nichž jeden volí stroj, který zahajuje dialog, a druhý druhý účastník dialogu s vloženými dotazy. Operace (dotaz) v rámci dialogu je identifikován Identifikátorem vyvolání (InvokeId).

Identifikátor transakce editovat

Identifikátory transakcí používá TCAP pro rozlišení jednotlivých dialogů.

Identifikátor transakce (Transaction ID) je čtyřbytové číslo. Pokud stroj A zahájí TCAP dialog se strojem B, stroj A pošle stroji B zprávu Begin. Tato zpráva Begin obsahuje Originating Transaction ID, což je identifikátor transakce pro stroj A. Zpráva Continue, kterou stroj B odpoví stroji A bude obsahovat Transaction ID použité strojem A jako Destination Transaction ID. Stroj B navíc do zprávy vloží vlastní Transaction ID jako Originating Transaction ID.

V pokračujícím TCAP dialogu každá zpráva Continue obsahuje Transaction ID cílového stroje jako Destination Transaction ID a Transaction ID odesílajícího stroje jako Originating Transaction ID. Když chce jeden ze strojů ukončit dialog, pošle druhému stroji zprávu End nebo Abort. Tato zpráva obsahuje pouze Destination Transaction ID.

Identifikátor vyvolání editovat

Každá komponenta Invoke obsahuje InvokeId (8bitové číslo v rozsahu −128 až 127), pomocí kterého se všechny následující komponenty odvolávají na původní Invoke v rámci jedné transakce (dialogu). Identifikátor vyvolání (InvokeId) je odkaz na určitou TCAP operaci a umožňuje v rámci dialogu párovat dotazy a odpovědi.

Pokud je potřeba se v jednom Invoke odvolat na jiný Invoke, používá se volitelný parametr LinkedId.

Dialogová část editovat

Dialogovou část (Dialogue Portion) zavedl TCAP ve verzi z roku 1993 (tzv. White Book). Dialogová část může být přítomna pouze v první a ve druhé zprávě dialogu a může obsahovat následující informace:

  • Verzi protokolu TCAP (protocol version)
  • Aplikační kontext (application context) – určuje protokol vyšší vrstvy (MAP, CAP nebo INAP) a jeho verzi
  • Bezpečnostní kontext (security context) – udává, jak má být interpretována informace o utajení zprávy
  • Důvěrnostní kontext (confidentiality context) – určuje použitý šifrovací algoritmus a jeho parametry

V praxi se dialogová část používá pouze u ITU TCAP, kde slouží k předání nebo dojednání aplikačního kontextu a tím i výběru aplikačního protokolu a jeho verze.

Aplikační kontexty editovat

Aplikační protokoly (MAP, CAP, INAP, atd.) se postupně vyvíjejí, což může vést k problémům s kompatibilitou. ANSI se těmto problémům vyhýbá přidáváním nových typů aplikačních zpráv a zaváděním nových typů jednoznačně identifikovatelných (pomocí různých ASN.1 typů) parametrů.

V ITU TCAP se pro určení verze aplikačních zpráv používá tak zvaný aplikační kontext (Application Context – AC). Aplikační kontext je identifikátor objektu (Object identifier), který se předává v dialogové části v první nebo druhé zprávě dialogu. Každý aplikační kontext obsahuje po jedné verzi jedné nebo více typů zpráv. Pokud byl na začátku dialogu dojednán aplikační kontext, lze z něj jednoznačně určit verzi vyměňovaných aplikačních zpráv. Pokud aplikační kontext nebyl dojednán, používá se protokol MAP verze 1 (MAP protokol byl vyvinut dříve, než byly zavedeny aplikační kontexty a dialogové části TCAP).

Formát TCAP zpráv editovat

TCAP zprávy jsou formátovány podle pravidel Basic Encoding Rules (BER) – mají tvar vnořených trojic Type-Length-Value (typ, délka, hodnota). ITU používá pro Type název Tag, ANSI název Identifier. Jak Type tak Length mohou být jedno- i vícebytové; vícebytový typ začíná bytem 0x1F, 0x5F, 0x9F nebo 0xFF a končí bytem s hodnotou menší než 0x80; vícebytová délka začíná bytem s hodnotou větší než 0x80; tato hodnota zmenšená o 0x80 udává počet dalších bytů obsahujících údaj o délce. U složených struktur se objevuje nedefinovaná délka (0x80); struktura pak musí být zakončena dvojicí bytů s nulovou hodnotou, která představuje koncovou značku (EOC) – viz Basic Encoding Rules.

ITU TCAP zprávy mají následující strukturu (+ musí být přítomné, O může být přítomné, - nesmí být přítomné):

Zpráva Orig. TID Dest. TID P-Abort Cause Komponent. část Dialogová část
Typ 0x48 0x49 0x4A 0x6C 0x6B
Unidirectional 0x61 - - - + O
Begin 0x62 + - - O O
Continue 0x65 + + - O O
End 0x64 - + - O O
Abort 0x67 - + O - O

V ITU TCAP je Originating Transaction ID v jednom parametru s BER type 0x48, Destination Transaction ID v druhém parametru s BER type 0x49. Jejich přítomnost v TCAP zprávách je patrná z tabulky ITU TCAP zpráv.

ANSI TCAP zprávy:

ANSI package type Orig. TID Resp. TID Posloupnost komponent Dialogová část
Typ 0xC7 0xE8 0xF9
Query With Permission 0xE2 + - O O
Query Without Permission 0xE3 + - O O
Conversation With Permission 0xE5 + + O O
Conversation Without Permission 0xE6 + + O O
Response 0xE4 - + O O
Abort 0xF6 - + O O
Unidirectional 0xE1 - - + O

ANSI TCAP zprávy obsahují vždy jeden parametr Transaction ID s BER typem 0xC7. V Unidirectional zprávách je tento parametr prázdný (má délku 0), ve zprávách Conversation With Permission a Conversation Without Permission obsahuje dva Transaction ID (má délku 8), v ostatních zprávách obsahuje jediný Transaction ID (má délku 4).

Struktura dialogové části editovat

Dialogová část v ITU TCAP nese data protokolu (Application Protocol Data Unit – APDU), který řídí dialog nebo unidialog. Pro MAP a INAP slouží dialogové APDU k vytváření a ukončování (uvolňování) dialogů pro aplikační kontext zadaný v primitivech. Pro dialogové APDU jsou definována následující primitiva:

APDU Typ Význam
AARQ 0x60 Žádost o dialog (dialogue request). Pro MAP a INAP je obecně AARQ posíláno v primitivu Begin s komponentou Invoke a s aplikačním kontextem pro package příslušející MAP/INAP operaci.
AARE 0x61 Dialogue response. Posílán v primitivu Continue nebo End jako odpověď na AARQ. Může být poslán i v primitivu Abort, pokud abort reason je "application-content-name-not-supported" nebo "dialogue-refused".
ABRT 0x64 Násilné ukončení dialogu (dialogue abort). Posílán v primitivu Abort.
AUDT 0x60 Jednosměrný dialog (unidirectional dialogue). Posílán v primitivu Unidirectional.

Struktura komponentové části editovat

Komponentová část obsahuje jednu z komponent:

Komponenta Význam ITU typ ANSI typ
Invoke dotaz 0xA1 0xE9
Return Result (Last) odpověď – úspěch 0xA2 0xEA
Return Error odpověď – neúspěch 0xA3 0xEB
Reject odmítnutí komunikace (např. špatně zformátované zprávy) 0xA4 0xEC
Invoke (Not Last) dotaz, který nebylo možné poslat najednou ---- 0xED
Return Result (Not Last) odpověď, kterou nebylo možné poslat najednou 0xA7 0xEE

ITU komponenta obsahuje Invoke ID s typem 0x02 a délkou 1, kód operace s typem 0x02 a sadu parametrů s typem 0x30.

ANSI komponenta obsahuje Invoke ID s typem 0xCF a délkou 1, kód operace s typem 0xD1 a sadu parametrů s typem 0xF2.

Dekódovaná TCAP zpráva editovat

Následuje hexadecimální výpis TCAP zprávy, která obsahuje SMS odeslanou mobilním telefonem (MO-SMS) a transformovanou MSC na MAP zprávu:

 62 74 48 04 00 02 00 30 6B 1A 28 18 06 07 00 11
 86 05 01 01 01 A0 0D 60 0B A1 09 06 07 04 00 00
 01 00 19 02 6C 50 A1 4E 02 01 01 02 01 2E 30 46
 80 05 70 31 42 44 44 84 06 A1 70 91 92 55 55 04
 35 2F 09 00 70 97 92 62 23 04 00 90 20 11 80 01
 24 00 27 43 50 7A 0E A2 A3 CB 20 71 79 4E 07 B1
 C3 EE 73 3D 7C 2E 83 D2 20 74 D8 5E 06 95 ED 65
 39 68 5E 2E BB 01 00

Podle hodnot Tag-Length-Value lze zprávu dekódovat takto:

 '--> 62|74  ''<- Begin''
        |
        '--> 48|04:00 02 00 30    ''<- Transaction ID''
        |
        '--> 6B|1A   ''<- Začátek dialogové části'' 
               |
               '--> 28|18   ''<- External Constructor''
                      |
                      '--> 06|07:00 11 86 05 01 01 01   ''<- id-as-dialogue''
                      |
                      '--> A0|0D
                             |
                             '--> 60|0B   ''<- AARQ APDU''
                                    |
                                    '--> A1|09   ''<- Aplikační kontext''
                                           |
                                           '--> 06|07:04 00 00 01 00 19 02   ''<- hodnota aplikačního kontextu''
        |
        '--> 6C|50     ''<- Začátek komponentové části''
               |
               '--> A1|4E     ''<- Invoke Component (Last)''
                      |
                      '--> 02|01:01    ''<- Component Id (invoke id)''
                      |
                      '--> 02|01:2E    ''<- Kód operace''
                      |
                      '--> 30|46       ''<- Začátek parametrů''
                             |
                             '--> 80|05:70 31 42 44 44        ''<- SM-RP-DA(BCD)''
                             |
                             '--> 84|06:A1 70 91 92 55 55     ''<- SM-RP-OA(BCD)''
                             |
                             '--> 04|35:2F 09 00 70 97 92 62 23 04 00 90 20 11 80 01 24 00 27 43 50 7A 0E A2 A3 CB 20 71 79 4E 07 B1 C3 EE 73 3D 7C 2E 83 D2 20 74 D8 5E 06 95 ED 65 39 68 5E 2E BB 01   ''<- SM-RP-UI''

Dekódovaná ANSI TCAP zpráva editovat

Následuje hexadecimální výpis ANSI TCAP zprávy, která obsahuje SMS odeslanou mobilním telefonem (MO-SMS) a transformovanou MSC na IS-41 zprávu:

 E2 81 9F C7 04 90 00 FF 06 E8 81 96 E9 81 93 CF
 01 00 D1 02 09 35 F2 81 89 9F 74 02 10 02 9F 69
 62 00 03 20 05 70 01 4F 12 C5 ...
 88 05 19 95 22 29 78 9F 70 09 02 00 21 0A 19 25
 80 27 64 9F 6E 09 02 00 21 0A 19 75 13 54 15

Tuto ANSI zprávu lze dekódovat takto:

 '--> E2|81 9F  ''<- Query With Permission''
        |
        '--> C7|04:90 00 FF 06    ''<- Transaction ID''
        |
        '--> E8|81 96     ''<- Posloupnost komponent''
               |
               '--> E9|81 93     ''<- Invoke Component (Last)''
                      |
                      '--> CF|01:00    ''<- Component Id (invoke id)''
                      |
                      '--> D1|02:09 35    ''<- Kód operace''
                      |
                      '--> F2|81 89       ''<- Parameter set''
                             |
                             '--> 9F 74|02:10 02        ''<- SMS-Teleservice Identifier''
                             |
                             '--> 9F 69|62:00 03 20 05 70 01 4F 12 C5 ...    ''<- SMS-Bearer Data''
                             |
                             '--> 88|05:19 95 22 29 78    ''<- Mobile Identification Number''
                             |
                             '--> 9F 70|09:02 00 21 0A 19 25 80 27 64  ''<- SMS-OriginalOriginatingAddress''
                             |
                             '--> 9F 6E|09:02 00 21 0A 19 75 13 54 15  ''<- SMS-OriginalDestinationAddress''

Zranitelnost editovat

Signalizační sítě byly díky svému oddělení od datových sítí považovány za bezpečné. S přechodem na SIGTRAN se zvyšuje nebezpečí průniku do těchto sítí. Protokol TCAP je zranitelný díky možnosti podvrhnout adresu odesilatele v datech, která přepravuje, čehož se zneužívá při SMS spoofingu. Této formě zranitelnosti lze předcházet použitím TCAP segmentace.

Historie TCAP editovat

  • 1988 Blue Book – první verze
  • 1993 White Book – zavedlo dialogovou část
  • 1997 – pouze menší změny

Standard z roku 1988 dělil Transaction Capabilities (TC) na dvě části:

V pozdějších standardech už ISP chybí, čímž se TC stává synonymem pro TCAP.

Odkazy editovat

Reference editovat

V tomto článku byl použit překlad textu z článku Transaction Capabilities Application Part na anglické Wikipedii.

ITU-T doporučení

Související články editovat