HWSW Informatikai Kerekasztal: Re: Bitflipping: memóriahack élesben - HWSW Informatikai Kerekasztal

Ugrás a tartalomhoz

Mellékleteink: HUP | Gamekapocs

  • (2 Oldal)
  • +
  • 1
  • 2
  • Nem indíthatsz témát.
  • A téma zárva.

Re: Bitflipping: memóriahack élesben

#21 Felhasználó inaktív   'Geri' 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.056
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 16:44

már nem ez a kérdés. hanem hogy miért nem bújuk elő a cikkben leírt hiba.

#22 Felhasználó inaktív   Gabibácsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 69.513
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 16:56

Üzenet megtekintéseIdézet: 'Geri' - Dátum: 2015. 03. 13. 15:46

éjjel 3kor írtam, majd mindjárt javítom.

amúgy felesleges nyálat verni, mert ha olyan okosak lennétek, akkor ti írnátok testcaset, de persze ez nem így van.

Én írtam már párezer testcase-et, de ennek mi köze ahhoz hogy te nem tudsz programozni!
--- Internet is just a bigger floppy disk ---

#23 Felhasználó inaktív   Gabibácsi 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 69.513
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 16:57

Üzenet megtekintéseIdézet: 'Geri' - Dátum: 2015. 03. 13. 16:24

nem optimizálgatunk, hanem a hibát próbáljuk reprodukálni. biztos meg lehetne 5x ennyi sorból írni racionálisabban, csak most ez nem erről szól. szüval ne a nyáladat verd a megmosolyogtató féltudásodra, hanem vagy segíts reprodukálni a hibajelenséget amiről a cikk szól, vagy fogd be a pofádat.

Szerintem menj gyula után
--- Internet is just a bigger floppy disk ---

#24 Felhasználó inaktív   philcsy 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 2.501
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:00

Üzenet megtekintéseIdézet: 'Geri' - Dátum: 2015. 03. 13. 16:44

már nem ez a kérdés. hanem hogy miért nem bújuk elő a cikkben leírt hiba.

A kérdés, hogy miért nem tudsz programozni.

Szóval az a 4 (0100) igazából 3 (0011) és így lesz néggyel osztható az eredmény.
A következő kérdés az, hogy mi értelme van két egymástól független helyen párhuzamosan csinálni mindezt?
geri: "a világon 6.5 milliárd PC felhasználó van"
geri: "én a hwsw egy kiemelkedő szakmai színvonallal bíró, megbecsült, elsőrangú tagja vagyok."

#25 Felhasználó inaktív   'Geri' 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.056
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:04

a google által kiadott example két független helyen csinálja, majd két független cacheflusholást hajt végre ezen a két helyen.


#include <stdio.h>
#include <stdlib.h>


inline void clflush( void *p){  asm  ("clflush (%0)" :: "r"(p));}

int main(){ 
  if(sizeof(void*)!=8){
	printf("64bit only\n");
	exit(0);
  }
  printf("bitfliptest by Geri\n");
   unsigned long long * m=(  unsigned long long * )malloc(1024+1024*1024*128*sizeof( unsigned long long ));
  for(unsigned long long sz=0;sz<100LL;sz++){
	if(1){
  	for(int i=0;i<1024*1024*128;i++) m[i]=0;
  	for(int k=0;k<10;k++){
	long long r1=(rand()%1024*1024*128);
	long long r2=(rand()%1024*1024*128);
	while((r1&3)!=0) r1=(rand()%1024*1024*128);
	while((r2&3)!=0) r2=(rand()%1024*1024*128);
	for(long long i=0;i<2061587ULL;i++){
	  unsigned long long *m1cs=&m[r1];
	  unsigned long long *m2cs=&m[r2];
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=++i;
	  *m2cs=++i;
	  clflush(m1cs);clflush(m2cs);
	  *m1cs=0;
	  *m2cs=0;
	}
  	}
  	long long t=0;
  	for(long long i=0;i<1024ULL*1024ULL*128ULL;i++){
	t+=m[i];
  	}
  	if(t!=0){
	printf("vulnerable! %d\n", (int)t);
	exit(0);
  	}else{
	printf("%d%% ok\n", (int)sz);
  	}
	}
  }
  printf("not vulnerable\n");
}


Szerkesztette: 'Geri' 2015. 03. 13. 17:08 -kor


#26 Felhasználó inaktív   philcsy 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 2.501
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:16

A Google azt dobta... A cikkben lévő hivatkozás meg ezt: (X és Y a két pointer helye)
"They pick Y = X + 8MByte based on knowledge of the physical address mapping used by the memory controllers in Intel and AMD’s CPUs."

Még mielőtt átírnád, olvasd el a teljes "How can we pick pairs of addresses that satisfy the “different row, same bank” requirements?" bekezdést.

Szerkesztette: philcsy 2015. 03. 13. 17:19 -kor

geri: "a világon 6.5 milliárd PC felhasználó van"
geri: "én a hwsw egy kiemelkedő szakmai színvonallal bíró, megbecsült, elsőrangú tagja vagyok."

#27 Felhasználó inaktív   NancsiBacsi 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 3.523
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:46

@"Geri": Ha meg nem tetszik ott az a bit, akkor meg and-old le 0xf...fb-vel. Ez a ciklusos téma olyan lámaság, amit normális ember nem rak ki a kirakatba.
Egyébként 3 évente 1x kell bitműveleteket használnom, szóval elnézést kérek ha elsőre nem látom át egy számomra ismeretlen nyelvben 22 másodperc alatt amit rászántam hogy mire gondolt a szerző. Te viszont elvileg kurva optimálisan programozol 1000 magon, és még az ASM is magasszintű neked, szóval elvárná az ember, hogy ne egy kibaszott lassú randomot rakjál ciklusba, ha 1 bitmaszkolással is meg lehet oldani a problémát. Mert ha itt megcsinálod, megcsinálod máshol is, aztán csodálkozol hogy kevés neked bármilyen processzor.

#28 Felhasználó inaktív   'Geri' 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.056
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:50

Üzenet megtekintéseIdézet: NancsiBacsi - Dátum: 2015. 03. 13. 17:46

Te viszont elvileg kurva optimálisan programozol 1000 magon


igen, kurva optimistán programozom a *sebességkritikus* részeket. ez nem az.

#29 Felhasználó inaktív   'Geri' 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 5.056
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 17:52

philcsy: bár nem olvastam el a dokumentumot teljesen, de mintha kvázi ezt csináltam volna:

A simpler approach is to pick address pairs at random. We allocate a large block of memory (e.g. 1GB) and then pick random virtual addresses within that block. On a machine with 16 DRAM banks (as one of our test machines has: 2 DIMMs with 8 banks per DIMM), this gives us a 1/16 chance that the chosen addresses are in the same bank, which is quite high. (The chance of picking two addresses in the same row is negligible.)

Furthermore, we can increase our chances of successful row hammering by modifying code1a to hammer more addresses per loop iteration. We find we can hammer 4 or 8 addresses without slowing down the time per iteration.









#30 Felhasználó inaktív   bogdan 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 18.631
  • Csatlakozott: --

Elküldve: 2015. 03. 13. 18:45

Üzenet megtekintéseIdézet: 'Geri' - Dátum: 2015. 03. 13. 16:24

hanem vagy segíts reprodukálni a hibajelenséget amiről a cikk szól,
csak szolok, hogy mar a legelso hozzaszolasomban jeleztem ennek a modjat! ;-)
a forum ma:
"Ez van bazdmeg, ha nem tetszik, el lehet menni."

Téma megosztása:


  • (2 Oldal)
  • +
  • 1
  • 2
  • Nem indíthatsz témát.
  • A téma zárva.

1 felhasználó olvassa ezt a témát.
0 felhasználó, 1 vendég, 0 anonim felhasználó