Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Emner
  • Opret bruger
  • Log ind
Se kommentarer (6)
Emner

Sikkerhed er kedeligt

Af admin adminuser 17. december 2007 kl. 14:03

Det er med sikkerhed som med test: det synes ikke at bibringe værdi. Derfor har vi da også - som softwareudviklere - været vældigt gode til at overlade disse emner til andre: testere, sikkerhedsfolk, og andre der ikke er en del af den kreative elite i softwareudvikling. Vi synes simpelthen at det er kedeligt, ik' os'?

Det er jo interessant at se, hvordan test er blevet hot. Test-driven development er jo på alles læber og har været det i lang tid. Hvordan kunne det ske, at en kvalitativ egenskab ved software er blevet en driver for softwareudvikling?

Det sidste års tid er jeg nu begyndt at interessere mig for sikkerhed. Jeg synes at sikkerhed er spændende, og jeg har da også taget initiativ til at gøre det til et tema på vores konferencer.

Jeg har forsøgt at grave lidt i det; for det giver jo ikke mening at alle softwareudviklere også skal vide alt om security. Spørgsmålet er basalt set, hvordan vi skærer kagen sådan, at almindelige softwareudviklere kan gøre noget der er "rimeligt" rent sikkerhedsmæssig. Hvilke aspekter af sikerhed skal software udviklere bekymre sig om, og ikke mindst hvilke skal de ikke bekymre sig om?

Udviklere har jo rigeligt at bekymre sig om, så vi kan ikke bare forvente at alle ved alt om sikkerhed. Samtidig er en løsning ikke bedre end det svageste led, så vi står overfor en væsentlig udfordring.

Send Tweet
Udskriv
Om admin adminuserFollow @version2

Kommentarer (6)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Mikkel Høghs billede
Mikkel Høgh 17. dec. 2007 - 16.38
 
Test != sikkerhed

Test-driven development har ikke nødvendigvis noget med sikkerhed at gøre. Det er jo mere eller mindre bare en implementation af mange af de gode ting fra extreme/agile programming - hvis man koder af sted der ud af uden at have en detaljeret plan er det jo ret vigtigt at have nogen test cases så man kan se om man ødelægger noget kode et andet sted inden man checker sin kode ind...

Med hensyn til emnet, så tror jeg ikke at det bliver sådan at man som udvikler skal vide alt om sikkerhed, men snarere at samarbejdet med sikkerhedsfolkene bliver tættere. En fornuftig virksomhed vil jo nok oplyse programmørerne om det, når de laver noget slamkode så de kan lære af deres fejl...

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Therese  Hansens billede
Therese Hansen 18. dec. 2007 - 00.40
 
@Mikkel

Jeg læser ikke indlægget som om Kresten sætter lighedstegn mellem sikkerhed og test - bare at begge emner traditionelt har været lige usexede at arbejde med, men nu er test blevet hot ved hjælp af TDD. Så er spørgsmålet - hvad skal gøre sikkerhed hot? Og hvilke dele af sikkerhed skal udvikleren bekymre sig om?

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Mikkel Høghs billede
Mikkel Høgh 18. dec. 2007 - 02.05
 
Hvorfor er TDD hot...

Er jo så nok det rigtige spørgsmål at stille.

Mit svar på det spørgsmål er nok noget i stil med "fordi det betaler sig". Enhver programmørs drøm er vel at lave software som virker, og det er efter min mening langt nemmere med TDD, fordi du tvinger dig selv til at definere hvordan din kode skal virke før du skriver den.

Det gør man selvfølgelig også mere komplicerede processer, men der laver man ofte først et helt kompendie inden man har skrevet så meget som en enkelt linje kode, og det virker nok demotiverende på de fleste først at skrive en helt masse specifikation der bare skal smides ud igen bagefter.

Den ypperligste form af dette er nok doctest, hvor dine tests ikke bare fungerer som tests, men også som dokumentation. http://en.wikipedia.org/wiki/Doctest

Jeg tror den største motivationsfaktor for folk err at det føles produktivt at gøre det – at det giver mening i en eller anden forstand.

Kan det så overføres til sikkerhed? Næppe. Sikkerhed er ikke en metodologi, men "a state of mind". Du kan ikke gøre sikkerhed, du kan kun tænke det med i din kode.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Jens Madsen 18. dec. 2007 - 02.13
 
Programmøren skal teste ting to gange.

Det er et eller andet, som programmørerne ikke forstår, når de ikke ved at tests er en interaktiv del af programmeringsprocessen.
Jeg kan ikke lave en enkeltkædet liste, uden at fejle. Hvis jeg ikke retter fejlen selv, og står inde for, at mit software fungere, så vil fejlen ofte ikke opdages. Fejlen opdages oftest ikke straks, men senere, og da er antallet af fejl enormt, og i praksis er det umuligt at teste.
Når en programmør udvikler noget, er vigtigt at de sætter en ære i, at lave noget som fungerer og fungerer pålideligt. At de bruger tid på, at lege med det de laver, for at se at det fungerer. Måske skal de bruge en dag at lege med deres komponent, eller algorithme, før de opdager den fejler. Det er langt bedre, at bruge denne dag, end at lade fejlen opdages i "slut-testen".
En slut-test skal altid vise, at tingene fungerer. Og ellers, har programmørerne ikke sat en ære i at lave tingene fejlfrit.

Genneralt er metoden følgende: Et program, hardware, eller andet består af komponenter. Disse dele sættes sammen til en ny komponent. En kompleks komponent, er svær at bevise og fejlteste, og skal helst opdeles i mindre komponemter. Disse skal helst give en mening, og må gerne kunne bruges. Hver enkelt komponent, og delkomponent skal testes. Ikke kun slut resultatet. Alle disse tests, er ikke test afdelingens ansvar, men den enkelte programmør. Det er programmøren, som tager ansvaret for sit arbejde og han/hun leverer kun noget som fungerer. Det er det vigtige, når man sætter en ære i at lave ordentligt arbejde.
Et program testes reelt to gange. Hver enkelt del testes af to personer: Udvikler og bruger. Er du programmør, og bruger en komponent, er din første opgave at teste denne. Denne test, skal vise to ting: 1. At komponenten fungerer. Og 2. At du forstår, hvordan komponenten virker. Du må ikke bruge en komponent du får, uden at først teste den, uanset den downloades på nettet og tusinder har testet den før dig. Måske er noget galt i din forståelse.
Når du endeligt har udviklet noget, skal du også teste dit eget arbejde. Du må gerne bruge tid på det, for fejlene kan være komplekse. Selvom du prøver både base case, og de andre cases, så er risiko for, at du har overset noget. Lidt legeri skader normalt ikke, og hvis du opdager noget ikke fungerer, er det vigtigt at rette fejlen, før andre får den deffekte komponent. I et økonomisk system, vil du typisk blive hængt op på dit og dat, hvis du som virksomhed leverer den videre til en anden og dit er deffekt. Så er det ikke kun din komponent der fejler, men måske også følgefejl du kan blive erklæret ansvarlig for.
I den sidste ende mangler en test, hvis alt skal testes to gange. Det er sluttesten. Det svarer til brugeren. Her må intet gå galt. Går noget galt, går det til fyresedlen til programmøren.

En programmør der ikke tester dels det som bruges, og sit eget inden det leveres, er en død programmør.
Normalt er krav om dokumentation for hver enkelt komponent og delkomponent, i form at både beskrivelse, tekniske karakteristika for komponenterne, og bevis for de er testet. Til selv en simpel komponent, er altid dokumentation om alle faktorer, der kan have betydning for brugere af komponenten. Det er typisk strømforbrug/indstruktionsforbrug, store O funktionen og dens kompleksitet, ram forbruget osv. Hvis en af disse dele ikke er nævnt, er den default uendelig, og ingen kan bruge noget med et uendeligt forbrug. Man står inde for det man beskriver i dokumentationen, og står inde for, at man har testet tingene så godt som muligt, og garanterer for hver enkelt komponents kvalitet.

Derudover skal vi være opmærksomme på, at de fleste fejl skyldes dårlige programmeringssprog. Et programmeringssprog, kan have "tendens" til fejl og mangel på stabilitet, tilfældigheder og uforudsigelighed, meddens andre ikke laver fejl. I nogle sprog, kan en programmør nemt spolere noget for andre - og i andre sprog, er det umuligt at ødelægge eller påvirke andres software.
De fleste programmeringssprog er så dårlige at brug af dem, kun viser at programmøren ikke har udført sit indledende arbejde: At teste, at de ting der "bruges" fungerer, og fungerer pålideligt, inden det tages i brug. Programmeringssprog og operativsystemer er samtidigt så grundlæggende, at man reelt ikke bør begynde at anvende dem, før alle fejl er rettet og produkterne er fejlfri. Det er bedre, at sætte alverdens udviklere og forskere ind på at udvikle et ordentligt programmeringssprog, end at begynde at udvikle applikationssoftware før dette arbejde er gjort og gjort godt. Er sproget, eller compileren gjort dårligt, øges programmeringsarbejdet for dem der anvender det måske med en faktor 10 - eller værre, og test arbejdet kan blive infinit. Sproget - og operativsystem - skal være i orden, inden man vælger at blive programmør. Ellers bør man måske læse til datalog og få det gjort i orden.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Anonym (ikke efterprøvet) 18. dec. 2007 - 16.48
 
Har du styr på fallback?

Vi har sværget til test-drevet udvikling længe - og har konkrete success-erfaringer hermed.

Men at et system overholder testen betyder ikke at systemet er fejltolerant og slet ikke at der er indbygget fallback når en attacker - intern eller eksterm, bevidst eller ved en fejl - kommer igennem til de sårbare data eller access controls.

Det er ikke nok at fokusere på dependability - man skal også turde stille spørgsmålet hvad der sker, når angriberne kommer igennem OG TURDE TAGE DET SOM ET EVIDENT UDGANGSPUNKT AT DET VIL SKE.

Har du styr på fallback security, når perimete-sikkerheden fejler?

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Anonym (ikke efterprøvet) 3. jan. 2008 - 09.17
 
Teste sikkerhed

Jeg ønsker mig bedre værktøjer til at teste sikkerheden i softwaren :) ... det er svært.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

It skal spare kommunerne for 165 millioner kroner i 2012

Udgivet 9. feb 16.02Opdateret 9. feb 16.02

Adobe: Vi laver ikke Flash til Android-udgaven af Chrome

Udgivet 9. feb 15.15Opdateret 9. feb 15.15

Så oldnordisk er politiets it-miljø: Nostalgisk gensyn med 1980’erne

Udgivet 9. feb 14.22Opdateret 9. feb 15.12

EMC lægger flash-cache på PCIe-kort: 4.000 gange hurtigere end harddiske

Udgivet 9. feb 13.39Opdateret 9. feb 13.39

Egedal Kommune sparer 100.000 om året med open source-CMS

Udgivet 9. feb 12.56Opdateret 9. feb 12.56
Flere it-nyheder »
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Seneste debat

  1. Opdateret liste over danske iværksættere

    2 comments.
    Last update 1 time 50 minutter
    Skrevet af Therese Hansen
  2. Stop SOPA, PIPA, ACTA, TPP og alle dem der kommer efter

    50 comments.
    Last update 6 timer 12 minutter
    Skrevet af Bjarne W. B. Petersen
  3. Derfor bliver dårlige it-projekter ikke stoppet i tide

    1 comment.
    Last update 6 timer 35 minutter
    Skrevet af Kasper Jørgensen
  4. Grotesk jobinterview i 2007: »Tag ikke jobbet, vi får alligevel aldrig Polsag til at virke«

    17 comments.
    Last update 6 timer 43 minutter
    Skrevet af Claus Waldersdorff Knudsen
  5. Så oldnordisk er politiets it-miljø: Nostalgisk gensyn med 1980’erne

    6 comments.
    Last update 6 timer 46 minutter
    Skrevet af Simon Justesen
  6. Domæne-forening: Lov om .aarhus og .cph var for tynd

    9 comments.
    Last update 7 timer 37 minutter
    Skrevet af Jarle Knudsen
  7. ACTA er i orden!

    51 comments.
    Last update 10 timer 9 minutter
    Skrevet af Jarle Knudsen
  8. It-advokat: Nu går grænsebommene ned over internettet

    10 comments.
    Last update 11 timer 55 minutter
    Skrevet af Niels Elgaard Larsen
Mere debat »

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Digitaliseringsstyrelsen
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Lion
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu 11.10
  • Virtualisering
  • Windows 8
  • Windows Phone 7
  • iOS 5
  • iPhone 4S

Tjenester

  • Android-app
  • iPhone-app
  • RSS-feeds
Følg @version2dk
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Skelbækgade 4 1717 København V
  • Tlf. work 33265300