selitetty.com

Päivitykset ja ylläpito

Miksi päivityksiä julkaistaan jatkuvasti ja mitä ne korjaavat

Päivitysten määrä ei kerro siitä, että ohjelmisto olisi tehty huonosti. Se kertoo siitä, että ohjelmisto elää ympäristössä, joka muuttuu koko ajan sen ympärillä.

Lyhyt vastaus

Päivityksiä tulee jatkuvasti, koska ohjelmiston toimintaympäristö muuttuu ja virheitä löytyy koko sen eliniän ajan. Osa korjauksista syntyy valmistajan omasta testauksesta, osa käyttäjien vikailmoituksista ja osa ulkopuolisten tutkijoiden löytämistä haavoittuvuuksista. Korjaus kulkee koodista testauksen ja allekirjoituksen kautta jakeluun, ja jakelu tehdään yleensä vaiheittain. Siksi sama päivitys saapuu eri laitteille eri päivinä, eikä se ole merkki viasta.

Sisällys
  1. Ohjelmisto ei valmistu, koska sen ympäristö ei pysy paikallaan
  2. Kolme reittiä, joita pitkin korjattava virhe löytyy
  3. Matka löydöstä sinun laitteellesi
  4. Riippuvuudet: yksi korjaus alhaalla liikuttaa kaikkea ylhäällä
  5. Kuka päivittää mitäkin: työnjako yhden laitteen sisällä
  6. Miksi päivitys saapuu eri laitteille eri päivinä
  7. Testauksen rajat ja se, mitä huonolle päivitykselle tehdään
  8. Mitä tästä seuraa sinulle
  9. Usein kysytyt kysymykset
  10. Lähteet ja lisälukemista

Puhelin ilmoittaa päivityksestä, kone haluaa käynnistyä uudelleen, ja sovelluskaupassa odottaa kaksitoista päivitystä. Tavallinen tulkinta on, että ohjelmistot tehdään nykyään huolimattomasti. Tulkinta on ymmärrettävä mutta väärä. Päivitysten tahti johtuu siitä, että ohjelmisto ei ole esine vaan kerros, joka lepää monen muun liikkuvan kerroksen päällä.

Rajaus kannattaa sanoa heti. Tässä käsitellään päivitysten syntymekanismia: mistä korjattava asia löytyy, kuka sen korjaa ja mitä matkalla tapahtuu ennen kuin päivitys ilmestyy sinun laitteeseesi. Päivitystyyppien ero käsitellään erikseen artikkelissa tietoturva- ja ominaisuuspäivityksen erosta, ja asennuksen automatisointi omassa artikkelissaan automaattisista päivityksistä.

Ohjelmisto ei valmistu, koska sen ympäristö ei pysy paikallaan

Kirjoitushetkellä ohjelma toimii sen laitteiston, käyttöjärjestelmän, verkkoyhteyksien ja palveluiden kanssa, jotka silloin ovat olemassa. Jokainen näistä muuttuu jatkuvasti. Käyttöjärjestelmä saa uuden version, verkkoprotokolla saa tiukemmat vaatimukset, salausmenetelmä vanhenee, palvelin vaihtaa rajapintaansa, laitevalmistaja vaihtaa näytön mallia. Mikään näistä ei ole ohjelman oma virhe, mutta jokainen niistä vaatii ohjelmalta muutoksen.

Toinen syy on se, että virheitä löytyy koko ohjelmiston eliniän ajan. Ohjelma on suuri joukko ehtoja, ja niiden yhdistelmiä on käytännössä loputtomasti. Testaus kattaa niistä sen osan, jota on osattu ajatella. Loput löytyvät käytössä, joskus vuosia julkaisun jälkeen.

Kolmas syy on tietoturva. Hyökkääjien menetelmät kehittyvät, ja vanha koodi joutuu uudenlaisen tutkimisen kohteeksi. Sama koodi, jota pidettiin turvallisena, voi olla haavoittuva sen jälkeen kun joku keksii uuden tavan käyttää sitä väärin.

Päivitys ei ole merkki siitä, että ohjelmisto oli rikki. Se on merkki siitä, että joku etsii siitä virheitä ja korjaa ne.

Kolme reittiä, joita pitkin korjattava virhe löytyy

Ensimmäinen reitti on valmistajan oma työ. Koodia luetaan, testataan automaattisesti ja käydään läpi katselmoinneissa. Suuri osa virheistä jää tähän verkkoon eikä koskaan päädy julkaisuun.

Toinen reitti ovat käyttäjät. Kaatumisraportti, tukipyyntö ja vikailmoitus kertovat ongelmista, joita testiympäristössä ei tapahdu, koska siellä ei ole sinun laiteyhdistelmääsi, kieliasetustasi tai kolmeatoista vuotta vanhaa tiedostoasi.

Kolmas reitti on tietoturvatutkimus. Ulkopuoliset tutkijat etsivät haavoittuvuuksia ja ilmoittavat niistä valmistajalle. Vakiintunut käytäntö on koordinoitu julkistaminen: valmistaja saa aikaa tehdä korjauksen, ja yksityiskohdat julkaistaan vasta kun korjaus on saatavilla. Suomessa Liikenne- ja viestintäviraston Kyberturvallisuuskeskus välittää ja koordinoi haavoittuvuusilmoituksia. Löydöille annetaan usein julkinen tunniste, jolla samaa haavoittuvuutta voidaan käsitellä eri valmistajien tiedotteissa samalla nimellä.

Neljäs reitti on vähemmän näkyvä mutta yleinen: korjaus tulee jonkun muun tekemästä löydöstä. Kun laajasti käytetystä komponentista löytyy virhe, kaikkien sitä käyttävien on reagoitava, vaikka heidän omasta koodistaan ei olisi löytynyt mitään.

Näiden reittien painotus näkyy siinä, mitä päivitys korjaa. Sisäisesti löydetyt viat ovat usein pieniä toiminnallisia korjauksia. Ulkopuolelta ilmoitetut löydöt ovat useammin tietoturvakorjauksia, ja juuri niillä on kiire, koska korjauksen julkaiseminen kertoo myös hyökkääjille, missä vika oli.

Matka löydöstä sinun laitteellesi

Ketju on jokseenkin sama riippumatta siitä, onko kyse puhelimesta vai työkoneesta.

  1. Vika kirjataan. Löytö saa tunnisteen ja kuvauksen siitä, miten se toistetaan. Ilman toistettavaa tapausta korjausta ei voi tehdä eikä varmistaa.
  2. Vaikutus arvioidaan. Selvitetään mitä vikaa voi tehdä: kaataako se sovelluksen, vuotaako se tietoa vai antaako se ulkopuoliselle mahdollisuuden ajaa omaa koodiaan laitteella. Arvio ratkaisee kiireen.
  3. Korjaus kirjoitetaan. Muutos pyritään pitämään mahdollisimman pienenä, koska pieni muutos rikkoo epätodennäköisemmin jotain muuta.
  4. Korjaus testataan. Ajetaan automaattiset testit ja testataan laiteyhdistelmillä, joita valmistajalla on käytettävissä.
  5. Paketti allekirjoitetaan. Päivityspaketti allekirjoitetaan sähköisesti, ja allekirjoituksen aitous varmistetaan varmenteen avulla. Tämä estää sen, että joku muu voisi tarjota laitteellesi omaa versiotaan päivityksestä.
  6. Paketti julkaistaan jakeluun. Sovelluskaupassa se menee kaupan tarkistuksen läpi, käyttöjärjestelmissä valmistajan omaan jakelujärjestelmään.
  7. Laite tarkistaa paketin. Ennen asennusta laite laskee ladatusta tiedostosta tiivisteen ja vertaa sitä odotettuun arvoon sekä tarkistaa allekirjoituksen. Jos jompikumpi ei täsmää, asennus keskeytyy.
  8. Asennus ja uudelleenkäynnistys. Osa päivityksistä asentuu käytön aikana, käyttöjärjestelmän ytimeen tai laiteohjelmistoon menevät vaativat uudelleenkäynnistyksen.

Vaiheet 5 ja 7 ovat syy siihen, miksi päivitys kannattaa aina ottaa laitteen omasta päivitystoiminnosta tai virallisesta sovelluskaupasta. Verkkosivun ponnahdusikkuna, joka kehottaa asentamaan päivityksen, ohittaa koko tämän ketjun.

Riippuvuudet: yksi korjaus alhaalla liikuttaa kaikkea ylhäällä

Nykyaikainen ohjelma ei ole yksi kokonaisuus vaan kasa osia. Kuvien käsittely, salaus, pakkaus, verkkoyhteydet ja tekstin näyttäminen tulevat usein valmiista kirjastoista, joita käytetään tuhansissa muissakin ohjelmissa. Tämä säästää työtä, mutta se tarkoittaa myös, että yhdestä kirjastosta löytynyt virhe koskee kaikkia sitä käyttäviä ohjelmia.

Kun tällainen kirjasto korjataan, korjaus ei siirry automaattisesti valmiisiin ohjelmiin. Jokaisen ohjelman tekijän pitää ottaa uusi versio käyttöön, kääntää ohjelma uudelleen, testata se ja julkaista päivitys. Tästä syntyy aalto, jossa monet toisiinsa liittymättömät sovellukset päivittyvät lyhyen ajan sisällä samasta syystä.

Riippuvuudet selittävät myös sen, miksi pienenkin ohjelman päivitys voi olla kooltaan suuri. Päivitys sisältää usein koko ohjelman uuden version mukanaan tulevine kirjastoineen, ei vain muuttuneita rivejä. Osa jakelujärjestelmistä osaa lähettää pelkän eron vanhaan versioon, jolloin lataus jää selvästi pienemmäksi, mutta tämä edellyttää että laitteella on tarkalleen se versio, jonka päälle ero on laskettu.

Sama pätee vastakkaiseen suuntaan. Kun käyttöjärjestelmä kiristää sääntöjä, esimerkiksi vaatii sovelluksilta uudenlaista lupakäytäntöä, jokaisen sovelluksen on mukauduttava. Osa käyttäjän näkemistä päivityksistä on siis pakollista sopeutumista, ei kehitystä.

Kuka päivittää mitäkin: työnjako yhden laitteen sisällä

Laite näyttää käyttäjälle yhdeltä esineeltä, mutta sen ohjelmistot tulevat monelta taholta. Tämä selittää, miksi sama laite voi saada tietoturvakorjaukset ajallaan mutta jäädä silti ilman uutta käyttöjärjestelmäversiota.

Kerros Kuka tekee korjauksen Miten se saapuu laitteelle
Piirisarja ja modeemi Komponenttien valmistaja Laitevalmistajan päivityksen mukana
Laiteohjelmisto ja ajurit Laitevalmistaja Järjestelmäpäivityksenä tai erillisenä ajuripäivityksenä
Käyttöjärjestelmän ydin ja perusosat Käyttöjärjestelmän toimittaja Järjestelmäpäivityksenä
Valmistajan oma käyttöliittymä ja lisäsovellukset Laitevalmistaja Järjestelmäpäivityksenä tai sovelluskaupasta
Tavalliset sovellukset Sovelluksen tekijä Sovelluskaupasta
Palvelun palvelinpuoli Palvelun tarjoaja Ilman käyttäjän toimia

Ketjun pituus ratkaisee nopeuden. Jos korjaus syntyy piirisarjan valmistajalla, se kulkee ensin laitevalmistajalle, sieltä laitemallikohtaiseen koontiin ja vasta sitten jakeluun. Tästä syystä sama tietoturvakorjaus voi olla eri laitteissa saatavilla hyvin eri aikaan. Ajurien osuus tässä ketjussa käsitellään tarkemmin artikkelissa ajureista, ja se, mitä käyttöjärjestelmä ylipäätään tekee sovellusten ja laitteiston välissä, artikkelissa käyttöjärjestelmän tehtävästä.

Miksi päivitys saapuu eri laitteille eri päivinä

Naapurin sama puhelinmalli sai päivityksen viikko sitten, sinun ei ole vieläkään saanut sitä. Yleisin syy ei ole vika vaan vaiheittainen julkaisu. Päivitys annetaan ensin pienelle osalle laitteista, seurataan kaatumisten ja virheilmoitusten määrää, ja vasta jos luvut pysyvät normaaleina, jakelua laajennetaan.

Muita syitä ovat laitemallikohtaiset koonnit, alueelliset erot ja operaattorikohtaiset versiot, joissa liittymän tarjoaja hyväksyy päivityksen omaan laitekantaansa. Sama laitemalli voi olla eri maissa hieman eri koontina, ja jokainen niistä testataan erikseen.

Laite itse voi myös lykätä asennusta. Suuri järjestelmäpäivitys vaatii vapaata tallennustilaa purkamisen ajaksi, riittävän akun varauksen ja usein wifi-yhteyden. Jos jokin näistä ehdoista ei täyty, päivitys näkyy listalla mutta jää odottamaan. Tämä on yksi tavallisimmista syistä siihen, miksi asennus ei käynnisty vaikka päivitys on ladattu.

Käytännön johtopäätös on yksinkertainen: jos päivitystä ei näy, odota. Ainoa tilanne, jossa kannattaa toimia heti, on kriittinen tietoturvakorjaus, jonka valmistaja on kehottanut asentamaan viipymättä. Silloin päivityksen voi yleensä hakea käsin asetusten päivitystoiminnosta, joka ohittaa vuoron odottamisen.

Testauksen rajat ja se, mitä huonolle päivitykselle tehdään

Testaus ei voi kattaa kaikkea, koska laitteiden, asetusten ja käyttötapojen yhdistelmiä on liikaa. Ohjelmisto, joka toimii tuhannella testilaitteella, kohtaa julkaisun jälkeen miljoona erilaista ympäristöä. Osa vioista ilmenee vain harvinaisessa yhdistelmässä: tietty ajuriversio, tietty näytön asetus, tietty kielivalinta.

Kun päivitys rikkoo jotain, joka toimi aiemmin, kyse on regressiosta. Julkaisijan ensimmäinen toimi on yleensä jakelun pysäyttäminen, jolloin päivitys ei enää mene uusille laitteille. Sen jälkeen tulee joko korjattu versio tai ohje, jolla ongelman voi kiertää.

Julkaisijalla on kaksi vastakkaista painetta. Nopeus on tietoturvan kannalta hyve, koska korjaamaton haavoittuvuus on auki niin kauan kuin päivitys puuttuu. Hitaus taas on laadun kannalta hyve, koska pidempi testaus löytää enemmän regressioita. Tästä ristiriidasta seuraa käytännön kompromissi: pienet tietoturvakorjaukset julkaistaan nopeasti ja usein, suuret muutokset harvemmin ja pidemmän testauksen jälkeen.

Käyttäjän mahdollisuudet perua päivitys vaihtelevat laiteluokan mukaan. Tietokoneen käyttöjärjestelmissä on yleensä palautuspiste tai määräaikainen mahdollisuus palata edelliseen versioon. Puhelimissa paluu vanhempaan järjestelmäversioon on usein estetty tarkoituksella, koska vanhassa versiossa on tunnettuja haavoittuvuuksia. Yksittäisen sovelluksen voi joskus asentaa vanhempana versiona, mutta se ei ole tavallisen käyttäjän suositeltava reitti.

Mitä tästä seuraa sinulle

Päivitysten logiikka johtaa muutamaan käytännön sääntöön, jotka kestävät laitemallista riippumatta.

  1. Asenna tietoturvakorjaukset viivyttelemättä. Korjaamaton haavoittuvuus on juuri se reitti, jota käytetään esimerkiksi kiristyshaittaohjelman levittämiseen ja tietovuotojen aiheuttamiseen.
  2. Ota päivitykset vain laitteen omasta päivitystoiminnosta tai virallisesta sovelluskaupasta. Sähköpostin liite tai sivuston ponnahdusikkuna ei ole päivityskanava.
  3. Varmista varmuuskopio ennen suurta järjestelmäpäivitystä. Varmuuskopioinnin 3-2-1-sääntö on tässä sama kuin muutenkin: kopio, joka on vain päivittyvällä laitteella, ei ole kopio.
  4. Älä odota, että päivitys saapuu kaikille samana päivänä. Vaiheittainen julkaisu on turvamekanismi, ei virhe.
  5. Jos päivitys rikkoi jotain, tarkista ensin julkaisijan tiedote. Tunnetulle regressiolle on usein jo ohje tai korjaava versio tulossa.
  6. Katso laitteen tuen tilanne kerran vuodessa. Kun päivityksiä ei enää tule lainkaan, kyse ei ole rauhasta vaan tuen päättymisestä, jolla on omat seurauksensa.

Usein kysytyt kysymykset

Onko pakko asentaa jokainen päivitys?

Tietoturvakorjaukset kannattaa asentaa aina ja pian, koska ne sulkevat tunnetun reitin laitteeseen. Ominaisuuspäivityksiä voi harkita ja ajoittaa itselleen sopivaan hetkeen. Kokonaan päivittämättä jättäminen johtaa ennen pitkää siihen, että myös sovellukset ja palvelut lakkaavat toimimasta.

Miksi sovellukset päivittyvät useammin kuin käyttöjärjestelmä?

Sovelluksen tekijä voi julkaista päivityksen suoraan sovelluskauppaan, kun taas käyttöjärjestelmän päivitys kulkee pidemmän ketjun kautta laitevalmistajan koonnin ja testauksen läpi. Lisäksi yksi sovellus on pienempi kokonaisuus, jolloin muutos on helpompi testata.

Miksi naapurin samanlainen puhelin sai päivityksen ennen minun puhelintani?

Päivitykset jaetaan yleensä vaiheittain, jolloin ensimmäinen erä laitteita saa sen aikaisin ja loput myöhemmin. Myös alue, operaattori ja laitteen tarkka malliversio vaikuttavat. Odottaminen on normaalia, ja päivityksen voi yleensä hakea käsin asetuksista.

Voiko päivityksen perua, jos se rikkoi jotain?

Tietokoneessa yleensä voi, koska käyttöjärjestelmissä on palautuspiste tai määräaikainen paluu edelliseen versioon. Puhelimissa paluuta vanhempaan järjestelmäversioon on usein rajoitettu, koska vanhassa versiossa on tunnettuja haavoittuvuuksia. Tarkista ensin valmistajan tiedote, koska korjaava versio tulee usein nopeasti.

Mistä tiedän, että päivitysilmoitus on aito?

Aito päivitys tulee laitteen omasta päivitystoiminnosta tai virallisesta sovelluskaupasta, ei verkkosivulta eikä sähköpostin liitteestä. Laite tarkistaa päivityspaketin allekirjoituksen ennen asennusta, joten oikeaa kanavaa pitkin tullut päivitys ei voi olla väärennös.

Miksi vanha ohjelma vaatii päivitystä, vaikka se on toiminut vuosia?

Ohjelman ympäristö on muuttunut sen ympärillä: käyttöjärjestelmä, salausmenetelmät tai palvelun rajapinta on päivittynyt. Ohjelma ei siis ole itsessään mennyt rikki, vaan sen pitää mukautua uusiin vaatimuksiin toimiakseen edelleen.

Takaisin ylös