Trygg som standard, ikke som ettertanke
De fleste programmer får langt mer tilgang enn de trenger. Norscode snur standardinnstillingen.
De fleste programmer får langt mer tilgang enn de trenger. Et lite skript som skal lese én fil, kan i praksis lese hele hjemmekatalogen din, åpne nettverksforbindelser og sende data ut i verden — fordi det arver alt operativsystemet gir brukeren som startet det.
Snu standardinnstillingen
Norscode gjør det motsatte. Et program starter uten tilgang til noe som helst. Vil du at det skal lese filer, gir du det disk.read. Skal det på nett, gir du det net.tcp. Alt annet er stengt, og programmet kan ikke be om mer underveis — grensen settes av den som starter det, ikke av koden selv.
Det betyr at du kan kjøre kode du ikke har lest hver linje av, og likevel vite hva den maksimalt kan gjøre. En avhengighet dypt nede i biblioteket ditt kan ikke stjele nøkler den aldri fikk tilgang til.
Hvorfor det er verdt de ekstra linjene
Modellen koster noe. Du må tenke gjennom hva tjenesten din faktisk trenger, og skrive det ned når du starter den. Til gjengjeld har du en kortfattet, ærlig liste over programmets fullmakter — lesbar for et menneske, ikke gjemt i tusen linjer kode.
I en tid der de fleste sikkerhetshull handler om at noe fikk gjøre mer enn det skulle, mener vi at trygghet må være utgangspunktet, ikke noe du husker å skru på til slutt.
Kapabiliteter er ikke en ekstrafunksjon i Norscode. De er en del av hvordan språket ser på verden.
En holdning, ikke bare en funksjon
Det som skiller Norscode her, er ikke at det er mulig å begrense et program — det kan man i mange systemer. Forskjellen er at det er utgangspunktet. De fleste språk starter med full tillit og lar deg stramme inn hvis du gidder; Norscode starter med null tillit og lar deg åpne akkurat det som trengs. Den rekkefølgen forandrer alt, fordi den trygge tilstanden er den du får gratis, ikke den du må huske å velge.
Hvorfor standardinnstillingen avgjør
Sikkerhet som krever ekstra arbeid, blir ofte ikke gjort — ikke av vond vilje, men fordi det haster, og det som virker, virker. Når det trygge er standard, snur det: nå må man aktivt gjøre noe utrygt for at det skal bli utrygt, og da blir det synlig. De aller fleste sikkerhetshendelser i moderne programvare handler om at noe fikk gjøre mer enn det trengte. En modell der ingenting får gjøre noe som helst uten at du sa det, angriper nettopp den roten.
Verdt de ekstra linjene
Å oppgi hva et program får lov til, koster noen linjer når du starter tjenesten. Til gjengjeld har du en kort, ærlig liste over programmets fullmakter — lesbar for et menneske, ikke gjemt i tusen linjer kode. Trygghet er ikke en ettertanke du legger til når noe har gått galt. I Norscode er den der fra første stund.
Les også
- Nytt nettsted for språketnorscode.no handler nå om programmeringsspråket, med dokumentasjon, eksempler og nedlastinger.
- Hvorfor kjøretiden sier neiEn kort forklaring av kapabilitetsmodellen, og hvorfor den er slått på fra første stund.
- Kompilatoren bygger seg selvNorscode er selvhostende: verktøykjeden er skrevet i språket den kompilerer.