Vinnaren i pepparkakshustävlingen!
2014-03-20, 14:39
  #1
Medlem
Ableachs avatar
Är det någon som har lyckats hitta detaljerad information om WD:s externa hårddiskar med (sagd) hårdvarukryptering? Ännu hellre, har någon verifierat vad de utlovar?

Lösenordet som anges av användaren låser upp den riktiga nyckeln som krypterar det som skrivs på disken, och dekrypterar med när det läses (AES-128 enl spec). Detta bekräftas enkelt eftersom inte hela disken behöver krypteras om när man byter lösenord.

Så, frågan är... När genereras AES-nyckeln? Hela säkerheten står och faller med just den lilla detaljen.

Ska precis göra några tester på en My Passport Ultra, och delar gärna med mig av vad jag hittar.

Har nån annan kollat upp de här diskarna?

Lite läsning:
http://www.wdc.com/en/products/products.aspx?id=1000
http://www.wdc.com/wdproducts/librar...579-701178.pdf
Citera
2014-03-20, 16:11
  #2
Medlem
.Chloes avatar
Jag klickade på din länk och tittade på Reviews och hittade detta och enligt den artikeln så används WD SmartWare för diskkrypteringen. Jag har aldrig ägt en disk av detta märke så ni får gärna rätta mig om upplåsningen sker via WD SmartWare eller inte.

Efter ännu en googling hittade jag en dokumentation, den finns här och WD SmartWare tas upp på sidan 30.

Precis som du säger så används en AES-nyckel vilket inte alls är en säkerhetsrisk, men bara om nyckeln produceras på ett tillförlitligt sätt, dvs med en godkänd RNG och det behövs även en hög siffra iterationer med salt och hade det varit så att alla WD's diskar hade en hårdvaru-RNG så skulle de skryta eftersom hela krypteringen kan då ske helt utan OS-mjukvara, det skulle även behövas en stark CPU för att skapa iterationer.

Vad som är bra med FDE/SED är att hela nyckelhanteringen sker i hårddiskens microchip och tar därför bort möjligheterna för de vanligare attackvektorerna hos FDE(RAM). Alla hårddiskar som använder SED följer en standard, nämligen Opal som är skapat av TCG och information om SED finns här. Eftersom hela krypteringen ska ske så oberoende av operativsystemet som möjligt så ska hela processen ske i hårddisken, men i WD's fall så verkar det inte vara så. Istället används helt vanlig FDE där auth sker i host.

Så din fråga "När genereras AES-nyckeln?" kan inte svaras på, men det finns troliga svar. Eftersom disken inte har någon form av hårdvaru-RNG så sker detta i CPU'n. När du skapar ditt lösenord så krypteras den tillsammans med en slumpmässig nyckel genererad av din CPU och hur detta sker till har jag ingen aning om vilket är läskigt då programmet kan skapa nyckeln baserat på mönster(läs: en backdoor). Att applicera kryptering korrekt är svårt men en snabb överblick bekräftar ju att WD är säkert. Visst, din data är krypterad men detta betyder inte att krypteringen är säker.

Jag har skrivit en tråd där jag tar upp alla attackmetoder mot FDE och alla dessa kan appliceras på din disk. (FB) Beskrivning av attackmetoder mot FDE - dessa metoder fungerar eftersom datan är okrypterad efter auth skett och nycklar finnes i EEPROM.
Citera
2014-03-20, 20:29
  #3
Medlem
Ableachs avatar
I sämsta fallet så har alla WD-diskar "samma" AES-nyckel. Användaren kan givetvis sätta ett eget (max 25 tecken) lösenord, men om AES-nyckeln redan är känd så spelar det ingen roll.

På SSD:er så skapas en ny nyckel efter en "Secure Erase". Hur det är på WD:s vanliga hårddiskar är höljt i dunkel än så länge.

Konstaterat #1: Utan lösenord satt så är enheten en "helt vanlig" USB-till-SATA-disk med nåt extra chip som kontrollerar viss access till den.

Konstaterat #2: Om disken är upplåst, så är den upplåst så länge den har strömmen påslagen. T ex att hoppa mellan OS är inget problem.

Gissning #1: Efter lite USB-sniffning så tror jag lösenordet görs om till en 64 bytes lång hash (SHA256?). Hur bra hashen är vet jag inte, men förhoppningsvis är den vettig. Ett enda teckens skillnad ändrar förändrar hela hashen (avalanche effect = bra). Däremot blir samma lösenord alltid samma hash (inget eller samma salt = dåligt).

Lösenord 1:
Kod:
45000000000000209533f1102857a007a17b41d40e1213f61a0658888e4667a318049365caf1edaa

Lösenord 2:
Kod:
4500000000000020d060360f24852c311d745378cf9a63ab2ad4762aa3221cddb274a6874ff28322

Lösenord 1 igen:
Kod:
45000000000000209533f1102857a007a17b41d40e1213f61a0658888e4667a318049365caf1edaa

Fetmarkerat ändras aldrig, oavsett lösenord.
__________________
Senast redigerad av Ableach 2014-03-20 kl. 20:46. Anledning: Tänkte fel på hashlängd
Citera
2014-03-20, 20:55
  #4
Medlem
Ableachs avatar
Lösenord "a" :
Kod:
4500000000000020 d90da4df83c209d89e81762fea95287751c01bc2a63bd635e5b8d74ff81cb029

Lösenord "abc" :
Kod:
4500000000000020 9995cac10f25e8118d0fe3200dc614fc7aa7e50960b92646db2d6d539a83069e

Lösenord "password" :
Kod:
4500000000000020 dbe29260940da81d10d0f1c7697862c04fd08aea575ba6e21661939534178096
Citera
2014-03-20, 22:32
  #5
Medlem
Ableachs avatar
Mer läsning på ämnet:
http://security.stackexchange.com/qu...ypassport-lock

Det här vet jag inte om det är ett troll eller inte:
http://forum.hddguru.com/viewtopic.p...21584&p=144502

Några bilder på en isärplockad WD Passport Elite:
http://ubuntuforums.org/showthread.p...27#post9302327

Ett par andra med samma frågeställning som min:
http://community.wd.com/t5/WD-Portab...ht/true#M16383
http://community.wd.com/t5/WD-Portab...ht/true#M10748

Inga svar på frågorna än
Citera
2014-03-24, 23:47
  #6
Medlem
Ableachs avatar
Det här beskriver det hela, om än inte hur WD implementerat det:
http://www.usb.org/developers/devcla..._Agreement.zip
Citera
2014-03-25, 21:39
  #7
Medlem
Ableachs avatar
Nu när jag isolerat vad som händer i USB-kommunikationen så hittade jag detta projekt, tack vare bättre sökningar

https://github.com/KenMacD/wdpassport-utils
Citera
2014-03-25, 23:19
  #8
Medlem
Ableachs avatar
Allt löst och/eller hittat i andras projekt:

1) skicka upplåsningskommando + hash till SES-enheten (WD-specifika SCSI-kommandot 0xc1)
2) Om kommandot lyckas, kontrollera enheten efter nya partitioner, med t ex partprobe. Klart!

Allt som behövs finns här:
https://github.com/funkypopcorn/wdpa...s/tree/patch-1

Tack vare Kennys cookpw behöver man inte ens spela in det hashade lösenordet, det är bara att skapa det själv.

Om någon har några frågor så bara fråga.
Citera
2014-03-25, 23:41
  #9
Medlem
Ableachs avatar
En fråga som kvarstår dock är: Hur ändrar man / kan man ändra AES-nyckeln? Om inte, så är man fast med den fabriksskapade = fail.

Om jag ska tro en del foruminlägg på t ex hddguru.com så är det åtminstone olika nycklar på de diskar som folk bytt kontroller på, men det gör det bara mikroskopiskt bättre - om nu WD har en databas med alla sålda diskars AES-nycklar.
Citera
2014-03-26, 02:14
  #10
Medlem
Ableachs avatar
Sista inlägget för natten:

Disken använder en ny AES-nyckel varje gång man gör erase i WD:s verktyg. En jämförelse mellan icke överskrivna sektorer gjorde det mycket klart = win!

Hur den nya nyckeln skapas vet jag inte än, men gissningsvis görs det i värddatorn och inte i någon komponent på disken.

Efter erase #1:
Kod:
# dd if=/dev/enhet skip=$((0xa00000/512)) count=100000 | ent
Entropy = 7.999951 bits per byte.

Optimum compression would reduce the size
of this 51200000 byte file by 0 percent.

Chi square distribution for 51200000 samples is 3488.37, and randomly
would exceed this value 0.01 percent of the times.

Arithmetic mean value of data bytes is 127.5046 (127.5 = random).
Monte Carlo value for Pi is 3.141322623 (error 0.01 percent).
Serial correlation coefficient is -0.000054 (totally uncorrelated = 0.0).

Efter erase #2:
Kod:
Entropy = 7.999956 bits per byte.

Optimum compression would reduce the size
of this 51200000 byte file by 0 percent.

Chi square distribution for 51200000 samples is 3147.16, and randomly
would exceed this value 0.01 percent of the times.

Arithmetic mean value of data bytes is 127.5031 (127.5 = random).
Monte Carlo value for Pi is 3.141217623 (error 0.01 percent).
Serial correlation coefficient is -0.000554 (totally uncorrelated = 0.0).

Jämförelse av ovan 51 MB data:
Kod:
# ssdeep -vad a00000_1.img a00000_2.img
a00000_1.img matches a00000_2.img (0)

Erase #1:
Kod:
# hd a00000_1.img|head
00000000  36 06 d6 7f 08 f0 37 b6  b1 da 83 0f 86 e5 1a 81  |6.....7.........|
00000010  3d c2 21 ed 68 7f f4 c5  74 a9 ca 89 9f 61 47 7a  |=.!.h...t....aGz|
00000020  ae 93 9e f3 f9 ac ee 81  e0 10 96 1e fe 8b e5 2b  |...............+|
00000030  59 e8 06 93 15 1f 6b 7f  25 56 ad 06 f5 80 44 cf  |Y.....k.%V....D.|
00000040  29 29 f4 13 91 28 1f c2  5a de b1 b4 dd 76 ce 6b  |))...(..Z....v.k|
00000050  75 b8 7f b0 bd 37 2f e7  72 4f 7e f8 8b 1b 60 02  |u....7/.rO~...`.|
00000060  da 84 b1 55 b8 33 eb dd  7a 29 8a 49 b9 fc 15 b9  |...U.3..z).I....|
00000070  9c 61 45 ce 78 41 e7 ba  4d 17 87 58 55 18 77 b6  |.aE.xA..M..XU.w.|
00000080  a0 d3 f9 c3 68 de 57 87  54 b1 03 e7 ea 82 64 74  |....h.W.T.....dt|
00000090  97 21 7a 22 79 de 79 d1  ca f4 74 86 bf 0d 9d 5f  |.!z"y.y...t...._|

Erase #2:
Kod:
# hd a00000_2.img|head
00000000  41 9f 5e 55 a3 6c 9b 8e  88 8d e0 42 91 d8 40 85  |A.^U.l.....B..@.|
00000010  bc 43 35 fe 11 a6 25 0c  f6 7e 3b ff 08 3f 4a de  |.C5...%..~;..?J.|
00000020  5c be b4 19 7c 9e 2c bf  f2 c2 f1 dc d5 e0 10 59  |\...|.,........Y|
00000030  dd b9 42 e5 0a 9f b9 72  bd 54 82 a9 23 84 50 e6  |..B....r.T..#.P.|
00000040  8f db a6 8f 26 32 e8 31  f2 11 9f 43 c8 21 5b b9  |....&2.1...C.![.|
00000050  4e ec e1 4f b6 fe 81 5f  e1 0d f6 cf 5c f4 01 fb  |N..O..._....\...|
00000060  07 69 52 ac b0 8f 29 7c  5a 6a dc 35 aa f1 67 15  |.iR...)|Zj.5..g.|
00000070  cf 2c 15 69 59 5e 23 1d  8b ef 00 6d e8 36 fe b8  |.,.iY^#....m.6..|
00000080  36 85 53 42 78 5e 4c a9  4e 66 a1 13 34 21 ab 08  |6.SBx^L.Nf..4!..|
00000090  3d 1c 34 d9 39 ed a5 58  b6 49 7d 0b 7a 7d 0e d6  |=.4.9..X.I}.z}..|
Citera
2014-03-26, 19:14
  #11
Medlem
Ableachs avatar
Under dagen kommer Kelly lägga upp ett exempelprogram och en API-spec på github.

https://github.com/KenMacD/wdpassport-utils
__________________
Senast redigerad av Ableach 2014-03-26 kl. 19:18. Anledning: Han lade upp det för en halvtimme sen :)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback