• Ei tuloksia

GNSS- JÄRJESTELMIEN JA - HÄIRIÖIDEN TULEVAISUUS

GPS häiriöiden määrä on mitä todennäköisimmin tulossa kasvamaan, kun GNSS-palveluita integroidaan yhä useampaan järjestelmään ja sovellukseen. Lisäksi yksityisyydenhakuisuus ja viranomaisten valvonnan pelko lisää halukkuutta käyttää GNSS-signaaleja häiritseviä laitteita (Pullen ja Gao, 2012). Vahingontekotarkoituksessa tehdyt manipulointi- ja

Kuva 11. Koordinaattien hajonta testissä 4. Testissä käytettiin OnePlus 6 puhelinta GPS-vastaanottimena. Pituusasteen arvoasteikon ääripäin väli on 4,67 metriä.

Leveysasteen arvoasteikon ääripäiden väli on 8,07 metriä.

29

häirintäyritykset tulevat myös todennäköisesti lisääntymään esimerkiksi itseajavien autojen yleistyessä. Tällöin signaalia manipuloimalla autoja voitaisiin huijata vaarallisemmille teille, tai jopa aiheuttamaan kolarin, mikäli auton muut turvaominaisuudet eivät pystyisi estämään sitä ajoissa. Vaikka suoranaisen kolarin aiheuttaminen on jokseenkin epätodennäköistä, GNSS-signaalien häiritseminen voisi vähintään aiheuttaa jonkin verran haittaa tai vaivaa, sillä navigoinnin estyessä ja paperikarttojen puutteessa navigointi esimerkiksi autolla voi vaikeutua tai estyä.

Valmistajat ovat kuitenkin alkaneet lisäämään tekniikoita häiriöiden hillitsemiseksi (Gioia ja Borio, 2021). InsideGNSS-julkaisun toimittaja Peter Gutierrezin artikkelissaan (2021) haastatteleman Euroopan komission virkamies Fernández Hernándezin mukaan Euroopan Galileo-järjestelmän takana olevat tahot, eli Euroopan komissio, Euroopan avaruusjärjestö ESA ja Euroopan avaruusohjelmavirasto EUSPA ovat kehittämässä Galileoon kolmea lisäpalvelua, jotka auttaisivat sitä olemaan vähemmän altis esimerkiksi manipuloinnille.

Nämä ovat OSNMA (Open Service Navigation Message Authentication, avoin navigaatioviestien autentikointipalvelu), HAS (High-Accuracy Service, korkean tarkkuuden palvelu) sekä kaupalliseen tarkoitukseen laadittu Commercial Authentication Service (CAS, kaupallinen autentikointipalvelu). Hernández sanoo artikkelissa, että OSNMA:ta ja HAS:ia priorisoidaan tällä hetkellä. HAS:ia on testattu jo toukokuusta 2021. OSNMA on tulossa virkamiehen mukaan saataville syksyllä 2021. Kumpikin palveluista ovat tulossa saataville ilmaiseksi ja ovat satelliittien tarjoamia, eivätkä siis perustu maa-aseman käyttäjälle lähettämiin signaaleihin. CAS, joka perustuu Galileon salattuun E6C signaaliin ja OSNMA:han, on suunnitteilla vuodelle 2024.

GPS-järjestelmän varajärjestelmäksi ja avustavaksi järjestelmäksi kriittiselle infrastruktuurille on kaavailtu LORAN (Long Range Navigation) järjestelmän seuraajaa, eLORAN:ia (Enchanced Long Range Navigation). LORAN toimi eri taajuuksilla kuin GPS, ja sen signaalien teho on useita kertoja GPS-signaaleja suurempi (Pierce 1990). Tämä tekee siitä huomattavasti vähemmän alttiin häirinnälle ja manipulaatiolle, sillä vaadittu signaaliteho sen häiritsemiseksi on suurempi. LORAN-järjestelmä ei kuitenkaan ollut maailmanlaajuinen ja se keskittyi enemmän rannikoille ja merille avustamaan merenkulussa ja ilmailussa.

30

Nykyisin alkuperäinen LORAN ei ole enää käytössä, mutta suurin osa sen laitteistosta on vielä olemassa. eLORAN järjestelmä pystyisi käyttämään vanhan LORAN järjestelmän infrastruktuuria, mikä tekee siitä houkuttelevan vaihtoehdon (Lo ja Peterson, 2009).

Yhdysvalloissa useista kaupallisista ja valtiollisista toimijoista koostuva ryhmä aloitti vuonna 2015 eLORAN-järjestelmän kokeilut Wildwoodin LORAN-asemalta New Jerseyn osavaltiossa (Inside GNSS, 2015). Kokeilujen tarkoituksen oli tuolloin kartoittaa järjestelmän potentiaali, riskit ja vahvuudet. Lisää kokeiluja on suoritettu ainakin vuonna 2021 (Inside GNSS, 2021).

Vaikka GNSS-järjestelmät ovat siis edelleen haavoittuvaisia, on asiaan alettu kiinnittää entistä enemmän huomiota. Kriittiset järjestelmät tulisi suojata varajärjestelmillä, jotta ne eivät ole täysin riippuvaisia GNSS-signaaleista paikannuksen tai ajan synkronoinnin osalta.

Varajärjestelmien ja nykyisten GNSS-järjestelmien kehitystä on myös edelleen jatkettava, jotta häiriöiden ja häirinnän mukanaan tuomiin haasteisiin voidaan vastata. Näiden kehityksen lisäksi häirinnän havaitsemiseen kykeneviä vastaanottimia ja muita järjestelmiä tulisi ottaa käyttöön, vähintäänkin kriittisissä järjestelmissä.

31

5 YHTEENVETO

GNSS-häirintä on iso kiinnostuksen kohde tutkimuksissa, sillä se muodostaa suuren turvallisuusuhan, kun GNSS-palvelut leviävät yhä laajemmalle. Tieteellistä kirjallisuutta tutkiessa kävi ilmi, että nykyisissä siviileille myytävissä vastaanottimissa on harvoin minkäänlaisia ominaisuuksia tai mahdollisuuksia GNSS-signaalin eston tai manipuloinnin havaitsemiseen tai estämiseen. Kuitenkin häirintään ja manipulaatioon kykeneviä laitteita on helposti ja usein edullisesti saatavilla. Muutamia keinoja voidaan käyttää ohjelmistotasolla esimerkiksi manipuloinnin havaitsemiseen, mutta nämä keinot suojaavat vain kaikkein yksinkertaisimmilta hyökkäyksiltä. Paremmat suojaukset vaatisivat monimutkaisempia vastaanottimia ja mahdollisesti salatun GNSS-signaalin tuomista siviilien käyttöön.

Häirinnän havaitsemiseen on kehitetty useita järjestelmiä. Nämä järjestelmät eroavat huomattavasti ominaisuuksiltaan ja siinä, minkälaista häirintää ne pystyvät havaitsemaan.

Kuitenkin yhteistä niille on niiden perusrakenne. Ne koostuvat yleensä keskuspalvelimesta, tietokannasta ja tietoa keräävistä vastaanottimista. Kirjallisuusselvityksen perusteella voidaan todeta, että GPS-vastaanottimet käyttävät datan lähettämiseen standardisoituja NMEA-viestejä, jotka voidaan muuttaa esimerkiksi ASCII-muotoon tallennusta varten.

Tallennettua tietoa voidaan sen jälkeen analysoida ja visualisoida esimerkiksi väritetyn kartan tai kaavioiden avulla.

Työssä rakennettu konseptijärjestelmä toimi testien perusteella hyvin. Testien perusteella ei voida kuitenkaan sanoa vaikuttaako folio GPS-vastaanotinten kykyyn muodostaa luotettavaa navigointidataa. Testien arvojen hajonta oli liian suurta, ja hajontojen ominaisuudet vaihtelivat liikaa testien välillä. Lisäksi sääolosuhteilla on todennäköisesti ollut vaikutusta.

32

LÄHTEET

Baddeley, Glenn. 2001. ”GPS - NMEA sentence information”. GPS - NMEA sentence information. 20. kesäkuuta 2001. http://aprs.gids.nl/nmea/ (Viitattu 14.8.2021).

Ball, Ben. 2020. ”What Is Height Above Ellipsoid (HAE)?” NextNav. 1. syyskuuta 2020.

https://nextnav.com/hae/ (Viitattu 18.8.2021).

European Union Agency for the Space Programme (EUSPA). 2021a. ”Galileo Programme” [WWW Document]. 17. toukokuuta 2021.

https://www.euspa.europa.eu/european-space/galileo/programme (Viitattu 22.6.2021).

———. 2021b. ”About EGNOS | EGNOS User Support” [WWW Document]. 15.

kesäkuuta 2021. https://egnos-user-support.essp-sas.eu/new_egnos_ops/egnos-system/about-egnos (Viitattu 19.6.2021).

Gioia, Ciro, ja Daniele Borio. 2021. ”GNSS Interference Mitigation: Modulations, Measurements and Position Impact”. Inside GNSS - Global Navigation Satellite Systems Engineering, Policy, and Design. 3. elokuuta 2021.

https://insidegnss.com/gnss-interference-mitigation-modulations-measurements-and-position-impact/ (Viitattu 16.8.2021).

Gould, Joe. 2017. ”Guided-Bomb Makers Anticipate GPS Jammers”. Defense News. 31.

toukokuuta 2017. https://www.defensenews.com/air/2015/05/31/guided-bomb-makers-anticipate-gps-jammers/ (Viitattu 26.3.2021).

Graham, Adrian W. 2011. ”Communications, Radar and Electronic Warfare.” Reference and Research Book News 26 (3): 378.

Gutierrez, Peter. 2021. ”Galileo Authentication and High-Accuracy Service: Coming on Fast”. Inside GNSS - Global Navigation Satellite Systems Engineering, Policy, and Design (blog). 8. heinäkuuta 2021. https://insidegnss.com/galileo-authentication-and-high-accuracy-service-coming-on-fast/ (Viitattu 16.8.2021).

Huhtanen Jarmo. 2020. ”Elektroninen sodankäynti | Venäjä julkaisi videon, jossa harjoiteltiin häirintäjärjestelmän käyttöä lähellä Suomen rajaa – väitteisiin sen tehokkuudesta pitää kuitenkin suhtautua varauksella”. Helsingin Sanomat, 13.

marraskuuta 2020. https://www.hs.fi/kotimaa/art-2000007615087.html (Viitattu 27.2.2021).

33

Humphreys, Todd E., Brent M. Ledvina, Mark L. Psiaki, Brady W. O’Hanlon, ja Paul M.

Kintner. 2009. ”Assessing the Spoofing Threat: A Portable Spoofer Implemented on a Digital Signal Processor Mounts a Spoofing Attack, Characterizes Spoofing Effects, and Suggests Possible Defense Tactics. GNSS Users and Receiver Manufacturers Should Explore and Implement Authentication Methods against Sophisticated Spoofing Attacks”. GPS World 20 (1): 28-.

Hunkeler, U., J. Colli-Vignarelli, ja C. Dehollain. 2012. ”Effectiveness of GPS-jamming and counter-measures”. Teoksessa 2012 International Conference on Localization and GNSS, 1–4. https://doi.org/10.1109/ICL-GNSS.2012.6253115.

Ilmatieteen laitos. 2021. ”Ionosfääri” [WWW Document]. 2021.

https://www.ilmatieteenlaitos.fi/ionosfaari (Viitattu 19.6.2021).

Inside GNSS. 2015. ”Contract Supports New Tests of ELORAN as GPS, PNT Backup”.

Inside GNSS - Global Navigation Satellite Systems Engineering, Policy, and Design (blog). 22. toukokuuta 2015. https://insidegnss.com/contract-supports-new-tests-of-eloran-as-gps-pnt-backup/ (Viitattu 18.8.2021).

———. 2021. ”GNSS Backup ELoran Trialed Using Grandmaster Clock”. Inside GNSS - Global Navigation Satellite Systems Engineering, Policy, and Design (blog). 6.

elokuuta 2021. https://insidegnss.com/gnss-backup-eloran-trialed-using-grandmaster-clock/ (Viitattu 26.8.2021).

Jahromi, Ali Jafarnia, Ali Broumandan, John Nielsen, ja Gérard Lachapelle. 2012. ”GPS Spoofer Countermeasure Effectiveness Based on Signal Strength, Noise Power, and C/N0 Measurements”. International Journal of Satellite Communications and Networking 30 (4): 181–91. https://doi.org/10.1002/sat.1012.

Kaplan, Elliott D., ja C. Hegarty. 2017. Understanding GPS/GNSS : Principles and Applications. Vsk. Third edition. GNSS Technology and Applications Series.

Boston: Artech House.

http://search.ebscohost.com/login.aspx?direct=true&db=e000xww&AN=1825930

&site=ehost-live.

Larcom, Jonathan A., ja Hong Liu. 2013. ”Modeling and characterization of GPS spoofing”. Teoksessa 2013 IEEE International Conference on Technologies for Homeland Security (HST), 729–34. https://doi.org/10.1109/THS.2013.6699094.

Lehtinen, Mikko, Ari Happonen, ja Jouni Ikonen. 2008. ”Accuracy and Time to First Fix Using Consumer-Grade GPS Receivers”. Teoksessa 2008 16th International Conference on Software, Telecommunications and Computer Networks, 334–40.

Split, Dubrovnik, Croatia: IEEE.

https://doi.org/10.1109/SOFTCOM.2008.4669506.

34

Lo, Sherman, ja Benjamin Peterson. 2009. ”Enhanced LORAN”. Stanford University, kesäkuuta.

http://web.stanford.edu/group/scpnt/jse_website/documents/Enhanced_Loran_rv2-short.pdf (Viitattu 26.3.2021).

Manning, D.M. 2005. ”NGA GPS monitor station high-performance cesium frequency standard stability: from NGA Kalman filter clock estimates”. Teoksessa

Proceedings of the 2005 IEEE International Frequency Control Symposium and Exposition, 2005., 840–49. https://doi.org/10.1109/FREQ.2005.1574043.

McCreadie, Madeleine, Dumville Mark, ja Michael Pattinson. 2019. ”STRIKE3 Final Report” [WWW Document].

http://gnss-strike3.eu/downloads/STRIKE3_D11.4_Final_Report_Public_v1.0.pdf (Viitattu 26.6.2021).

Nielsen, John, Ali Broumandan, ja Gérard Lachapelle. 2011. ”GNSS Spoofing Detection for Single Antenna Handheld Receivers”. Navigation (Washington) 58 (4): 335–44.

https://doi.org/10.1002/j.2161-4296.2011.tb02590.x.

Parkinson, Bradford W., James J. Spilker, Peina Axelrad, ja Per Enge. 1996. The Global Positioning System Theory and Applications. Volume I. Progress in Astronautics and Aeronautics ; v. 163. Washington, D.C: American Institute of Aeronautics and Astronautics.

https://lut.primo.exlibrisgroup.com/permalink/358FIN_LUT/1js2888/alma9919507 17706254.

Pierce, J.A. 1990. ”An introduction to Loran”. IEEE Aerospace and Electronic Systems Magazine 5 (10): 16–33. https://doi.org/10.1109/62.60674.

Pullen, Sam, ja Grace Xingxin Gao. 2012. ”GNSS Jamming in the Name of Privacy”.

Inside GNSS - Global Navigation Satellite Systems Engineering, Policy, and Design (blog). 15. maaliskuuta 2012. https://insidegnss.com/gnss-jamming-in-the-name-of-privacy/ (Viitattu 27.2.2021).

Sathyamoorthy, Dinesh, Mohd Faudzi, Nor Irza, Siti Robiah, Shalini Shafii, Aliah Ismail, Lim Tiang, ym. 2012. ”Evaluation of Global Positioning System (GPS)

performance during simplistic GPS spoofing attacks”. Defence S&T Technical Bulletin 5 (marraskuu): 99–113.

Scott, Logan, Neil Gerein, ja Chris Mayne. 2021. ”Alert to Spoofing and Jamming: Last Chance to Be Nobody’s Fool”. Webinaari, kesäkuuta 23. https://novatel.com/tech-talk/webinars/nobodys-fool-jamming-and-spoofing-detection (Viitattu 23.6.2021).

STRIKE3 Consortium. 2019. ”STRIKE3 Project” [WWW Document]. 31. tammikuuta 2019. http://gnss-strike3.eu/ (Viitattu 26.6.2021).

35

Teunissen, Peter JG, ja Oliver Montenbruck. 2017. Springer Handbook of Global

Navigation Satellite Systems. 1. Springer Handbooks. Cham: Springer International Publishing. https://doi.org/10.1007/978-3-319-42928-1.

The European GNSS Agency. 2019. ”GNSS Market Report”. 6. GNSS Market Report.

European Union Agency for the Space Programme (EUSPA).

https://www.gsa.europa.eu/market/market-report.

———. 2020. ”GNSS User Technology Report”. 3. GNSS User Technology Report.

European Union Agency for the Space Programme (EUSPA).

https://www.euspa.europa.eu/european-space/euspace-market/gnss-market/gnss-user-technology-report.

Thombre, Sarang, M. Zahidul H. Bhuiyan, Patrik Eliardsson, Björn Gabrielsson, Michael Pattinson, Mark Dumville, Dimitrios Fryganiotis, ym. 2018. ”GNSS Threat Monitoring and Reporting: Past, Present, and a Proposed Future”. The Journal of Navigation 71 (3): 513–29. https://doi.org/10.1017/S0373463317000911.

Westbrook, Tegg. 2019. ”The Global Positioning System and Military Jamming: The Geographies of Electronic Warfare”. Journal of Strategic Security 12 (2): 1–16.

http://dx.doi.org.ezproxy.cc.lut.fi/10.5038/1944-0472.12.2.1720.

LIITE 1. Konseptijärjestelmän koodi

Server/server.py

# LUT University

# School of Engineering Science

# Degree Programme in Software Engineering

# Bachelor's thesis

# GNSS-threat detection concept system

# Server

"""Initialize database and socket connections. Returns an initialized so cket object and a tuple containing IP address and port of the server."""

logging.basicConfig(

filename="serverlog.txt",

with sqlite3.connect(DB_F) as conn:

c = conn.cursor()

LIITE 1. (jatkoa)

logging.info("Database initialization succesfull.")

env = get_env()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host, port))

logging.info("Socket initialization succesfull.") return s, (IP, port), (lat, long)

def listenForConnections(s, addr, env):

"""Listens to client connections and starts a thread to handle the conne ction if one is found. Continues to search after thread has been started."""

logging.info(f"Server online with IP {addr[0]} and port {addr[1]}") while True:

LIITE 1. (jatkoa)

def receiveMessage(connection, address, env):

data = ""

i = 0

msg = connection.recv(8192).decode().strip() connection.close()

processAndSaveData(msg, env)

def processAndSaveData(data, env):

DB_F = get_dbf()

with sqlite3.connect(DB_F) as conn:

c = conn.cursor()

json_data = json.loads(data)

# RMC

# "NMEA" "UTC" "VAL" "LAT" "LONG" "DATE" "CHECK"

nmea = json_data["RMC"]["NMEA"]

# "NMEA" "UTC" "LAT" "LONG" "HDOP" "SAT" "ALT" "CHECK"

nmea += json_data["GGA"]["NMEA"]

LIITE 1. (jatkoa)

c.execute(f"SELECT * FROM Receiver_Keys WHERE Key_ID={client_key}") data = c.fetchone()

LIITE 1. (jatkoa)

def compareData(latitude, longitude, env):

# 0.0030 limit value

lat = float(latitude.split(",")[0]) # Receiver value long = float(longitude.split(",")[0]) # Receiver value

LAT = float(env[0].strip()) # Calibrated value

listenForConnections(s, addr, env)

if __name__ == "__main__":

main()

Server/constants.py

# LUT University

# School of Engineering Science

# Degree Programme in Software Engineering

# Bachelor's thesis

# GNSS-threat detection concept system

# Server

LIITE 1. (jatkoa)

def get_env():

"""Get environment variables. Returns a list of the environment variable s found."""

except FileNotFoundError:

logging.exception("Could not find environment file.") sys.exit(-1)

except Exception:

logging.exception("Something went wrong while opening environment fi le.")

sys.exit(-1) return env

def get_dbf():

"""Get database file path. Creates folder 'Databases' to working directo ry if it does not exist yet. Returns path as string."""

fpath = os.path.join(os.path.dirname(os.path.realpath(__file__)), "Datab ases")

try:

os.mkdir(fpath) except FileExistsError:

pass

DB_F = os.path.join(fpath, "database.db")

return DB_F (jatkuu)

LIITE 1. (jatkoa) Client/client.py

# LUT University

# School of Engineering Science

# Degree Programme in Software Engineering

# Bachelor's thesis

# GNSS-threat detection concept system

# Client

# $GPRMC,135759.000,A,XXXX.XXXX,N,XXXXX.XXXX,E,0.00,,140821,,,A*78 # NMEA Type, UTC, validity, latitude, N or S, longitude, E or W, speed, true course, date, variation, E or W, Checksum

# $GPGGA,135800.000,XXXX.XXXX,N,XXXXX.XXXX,E,1,07,1.5,100.3,M,18.4,M,,00 00*55

# NMEA type, UTC, Latitude, N or S, logitude, E or W, GPS quality (0, 1, 2), satellites, HDOP, altitude, altitude units (meters), geoidal separation , m, age of gps adta, reference station id * checksum

string = ""

gga = ""

rmc = ""

serialStatus = 0 try:

serialPort = serial.Serial(port = variables[4], baudrate=9600, bytes ize=8, timeout=2, stopbits=serial.STOPBITS_ONE)

serialStatus = 1 except Exception:

logging.error("Serial connection failed.") if serialStatus == 1:

LIITE 1. (jatkoa)

LIITE 1. (jatkoa)

s.connect(("127.0.0.1", 50045)) total_sent = 0

"""Get GPS data, construct a payload to be sent to server in JSON format and send it."""

clientID = variables[3]

try:

gps_data = getGPSData(variables) except Exception:

logging.exception("Exception occured in GPS data acquisition") local_time = datetime.today().strftime("%d.%m.%Y %H:%M %Z%z") try:

gps_data["LOCTIME"] = local_time gps_data["CLIENT"] = clientID except UnboundLocalError:

logging.error("Could not get GPS data in 6 tries.")

return (jatkuu)

LIITE 1. (jatkoa)

msg = json.dumps(gps_data)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connectAndSend(msg, s, variables)

def run_threaded(job, s, variables):

logging.info("Running job...")

job_thread = threading.Thread(target=job, args=(s, variables)) job_thread.start()

def run_schedule(s, variables):

logging.info(

f"Client online with IP {variables[1]} and port {variables[2]}. Star ting scheduled execution..."

)

schedule.every(5).seconds.do(run_threaded, mainJob, s, variables)

while True:

schedule.run_pending() time.sleep(1)

def initialize():

"""Initialize logging and socket connections. Returns an initialized soc ket object and a list containing environment variables."""

logging.basicConfig(

filename="clientlog.txt",

host = str(socket.gethostname()) clientIP = socket.gethostbyname(host)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) variables = [serverIP, clientIP, port, clientID, com]

return s, variables

(jatkuu)

LIITE 1. (jatkoa)

def main():

s, variables = initialize() run_schedule(s, variables)

if __name__ == "__main__":

"""Get environment variables. Returns a list of the environment variable s found."""

except FileNotFoundError:

logging.exception("Could not find environment file.") sys.exit(-1)

except Exception:

logging.exception("Something went wrong while opening environment fi le.")

sys.exit(-1) return env

LIITE 2. Tuloksista tehdyt kaaviot

Parittomissa testeissä käytettiin Sigmatelin vastaanotinta, parillisissa OnePlus 6 puhelinta.

Koordinaateista on vähennetty asteet, minuutit ja täydet sekunnit, jotka pysyivät muuttumattomina. Mustat pystyviivat merkitsevät foliokerroksien ajankohtia.

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)

(jatkuu)

LIITE 2. (jatkoa)