DTU-professor: Deterministiske CPU’er kan forhindre fremtidige Spectre og Meltdown-huller

Illustration: Lasse Gorm Jensen
Det er svært at spå om, hvor fremtidens angreb kommer fra. Men der er i hvert fald råd for Spectre og Meltdown, uden at ydelsen mindskes.

Der er ingen garantier imod alle fremtidige udgaver af sårbarheder som Spectre og Meltdown, for det er ikke til at sige, hvor angrebene kommer fra.

Det er det bitre budskab fra Jan Madsen, som er professor på DTU. Han gav i formiddags et indlæg om de to hardware-sårbarheder på Infosecurity-konferencen i København, som løber af stablen i disse dage.

Men Jan Madsen kan heldigvis også berette gode nyheder. Hvis CPU-producenterne går tilbage til chips, som er deterministiske og forudsigelige, mindskes risikoen for disse såkaldte side channel-angreb.

Moderne chips omarrangerer instruktioner og laver beregninger, som måske ikke skal benyttes. Det er for at give bedre ydelse, men det er også disse forhold, der ligger bag Spectre og Meltdown.

Læs også: Spekulativ udførelse: Sådan virker Meltdown-sårbarheden

Hvis CPU'erne opfører sig forudsigeligt, mindskes sårbarhederne.

»Det ser man også de steder, hvor man arbejder med sikkerhedskritiske systemer, hvor man skal kunne garantere, at software skal reagere inden for en bestemt tidsgrænse. Der er det meget svært at leve med disse spekulative arkitekturer,« siger han til Version2. I stedet benyttes chips, der giver forudsigelig adfærd.

Forudsigelighed behøver ikke være forbundet med lavere ydelse, mener Jan Madsen.

»Der behøver ikke være et skisma. Når man taler om multikerne-arkitektur, så kan man blot have flere kerner og parallelisere softwaren. Vi er alligevel nået dertil i dag, hvor vi skal parallelisere software for at få højere ydelse. Jeg kan godt forestille mig, at disse spekulative elementer er noget, man genovervejer, også set i lyset og Spectre og Meltdown. Og om man ikke kan lave noget, som er meget mere forudsigeligt, men hvor man stadig har fuld ydelse ved at parallelisere.«

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (5)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Torben Mogensen Blogger

Man kan også mindske strømforbruget ved at undlade spekulative beregninger. Spekulative beregninger er i bund og grund beregninger, man ikke er sikker på, at man skal bruge. Og når man så ikke skal bruge dem, har man brugt unødig strøm både til at lave beregningerne og til at rydde op bagefter.

Spekulative beregninger er et forsøg på at gøre sekventielle beregninger hurtigere, men tendensen går (primært p grund af strømforbrug) mere i retning af parallelle beregninger på flere kerner, som så hver for sig ikke behøver at være helt så hurtige. Der er godt nok eksempler på beregninger, der ikke kan paralleliseres, men det er mere undtagelsen end reglen.

Men det er nu forkert at kalde spekulative beregninger for ikke-deterministiske: De kan sagtens være forudsigelige, men det løser ikke problemet med, at man kan observere, at de har været udført (f.eks. ved at cache og TLB er ændret). Modsat behøver ikke-determinisme ikke at være et problem: Man kan godt bruge (pseudo) random replacement i en cache, uden at det giver sikkerhedsproblemer.

Man kan også godt lave spekulative beregninger, uden at det giver sikkerhedsproblemer. Man skal bare nøjes med at lave spekulative beregninger, der er 100% reversible: Hvis man eksekverer de spekulativt udførte instruktioner baglæns, får man en tilstand, der er 100% identisk med den, man ville have haft, hvis de ikke var udført. Det betyder blandt andet, at man skal undgå at skrive og læse til lageret (da det kan ændre cache og TLB). Reversible beregninger kan endvidere laves med lavere strømforbrug end ikke-reversible beregninger, fordi tab af information (som hindrer reversibilitet) koster energi.

  • 3
  • 1
Morten V. Christiansen

>Reversible beregninger kan endvidere laves med lavere strømforbrug end ikke-reversible beregninger, fordi tab af information (som hindrer reversibilitet) koster energi.

Det er en påstand jeg har set flere gange. Jeg finder det stærkt kontraintuitivt. Umiddelbart troede jeg, at de pågældende ikke påskønnede forskellen på logisk og fysisk entropi. Men det er mere indviklet end som så. Min intuition er, at reversible beregninger altid vil kræve flere beregninger og større datamængder end ækvivalente ikke-reversible beregninger. Men i det mindste det første er ikke givet.

Selv hvis det er rigtigt (og jeg er stadig skeptisk) er vi lang vej fra Landauer grænsen, hvor det teoretisk set kan gøre en forskel.

  • 2
  • 0
Hans Nielsen

Det afhænger helt vildt af hvad der ellers (RAM, diske, netværk, ...) bruger strøm så længe beregningen kører.


Hvorfor giver i PHK downvote for det , han har jo til dels ret.

RAM skal alligevel opdateres. Flaskehalse er i forvejen proppet til.
Hvis den ene del af en "dobbeltkernet/virtual" cpu køre på fuld hastighed, så gør den anden del, sandsynligvis også. Selv om den ikke laver noget. En kerne der regner forud, kan være hurtigere. Så kan den også hurtigere bliver færdigt og gå i idle.

Så det er ikke sort hvid.

  • 1
  • 0
Tania Andersen Journalist

Hej Torben, jeg er ikke helt sikker på, hvad du mener her ang. determinisme. Litteraturen har mange eksempler, som fx her:

"Problems are accentuated in the multi-core context mainly due to the resource sharing that can lead to highly complex interactions or to nondeterminism," fra:
On the Determinism of Multi-core Processors
http://drops.dagstuhl.de/opus/volltexte/2013/4086/pdf/6.pdf

Mvh Tania/V2.

  • 1
  • 0
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize