Kredit: whiteMocca/Shutterstock/N.Hanacek/NIST
Vi overlader vores liv til software, hver gang vi træder ombord på et højteknologisk fly eller en moderne bil. En langsigtet forskningsindsats styret af to forskere ved National Institute of Standards and Technology (NIST) og deres samarbejdspartnere har udviklet nye værktøjer til at gøre denne type sikkerhedskritisk software endnu mere sikker.
Udvidelse af et eksisterende softwareværktøj, forskerholdets nye skabelse kan styrke de sikkerhedstest, som softwarevirksomheder udfører på de programmer, der hjælper med at kontrollere vores køretøjer, drive vores kraftværker og styre anden krævende teknologi. Selvom disse tests ofte er dyre og tidskrævende, de reducerer sandsynligheden for, at denne komplekse kode vil fejle, fordi den modtog en uventet kombination af inputdata. Denne kilde til problemer kan plage enhver sofistikeret softwarepakke, der pålideligt skal overvåge og reagere på flere strømme af data, der strømmer ind fra sensorer og menneskelige operatører i hvert øjeblik.
Med forskningsværktøjssættet kaldet Automated Combinatorial Testing for Software, eller ACTS, softwarevirksomheder kan sikre sig, at der ikke er nogen samtidige inputkombinationer, der utilsigtet kan forårsage en farlig fejl. Som en grov parallel, tænk på en tastaturgenvej, såsom at trykke på CTRL-ALT-DELETE for at nulstille et system med vilje. Risikoen ved sikkerhedskritisk software er, at kombinationer, der skaber utilsigtede konsekvenser, kan eksistere.
Indtil nu, der var ingen måde at være sikker på, at alle de væsentlige kombinationer i meget store systemer var blevet testet:en risikabel situation. Nu, ved hjælp af fremskridt gjort af forskerholdet, selv software, der har tusindvis af inputvariabler, hver af dem kan have en række værdier, kan testes grundigt.
NISTs ACTS-værktøjssæt inkluderer nu en opdateret version af Combinatorial Coverage Measurement (CCM), et værktøj, der skal hjælpe med at forbedre sikkerheden samt reducere softwareomkostninger. Softwareindustrien bruger ofte syv til 20 gange så mange penge på at gøre sikkerhedskritisk software pålidelig, som den gør på mere konventionel kode.
De peer-reviewede resultater fra forskerholdet vises i to artikler, som holdet vil præsentere den 23. april på 2019 IEEE International Conference on Software Testing, Verifikation og validering i Xi'an, Kina. Forskningen omfatter samarbejdspartnere fra University of Texas i Arlington, Adobe Systems Inc. og Østrigs SBA Research.
NIST-matematiker Raghu Kacker sagde, at CCM repræsenterer en væsentlig forbedring af ACTS-værktøjssættet siden dets sidste større tilføjelse i 2015.
"Før vi reviderede CCM, det var svært at teste software, der håndterede tusindvis af variabler grundigt, " sagde Kacker. "Den begrænsning er et problem for kompleks moderne software af den slags, der bruges i passagerfly og atomkraftværker, fordi det ikke kun er meget konfigurerbart, det er også livskritisk. Folks liv og helbred afhænger af det."
Softwareudviklere har kæmpet med fejl, der stammer fra uventede inputkombinationer i årtier, så NIST begyndte at se på årsagerne til softwarefejl i 1990'erne for at hjælpe industrien. Det viste sig, at de fleste fejl involverede en enkelt faktor eller en kombination af to inputvariable - en medicinsk enheds temperatur og tryk, for eksempel - forårsager en systemnulstilling på det forkerte tidspunkt. Nogle involverede op til seks inputvariabler.
Fordi en enkelt inputvariabel kan have en række potentielle værdier, og et program kan have mange sådanne variabler, det kan være en praktisk umulighed at teste enhver tænkelig kombination, så testere er afhængige af matematisk strategi for at eliminere store dele af muligheder. I midten af 2000'erne, NIST-værktøjssættet kunne kontrollere input i op til seks-vejs kombinationer, eliminerer mange risici for fejl.
"Vores værktøjer fangede, men i sidste ende, du spørger stadig dig selv, hvor godt du har gjort det, hvor grundig din test var, " sagde NIST-datamatiker Richard Kuhn, som arbejdede sammen med Kacker på projektet. "Vi opdaterede CCM, så det kunne besvare disse spørgsmål."
NISTs egne værktøjer var i stand til at håndtere software, der havde et par hundrede inputvariabler, men SBA Research udviklede et andet nyt værktøj, der kan undersøge software, der har op til 2, 000, generere en testsuite for op til fem-vejs kombinationer af inputvariabler. De to værktøjer kan bruges på en komplementær måde:Mens NIST-softwaren kan måle dækningen af inputkombinationer, SBA-algoritmen kan udvide dækningen til tusindvis af variabler.
For nylig, Adobe Systems Inc. kontaktede NIST og bad om hjælp til fem-vejs test af en af dets softwarepakker. NIST forsynede virksomheden med de CCM- og SBA-udviklede algoritmer, som tilsammen gav Adobe mulighed for at køre pålidelighedstests på sin kode, der påviselig var både vellykkede og grundige.
Mens SBA Research-algoritmen ikke er en officiel del af ACTS-testpakken, holdet har planer om at inkludere det i fremtiden. I mellemtiden, Kuhn sagde, at NIST vil gøre algoritmen tilgængelig for enhver udvikler, der anmoder om den.
"Samarbejdet har vist, at vi kan håndtere større problemklasser nu, " sagde Kuhn. "Vi kan anvende denne metode til flere applikationer og systemer, som tidligere var for svære at håndtere. Vi vil invitere enhver virksomhed, der er interesseret i at udvide sin software til at kontakte os, og vi deler alle oplysninger, de måtte have brug for."