FriBID forum

FriBID är ett fritt program för e-legitimation med BankID.
OBS! FriBID är i praktiken nedlagt, och fungarar inte att använda längre.

You are not logged in.

#1 2010-08-10 01:16:15

magicus
Member
Registered: 2010-08-10

Analys av NGE/NGP

Eftersom reverse engineering är lite av min favorithobby, och det enda giltiga certifikat jag har från Skandiabanken är i NGP-format (p12:an har gått ut), så kände jag mig manad att ge mig i kast med att analysera NGE/NGP.

Resultatet av mitt arbete hittils finns på wikin, på http://wiki.fribid.se/sidor/Analys/disk … GE_och_NGP.

Jag hade ganska dålig koll på P12 till att börja med, så jag fick börja rätt mycket från grunden. Hoppas det som ligger där inte var trivialt för alla er andra, utan att jag lyckats bidra med någon slags kunskap. smile

Det återstår rätt mycket arbete för att knäcka formatet helt, men det här är antagligen en grund att stå på.

Jag började analysera med Samuels asn1dump, men hittade sedan dumpasn1 (på Ubuntu: sudo apt-get install dumpasn1) som gjorde ungefär samma sak, fast i mitt tycke gav en mer läsbar formatdump. Det är (modifierad) output från detta verktyg som ligger på wikisidan.

Jag har studerat tre certifikat: mitt giltiga Skandiabanks-NGP-certifikat, mitt expirade P12-certifikat och det test-P12-certifikat som någon länkade till här på forumet. Av dessa har jag gjort multipla importer/exporter med persadm för att se vad som händer i konverteringarna. Jag har slutligen detaljgranskat NGE-filerna för mina två Skandiabankscertifikat, och det är analyser av dessa två NGE-filer som ligger till grund för wikisidan.

Min plan är att fortsätta jobba med att analysera formatet, men jag uppskattar all hjälp! Speciellt med avseende på de mer kryptobetonade bitarna, då min kunskap om kryptografi tyvärr fortfarande lämnar en del övrigt att önska.

Offline

#2 2010-08-10 14:13:53

erik.andersson
Member
Registered: 2010-08-10

Re: Analys av NGE/NGP

Tack för all info magicus! Mycket intressant!!
Har inte hunnit gräva så mycket men alla har nog märkt att bara kopiera ngp filen från en dator till en annan dator inte fungerar.

Dessutom, om man exporterar en ngp fil till en annan dator (via export till en USB-nyckel och sedan import) så får man ngp filer som är olika och unika för respektive dator. Gällande export till USB: om man kopierar filen till en annan USB-drive så kan man inte importera certifikatet från nyckel nummer 2...

NGE/NGP verkar på något sätt knyta ihop filen och en specifik dator / USB-drive.

Offline

#3 2010-08-10 14:36:14

samuellb
Administratör
Registered: 2010-02-15
Website

Re: Analys av NGE/NGP

Intressant! Tack för tipset om dumpasn1, det verkar mycket smidigare än mitt skript.

Jag ska försöka få ordning på testsidan för hämtning av legitimationer (tests/test-req.html i koden), så att hela hämtningsprocessen går att köra lokalt (så att man kan testa att hämta ut de olika typerna av certifikat -- NGP och P12 -- från olika versioner). Självklart får man ogiliga cert då, men det kan vara användbart för att analysera formaten.

Last edited by samuellb (2010-08-10 14:39:16)

Offline

#4 2010-08-12 02:30:09

magicus
Member
Registered: 2010-08-10

Re: Analys av NGE/NGP

Jag har kommit lite längre i min analys och lagt upp mina resultat på wikin.

Det känns som att den grundläggande strukturen i filformatet (eller filformaten, NGE är i stort sett samma sak -- jag ska dokumentera skillanderna snart...) är på plats nu. Det är lite oklart i hur stor utsträckning man måste förstå de proprietära fälten för att kunna använda dem. Precis som det står på sidan http://wiki.fribid.se/sidor/NGENGP så måste man ju förstå deras kryptolösning, hur de binder NGE-filer till en viss USB-pinne, etc. Jag vet inte om jag är tillräckligt vass på krypto för att komma vidare i den frågan, som till syvende och sist är den mest kritiska. De proprietära fälten av typen ngStrX går det nog att hitta lite fler lågt hängande frukter att tolka, om man bara tittar på tillräckligt många exempel, men det är oklart hur vilktigt det är att vi förstår de fälten till fullo.

Det är inte säkert jag har tid att jobba mer på att tolka formatet på ett tag (semestern närmar sig sitt slut :-)) så hoppas att jag möjliggjort för fler att hjälpa till att angripa NGE/NGP-formaten.

Offline

#5 2010-08-12 02:32:42

magicus
Member
Registered: 2010-08-10

Re: Analys av NGE/NGP

Vad gäller dumpasn1 så verkade den dock ha några brister; den hade inte lyckats tolka den sista enkapsulerande strängen utan dumpade den som binärdata, något som ditt asn1dump faktiskt klarade av. Förstår inte riktigt varför. ASN.1/DER verkar vara lite skumt, jag fattar nog inte riktigt den här binärsträngsenkapsuleringen.

Offline

#6 2010-09-26 10:42:51

mikma
Member
Registered: 2010-09-17

Re: Analys av NGE/NGP

Det finns namn på OID:er som används i libtokenapi.so. Kör strings på filen.

T.ex.
1.2.752.115.1.2.1.1 = saltUsb

Det finns en klass, CStP5SaltGenerator_linux, som möjligtvis använder vissa parametrar från udevadm för att skapa ett salt.
Följande syns med string:

"mount -l
/dev/
/sbin/udevadm info --name=
--query=name --attribute-walk 2>/dev/null
ATTRS{vendor}
ATTRS{model}
ATTRS{rev}
24CStP5SaltGenerator_linux"

Offline

#7 2010-09-27 22:28:52

magicus
Member
Registered: 2010-08-10

Re: Analys av NGE/NGP

Ah, intressant approach. udevadm-kommandot var ju rätt avslöjande. :-) Jag hade lekt lite med tanken på att köra Personal genom strace för att se vad den skulle kunna tänkas hämta ut för data för att ha till saltet, men man kanske bara ska ge sig på att undersöka den funktionen. Även om man kan anta att den plockar ut vendor/model, så är det ju frågan vad den gör med det.

Offline

Board footer

Powered by FluxBB