Rapport - flertrådad programmering

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Dec 2010

Rapport - flertrådad programmering

Tjenare! Ska skriva en rapport om säkerhet inom ett område t.ex Mjukvara osv. Jag valde att rikta in mig på multithreaded programming, vilket jag nu i efterhand kan tycka känns dumt. Jag går på högskola, så det ska vara en seriöst rapport och känner därför att det kan bli väldigt jobbigt att endast ordbajsa, vilket jag nu gjort halva rapporten.

Frågan jag har till er, finns det över huvud taget något scenario där den flertrådade programmeringsmodellen berör säkerhet på något sätt? Behöver något att utgå från vi källsökning osv. Min teori än så länge att en programkrasch skulle kunna påverka den slutliga användaren av programmet, men lyckas inte ens hitta en källa...

Erfarenheter inom programmering hittills är väl grunder i C och C++, så hur vi kunde få en uppgift om att skriva rapport inom säkerheten i programmering är ju en bra fråga.

Har ni några tips till en vilsen student?

Gigabyte 1070 G1 Gaming 8GB | I5 4690k @ 4.4GHz | 16GB ram @ 1600MHz | SSD 500gb | Qpad 8K | MK-85 RED | Logitech G933

Trädvy Permalänk
Medlem
Plats
#Archlinux
Registrerad
Jun 2007
Skrivet av Craiser:

Tjenare! Ska skriva en rapport om säkerhet inom ett område t.ex Mjukvara osv. Jag valde att rikta in mig på multithreaded programming, vilket jag nu i efterhand kan tycka känns dumt. Jag går på högskola, så det ska vara en seriöst rapport och känner därför att det kan bli väldigt jobbigt att endast ordbajsa, vilket jag nu gjort halva rapporten.

Frågan jag har till er, finns det över huvud taget något scenario där den flertrådade programmeringsmodellen berör säkerhet på något sätt? Behöver något att utgå från vi källsökning osv. Min teori än så länge att en programkrasch skulle kunna påverka den slutliga användaren av programmet, men lyckas inte ens hitta en källa...

Erfarenheter inom programmering hittills är väl grunder i C och C++, så hur vi kunde få en uppgift om att skriva rapport inom säkerheten i programmering är ju en bra fråga.

Har ni några tips till en vilsen student?

Fast säkerhet som att kunna skriva till områden där man inte skall göra och exekvera kod ie hacka? Eller säkerhet hur stabil koden är att den inte börjar skriva över etc?

Vilka databaser har du testat kolla mot?

Arch - Makepkg, not war -||- Asus Crosshair Hero VI -||- GSkill 16GiB DDR4 15-15-15-35-1T 3600Mhz -||- AMD 1600x @ 4.1GHz -||- nVidia MSI 970 Gaming -||- Samsung 850 Pro -||- EVEGA G2 750W -||- Corsair 570x -||- Asus Xonar Essence STX -||- Sennheiser HD-650 -||
Arch Linux, one hell of a distribution.

Trädvy Permalänk
Medlem
Registrerad
Jun 2012
Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Dec 2010

@Commander: Säkerhet i all dess form :). Är lite inne på det här med att saker kan ändra värden, läste om det på något KTH lagt upp. http://people.kth.se/~leifl/artiklar/tradar/whats-the-problem...

"Säkerhet innebär att det aldrig ska hända något oönskat med något objekt. Det oönskade som kan hända är att objektet hanmar i ett otillåtet tillstånd, till exempel att dess fält har antagit värden som de aldrig får ha. Detta händer vanligtvis genom att flera trådar försöker använda fälten samtidigt (dvs kapplöpning)."

Men vill gärna ha mer att ta upp

Gigabyte 1070 G1 Gaming 8GB | I5 4690k @ 4.4GHz | 16GB ram @ 1600MHz | SSD 500gb | Qpad 8K | MK-85 RED | Logitech G933

Trädvy Permalänk
Medlem
Plats
#Archlinux
Registrerad
Jun 2007
Skrivet av Craiser:

@Commander: Säkerhet i all dess form :). Är lite inne på det här med att saker kan ändra värden, läste om det på något KTH lagt upp. http://people.kth.se/~leifl/artiklar/tradar/whats-the-problem...

"Säkerhet innebär att det aldrig ska hända något oönskat med något objekt. Det oönskade som kan hända är att objektet hanmar i ett otillåtet tillstånd, till exempel att dess fält har antagit värden som de aldrig får ha. Detta händer vanligtvis genom att flera trådar försöker använda fälten samtidigt (dvs kapplöpning)."

Men vill gärna ha mer att ta upp

"Säkerhet innebär att det aldrig ska hända något oönskat med något objekt" Hah då lär du finna miljontals då det blir nästan oändligt mycket här. Bara börja söka på IEEE, och liknande databaser så lär du finna multum. Definera om frågan några ggr så lär du hitta vad forskare burkar använda för detta. Något att titta på är väl thread safety, shared resources, race conditions etc.

Arch - Makepkg, not war -||- Asus Crosshair Hero VI -||- GSkill 16GiB DDR4 15-15-15-35-1T 3600Mhz -||- AMD 1600x @ 4.1GHz -||- nVidia MSI 970 Gaming -||- Samsung 850 Pro -||- EVEGA G2 750W -||- Corsair 570x -||- Asus Xonar Essence STX -||- Sennheiser HD-650 -||
Arch Linux, one hell of a distribution.

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Dec 2010

Databaserna jag testat är vår högskolas egna samt google.

Gigabyte 1070 G1 Gaming 8GB | I5 4690k @ 4.4GHz | 16GB ram @ 1600MHz | SSD 500gb | Qpad 8K | MK-85 RED | Logitech G933

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Dec 2010
Skrivet av Commander:

"Säkerhet innebär att det aldrig ska hända något oönskat med något objekt" Hah då lär du finna miljontals då det blir nästan oändligt mycket här. Bara börja söka på IEEE, och liknande databaser så lär du finna multum. Definera om frågan några ggr så lär du hitta vad forskare burkar använda för detta. Något att titta på är väl thread safety, shared resources, race conditions etc.

Tack så mycket, nu ska det skrivas!

Gigabyte 1070 G1 Gaming 8GB | I5 4690k @ 4.4GHz | 16GB ram @ 1600MHz | SSD 500gb | Qpad 8K | MK-85 RED | Logitech G933

Trädvy Permalänk
Medlem
Plats
Karlstad
Registrerad
Nov 2010

Säkerhet kan betyda mycket, det folk i allmänhet brukar tänka på är dataintrång.
Att multi-trådade applikationer skulle vara mer känsliga för detta, ja det känns snarare som dålig implementation. Detta kan diskuteras, nu till det som jag vet.

Det finns väldigt många applikationer där deras körningar är kritiska, alltså de får under inga omständigheter gå ner, tänk övervakningsprogram för viktiga saker som tåg, kraftverk etc. Trådar kan dock att vissa anledningar dö, man kan skylla på dålig implementation, men i verkligheten så dör de ibland. Likaså kan man som utvecklare skapa en tråd som som av olika orsaker låser sig, det kan vara ett villkor som aldrig blir uppfyllt.
I seriösa applikationer skapar man då funktioner för att övervaka trådarna, ett enkel och populärt sätt är att tråden vid varje slut sätter en tidsstämpel i en variabel. Sedan finns det en alarmfunktion som kontrollerar tidsstämpeln på alla variabler och är den högre än ett visst bestämt värde så sätts ett larm. Det blir då en variabel för varenda tråd.

Om applikationen hade varit enkeltrådad och en funktion hade fastnat ja då hade programmet hängt sig. Detta är i sin tur både bra och dåligt, så på sätt och viss kan trådade program förbättra säkerheten.

Nu är jag ej så insatt i windows gui, men det är inte ovanligt att utveckla så att när användare har tryck på en knapp så ska inte hela programmet låsa sig tills programmet är klart. Detta genom att anropet och guit körs i två olika trådar.
Vilken kommer in på en annan säkerhet. Tänk att du har ett program typ excel och man kör en knapp som startar en evighetsloop, om programmet då inte hade varit trådat så hade användaren haft svårt att avbryta funktionen. Detta hade sedan lett till att användaren kanske inte kunde spara det senaste.

Så mitt råd är fokusera på fler områden av säkerhet, nu kanske det inte är säkert att läraren gillar detta och fokuset skulle vara datasäkerhet emot intrång, olaga användning av system.

Skrivet av Craiser:

Min teori än så länge att en programkrasch skulle kunna påverka den slutliga användaren av programmet, men lyckas inte ens hitta en källa...

Tänk dig flygplan där någon dator av något slag sköter om olika delar, datorn har då olika trådar som sköter om olika uppgifter. Fundera då på vad som skulle hända om tråden för styrning av roder skulle sluta fungera.
Nu vet jag inte hur en flygplansdator är uppbyggt, men jag vet att seriösa applikationer har övervakning av trådar och man bygger in funktioner som t.ex. skulle kunna döda en tråd och starta om den. -Vanligast är dock att larma och så låta en tekniker analysera om varför tråden ej snurrar eller om den har hängt sig och i såfall varför?

En skillnad med seriösa applikationer och t.ex "spel" är att seriösa applikationer ibland i ska snurra i en 10år, nu blir det dock några omstarter, men att en applikation körs i 2 år utan att ha startas om är inget ovanligt.

*edit*
Jag vet om att det finns utvecklingsmiljöer som man kan avlyssna kommunikationen mellan trådar på, men det handlar nog om vad folk skulle kalla för dålig implementation.
När trådar körs på olika maskiner så blir det dock ett nytt hål att avlyssna kommunikationen mellan trådarna (maskinerna)
Så på frågan datasäkerhet, är jag för okunnig i för att kunna säga något generellt.
Likaså vet jag utvecklingsmiljöer där man som användare kan döda en tråd i, men hur man dödar en tråd från windows vet jag ej. (tråd != process)

i7 7700 & Ryzen 1800X. Båda har 64GB ram, 500 GB 960 Evo m.2. Grafikkort är något jag hittade i en container..

Trädvy Permalänk
Medlem
Plats
Karlskrona
Registrerad
Dec 2010
Skrivet av Johan86c:

Säkerhet kan betyda mycket, det folk i allmänhet brukar tänka på är dataintrång.
Att multi-trådade applikationer skulle vara mer känsliga för detta, ja det känns snarare som dålig implementation. Detta kan diskuteras, nu till det som jag vet.

Det finns väldigt många applikationer där deras körningar är kritiska, alltså de får under inga omständigheter gå ner, tänk övervakningsprogram för viktiga saker som tåg, kraftverk etc. Trådar kan dock att vissa anledningar dö, man kan skylla på dålig implementation, men i verkligheten så dör de ibland. Likaså kan man som utvecklare skapa en tråd som som av olika orsaker låser sig, det kan vara ett villkor som aldrig blir uppfyllt.
I seriösa applikationer skapar man då funktioner för att övervaka trådarna, ett enkel och populärt sätt är att tråden vid varje slut sätter en tidsstämpel i en variabel. Sedan finns det en alarmfunktion som kontrollerar tidsstämpeln på alla variabler och är den högre än ett visst bestämt värde så sätts ett larm. Det blir då en variabel för varenda tråd.

Om applikationen hade varit enkeltrådad och en funktion hade fastnat ja då hade programmet hängt sig. Detta är i sin tur både bra och dåligt, så på sätt och viss kan trådade program förbättra säkerheten.

Nu är jag ej så insatt i windows gui, men det är inte ovanligt att utveckla så att när användare har tryck på en knapp så ska inte hela programmet låsa sig tills programmet är klart. Detta genom att anropet och guit körs i två olika trådar.
Vilken kommer in på en annan säkerhet. Tänk att du har ett program typ excel och man kör en knapp som startar en evighetsloop, om programmet då inte hade varit trådat så hade användaren haft svårt att avbryta funktionen. Detta hade sedan lett till att användaren kanske inte kunde spara det senaste.

Så mitt råd är fokusera på fler områden av säkerhet, nu kanske det inte är säkert att läraren gillar detta och fokuset skulle vara datasäkerhet emot intrång, olaga användning av system.

Tänk dig flygplan där någon dator av något slag sköter om olika delar, datorn har då olika trådar som sköter om olika uppgifter. Fundera då på vad som skulle hända om tråden för styrning av roder skulle sluta fungera.
Nu vet jag inte hur en flygplansdator är uppbyggt, men jag vet att seriösa applikationer har övervakning av trådar och man bygger in funktioner som t.ex. skulle kunna döda en tråd och starta om den. -Vanligast är dock att larma och så låta en tekniker analysera om varför tråden ej snurrar eller om den har hängt sig och i såfall varför?

En skillnad med seriösa applikationer och t.ex "spel" är att seriösa applikationer ibland i ska snurra i en 10år, nu blir det dock några omstarter, men att en applikation körs i 2 år utan att ha startas om är inget ovanligt.

*edit*
Jag vet om att det finns utvecklingsmiljöer som man kan avlyssna kommunikationen mellan trådar på, men det handlar nog om vad folk skulle kalla för dålig implementation.
När trådar körs på olika maskiner så blir det dock ett nytt hål att avlyssna kommunikationen mellan trådarna (maskinerna)
Så på frågan datasäkerhet, är jag för okunnig i för att kunna säga något generellt.
Likaså vet jag utvecklingsmiljöer där man som användare kan döda en tråd i, men hur man dödar en tråd från windows vet jag ej. (tråd != process)

Tack så hemskt mycket! Fick reda på att rättarna på rapporten mest ska kolla på uppbyggnad av rapporten och att det jag citerar "Är okej att skriva rappakalja", så nu blev jag ju lite lättad med ändå sur, då jag lagt ner tid på detta. Men väldigt intressanta grejer du tar upp, tackar!

Gigabyte 1070 G1 Gaming 8GB | I5 4690k @ 4.4GHz | 16GB ram @ 1600MHz | SSD 500gb | Qpad 8K | MK-85 RED | Logitech G933