MIKKO SALONEN OPC UA -TIETOTURVATOTEUTUS JAVA-OHJELMOINTIKIELELLÄ. Diplomityö

Samankaltaiset tiedostot
Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n suojaama sähköposti

HELIA TIKO ICT03D Tieto ja tiedon varastointi T.Mikkola, O.Virkki. Tietoturva tiedon varastoinnissa

Yritysturvallisuuden perusteet. 11. Luento Tietotekninen turvallisuus

Kymenlaakson Kyläportaali

Tietoturva P 5 op

in condition monitoring

Järjestelmäarkkitehtuuri (TK081702)

Lyhyt oppimäärä mistä tietojen salauksessa on oikeasti kyse? Risto Hakala, Kyberturvallisuuskeskus, Viestintävirasto

HOJ J2EE & EJB & SOAP &...

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Tutkimus web-palveluista (1996)

HSMT J2EE & EJB & SOAP &...

Tietoverkkojen turvallisuus. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2012

Maailman ensimmäinen Plug & Go etäyhteyslaite

Varmennepalvelu Yleiskuvaus Kansallisen tulorekisterin perustamishanke

Lyhyt oppimäärä mistä salauksessa on kyse? Risto Hakala, Kyberturvallisuuskeskus, Viestintävirasto

Salausmenetelmät (ei käsitellä tällä kurssilla)

OPC:n uudet tuulet. Mikä ihmeen OPC

Turvallinen etäkäyttö Aaltoyliopistossa

SALAUSMENETELMÄT. Osa 2. Etätehtävät

Tiedonsiirto- ja rajapintastandardit

TIEKE Verkottaja Service Tools for electronic data interchange utilizers. Heikki Laaksamo

3 Verkkopalveluarkkitehtuuri

Tietoturvan perusteita

T Cryptography and Data Security

Tietojärjestelmien yhteensovittaminen turvallisesti älykkäisiin koneisiin

Kuljetus/Sovelluskerroksen tietoturvaratkaisut

Tämän luennon aiheet. Kuljetus/Sovelluskerroksen tietoturvaratkaisut. TLS:n turvaama HTTP. Transport Layer Security (TLS) TLS:n suojaama sähköposti

Salaustekniikat. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2010

Tietoturva ja tietosuoja. Millaisia ovat tietoyhteiskunnan vaarat?

Integrointi. Ohjelmistotekniikka kevät 2003

FuturaPlan. Järjestelmävaatimukset

Digitaalinen haavoittuvuus MATINE Tampere

Tietoturvatekniikka Ursula Holmström

Security server v6 installation requirements

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) TLS:n turvaama HTTP. TLS:n suojaama sähköposti

OPC UA AUTOMAATION TIEDONSIIRROSSA

Tietoturvan perusteet - Syksy SSH salattu yhteys & autentikointi. Tekijät: Antti Huhtala & Asko Ikävalko (TP02S)

Tietoturvakoulutus Tietojenkäsittelyn koulutusohjelmassa

myynti-insinööri Miikka Lintusaari Instrumentointi Oy

Pikaviestinnän tietoturva

Toimilohkojen turvallisuus tulevaisuudessa

Teollisuusautomaation tietoturvaseminaari

Visma Software Oy

Security server v6 installation requirements

Attribuuttipohjainen käyttövaltuuksien hallinta Case Dreamspark Premium

Salaustekniikat. Kirja sivut: ( )

RAIN RAKENTAMISEN INTEGRAATIOKYVYKKYYS

Varmennepalvelu Yleiskuvaus Kansallisen tulorekisterin perustamishanke

SecGo. Sähköinen allekirjoitus ja sen käyttö. Ari-Pekka Paananen, SecGo VE Oy Director,technology

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut. Transport Layer Security (TLS) ja Secure Shell (SSH)

Helpottuuko sovellusten välinen integraatio XML:n avulla - kokemuksia ja ratkaisuja, teknologiajohtaja Sauli Tujunen, atbusiness Communications Oyj

Tietoturvapäivä

Paikkatietorajapinnat IT arkkitehtuurin näkökulmasta

Joustava tapa integroida järjestelmiä node-red:llä visuaalisesti - Internet of Things & Industrial Internet

OSI ja Protokollapino

Ongelma 1: Miten tieto kannattaa koodata, jos sen halutaan olevan hyvin vaikeasti luettavaa?

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Visma Nova Webservice Versio 1.1 /

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

3 Verkkopalveluarkkitehtuuri

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Julkinen sanomarajapinta ja

Yritysturvallisuuden perusteet

MARA-ALAN LIIKETOIMINNAN TIETOTURVALLISUUSUHAT

SOA SIG SOA Tuotetoimittajan näkökulma

Sovellusarkkitehtuurit

Vesihuolto päivät #vesihuolto2018

Tietoliikenne II (2 ov)

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut

ELEC-C7241 Tietokoneverkot Multimedia, tietoturva, jne.

Internet Protocol version 6. IPv6

IPsec-SA:n perustaminen. Kuljetus/Sovelluskerroksen tietoturvaratkaisut. Luottamuksenhallinta. Arkkitehtuuri Internetin turvallisuudelle

DNSSec. Turvallisen internetin puolesta

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut

PKI- ja hakemistotarpeet pacsissa

Henkilökohtaista käyttäjäystävällistä tietoturvaa! NTG Solo Secure

The OWL-S are not what they seem

Liiketoimintajärjestelmien integrointi

F-SECURE TOTAL. Pysy turvassa verkossa. Suojaa yksityisyytesi. Tietoturva ja VPN kaikille laitteille. f-secure.com/total

Mikä on internet, miten se toimii? Mauri Heinonen

Kuljetus- ja sovelluskerroksen tietoturvaratkaisut

Uutta Remote Support Platform 3.0 -versiossa

DPI (DEEP PACKET INSPECTION) By Sami Lehtinen

Kuljetus/Sovelluskerroksen tietoturvaratkaisut

Sisäilmaston mittaus hyödyntää langatonta anturiteknologiaa:

Tietoverkkojen turvallisuus. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2011

TURVAVÄYLÄSEMINAARI. Erilaiset kenttäväylät ja niiden kehitys Jukka Hiltunen

Tietoturvallisuuden ja tietoturvaammattilaisen

Forte Netservices Oy. Forte Client Security Services

Kryptografiset vahvuusvaatimukset luottamuksellisuuden suojaamiseen - kansalliset suojaustasot

Älykäs verkottuminen ja käyttäjänhallinta. Pekka Töytäri TeliaSonera Finland

Rakentamisen 3D-mallit hyötykäyttöön

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

TOSIBOX RATKAISU. »TOSIBOX:n avulla yhteys muodostuu automaattisesti internettiä hyödyntäen eri toimilaitteiden välille

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori

Skannaaminen RightFaxiin. Pääkäyttäjän opas

Transkriptio:

MIKKO SALONEN OPC UA -TIETOTURVATOTEUTUS JAVA-OHJELMOINTIKIELELLÄ Diplomityö Tarkastaja: Professori Seppo Kuikka Tarkastaja ja aihe hyväksytty Automaatio-, kone- ja materiaalitekniikan tiedekuntaneuvoston kokouksessa 3. kesäkuuta 2009

II TIIVISTELMÄ TAMPEREEN TEKNILLINEN YLIOPISTO Automaatiotekniikan koulutusohjelma SALONEN, MIKKO: OPC UA -tietoturvatoteutus Java-ohjelmointikielellä Diplomityö, 86 sivua, 8 liitesivua Elokuu 2009 Pääaine: Automaatioteknologia Tarkastaja: Professori Seppo Kuikka Avainsanat: OPC UA, tietoturva, automaatio, salausalgoritmit Verkottumisen merkitys teollisuusautomaation tietojärjestelmissä on viime aikoina selkeästä kasvanut. Verkottumisen taustalla on tarve tuottavuuden parantamiseen, johon pyritään palvelupohjaisia tekniikoita käyttämällä. Verkottumisen hyötyjä kannattavuuden lisäksi ovat esimerkiksi mahdollisuudet hallita ja konfiguroida laitteita Internetin kautta sekä mahdollisuus välittää laitteistotietoa globaalisti. Verkottumisen myötä tietojärjestelmien ja niihin liittyvien osajärjestelmien tietoturvallisuus on elinehto yrityksille, sillä yrityksen ja sen kumppaneiden tietojen luottamuksellisuus ja eheys ovat yhä suuremmassa vaarassa. OPC Unified Architecture (UA) on uusi automaatioteollisuuteen tarkoitettu tiedonsiirtoprotokolla, jonka tarkoituksena on yhdistää aiempien DCOM-riippuvaisten OPC-määritysten toiminnallisuus yhden tietomallin mukaisesti siten, että kaikki OPCmääritysten mukaiset palvelut voidaan käsitellä yhden UA-palvelimen avulla. OPC UA tarjoaa mahdollisuuden suojata verkon yli välitettävät sanomat salauksen ja digitaalisten allekirjoitusten avulla. Tämän mahdollisuuden sekä OPC UA:n skaalautuvuuden ansiosta OPC UA:ta voidaan käyttää sekä osana korkean tason järjestelmiä, jotka toimivat Internetin välityksellä, että matalan tason sulautetuissa laitteissa. Tämä diplomityö selvittää OPC UA:ssa käytettävän tietoturvamallin rakenteen sekä esittää yritysvetoisessa TEKES-projektissa OPC UA Information Modeling and Java Development kehitetyn OPC UA -kommunikointipinon sekä OPC UA - esimerkkisovellusten rakenteen tietoturvallisuuden näkökulmasta. Projektin aikana toteutettu kommunikointipino luovutettiin OPC-määrityksiä hallinnoivalle OPC Foundation:lle maaliskuussa 2009. Kommunikointipinon toteutus mahdollistaa TCPtiedonsiirtokerroksen avulla sanomien välittämisen OPC UA -sovellusten välille. Toteutettu tietoturvakerros takaa sekä sanomien luotettavuuden että eheyden. Projektin aikana toteutetut OPC UA -esimerkkisovellukset julkaistiin VTT:n toimesta toukokuun 2009 lopussa. Projektin aikana toteutetut UA-sovellukset tarjoavat kattavat esimerkit OPC UA -palvelutoteutuksista. Myös tietoturvaan on otettu kantaa esimerkkipalvelinsovelluksessa. Projektin aikana havaittiin OPC UA -määrityksen mahdollisuudet toimia osana verkottuneita automaatiosovelluksia sekä todettiin OPC UA:n sopivan useaan eri käyttötarkoitukseen. Kuitenkin käytännön kokemuksia OPC UA:n toimivuudesta on tällä hetkellä niin vähän, että jatkotutkimuksia vaaditaan liittyen OPC UA:n tehokkuuteen, tietoturvan tasoon sekä sen todelliseen skaalautuvuuteen.

III ABSTRACT TAMPERE UNIVERSITY OF TECHNOLOGY Master s Degree Programme in Automation Technology SALONEN, MIKKO: Security implementation of OPC UA using Java programming language Master of Science Thesis, 86 pages, 8 Appendix pages August 2009 Major: Automation technology Examiner: Professor Seppo Kuikka Keywords: OPC UA, security, automation, security algorithms The amount of network-based automation has recently rapidly increased. One of the reasons for that is the increasing demand for productivity and efficiency. As a result service oriented architecture is nowadays an important solution also in automation industry. Network-based solutions provide a possibility to manage and configure devices over the Internet as well as it provides the means to send data from those devices over several networks, including the Internet. The drawback is that security issues arise as information systems are more integrated with each other and companies must maintain the confidentiality and the integrity of their own data, as well as all the data that is received from the partner companies or clients. OPC Unified Architecture (UA) is the new telecommunication protocol for automation industry that is designed to meet the requirements of the network-based automation. UA will complement the previous OPC standards providing a common interoperability layer so that all of the OPC services may be managed using only one UA server application. OPC UA is designed to be scalable and it supports message encryption and digital signatures that provides the essential means for message confidentiality and integrity. As a result it may be used in ERP level as well as in embedded devices. This thesis concentrates on OPC UA security. The main target is to describe the security model of OPC UA and also provide the information about the Java based OPC UA Communication Stack and example OPC UA programs implemented in project OPC UA Information Modeling and Java Development funded by TEKES. The Communication Stack implemented in the project supports message transferring using TCP socket and it also provides the secure layer that may be used to secure the messages. The Communication Stack implementation was handed to OPC Foundation in March 2009. The example OPC UA programs developed in the project were published by the VTT Technical Research Centre of Finland at the end of May 2009. The developed OPC UA example server contributes to the security aspects. The example programs also support several OPC UA services. The main findings during the project was to realize the opportunities that OPC UA standard provides as a part of integrated information systems used in automation. Unfortunately at the moment there are too few practical experiences about OPC UA so further research is needed concerning the efficiency, the security level and the true scalability of OPC UA.

IV ALKUSANAT Tämä diplomityö on tehty Tampereen teknillisessä yliopistossa, Systeemitekniikan laitoksella. Työ tehtiin osana OPC Unified Architecture tietomalli ja Java kehitys - projektia, jonka tavoitteena oli kehittää suomalaista OPC UA -tietoutta sekä toteuttaa Java-ohjelmointikielellä OPC UA -kommunikointipino sekä esimerkkisovellukset. Tahdon esittää kiitokseni professori Seppo Kuikalle työn ohjaamisesta, työn tarkastamisesta sekä mahdollisuudesta työskennellä mielenkiintoisen projektin parissa. Haluan kiittää myös tutkija Mikko Salmenperää sekä erikoistutkija Jari Seppälää diplomityöhön liittyvien ongelmien ratkomisesta ja mielenkiintoisista keskusteluista. Kiitokset myös muille projektiin osallistuneille, erityisesti Tom Hanneliukselle sekä Toni Kalajaiselle, joiden kanssa pystyimme ratkaisemaan monta projektin aikana esiintynyttä ongelmaa. Lämpimät erityiskiitokset vanhemmilleni, Esko ja Heini Saloselle, jotka tukivat minua myös vaikeina hetkinä opiskeluni aikana. Tahdon kiittää myös isovanhempiani sekä kummitätiäni jatkuvasta tuesta ja kannustuksesta. Viimeiset kiitokset kuuluvat avovaimolleni Jenni Latvalalle kaikesta. Tampereella 03.08.2009 Mikko Salonen

V SISÄLLYS 1. Johdanto... 1 2. OPC UA teollisuusautomaatiossa... 3 2.1. OPC UA uusi määritys... 3 2.2. OPC UA:n rakenne... 4 2.3. OPC UA:n arkkitehtuuri... 6 2.3.1. Sovelluskerros... 7 2.3.2. Kommunikointipino... 8 3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa... 10 3.1. Tietoturvan merkitys... 10 3.2. Tietoturvan osa-alueet... 10 3.3. Teollisuusautomaation tietoturva... 12 3.4. Tietoturva OPC UA:n näkökulmasta... 13 3.4.1. Yleistä OPC UA:n tietoturvasta... 13 3.4.2. Tietoturvariskit... 14 4. Tiedon salaus ja varmentaminen... 18 4.1. Tiedon salauksen ja varmentamisen periaatteet... 18 4.1.1. Salauksen periaatteet... 18 4.1.2. Tiedon eheyden varmentaminen... 20 4.2. Asymmetrinen salaus... 20 4.2.1. RSA... 21 4.2.2. Diffie-Hellman... 22 4.2.3. Soikion kaareen perustuva julkinen salaus... 22 4.3. Symmetrinen salaus... 23 4.3.1. Vuosalaus... 23 4.3.2. Lohkosalaus... 23 4.3.3. Tunnetut symmetriset algoritmit... 27 4.4. Viestien allekirjoittaminen... 29 4.4.1. RSA-menetelmiin perustuva allekirjoitus... 30 4.4.2. Tiivistefunktiot MD5... 30 4.4.3. Tiivistefunktiot SHA1... 31 4.4.4. Tiivistefunktiot HMAC... 31 4.5. Sertifikaatit ja julkisen avaimen infrastruktuuri... 32 4.5.1. Sertifikaatit... 32 4.5.2. X.509-sertifikaattien varmentaminen ja julkisen avaimen infrastruktuuri... 34 5. OPC UA -tietoturvamalli... 36 5.1. Yleistä tietoturva-arkkitehtuurista... 36 5.2. UA natiivi pinokuvaus... 37 5.2.1. UASC-viestin rakenne... 38 5.2.2. UASC-viestin rakenne - Viestiotsikko... 39 5.2.3. UASC-viestin rakenne - Tietoturvaotsikko... 39

5.2.4. UASC-viestin rakenne - Sekvenssiotsikko... 40 5.2.5. UASC-viestin rakenne - Viestin alatunniste... 41 5.3. Tietoturvatasot OPC UA:ssa... 41 5.4. Tietoturvakerros ja tietoturva... 42 5.4.1. Tietoturvattu kanava... 42 5.4.2. Tietoturvatun kanavan palvelut... 43 5.5. Sovelluskerros ja tietoturva... 46 5.5.1. OPC UA -istunto... 46 5.5.2. Muut istunnon tietoturvaan liittyvät toiminnot... 49 5.6. Sertifikaatit OPC UA:ssa... 51 5.6.1. Sovellussertifikaatit... 51 5.6.2. Ohjelmistosertifikaatti... 52 5.6.3. Henkilökohtainen sertifikaatti... 53 6. OPC UA -toteutus Java-ohjelmointikielellä... 54 6.1. OPC UA -projektit... 54 6.1.1. OPCUA-projekti... 54 6.1.2. OPCUA2-projekti... 55 6.1.3. Rinnakkaiset OPC UA -projektit... 56 6.2. Java ohjelmointikielenä... 56 6.2.1. Java-ohjelmointikielen perusteet... 56 6.2.2. Javan tietoturva... 57 6.3. Java OPC UA -kommunikointipino ja tietoturva... 60 6.3.1. Yleistä kommunikointipinosta... 60 6.3.2. Kommunikointipinon rakenne... 60 6.3.3. Tietoturvakerroksen toteutus... 62 6.4. Java OPC UA -esimerkkiasiakasohjelma... 64 6.4.1. Asiakasohjelman arkkitehtuuri... 64 6.4.2. Asiakasohjelman toiminta... 65 6.5. Java OPC UA -esimerkkipalvelin... 67 6.5.1. Java OPC UA -esimerkkipalvelimen arkkitehtuuri... 67 6.5.2. Palvelimen tietoturvatoteutus... 69 7. Arviointi ja johtopäätökset... 78 7.1. OPC UA -määrityksen arviointi... 78 7.2. OPCUA2-projektin arvointi... 79 7.3. Jatkokehitysajatuksia... 80 7.4. Seuraavat toimenpiteet ja jatkotutkimuksen aiheet... 80 8. Yhteenveto... 82 Liite A: DES-algoritmin toiminta... 87 Liite B: Käyttäjän autentikointi... 88 Liite C: Java OPC UA -palvelimen konfiguraatiotiedosto tietoturvan hallintaan... 89 Liite D: Java OPC UA -palvelimen konfiguraatiotiedosto sertifikaattien hallintaan... 90 Liite E: JAAS perusteet... 91 Liite F: Käyttäjän tunnistaminen ja käyttöoikeuksien tarkastaminen JAAS-laajennoksen avulla... 93 VI

VII KUVAT Kuva 1: OPC UA:ssa käytetty oliomalli. [8] 4 Kuva 2: OPC UA:n tietomalli sekä sitä täydentävät tietomallit.[4] 5 Kuva 3: OPC UA:n osoiteavaruusmalli.[10] 6 Kuva 4: OPC UA:n protokollapinon yhteistyö sekä pinon variointi pinokuvauksien avulla.[11] 7 Kuva 5: OPC UA:n tietoturvatoiminnallisuus jaetaan määrityksen mukaisesti kahteen eri kerrokseen. [14] 8 Kuva 6: OPC UA suhteessa OSI-malliin. 9 Kuva 7: Esimerkki diffuusion ja konfuusion avulla suoritettavasta salauksesta.[18] 19 Kuva 8: CBC-moodin toiminta salauksessa. [22] 25 Kuva 9: CFB-moodin toiminta, lohko S kuvaa salausta avaimella K.[20] 26 Kuva 10: OFB-moodin toiminta.[20] 27 Kuva 11: X.509-sertifikaatin version 3 rakenne.[16] 33 Kuva 12: OPC UA -tietoturvamalli.[14] 37 Kuva 13: UASC-viestin rakenne.[11] 38 Kuva 14: Käyttäjän vaihtaminen OPC UA:ssa.[13] 50 Kuva 15: Java 2 tietoturva-arkkitehtuuri, luvut kuvaavat suoritusjärjestystä.[32] 58 Kuva 16: Javalla toteutettu OPC UA -kommunikointipino hyödyntää moniytimisiä suorittimia. 61 Kuva 17: Kommunikointipinon TCP-tiedonsiirtokerros ja tietoturvakerros. 62 Kuva 18: UA-palvelimen kommunikointipinon toiminta asymmetrisen salauksen tapauksessa. 63 Kuva 19: OPC UA -asiakasohjelman rakenne ja integrointi kommunikointipinoon. 65 Kuva 20: OPCUA2-projektissa toteutetun asiakasohjelman käyttöliittymä. 66 Kuva 21: Asiakasohjelman toiminta muodostettaessa yhteys UA-palvelimelle. 67 Kuva 22: Java OPC UA -esimerkkipalvelimen yleisarkkitehtuuri 68 Kuva 23: Käyttäjätietokannan rakenne. 71 Kuva 24: Esimerkkipalvelimen toiminta käyttöoikeuksia tarkistettaessa. 73 Kuva 25: Sertifikaattien hallinnan luokkahierarkia. 74 Kuva 26: Esimerkkipalvelimen toiminta generoitaessa uutta sertifikaattia. 76 Kuva 27: JAAS identiteetin, tekijän ja käyttöoikeuksien suhde toisiinsa.[39] 91 Kuva 28: Menettelytapatiedosto yhdistää identiteetin käyttöoikeuteen.[39] 92 Kuva 29: JAAS:n toiminta tunnistettaessa käyttäjää.[39] 94

VIII TAULUKOT Taulukko 1: UASC-viestin viestiotsikon rakenne.[11] 39 Taulukko 2: UASC-viestin tietoturvaotsikon rakenne asymmetriselle salaukselle.[11] 40 Taulukko 3: UASC-viestin tietoturvaotsikko symmetriselle salaukselle.[11] 40 Taulukko 4: UASC-viestin sekvenssiotsikon rakenne.[11] 40 Taulukko 5: UASC-viestin alatunnisteen rakenne.[11] 41 Taulukko 6: OPC UA -tietoturvamenettelytavan määrittelemä informaatio.[11] 42 Taulukko 7: OpenSecureChannel-pyynnön rakenne.[13] 44 Taulukko 8: OpenSecureChannel-vastauksen rakenne.[13] 45 Taulukko 9: CloseSecureChannel -palvelupyynnön rakenne.[13] 46 Taulukko 10: CloseSecureChannel-palvelun vastauksen rakenne.[13] 46 Taulukko 11: CreateSession-palvelupyynnön rakenne.[13] 47 Taulukko 12: CreateSession-palveluvasteen rakenne.[13] 47 Taulukko 13: ActivateSession-palvelupyynnön rakenne.[13] 48 Taulukko 14: ActivateSession-palveluvasteen rakenne.[13] 49 Taulukko 15: CloseSession-palvelupyynnön rakenne.[13] 49 Taulukko 16: CloseSession-palvelupyyntövastauksen rakenne.[13] 49 Taulukko 17: UA-spesifikaation mukaisen sovellussertifikaatin rakenne.[11] 52 Taulukko 18: UA-spesifikaation mukaisen tuotesertifikaatin rakenne.[11] 53

IX TERMIT JA NIIDEN MÄÄRITELMÄT AES Advanced Encryption Standard API Application Programming Interface BLOB Binary Large Object CBC Cipher Block Chaining CFB Cipher Feedback COM Component Object Model CRM Customer Relationship Management DCOM Distributed Component Object Model DES Data Encryption Standard ECB Electronic Code Book ECC Elliptic Curve Cryptography EJB Enterprise Java Bean ERP Enterprise Resource Planning HMAC keyed-hash Message Authentication Code HTTP Hypertext Transfer Protocol IP Internet Protocol J2EE Java 2 Enterprise Edition J2ME Java 2 Micro Edition J2SE Java 2 Standard Edition JAAS Java Authentication and Authorization Service JCA Java Cryptography Architecture JCE Java Cryptography Extension JNDI Java Naming and Directory Interface JSP Java Servlet Pages JSSE Java Secure Socket Extension MAC Message Authentication Code MD5 Message Digest 5 OFB Output Feedback OLE Object Linking and Embedding OPC OLE for Process Control / Openness, Productivity and Collaboration OPC A&E OPC Alarms and Events OPC DA OPC Data Access OPC HDA OPC Historical Data Access OPC UA OPC Unified Architecture OPC XML DA OPC XML Data Access PKI Public Key Infrastructure RSA Rivest-Shamir-Adleman (tietoturva-algoritmi) SDK Software Development Kit SHA1 Secure Hash Algorithm 1

X SOA SOAP TCP UASC URI WS XML Service Oriented Architecture Simple Object Access Protocol Transport Control Protocol UA Secure Conversation Uniform Resource Identifier Web Services Extensible Markup Language

1 1 1. JOHDANTO Verkottuminen on yleistynyt automaatiossa. Verkottumisen hyötyinä voidaan nähdä yritysten tehokkuuden parantuminen sekä mahdollisuudet Internetin kautta tapahtuvaan laitteiden globaaliin hallintaan, konfigurointiin ja seurantaan. Verkottuneen automaation ansiosta prosessi- ja laitteistotietoa voidaan välittää tehtaan laitetasolta ERP-tasolle asti. Verkottumisen myötä tietoturvallisuuden merkitys kasvaa, sillä tietomurron tekijä pääsee pahimmillaan ohjaamaan laitteita verkon kautta sen lisäksi, että tämä voi saada luettua luottamuksellista tietoa yrityksen tietojärjestelmistä. Tietomurrot aiheuttavat yrityksille vähintäänkin suuria rahallisia kustannuksia, mutta pahimmassa tapauksessa ne saattavat johtaa myös henkilövahinkoihin. Tietoturvallisten järjestelmien toteuttaminen on yrityksille erittäin haastavaa, sillä tietoturva tulisi pystyä toteuttamaan siten, että se ei heikennä yrityksen tuottavuutta, mutta pystyy suojaamaan yrityksen tiedot ja tietotoverkot. Teollisuusautomaation verkottuneisuus on otettu huomioon uudessa OPC UA - määrityksessä, jota voidaan käyttää tietojen välittämiseen kaikilla tehdastasoilla, sekä globaalisti Internetin välityksellä että lokaalisti tehdastasolla. Määritys vastaa myös nykyisiin tietoturvan tarpeisiin. OPC UA yhdistää aiemmat OPC-määritykset yhtenäisen tieto- ja oliomallin avulla sekä määrittelee tietoturvallisen tavan OPC UA -sovellusten väliseen tiedonsiirtoon. Tiedonsiirtotapa, tietoturvan taso sekä OPC UA -palvelimen tarjoamat palvelut voidaan konfiguroida kahden eri pinokuvauksen sekä OPC UA:n tarjoamien profiilien avulla. Tämä mahdollistaa OPC UA:n liittämisen kaikille tehdastasoille sopivaksi ja mahdollistaa OPC UA -palvelimen toteuttamisen jopa sulautettuun järjestelmään. Tämä diplomityö selvittää OPC UA -tietoturvamallin rakenteen. Diplomityö keskittyy OPC UA:n käyttämiin tietoturvamekanismeihin siten, että se kattaa OPC UA - sovellusten välisen kommunikoinnin tietoturvaratkaisut sekä tiedon luotettavuuden ja eheyden että autentikoinnin ja auktorisoinnin tasolla. Diplomityössä selvitetään myös verkottuneen automaation tietoturvariskejä sekä niiden ehkäisymahdollisuuksia. Diplomityö perustuu yritysvetoisen TEKES-projektin OPC UA Information Modelling and Java Development aikana Java-ohjelmointikielellä toteutettuihin OPC UA - sovelluksiin. Diplomityö rakentuu siten, että aluksi luvussa 2 tarkastellaan OPC UA:ta osana verkottunutta automaatiota. Tällöin selvitetään, mikä OPC UA on ja miksi sitä tulisi käyttää. Tämän jälkeen luvussa 3 perehdytään tietoturvan merkitykseen teollisuusautomaatiossa sekä esitellään OPC UA -spesifikaatioiden määrittelemät tietoturvauhat, joihin OPC UA -toteutuksien tulisi vastata. Luvussa 4 keskitytään tietoturvan teoriaan ja lu-

1. JOHDANTO 2 vussa 5 esitellään OPC UA:n tietoturvamalli. Luvussa 6 perehdytään diplomityönä kehitetyn Java OPC UA -kommunikointipinon sekä -esimerkkisovellusten toteutukseen tietoturvan näkökulmasta sekä tutustutaan Java-ohjelmointikielen tietoturvaominaisuuksiin. Luvussa 7 esitetään diplomityön aikana havaitut johtopäätökset sekä ehdotukset jatkotutkimuksien aiheiksi. Luvussa 8 kootaan tämä työ yhteenvedon muodossa.

3 3 2. OPC UA TEOLLISUUSAUTOMAATIOSSA Tämä luku esittää perusteet uudesta OPC-määrityksestä. Luvussa kuvataan, mikä OPC UA on ja miksi se on määritelty. Lisäksi luku esittelee olennaisimpia osia uudesta määrityksestä. 2.1. OPC UA uusi määritys OPC käsitteenä tarkoittaa OPC Foundation:n määrittelemää tiedonsiirtoprotokollaa, jota käytetään esimerkiksi teollisuusautomaation laitteiden ja PC-valvomon välissä prosessidatan siirtämiseen ja teollisuusautomaation sovellusten integrointiin[1][2]. OPCmäärityksiä on tällä hetkellä yhteensä 10 kappaletta, joista tunnetuimmat ovat OPC Data Access (OPC DA) sekä OPC XML Data Access (OPC XML-DA) prosessidatan siirtoon, OPC Historical Data Access (OPC HDA) laitteilta saatavan historiadatan siirtämisen sekä OPC Alarms&Events (OPC A&E) laitteiden hälytys- ja tapahtumakäsittelyjen siirtämiseen. Uusin OPC Foundation:n OPC-määritys on OPC Unified Architecture (OPC UA).[2][3] OPC UA:ta edeltävät OPC-määritykset ovat automaatioteollisuudessa yleisesti hyväksyttyjä määrityksiä ja ne ovat saavuttaneet de-facto aseman automaatiosovelluksien tiedonsiirrossa. Nämä määritykset ovat DCOM-tekniikalla toteutettuja ja riippumattomia toisistaan. Riippumattomuus toisaalta helpottaa OPC:n laajennettavuutta, mutta käytännössä eri määritysten riippumattomuus aiheuttaa ongelmia, esimerkiksi saman mittaustiedon hetkellisarvot, hälytykset ja historia pitää käsitellä eri OPCpalvelimilla.[3][4] Uusi OPC UA -määritys ei laajenna aikaisemmin kehitettyjä OPC-määrityksiä. Päinvastoin, sen tarkoituksena on nimensä mukaisesti yhdistää OPC-määritykset ja siten korvata aiemmat määritykset. OPC UA:n arkkitehtuuri on suunniteltu tukemaan tätä tarkoitusta. Uusi määritys tarvittiin useasta eri syystä, joista ehkä tärkeimpänä voidaan pitää sitä, että automaatioteollisuuden tietotekniikka on muuttunut. Nykyajan trendi informaatiojärjestelmien integrointiin sekä yritysten verkottuminen monitoimijaverkoiksi tuotannon ja laadun tehostamiseksi aiheuttaa lisävaatimuksia sekä käytettävälle tekniikalle että erityisesti sekä tietoturvalle että luotettavuudelle. Verkottumisen lisäksi automaatioteollisuudessa ollaan siirtymässä tietopohjaisista järjestelmistä palvelupohjaisiin. OPC UA:ta määriteltäessä onkin keskitytty palvelupohjaisuuteen ja siten se mahdollistaa OPC:n käyttämisen erilaisissa järjestelmäintegrointiratkaisuissa. OPC UA -määrittelyn mukaisia sovelluksia voidaan käyttää sekä vanhojen määritysten tapaan horisontaaliseen järjestelmäintegraatioon, mutta myös vertikaaliseen tehdastasojen väli-

2. OPC UA teollisuusautomaatiossa 4 seen integraatioon. Tämä mahdollistaa järjestelmäintegroinnin jopa yhteistyöyritysten välillä.[3][4][5][6] Toinen syy uuden OPC-määrityksen kehittämiseen on aikaisempien määritysten riippuvuus COM/DCOM -tekniikoista ja Windows-ympäristöstä. Siksi OPC UA määrittelee uuden tiedonsiirtoprotokollan, joka ei ole riippuvainen mistään tietystä toteutustekniikasta. Koska OPC UA yhdistää aiemmat määrittelyt se tarjoaa myös mahdollisuuden tarkastella saman palvelimen kautta tiettyä mittausdataa eri näkökulmista, mitä vanhojen määritysten mukaiset toteutukset eivät käytännössä tue.[3][4][7] 2.2. OPC UA:n rakenne OPC UA:n määritys rakentuu 12:sta eri osasta, joista ensimmäiset seitsemän määrittelevät OPC UA:n perustoiminnallisuuden. Loput viisi osaa määrittelevät vanhojen OPCmääritysten toiminnallisuuden uudessa ympäristössä.[7] OPC UA:n arkkitehtuurin oleellisia osia ovat uusi informaatiomalli, oliomalli, osoiteavaruus, palvelukeskeisyys sekä määrityksen mukaiset profiilit[3]. OPC UA:n määrittely perustuu abstraktiin tietomalliin, joihin muut tietomallit, esimerkiksi eri sovelluskohteisiin määritellyt DA (Data Access), HA (Historical Access) ja A&E (Alarms & Events), perustuvat.[3][4] OPC UA -määrityksen oliomalli määrittelee OPC UA -palvelimella olevat dataoliot, jotka sisältävät olioon liittyvät muuttujat, toiminnot ja tapahtumat. Lisäksi dataoliolla voi olla viittauksia toisiin olioihin. Tämän mallin ansiosta aikaisempien OPCmääritysten erilliset tietomallit voidaan yhdistää. Oliomalli on esitetty kuvassa 1.[4] Kuva 1: OPC UA:ssa käytetty oliomalli. [8] Semanttinen OPC UA:n informaatiomalli määrittelee OPC-sovelluksille joukon laajennettavissa olevia dataolioita, viittauksia sekä tyyppejä, joiden avulla määritellään OPC UA -palvelimella oleva osoiteavaruuden rakenne. Informaatiomallin laajennettavuus mahdollistaa esimerkiksi muiden standardointiryhmien käyttämien ja määrittelemien tietomallien lisäämisen OPC:n käyttöön. OPC Foundation tekeekin tällä hetkellä

2. OPC UA teollisuusautomaatiossa 5 yhteistyötä ISA95- sekä MIMOSA-työryhmien kanssa. Lisäksi OPC-tuotteiden valmistajat voivat tarvittaessa kehittää omia tietomallejaan, kuten voidaan havaita kuvasta 2.[3][9] Kuva 2: OPC UA:n tietomalli sekä sitä täydentävät tietomallit.[4] OPC UA:n osoiteavaruus mahdollistaa palvelimella olevien UA-oliomallin mukaisten dataolioiden, eli tietopisteiden, esittämisen OPC UA -asiakassovelluksille. OPC UA:n osoiteavaruus on monipuolisempi aikaisempiin määrityksiin verrattuna. Osoiteavaruus on rakennettu siten, että osoiteavaruudessa olevat tietopisteet muodostavat verkkorakenteen, jossa eri tietopisteiden välillä voi olla useita nimettyjä viittauksia sekä muita riippuvuuksia toisiinsa. Esimerkki osoiteavaruudesta on esitetty kuvassa 3, jossa on kuvattu sekä kaikissa OPC UA -palvelimissa oleva oletusosoiteavaruus että toinen osoiteavaruus, jossa määritellään tietopiste Laskuri, jonka tyyppi on LaskuriTyyppi ja tälle tyypille pakolliseksi attribuutiksi on määritelty Arvo. Root-tietopiste on UA osoiteavaruuden aloituspiste, josta on viittauksia muihin osoiteavaruuden osiin. Esimerkissä tietopisteet muodostavat hierarkkisen puun, mutta monimutkaisempienkin rakenteiden käyttö on mahdollista.[3][9][10]

2. OPC UA teollisuusautomaatiossa 6 Kuva 3: OPC UA:n osoiteavaruusmalli.[10] Uusi OPC UA -määritys on palvelupohjainen. Tämä tarkoittaa sitä, että OPC UA -palvelimien toiminnallisuus toteutetaan palveluina. OPC UA -spesifikaatiot määrittelevät sekä itse palvelut että ohjeet palveluiden käyttämiseen. OPC UA -palvelimien ei tarvitse toteuttaa kaikkia määriteltyjä palveluita, sillä ne jaotellaan määrityksessä palvelujoukoiksi profiilien avulla. OPC UA -palvelin voi toteuttaa vain osan OPC UA:n tarjoamista profiileista. OPC UA:n profiilit voidaan jakaa joukkoihin niiden tyypin mukaan, esimerkiksi tietoturvaprofiileihin, palveluprofiileihin sekä asiakasohjelma- ja palvelinprofiileihin.[9] 2.3. OPC UA:n arkkitehtuuri OPC UA:n kerrosarkkitehtuuri mahdollistaa OPC UA -sovellusten käyttämisen eri sovellusalueilla. OPC UA:n toiminta perustuu kommunikointipinoon (engl. Communication Stack), joka toteuttaa OPC UA -sanomien välittämiseen ja turvaamiseen tarvittavat kerrokset. Näitä kerroksia ovat sarjallistamiskerros, tietoturvakerros sekä tiedonsiirtokerros. UA:n Sovelluskerros toteuttaa korkean tason toiminnallisuuden, kuten UApalveluiden toteutuksen. UA:n Sovelluskerros yhdistetään kommunikointipinoon generoidun rajapinnan (engl. Application programming Interface, API) avulla, kuten kuvassa 4 esitetään.[11] Kommunikointipinoa voidaan varioida pinokuvausten (engl. Stack Mappings) avulla. Pinokuvausten yhdistelmiä kutsutaan pinoprofiileiksi (engl. Stack Profile), joista voidaan valita sovellusaluekohtaisesti sopivin OPC UA -sovellusten väliseen kommunikointiin. Jokainen OPC UA -sovellus voi toteuttaa useita eri pinoprofiileita. OPC UA -

2. OPC UA teollisuusautomaatiossa 7 sovellus voi kommunikoida vain niiden UA-sovellusten kanssa, jotka toteuttavat saman pinoprofiilin.[12] Kuva 4: OPC UA:n protokollapinon yhteistyö sekä pinon variointi pinokuvauksien avulla.[11] Kuvassa 4 voidaan nähdä kommunikointipinon variointimahdollisuudet. Sarjallistamiskerroksen, tietoturvakerroksen sekä tiedonsiirtokerroksen toteutus voidaan valita kukin kahdella eri tavalla. Jokaista variointitapaa kutsutaan pinokuvaukseksi, joista muodostuu pinoprofiili, kun pinokuvaus on valittu jokaiselle kommunikointipinon kerrokselle. Esimerkiksi matalan tason OPC UA -palvelimeen voidaan valita käytettäväksi pinoprofiili, joka toimii OPC Foundation:n määrittelemän binäärikoodauksen mukaisesti (UA Binary + UA Secure Conversation + UA TCP). Korkealla tasolla, esimerkiksi ERP-järjestelmätasolla, toimiva OPC UA -palvelin voidaan toteuttaa websovelluspalveluihin ja XML-tekniikoihin perustuvan pinoprofiilin mukaisesti.[11][12] Seuraavissa kohdissa keskitytään tarkemmin UA-arkkitehtuurin mukaisiin kerroksiin. 2.3.1. Sovelluskerros OPC UA:n sovelluskerros on käsite, joka kattaa varsinaisen OPC UA -sovelluksen sekä generoidun palvelurajapinnan, jonka avulla kommunikointipino voi kutsua sovellustason palveluita suoritettavaksi sovelluskerroksella (Kuva 4). Sovelluskerros huolehtii tehdastason informaation välittämisestä OPC UA -sovellusten välillä. Informaatio voi olla esimerkiksi laiteasetuksiin, laitteen antamiin prosessitietoihin tai hälytyksiin liittyvää. Tietojen välittäminen tapahtuu sovelluskerroksessa olevien istuntojen (Session) avulla. Istunnot mahdollistavat käyttäjien tunnistamisen ja auktorisoinnin istunnon tarjoamien palvelujen (Session Service Set) avulla. Istunto on käyttäjäkohtainen ja mahdollistaa käyttäjän vaihtamisen ilman, että yhteyttä OPC UA -palvelimen ja -asiakkaan välillä tarvitsee sulkea.[13] Istuntopalveluiden kuvaukset on esitetty kohdassa 5.5.1.[12]

2. OPC UA teollisuusautomaatiossa 8 2.3.2. Kommunikointipino UA-sovellukselta saapuvat viestit välitetään eteenpäin verkon yli kommunikointipinon avulla. Vastaavasti verkosta tulevat sanomat käsitellään aluksi kommunikointipinossa, jonka jälkeen ne välitetään UA-sovellukselle. Kommunikointipino suorittaa matalan tason operaatioita, kuten viestien sarjallistamisen, UA-sanomien salauksen ja allekirjoittamisen sekä UA-sanoman lähettämisen verkkoon. Kaikki edellä mainitut operaatiot suoritetaan kerrosarkkitehtuurin mukaisesti omissa kerroksissaan, jotka on esitetty kuvassa 4. [12] Sarjallistamiskerroksen tehtävänä OPC UA:ssa on muokata OPC UA - sovellusten väliset sanomat siten, että ne voidaan lähettää verkon kautta toiselle sovellukselle sekä muokata verkosta tuleva data UA-sovelluskerroksen ymmärtämään muotoon, esimerkiksi palvelukutsuiksi. Sarjallistaminen voidaan suorittaa kahdella tavalla kuvan 4 mukaisesti.[12] Tietoturvakerros toimii osana UA:n kommunikointipinoa kuvan 5 mukaisesti. Kommunikointipinon tietoturva perustuu tietoturvakerroksella muodostettuun tietoturvattuun kanavaan (engl. Secure Channel), joka tarjoaa keinot luotettavaan tiedonsiirtoon palvelujensa (engl. Secure Channel Services) avulla. Palvelut mahdollistavat viestien salaamisen ja allekirjoittamisen sekä sertifikaattien käytön.[12] Tietoturvatun kanavan palvelut on esitetty kohdassa 5.4.1. Kuva 5: OPC UA:n tietoturvatoiminnallisuus jaetaan määrityksen mukaisesti kahteen eri kerrokseen. [14] Tiedonsiirtokerroksen tehtävä on viestiotsikoiden lisääminen viestin runkoon sekä viestien välittäminen verkon yli toiselle OPC UA -sovellukselle. Vaikka UA:n tiedonsiirtokerros tekeekin vastaavia asioita, kuin OSI-mallin tiedonsiirtokerros, UA:n tiedonsiirtokerroksella ei varsinaisesti ole mitään tekemistä OSI-mallin tiedonsiirtokerroksen kanssa.[15] Itse asiassa OPC UA:n koko kommunikointipino toimii OSI-mallin seitsemännellä kerroksella, eli sovelluskerroksella. Tämä on havainnollistettu kuvassa 6. Koska UA toimii OSI-mallin sovelluskerroksella, se ei ota kantaa esimerkiksi TCPpakettien uudelleen lähetykseen. UA-määritykset eivät myöskään oleta muiden tietoturvaprotokollien, kuten Transport Layer Security (TLS) -salausprotokollan, käyttöä OPC UA -sovelluksien kanssa.[11][15]

2. OPC UA teollisuusautomaatiossa 9 Kuva 6: OPC UA suhteessa OSI-malliin. Tiedonsiirtokerros, kuten muutkin kommunikointipinon kerrokset, voidaan toteuttaa OPC UA:n määritysten mukaisesti kahdella eri tavalla: tiedonsiirtokerroksessa voidaan käyttää joko OPC Foundation:n määrittelemää UA TCP - tiedonsiirtoprotokollaa tai SOAP/HTTP -protokollaa. Tällä hetkellä OPC UA tukee siis vain näitä kahta protokollaa, mutta tiedonsiirtokerros ei ole riippuvainen käytetystä protokollasta, joten OPC UA:han voidaan toteuttaa tuki myös esimerkiksi JMS-tekniikalle. UA:n riippumattomuus tiedonsiirtoprotokollasta on eräs syy sille, että OPC UA:ta voidaan käyttää mitä erilaisimmissa ympäristöissä ja laitteissa[7].

10 10 3. TIETOTURVARISKIT VERKOTTUNEESSA TEOLLISUUSAUTOMAATIOSSA Tässä luvussa esitellään tietoturvan osa-alueita sekä keskitytään tarkastelemaan tietoturvaa yleisesti yritysten näkökulmasta. Tämän jälkeen kuvataan tietoturvan merkitystä teollisuusautomaatiossa ja siihen liittyvissä tietojärjestelmissä. Viimeisenä tässä luvussa selvitetään OPC UA:han liittyviä tietoturvauhkia ja niiden torjuntaan määriteltyjä vastatoimia. 3.1. Tietoturvan merkitys Elektroninen kaupankäynti on lisääntynyt merkittävästi viime vuosina. Paperidokumentteja muokataan digitaaliseen muotoon ja niitä pidetään tallessa jollakin fyysisellä tallennusmedialla, esimerkiksi yrityksen palvelimella kiintolevyillä, erillisellä cd-levyllä tai muistitikulla. Tietokoneiden ja tietoverkkojen merkitys osana yritysten liiketoimintaa on suuri, eikä uusien teknologioiden käyttäminen saa häiritä liiketoimintaprosesseja. Tämä on yksi syy siihen, että tietokoneiden ja -verkkojen tietoturvallisuuteen liittyviä asioita on mietitty jo vuosikymmenien ajan. Tietokoneeseen tallennettu informaatio tai tietokoneiden välillä tapahtuvat liiketoimintaprosessit ja niissä tapahtuva tietojen välittäminen on turvattava vähintään yhtä turvallisesti kuin paperidokumentit. Elektroninen kaupankäynti tarvitsee siten tietoturvamekanismeja ja protokollia, joilla informaatio voidaan suojata.[16][17] 3.2. Tietoturvan osa-alueet Tietoturvaan liittyvät osa-alueet ovat samat, olipa kyseessä sitten paperidokumentti tai elektroninen asiakirja. Tietoturvallisuus voidaan Kerttulan mukaan rakentaa geneeristen tietoturvapalveluiden avulla, jotka kuvaavat tietoturvan neljää eri osa-aluetta; luottamuksellisuus, eheys, todentaminen sekä kiistämättömyys[16]. Järvisen mukaan myös saatavuus ja pääsynvalvonta ovat oleellisia tietoturvan osa-alueita[17]. Tiedon luottamuksellisuus tarkoittaa sitä, että vain tietoon oikeutetut pääsevät siihen käsiksi. Tietojärjestelmissä on otettava huomioon myös se, että informaatiota välitetään eteenpäin tietoverkkojen kautta ja informaation on pysyttävä luottamuksellisena myös sitä siirrettäessä.[16][17] Tiedon luottamuksellisuuden takaamiseksi tiedon käyttäjät pitää tunnistaa. Tämän lisäksi vaaditaan, että tieto pystytään pitämään ulkopuolisilta salassa. Tiedon salaaminen on eräs tapa varmistaa luottamuksellisuus. Luottamuksellisuus on erityisen

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 11 tärkeässä asemassa nykyajan yrityksissä, jotka tallentavat ja välittävät tietojärjestelmissään asiakkaiden luottamuksellisia tietoja. Jos yritys ei pysty takaamaan asiakastietojensa luottamuksellisuutta, yritys tuskin saa asiakkaita.[17] Tiedon luottamuksellisuuden lisäksi on oleellista pystyä säilyttämään tiedon eheys. Tiedon eheys rikkoutuu esimerkiksi silloin, kun ulkopuolinen taho muuttaa alkuperäistä tietoa oikeutettujen käyttäjien huomaamatta muutoksia. Jotta tiedon eheys ei rikkoontuisi, vaaditaan, että ulkopuolinen taho ei voi muuttaa eikä poistaa tietoa tai tieto ei muutu esimerkiksi laitteistovikojen, ohjelmistovikojen, tietojärjestelmässä olevien virusten tai luonnontapahtumien vuoksi. Tiedon eheys voidaan varmentaa lisäämällä tietoon tarkistussummia sekä käyttämällä lokitiedostoja ja muita sisäisiä tarkistuksia. Myös eheyden tapauksessa tulee ottaa huomioon, että tieto tai tiedon osa ei saa muuttua tietoa siirrettäessä tai tiedon ollessa arkistoituna.[16][17] Englanninkielinen termi authentication voi tarkoittaa erilaisissa tapauksissa eri asioita: Kerttula mainitsee tämän termin tarkoittavan tiedon autenttisuutta ja oikeellisuutta, joka liittyy tunnistamiseen (engl. identification), ja määrittelee termin koskevan sekä oliota (esimerkiksi tiedosto, paperidokumentti, laite) itseään että sen sisältämää tietoa. Kerttulan mukaan tiedon oikeellisuus voidaan siten jakaa kahteen osaan, olion autentikointiin sekä informaation autentikointiin[16]. Järvinen kuvaa termin tarkoittavan todentamista, jonka todettiin olevan tärkeä osa tiedon luottamuksellisuutta. Järvisen mukaan todentaminen tarkoittaa menetelmää, jonka avulla voidaan varmistua olion aitoudesta. Tässä dokumentissa käytetään jatkossa Järvisen määritelmää puhuttaessa autentikoinnista. Todentamiseen on kehitetty erilaisia menetelmiä, esimerkiksi henkilöitä voidaan tunnistaa käyttäjätunnuksen sekä salasanan avulla ja laite voi todentaa itsensä toiselle laitteelle salauksen sovelluksiin perustuvilla menetelmillä.[17] Kiistämättömyydellä tarkoitetaan sitä, että olio (henkilö, laite, tapahtuma) ei pysty kiistämään aikaisemmin tekemiään toimenpiteitä[16]. Esimerkiksi sähköisessä kaupankäynnissä tiedon kiistämättömyys on oleellinen sekä asiakkaalle että myyjälle. Myyjälle on tärkeää, että asiakas ei voi kiistää tehneensä tilausta aiemmin. Toisaalta myyjän on pystyttävä todistamaan, että on saanut asiakkaan tilauksen ja on lähettänyt tuotteen asiakkaalle.[17] Pääsynvalvonnan tehtävänä on varmistaa, että järjestelmässä oleviin tietoihin pääsevät vain todennetut käyttäjät. Pääsynvalvonnan tulisi myös pitää lokia järjestelmään kirjautuneista käyttäjistä, ainakin niissä tapauksissa, joissa käyttäjä on avannut tai muokannut järjestelmässä olevia tiedostoja. Lokien perusteella voidaan esimerkiksi jälkikäteen yrittää selvittää syitä järjestelmään kohdistuneisiin tietoturvarikkomuksiin.[17] Tiedon saatavuudella on suuri merkitys yrityksien toiminnan kannalta. Tietokoneista ja tietojen välittämiseen käytettävistä tietoyhteyksistä ei ole juuri hyötyä, jos tarvittava tieto tai palvelu ei ole saatavilla silloin, kun sitä tarvitaan. Tiedon saatavuuteen vaikuttaa laitteiden ja esimerkiksi palvelimien luotettavuus. Tässä yhteydessä luotettavuudella tarkoitetaan sitä, että palvelin ei vikaannu laite- tai ohjelmistoviasta johtuen ja laitteen tietoliikenneyhteydet toimivat. Palvelimen tapauksessa vikaantumista voidaan ehkäistä esimerkiksi kahdentamalla laitteisto.[16]

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 12 Tiedon tai palvelun saatavuutta voidaan pyrkiä myös tahallaan häiritsemään, esimerkiksi kolmannen osapuolen toimesta. Tällöin tarkoituksena ei ole saada tietoa järjestelmän sisältä, vaan estää järjestelmän toiminta. Häirintä voidaan toteuttaa erilaisten palvelunestohyökkäysten avulla.[17] 3.3. Teollisuusautomaation tietoturva Perinteiset automaatiojärjestelmät ovat toimineet aikaisemmin suljetussa verkkoympäristössä, joten tietoturva ei ole ollut yhtä merkityksellinen kuin nykyajan automaatiojärjestelmissä. Verkottuminen on yleistynyt teollisuudessa ja automaatiojärjestelmät käyttävät yhä enemmän standardiratkaisuihin perustuvia verkkoja, kuten Ethernet-verkkoa. Standardiverkkojen ja esimerkiksi IP-teknologiaan perustuvien teknologioiden käyttäminen automaatiojärjestelmässä helpottaa eri järjestelmien integrointia keskenään, mutta samalla teollisuuden tietojärjestelmiin kohdistuvien tietoturvariskien määrä kasvaa, sekä standardiverkkojen käytön että verkottumisen vuoksi.[6] Verkottumisen myötä automaatiojärjestelmien tietoturvaan tulee kiinnittää entistä enemmän huomiota, sillä automaatiojärjestelmä on osa yrityksen koko verkkoa, jonka kautta hyökkääjät voivat murtautua myös automaatiojärjestelmään. Samalla tavoin virukset ja troijalaiset voivat levittäytyä yritysverkon kautta automaatiojärjestelmään asti. Automaatioverkkoihin liittyvät tietoturvariskit eivät siis käytännössä eroa esimerkiksi toimistoverkkojen tietoturvariskeistä, kuitenkin haavoittuvuus automaatiojärjestelmässä saattaa olla huomattavasti vaarallisempi ihmiselle, yritykselle tai jopa ympäristölle ja yhteiskunnalle verrattuna toimistoverkon haavoittuvuuteen. Automaatioympäristön saatavuusvaatimukset sekä mahdollinen automaatioprosessien lisävaatimus reaaliaikaisuuteen luovat haasteita tietoturvan toteuttamiselle.[6] Automaatioverkkoja voidaan suojata perinteisiä menetelmiä soveltamalla. Esimerkiksi automaatioverkon erottaminen muusta yritysverkosta palomuurin avulla lisää automaatiojärjestelmän tietoturvaa, tällöin muissa verkon osissa tapahtuvat häiriöt eivät parhaassa tapauksessa pääse leviämään automaatioverkkoon asti. Liikenteen rajoittaminen palomuurin avulla helpottaa automaatiojärjestelmässä tapahtuvan verkkoliikenteen valvontaa, ideaalisessa tapauksessa automaatiojärjestelmän ja muun tehdasverkon välinen verkkoliikenne tapahtuu vain yhden reitin kautta. Liikenteen rajoittaminen ei kuitenkaan käytännön syistä ole aina mahdollista, esimerkiksi vanhempien OPCtekniikoiden käyttäminen vaatii useiden porttien avaamista, sillä vanhemmat OPCspesifikaatiot perustuvat Microsoftin DCOM-tekniikkaan.[6] Nykyajan automaatioteollisuuden palvelukeskeisyys tarkoittaa muuan muassa yritysten välistä sähköistä liiketoimintaa. Yksittäisten laitteiden myynnin ja toimittamisen lisäksi yhtiöt tarjoavat myös ylläpitoa ja huoltoa laitteilleen. Yritysten välillä kulkee myös muita liiketoimintaprosesseja, kuten erilaisia tilauksia. Tämän kaiken lisäksi yritykset tallentavat asiakkaidensa tietoja asiakkuudenhallintajärjestelmiinsä (engl. Customer Relationship Management, CRM). Kommunikoivien yritysten tietoturva saattaa olla yrityksen sisällä kunnossa, mutta kahden eri toimijan ollessa kyseessä tulee ottaa

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 13 huomioon myös yhteinen toiminta sekä siihen liittyvät vastuut ja sopimukset. Yrityksillä on tietty vastuu siitä, miten yritys säilyttää toiselta yritykseltä vastaanottamaansa tietoa ja kelle tätä tietoa jaetaan. Tiedon säilyttämiseen ja jakamiseen sekä muihin yrityksien välisiin ja tietoturvan kannalta oleellisiin asioihin voidaan asettaa selkeät vastuut sopimuksien avulla. Suomen automaatioseura ry:n julkaiseman Automaation tietoturva - kirjan mukaan suuri osa tietoturvaan liittyvistä vastuista jätetään kuitenkin sopimatta sopimuksia tehdessä.[6] 3.4. Tietoturva OPC UA:n näkökulmasta Toiminnanohjausjärjestelmien sabotointi ja vakoilu ovat nykypäivää. Liikennöinnin tapahtuessa verkon yli yrityksen tietojärjestelmät altistuvat epäsuorille tietoturvaiskuille, kuten viruksille ja troijalaisille, jotka levittäytyvät edelleen yritysverkon sisällä jopa prosessiohjauksen järjestelmiin asti. Tietoliikenneyhteyksien vikaantuminen ja virheet aiheuttavat yrityksille vähintäänkin rahallisia menetyksiä, mutta voivat myös vaarantaa yleisen turvallisuuden.[14] Edellä mainitut asiat aiheuttavat omat haasteensa tietoturvalle. Tietoturvan tarkoituksena on pyrkiä ehkäisemään mahdollisimman hyvin erilaisten tietoturvauhkien aiheuttamat ongelmat. Siten tietoturvan tulisi ehkäistä kaikki tietoturvariskit liittyen tiedon oikeellisuuteen, saatavuuteen ja luotettavuuteen sekä tiedon säilytyksen että tiedonsiirron aikana.[14] 3.4.1. Yleistä OPC UA:n tietoturvasta OPC UA on tarkoitettu käytettäväksi yrityksen tietojärjestelmien kaikilla tasoilla matalan tason prosessiohjauksesta korkean tason toiminnanohjaukseen. Lisäksi OPC UA mahdollistaa esimerkiksi web-sovelluspalveluiden avulla tiedonsiirron Internetin yli asiakkaan ja palvelimen välillä, jolloin OPC UA:han kohdistuu samoja tietoturvariskejä kuin mihin tahansa muuhun Internetiä käyttävään sovellukseen. Siten OPC UA:n tulisi toteuttaa mekanismit suojaamaan kaikkia luvussa 3.2 esitettyjä tietoturvan osaalueita.[12] OPC UA:ssa pyritään takaamaan tiedon luotettavuus salaamalla tiedonsiirto. Tiedon eheys taas taataan digitaalisten allekirjoituksien avulla. Tietoturvamurtoja sekä tietojärjestelmiä vahingoittavia hyökkäyksiä, kuten esimerkiksi kuormitushyökkäyksiä, yritetään rajoittaa tunnistamalla käyttäjät ja kommunikoivat UA-sovellukset sekä rajoittamalla pääsy tietoresursseihin käyttöoikeuksien avulla. OPC UA -sovellukset keräävät tietoja suoritetuista toimenpiteistä. Lokimerkintöjen perusteella voidaan tarkastaa UAsovelluksen toiminta sekä varmistaa tapahtumien kiistämättömyys.

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 14 3.4.2. Tietoturvariskit OPC UA:ta määriteltäessä on pyritty selvittämään OPC UA -sovellusten haavoittuvia kohtia ja määritelty kutakin tietoturvauhkaa vastaan vastatoimet, jotka mahdollisimman hyvin estävät uhista aiheutuvia ongelmia. Seuraavissa kohdissa esitellään tärkeimpiä UA-spesifikaation määrittelemiä tietoturvauhkia, jotka kohdistuvat OPC UA - palvelimiin ja -asiakassovelluksiin. Määriteltyjä uhkia vastaan käytettävät vastatoimet esitellään uhkakuvauksen yhteydessä. Viestin muuntaminen Viestin muuntaminen (engl. Message Alteration) tapahtuu yleensä salakuuntelun ohessa. Hyökkääjä muokkaa kaappaamaansa viestiä ja lähettää sen edelleen OPC UA - asiakassovellukselle tai palvelimelle, tarkoituksena saada esimerkiksi lisätietoa sovelluksesta tai pääsy OPC UA -palvelimelle.[14] Viestien muuntaminen onnistuneesti on kuitenkin hyvin vaikeaa, sillä OPC UA tarjoaa mahdollisuuden allekirjoittaa asiakasohjelman ja palvelimen välillä kulkevat viestit. Allekirjoituksen tarkistaminen paljastaa viestiin tehdyt muutokset, jonka jälkeen viesti voidaan hylätä.[14] Viestihuijaus Viestihuijauksessa (engl. Message Spoofing) on kyseessä viestin lähettäminen hyökättävään kohteeseen. Hyökkääjä väärentää esimerkiksi OPC UA -palvelimelle lähetettävän viestin tarkoituksena päästä suorittamaan laittomia toimintoja. Väärentämällä viestin hyökkääjä saattaa myös pystyä salaamaan oman toimintansa. Huijausyritys voidaan toteuttaa usealla eri protokollatasolla. Viestihuijaamiseen saattaa liittyä esimerkiksi jonkin aiemmin kaapatun viestin muuntaminen hyökkääjälle sopivaan muotoon, tarkoituksena esimerkiksi esiintyä toisena käyttäjänä.[14][18] OPC UA:ssa voidaan ehkäistä viestihuijaukset allekirjoittamalla palvelimen ja asiakkaan välillä kulkevat viestit. Lisäturvaa tuovat myös jokaisen viestin mukana siirtyvät tunnistetiedot käytetystä istunnosta, kanavasta ja palvelupyynnöstä.[14] Viestin toisto Hyökkäystyyppiä, jossa hyökkääjä ei yritä väärentää viestiä, vaan lähettää oikein muodostetun ja validin viestin uudelleen, kutsutaan viestin toistoksi (engl. Message Replay). Viestin toiston tarkoituksena voi olla jonkin järjestelmän, kuten prosessinohjauksen, toiminnan sekoittaminen. Uudelleen lähetetty viesti voi esimerkiksi sisältää komennon sulkea venttiili. Tällöin venttiilin sulkeminen tapahtuu väärään aikaan.[14] Koska OPC UA mahdollistaa viestin allekirjoituksen ja käyttää erilaisia tunnistetietoja pyyntöjen ja vastausten tulkintaan, hyökkääjän on erittäin vaikea pystyä toistamaan viesti siten, että se sisältäisi oikeat tiedot.[14]

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 15 Epämuodostuneet viestit Järjestelmän tai sovelluksen toimintaa voidaan yrittää sekoittaa myös lähettämällä epämuodostuneita viestejä. Hyökkääjä muodostaa virheellisen viestin, jonka tarkoituksena on sekoittaa kohteena olevan sovelluksen toiminta. OPC UA:n tapauksessa virheellisesti muodostettu viesti voi olla epämuodostunut XML-, SOAP- tai OPC Binary -viesti. Tällöin OPC UA -palvelin tai -asiakas saattaa käsitellä viestiä siten, että se suorittaa laittomia operaatioita, sekoittaa sovelluksen toiminnan esimerkiksi puskuriylivuodon seurauksena tai kuluttaa ylimääräisiä resursseja viestin käsittelyyn. Tästä johtuen OPC UA - palvelin saattaa pahimmassa tapauksessa jopa kaatua.[14] UA-spesifikaatioiden mukaisesti OPC UA -asiakassovellukset sekä -palvelimet tulisi implementoida siten, että viestien muoto tarkastetaan mahdollisimman aikaisessa vaiheessa. Viestin muodon lisäksi tulee tarkistaa viestin mukana kulkevien parametrien laillisuus.[14] Kuormitushyökkäys Kuormitushyökkäyksen (engl. Message Flooding) tarkoituksena on ylikuormittaa hyökkäyksen kohde, esimerkiksi OPC UA -palvelin, kuluttamalla palvelimen tarvitsemia resursseja, kuten esimerkiksi prosessoria, käyttöjärjestelmää tai tiedostojärjestelmää. Hyökkäys tapahtuu lähettämällä kohteeseen yksi useita pyyntöjä sisältävä viesti tai useita peräkkäisiä viestejä. Hyökkääjän lähettämät viestit voivat olla hyvin muodostettuja (engl. well-formed) mutta hyökkäystarkoituksiin käytetään myös epämuodostuneita viestejä (engl. malformed messages).[14] Eräs tapa suorittaa kuormitushyökkäys on pyrkiä tukkimaan koko TCPprotokolla esimerkiksi SYN-kuormituksella. Tässä hyökkäystavassa hyökkääjä lähettää hyökättävään kohteeseen useita SYN-viestejä jatkuvana sarjana. Hyökkääjän oma IPosoite on yleensä väärennetty. TCP-protokollan mukaisesti kohteena oleva kone pyrkii vastaamaan lähetettyyn SYN-viestiin paketilla, jossa sekä SYN- että ACK-bitti on ylhäällä. Tämä on kuitenkin turhaa, sillä viesti ei mene koskaan perille väärennettyyn osoitteeseen. Jokainen SYN-kutsu kuluttaa muistia ja jos kohteena oleva kone ei sulje odottavia yhteyksiä ennen kuin uusia pyyntöjä tulee avattavaksi, kohdekoneen muistitila täyttyy ja verkkoliikenne tukkiutuu.[19] OPC UA pyrkii minimoimaan autentikoimattomien viestien prosessointia, jolloin hyökkääjän tavoite tukkia tietoliikenne vaikeutuu. OPC UA sisältää kaksi palvelua, GetEndpoints sekä OpenSecureChannel, joissa palvelin käsittelee palvelupyynnön ennen asiakkaan autentikointia. GetEndpoints palauttaa palvelun pyytäjälle palvelimen kaikki yhteyspisteet, joista palvelin vastaa. GetEndpoints-pyynnön vastauksena palautetaan ainoastaan tietty määrä staattista dataa, jolloin vastauksen lähettäminen ei vaadi paljoa käsittelyaikaa eikä resursseja. OpenSecureChannel-palvelupyynnön tapauksessa tilanne on hieman hankalampi, sillä pyynnön vastauksena palautetaan palvelinkohtaista dataa, lisäksi vastausta joudutaan prosessoimaan salauksen ja allekirjoituksen vuoksi. Kuormitushyökkäys voidaan estää OpenSecureChannel-pyynnön tapauksessa esimerkiksi määrittelemällä palvelimelle suurin mahdollinen määrä avoimia yhteyksiä. Jos

3. Tietoturvariskit verkottuneessa teollisuusautomaatiossa 16 tämä määrä ylitetään, palvelin lähettää virheilmoituksen, jota ei kuitenkaan salata eikä allekirjoiteta. Tällöin palvelupyyntöön käytetty prosessointiaika pienenee. UA-määritys ei kuitenkaan ota kantaa siihen, pystyykö OPC UA selviämään kuormitushyökkäyksestä vaikka prosessointiajat pienevät. [14] Palvelimen profilointi Palvelimen profiloinnissa hyökkääjä pyrkii selvittämään kohdesovelluksesta tietoa, josta selviää kohdesovelluksen tunnetut tietoturva-aukot. Tällaisia tietoja voidaan saada esimerkiksi selvittämällä kohdesovelluksen tyyppi, versio tai välittäjä (myyjä). Profilointi voi perustua hyvin muodostettujen ja epämuodostuneiden viestin lähettämiseen ja kohdesovelluksen vasteiden tutkimiseen.[14] Hyökkääjän tavoitteita rajataan OPC UA -palvelimessa rajoittamalla tiedon määrää, joka lähetetään tunnistamattomalle asiakkaalle. Tällöin vain tunnistetut sovellukset ja käyttäjät pääsevät käsiksi sovelluskohtaisiin tietoihin.[14] Väärennetty palvelin Hyökkääjä voi toteuttaa tai hankkia OPC UA -palvelimen ja asentaa luvattomasti osaksi jotakin tietojärjestelmää tarkoituksena selvittää esimerkiksi tietoja kommunikoivista UA-asiakasohjelmista tai asiakasohjelmistojen käyttäjistä[14]. Selvitettäviä tietoja voisivat olla esimerkiksi käyttäjätunnukset ja salasanat sekä yhteyttä ottavien UAasiakasohjelmien versionumerot sekä toimittajat.[14] OPC UA:n tieturvamallin mukaisesti OPC UA -sovellukset käyttävät kommunikoivien sovellusten tunnistamiseen sertifikaatteja, jotka voidaan varmentaa. Jos väärennetty palvelin käyttää omaa sertifikaattiaan, sitä ei saada varmennettua, jolloin asiakasohjelma katkaisee yhteyden. Jos taas palvelin käyttää luotetun UA-palvelimen sertifikaattia, jolloin varmentaminen onnistuu, väärennetyllä palvelimella ei kuitenkaan ole sertifikaattiin liittyvää yksityistä avainta, joten se ei pysty tulkitsemaan UAasiakasohjelman lähettämiä viestejä eikä allekirjoittamaan lähettämiään viestejä.[14] Käyttäjätietojen kaappaaminen Käyttäjätietojen kaappaamisen tarkoituksena on saada selville jonkun järjestelmän tai sovelluksen käyttäjän käyttäjätiedot. Hyökkäystavassa pyritään jollakin keinolla selvittämään käyttäjien salasanoja, käyttäjätunnuksia, avaimia sekä muita salaisia tietoja.[14] Hyökkääjä voi yrittää selvittää edellä mainittuja tietoja työhenkilöstön pöydillä olevista papereista, näytöistä tai puhelimista. Lisäksi hyökkääjä voi yksinkertaisesti yrittää arvata käyttäjien salasanoja tai käyttää tähän tarkoitukseen suunniteltua sovellusta. Hyökkääjä voi myös yrittää saada käyttäjätietoja kaappaamalla OPC UA -palvelimen ja asiakkaan välillä kulkevia viestejä. OPC UA:ssa voidaan salata viestit ja näin estää käyttäjätietojen saaminen vaikka viesti saataisiinkin kaapattua.[14]