{"id":136,"date":"2009-12-16T01:14:21","date_gmt":"2009-12-15T23:14:21","guid":{"rendered":"http:\/\/berg.to\/blog\/?p=136"},"modified":"2018-08-02T16:16:30","modified_gmt":"2018-08-02T14:16:30","slug":"hur-funkar-sms","status":"publish","type":"post","link":"http:\/\/berg.to\/blog\/2009\/12\/hur-funkar-sms\/","title":{"rendered":"Hur funkar SMS"},"content":{"rendered":"<p>(F\u00f6rst &#8211; denna text avser Person to Person &#8211; allts\u00e5 mobiltelefon till mobiltelefon. Ut\u00f6ver detta finns A2P &#8211; Application to Person)<\/p>\n<p>SMS kan tyckas som en oerh\u00f6rt trivial tj\u00e4nst. Ena dottern skickade knappa 3000 SMS under November (varav 1200+ till en och samma kille). Hon har s\u00e5 klart ingen aning hur det funkar bakom kulisserna och struntar s\u00e5 klart i vilket, men eftersom jag skrev ett kilometerl\u00e5ngt inl\u00e4gg p\u00e5 en mailinglista f\u00f6r att f\u00f6rklara s\u00e5 k\u00e4nde jag att jobbet redan var gjort och att jag lika g\u00e4rna kunde dela med mig till fler. Jag kan v\u00e4l passa p\u00e5 att varna att det \u00e4r sv\u00e5rt att f\u00f6rklara p\u00e5 lekmannaniv\u00e5 utan att det blir helt ohanterligt stort. Viss kunskap om n\u00e4tnoder och GSM topologi b\u00f6r man ha med sig innan man f\u00f6rst\u00e5r nedan fullt ut.<\/p>\n<p>Fr\u00e5gan \u00e4r; n\u00e4r kommer SMS fram och vilka faktorer p\u00e5verkar detta?<\/p>\n<p>Jag\u00a0 brukar s\u00e4ga att man f\u00f6rst\u00e5r GSM det d\u00e4r \u00f6gonblicket n\u00e4r man \u00e4r o\u00e4ndligt packad, precis innan man tuppar av. I samma \u00f6gonblick som man f\u00f6rst\u00e5r var universum tar slut och de andra stora fr\u00e5gorna. Sedan somnar man och har gl\u00f6mt det p\u00e5 morgonen.<\/p>\n<p>Det \u00e4r helt ov\u00e4sentligt vem man har som levererar abonnemanget till en utan det \u00e4r tre fr\u00e5gor som \u00e4r viktiga;<br \/>\n* I vilket n\u00e4t st\u00e5r HLR:en (Kallas HPMN &#8211; Home Public Mobile Network. HLR \u00e4r Home Location Register &#8211; allts\u00e5 den operativa databas d\u00e4r ens abonnemang \u00e4r registrerat. Det \u00e4r allts\u00e5 inte sj\u00e4lva kundregistret &#8211; din faktureringsadress och n\u00e4r kundservice varit i kontakt med dig, utan din SIM identitet och d\u00e4rtill kopplade tj\u00e4nster))<br \/>\n* I vilket n\u00e4t och under vilken MSC\/VLR \u00e4r man uppdaterad (Kallas VPMN &#8211; Visited Public Mobile network. VLR betyder Visited Location Register, vilket kan s\u00e4gas vara som en lokal arbetskopia av din HLR som inneh\u00e5ller alla egna och bes\u00f6kande kunder som \u00e4r registrerade under denna VLRs upptagningsomr\u00e5de)<br \/>\n* I vilket n\u00e4t st\u00e5r det avs\u00e4ndande SMSC:t? Detta n\u00e4t har en roll vi kallar APMN. (Associated Public Mobile Network)<\/p>\n<p>Det avs\u00e4ndande SMSC:t m\u00e5ste ha en relation till b\u00e5de HLR och VLR. \u00c4r du i ditt hemman\u00e4t \u00e4r dessa ju samma och d\u00e5 \u00e4r det ett mindre problem. N\u00e4ten d\u00e4r HLR och VLR har med n\u00f6dv\u00e4ndighet en relation &#8211; man kan inte ansluta sig till en MSC\/VLR utan att det finns en roamingrelation &#8211; allts\u00e5 finns det en relation. Haken \u00e4r att APMN inte med samma sj\u00e4lvklarhet har dessa tv\u00e5 relationer.<\/p>\n<p>Den som designade SMS var ett &#8220;snille&#8221; som tyckte att den vanliga kedjan klient &#8211; server &#8211; server &#8211; klient gick att optimera. Mycket skulle vara enklare om han t\u00e4nkt hela kedjan ut och dessutom slutat r\u00f6ka gr\u00e4s under specningen!! Jag \u00e4r s\u00e4ker p\u00e5 att teknikernas favorituttryck &#8220;trasigt&#8221; \u00e4r n\u00e5got som anv\u00e4nds f\u00f6r att kommentera detta. \ud83d\ude09<\/p>\n<p><strong>*** Grundkurs i SMS ***<\/strong><\/p>\n<p>Telefoni bygger p\u00e5 att man har payload (sj\u00e4lva taltrafiken &#8211; typiskt sett en 64kbit\/s kretskopplad f\u00f6rbindelse) och signalering f\u00f6r att styra den kretskopplade f\u00f6rbindelsen. F\u00f6rr signalerade man p\u00e5 talkanalen\/payloaden vilket m\u00f6jliggjorde att BlueBox tekniken kunde anv\u00e4ndas f\u00f6r att ringa gratis (Se filmen <a href=\"http:\/\/www.imdb.com\/title\/tt0105435\/\" target=\"_blank\" rel=\"noopener\">Sneakers <\/a>f\u00f6r hur det kunde se ut). Man emulerade signaleringen och kunde ringa som man ville. Nu sker signalering i ett logiskt separerat paketf\u00f6rmedlat n\u00e4t. Signalering \u00e4r allts\u00e5 kontrollsignaleringen mellan n\u00e4tnoder.<\/p>\n<p>Nu blir jag lite os\u00e4ker p\u00e5 terminologin &#8211; om jag anv\u00e4nder &#8220;stack&#8221; r\u00e4tt, men jag \u00e4r trots allt jurist och inte tekniker varf\u00f6r jag till\u00e5ter mig att slira p\u00e5 begreppen ibland \ud83d\ude09<\/p>\n<p># I USA anv\u00e4nder man en ANSI definierad stack och i Europa en CCITT &#8211; numera ITU &#8211; definierad variant, s\u00e5 du m\u00e5ste via en gateway om du skall k\u00f6ra emellan systemen. Ibland avser SS7 bara ANSI varianten, s\u00e5 h\u00e4r f\u00f6rekommer en del slirande p\u00e5 begreppen. (SS7 n\u00e4tets routrar &#8211; STPer &#8211; kan numer ocks\u00e5 ofta konvertera.<br \/>\n# Ovanp\u00e5 detta s\u00e5 k\u00f6r man<\/p>\n<ul>\n<li>ISUP f\u00f6r ren l\u00e4nksignallering (uppkoppling, nedkoppling, nummerpresentationsinfo och s\u00e5 vidare),<\/li>\n<li>MAP (Mobile Application Part &#8211; bes\u00f6ksn\u00e4t har en roamare som knackar p\u00e5 och kollar med HLR om han f\u00e5r roama och allt annat som beh\u00f6vs f\u00f6r att uppr\u00e4tth\u00e5lla mobilitet) samt<\/li>\n<li>CAP (CAMEL Application Part &#8211; finns i flera faser som anv\u00e4nds f\u00f6r realtidsdebitering, nummerkonvertering styrd fr\u00e5n hemman\u00e4tet och s\u00e5 vidare).<\/li>\n<\/ul>\n<p>SMS \u00e4r en tj\u00e4nst som anv\u00e4nder MAP.<\/p>\n<p><strong>SMS g\u00e5r som s\u00e5 h\u00e4r:<\/strong><\/p>\n<p>1) Mobilen skickar till sitt SMSC oavsett var man befinner sig. SMSC finns definierat i internationellt format i telefonen &#8211; h\u00e4mtat fr\u00e5n SIM. Det \u00e4r sedan SMSC:t som skickar meddelandet vidare. Genom att avs\u00e4ndaren i fallet med svenska mobilkunder \u00e4r det svenska SMSC:t s\u00e5 anv\u00e4nder du den svenska nummerplanen och det \u00e4r d\u00e4rf\u00f6r du kan skicka 71xxx och 72xxx nummer \u00e4ven fr\u00e5n utlandet. (SMS ing\u00e5r i IR.24 testet, vilket betyder att om roaming funkar s\u00e5 SKALL SMS ocks\u00e5 funka b\u00e5de in och ut f\u00f6r postpaid &#8211; annars \u00e4r n\u00e5got fel. F\u00f6r prepaid kan det vara annorlunda &#8211; d\u00e4r kan det finnas begr\u00e4nsningar). S\u00e5 l\u00e5ngt klient &#8211; server; det \u00e4r nu det ballar ur.<\/p>\n<p>2) SMSC:t tar nu reda p\u00e5 var mottagaren \u00e4r genom att skicka MAp meddelandet SRIforSM (Subscriber Routing Information) till mottagarens HLR &#8211; i retur f\u00e5r den en referens till den VLR d\u00e4r du \u00e4r uppdaterad. G\u00e5r n\u00e5got fel h\u00e4r s\u00e5 vet SMSC:t att det gick snett och du f\u00e5r ett korrekt felmeddelande.<\/p>\n<p>3) SMSC:t levererar nu SMS.et (MAP meddelandet Forward_SM)till det n\u00e4t (MSC\/VLR) d\u00e4r du \u00e4r uppdaterad.<\/p>\n<p>L\u00e5ter s\u00e5 klart enkelt, men eftersom det kan vara s\u00e5 att alla dessa delar g\u00e5r p\u00e5 tok, blir det inte s\u00e5 enkelt.<\/p>\n<p><strong>Vad kan g\u00e5 fel?<\/strong><\/p>\n<p>a)\u00a0P\u00e5 grund av nummerportabilitet s\u00e5 vet man inte vilken med sj\u00e4lvklarhet HLR man skall st\u00e4lla fr\u00e5gan till. Om man skjuter ut en SRIforSM s\u00e5 f\u00e5r man i b\u00e4sta fall svar p\u00e5 detta men h\u00e4r finns risk att det g\u00e5r fel. Operat\u00f6rernas s\u00e4kerhetsmedvetande har ocks\u00e5 minskat chansen att detta fungerar \u00e4ven i randfallen, SRIforSM han n\u00e4mligen ocks\u00e5 anv\u00e4nts som ett f\u00f6rsta steg i attacker f\u00f6r att hacka abonnemang.<\/p>\n<p>b) F\u00f6r att ett SMSC skall kunna skicka en SRI s\u00e5 m\u00e5ste det finnas en etablerad signaleringsrelation mellan APMN och VPMN- man m\u00e5ste implementerat varandras Global Title &#8220;ranger&#8221; och det skall vara \u00f6ppet via C7 carriern. Utg\u00e5ngspunkten \u00e4r att den \u00e4r st\u00e4ngd, s\u00e5 det kr\u00e4vs normalt en aktiv insats f\u00f6r att \u00f6ppna. Den \u00f6ppnas normalt f\u00f6r n\u00e4t som man har roaming med (SMS f\u00f6ljer med &#8220;p\u00e5 k\u00f6pet&#8221;) eller s\u00e5 m\u00e5ste man \u00f6ppnat speciellt (ovanligt). Ibland har man tur och signalleringsleverant\u00f6rerna har \u00f6ppnat lite mer \u00e4n bara vissa GT ranger (ibland \u00f6ppnar de hela l\u00e4nder p\u00e5 en g\u00e5ng), men i geng\u00e4ld vet man ju d\u00e5 inte om det kommer att forts\u00e4tta fungera. Det \u00e4r allts\u00e5 alltid bra att f\u00f6rs\u00e4kra sig om att det \u00e4r gr\u00f6nt fr\u00e5n leverant\u00f6ren.<\/p>\n<p>Normalt s\u00e5 h\u00e5ller man i SMSC:t reda p\u00e5 vilka n\u00e4t som \u00e4r \u00f6ppna (en whitelist) och anv\u00e4nder en SMS broker f\u00f6r fall man inte n\u00e5r sj\u00e4lv. Det \u00e4r allts\u00e5 en speciellt spelare p\u00e5 marknaden f\u00f6r SMS leveranser som s\u00e4ljer kapacitet att terminera SMS f\u00f6r ett attraktivt pris och till s\u00e5 m\u00e5nga destinationer som m\u00f6jligt. Det finns otroligt m\u00e5nga spelare p\u00e5 denna marknad.<\/p>\n<p>H\u00e4r finns en hake; ACK f\u00f6r levererat SMS brukar skickas av brokern f\u00f6r att deras plattform tagit emot SMS:et. Du f\u00e5r d\u00e5 ett meddelande att det g\u00e5tt fram men det \u00e4r inte sant &#8211; det enda som framg\u00e5r \u00e4r att brokern f\u00e5tt det, vilket ju inte \u00e4r samma sak som att mottagaren f\u00e5tt det. Ett typexempel n\u00e4r du SMS:ar och det st\u00e5r att mottagaren tagit emot det och du f\u00e5r reda p\u00e5 att s\u00e5 inte \u00e4r fallet &#8211; d\u00e5 \u00e4r det typiskt sett s\u00e5 att en broker anv\u00e4nts och den har inte lyckats leverera SM:et.<\/p>\n<p>c) Du m\u00e5ste f\u00e5 en vettig VLR adress tillbaka p\u00e5 din SRIforSM f\u00f6rfr\u00e5gan.<\/p>\n<p>Vissa n\u00e4t l\u00e5ter SMSC i andra n\u00e4t bara skicka till deras kunder om det finns ett s\u00e4rskilt avtal f\u00f6r SMS tecknat (SMS Interworking). Detta manifesteras till exempel genom att skicka HUMBUG tillbaka, men i ett korrekt formaterat meddelande.<\/p>\n<p>d) N\u00e4r man nu vet vilken VLR som mottagaren finns under, s\u00e5 \u00e4r det SMSC:t som skickar meddelandet direkt dit. Om det \u00e4r ett roamingn\u00e4t (allts\u00e5 HLR och VLR f\u00f6r mottagaren \u00e4r inte samma n\u00e4t) s\u00e5 kan det g\u00e5r riktigt p\u00e5 tok. Som f\u00f6rut s\u00e5 vet vi att HLR och VLR n\u00e4tet har roaming (och d\u00e4rmed signalering) &#8211; annars hade ju mottagaren inte kunnat uppdatera sig i detta n\u00e4t. Kruxet \u00e4r att APMN (SMSC n\u00e4tet) ju inte beh\u00f6ver ha en fungerande relation med bes\u00f6ksn\u00e4tet (VPMN). Detta \u00e4r det enskilt vanligaste fel fallet; du f\u00e5r vettigt svar p\u00e5 din SRI fr\u00e5ga, men n\u00e4r du sedan skall leverera, s\u00e5 \u00e4r det till ett n\u00e4t du inte n\u00e5r. H\u00e4r ser man en kombinatorik av om APMN och VPMN har fungerande signalleringsrelation med varandra.<\/p>\n<p>&#8211; Om det finns en dubbelriktad signaleringsrelation mellan APMN och VPMN n\u00e4tet s\u00e5 g\u00e5r det v\u00e4l. SM g\u00e5r fram &#8211; ACK kommer tillbaka.<br \/>\n&#8211; Om APMN inte har en relation som fungerar med VPMNs\u00e5 fallerar det (korrekt felmeddelande) &#8211; SM g\u00e5r inte fram (oavsett om VPMN kan skicka tilbaka en ACK eller inte)<br \/>\n&#8211; MEN den riktiga cirkusen dyker upp om APMN lyckas s\u00e4nda men VPMN inte f\u00e5r tillbaka en ACK. D\u00e5 g\u00e5r SMSC:t in i sitt retry<br \/>\nschema. Beroende p\u00e5 hur detta schema \u00e4r definierat s\u00e5 kan SMSC:t h\u00e4r b\u00f6rja bomba mottagaren med meddelanden.<\/p>\n<p>N\u00e4r 3 var en ung operat\u00f6r, och hade ett ytterligt aggressivt retryschema, s\u00e5 skulle min d\u00e5varande chef messa sin bror (kund hos Telia) och kastade om tv\u00e5 siffror i hans nummer. Mottagaren befann sig i Marocko och roamade med den operat\u00f6r som Telia hade roaming med. Vi p\u00e5 3 hade inte roaming med dom utan bara n\u00e5gon av dom andra. SMS gick fram, ACK kom aldrig tillbaka och retry schemat gick p\u00e5 h\u00f6gvarv. Mottagaren blev l\u00e4tt hysterisk efter cirka 250 meddelanden p\u00e5 mindre \u00e4n ett dygn.<\/p>\n<p><strong>Vad kan man g\u00f6ra?<\/strong><\/p>\n<p>En operat\u00f6r kan skydda sina egna kunder genom att alltid returnera en egen (virtuell eller \u00e4kta) VLR address p\u00e5 alla SRI fr\u00e5gor. P\u00e5 s\u00e5 vis undviker man att det avs\u00e4ndande SMSC:t skickar direkt till mottagaren. D\u00e5 skapar man en klassisk klient -&gt; server -&gt; server -&gt; klient kedja som funkar. Detta kallas Home Routing.<\/p>\n<p><strong>Det finns mycket mer att gr\u00e4va i avseende \u00e4mnet SMS<\/strong><\/p>\n<p>SRI fr\u00e5gor kan anv\u00e4ndas till en massa saker som \u00e4r i juridiska och etiska gr\u00e5zoner.<\/p>\n<p>&#8211; Vissa n\u00e4t scannar nummerserier med SRI f\u00f6r att f\u00e5 fram vilka nummer som inneh\u00e5ller abonnenter. Det kan g\u00f6ras i syfte att m\u00e4ta en konkurrent eller som f\u00f6rberedelse f\u00f6r att samla in data inf\u00f6r en SMS spam kampanj. Ett alternativ till att dammsuga internet efter mailadresser inf\u00f6r att man skickar mail spam. Jag kan inte s\u00e4g att jag vet att detta sker ofta, men jag har personligen insyn i ett fall d\u00e4r en indisk operat\u00f6r gjorde detta mot en brittisk operat\u00f6r (och britterna drabbades av en SMS spam attack bara en vecka senare).<\/p>\n<p>&#8211; Man kan bygga en del tj\u00e4nster kring SRI; Om man har en bes\u00f6kare i sitt n\u00e4r som roamare. Om man tappar denna bes\u00f6kare s\u00e5 kan man st\u00e4lla en SRI fr\u00e5ga. \u00c4r roamaren i ett annat land s\u00e5 tackar man f\u00f6r bes\u00f6ket och \u00f6nskar v\u00e4lkommen \u00e5ter (&#8220;Au Revoir SMS&#8221;) men om han \u00e4r i ett annat n\u00e4t i samma land s\u00e5 kan man skicka &#8220;Win Back SMS&#8221; (marknadsf\u00f6ring till kunden att aktivt byta n\u00e4t till ditt). Notera att WinBack SMS ju g\u00e5r direkt i normalfallet s\u00e5 hemmaoperat\u00f6ren ser inte ens att detta meddelande g\u00e5r. Samtliga f\u00f6rfaranden d\u00e4r bes\u00f6ksn\u00e4ten skickar SMS \u00e4r i princip f\u00f6rbjudna om inte din operat\u00f6r gett sitt medgivande . Detta regleras av GSM Associations dokument BA.47 d\u00e4r undertecknad varit med och levererat ett antal av rader.\u00a0 Mitt bidrag var att skapa opinion f\u00f6r att ocks\u00e5 andra typer av marknadsf\u00f6ring via andra medel &#8211; t.ex. Bl\u00e5tands uts\u00e4ndningar som f\u00f6rekommer i Italien &#8211; skall omfattas. Po\u00e4ngen \u00e4r att man \u00e4r kund hos sin hemmaoperat\u00f6r och inte i bes\u00f6ksn\u00e4tet s\u00e5 all kommunikation skall g\u00e5 fr\u00e5n hemman\u00e4tet eller ske med hemman\u00e4tets medgivande. F\u00e5 saker bryts det mot i st\u00f6rre omfattning \u00e4n detta!<\/p>\n<p>Till detta kan l\u00e4ggas hela aff\u00e4rsomr\u00e5det A2P, men det tar vi en annan dag &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(F\u00f6rst &#8211; denna text avser Person to Person &#8211; allts\u00e5 mobiltelefon till mobiltelefon. Ut\u00f6ver detta finns A2P &#8211; Application to Person) SMS kan tyckas som en oerh\u00f6rt trivial tj\u00e4nst. Ena dottern skickade knappa 3000 SMS under November (varav 1200+ till en och samma kille). Hon har s\u00e5 klart ingen aning hur det funkar bakom kulisserna &hellip; <a href=\"http:\/\/berg.to\/blog\/2009\/12\/hur-funkar-sms\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Hur funkar SMS<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,79],"tags":[83,89,81,90,88,86,153,87,85,84,82],"class_list":["post-136","post","type-post","status-publish","format-standard","hentry","category-sms","category-telekom","tag-c7","tag-cap","tag-hlr","tag-isup","tag-map","tag-roaming","tag-sms","tag-smsc","tag-sneakers","tag-ss7","tag-vlr"],"_links":{"self":[{"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":5,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":748,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions\/748"}],"wp:attachment":[{"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/berg.to\/blog\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}