Toistettava käännös
Toistettava käännös tarkoittaa tietotekniikassa determinististä tietokoneohjelman käännöstä.[1][2]
Lähdekoodin käännöksen on aina tuotettava identtiset tulokset ja useiden kolmansien osapuolien on voitava varmistaa ja tulla yhteiseen johtopäätökseen ”oikeasta” tuloksesta.[1] Tämä tarkoittaa kolmea asiaa:[1]
- käännösjärjestelmän on oltava deterministinen: tulokseen ei lisätä käännöksen ajankohtaa ja tuloste on aina tehtävä samassa järjestyksessä
- käännöstyökalut ja käännösympäristö on voitava joko kirjata ylös tai määrittää etukäteen
- käyttäjien on voitava tehdä mahdollisimman oikeanlainen käännösympäristö, suorittaa käännös ja tarkistaa, että tulos vastaa alkuperäistä
Tuotettavaan käännökseen voivat vaikuttaa käännöskomennot, työkalut (kuten kääntäjä, linkkeri ja kirjastojen versiot) ja käännösympäristö.[3] Toistettavuudella on merkitystä tietoturvaan kuten takaovien havaitsemiseen kuten Ken Thompsonin tunnetussa artikkelissa Reflections on Trusting Trust on osoitettu.[3][4]
Toistettavuudella voidaan varmistaa, että esimerkiksi jakelun kautta tuleva käännös vastaa alkuperäisen kehittäjän ohjelmaa.[5] Jakelupaketit voivat sisältää korjauksia ohjelmointivirheisiin ja tietoturvaan ja menetelmä on usein automatisoitu.[5] Kehittäjälle ja jakelijalle mahdollinen korruptoitumisen havaitseminen on tärkeää.[5] Kääntäjät voivat lisätä käännöksen aikana ylimääräistä tietoa kuten väliaikaisten tiedostojen nimet tai tiedostopolkuja virheenjäljitykseen käytettävään tietoon, joka aiheuttaa peräkkäisten käännöksien olevan erilaisia vaikka lähdekoodi ei muutu käännösten välillä.[6]
Käännösjärjestelmät kuten Bazel, Gitian ja Meson pyrkivät deterministiseen toistettavuuteen.[7][8][9]
Reproducible Builds -projekti kehittää työkaluja erikseen tuotettujen pakettien vertailuun, korjaa työkalujen ongelmia ja työskentelee kehittäjien kanssa korjatakseen ongelmia, jotka voivat haitata toistettavuutta.[5] Projekti on liittynyt Software Freedom Conservancy -järjestöön ja siihen liittyvät muut projektit kuten coreboot, Debian, Fedora, FreeBSD, NetBSD, openSUSE ja OpenWrt.[10][11][12] Linux Foundation on rahoittanut projekteja, jotka tähtäävät toistettavaan käännettävyyteen.[13]
Historia
[muokkaa | muokkaa wikitekstiä]Vuonna 1992 GCC-kääntäjään aloitettiin ristiinkääntäjätuki, joka ei vielä ollut täysin toistettava tuolloin.[14]
Debian-projekti on pyrkinyt koko jakelun toistettavaan käännökseen.[15] Vuonna 2013 projektin alkaessa 24 % Debianissa olevista ohjelmista kääntyi toistettavasti.[12] Maaliskuussa 2018 93 % Debian 10 (Buster) -julkaisun paketeista oli käännettävissä toistettavasti.[12]
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b c Reproducible builds reproducible-builds.org. Viitattu 22.12.2020. (englanniksi)
- ↑ Reproducible builds kernel.org. Viitattu 22.12.2020. (englanniksi)
- ↑ a b Jake Edge: Reproducible builds lwn.net. 12.4.2017. Viitattu 22.12.2020. (englanniksi)
- ↑ Ken Thompson: Reflections on Trusting Trust (PDF) users.ece.cmu.edu. elokuu 1984. Viitattu 22.12.2020. (englanniksi)
- ↑ a b c d Emily Ratliff: How Combining Two Completely Separate Open Source Projects Can Make Us All More Secure securityweek.com. 4.4.2016. Viitattu 22.12.2020. (englanniksi)
- ↑ Joseph Devietti: Introduction to Reproducible Builds cloudseal.io. 15.5.2019. Arkistoitu 29.11.2019. Viitattu 23.12.2020. (englanniksi)
- ↑ https://bazel.build
- ↑ https://gitian.org
- ↑ https://mesonbuild.com/Reproducible-builds.html
- ↑ Reproducible Builds joins the Software Freedom Conservancy reproducible-builds.org. 8.11.2018. Viitattu 23.12.2020. (englanniksi)
- ↑ Who is involved? reproducible-builds.org. Viitattu 23.12.2020. (englanniksi)
- ↑ a b c Tom Yates: Toward a fully reproducible Debian lwn.net. 15.6.2018. Viitattu 22.12.2020. (englanniksi)
- ↑ Supply Chain Integrity: The Role of Verified Reproducible Builds bankinfosecurity.com. 26.1.2021. Viitattu 22.3.2021. (englanniksi)
- ↑ John Gilmore: SOURCE_PREFIX_MAP and Occam's Razor lists.reproducible-builds.org. 24.1.2017. Viitattu 22.12.2020. (englanniksi)
- ↑ https://wiki.debian.org/ReproducibleBuilds