Hashvärden

Från FriBID
Hoppa till navigeringHoppa till sök

Sidan kan endast redigeras av inloggade användare pga upprepad länkspam.

I version 4.17 av Nexus Personal / BankID Säkerhetsprogram tillkom det några hashvärden som bl.a. används i signaturer.

UHI

UHI står troligtvis för "Unique Host Identifier" och förekommer både i versionssträngen och i signaturer. UHI beräknas så här:

base64(sha1(mac_address + 0x00))

T.ex, om MAC-adressen är 00:22:15:aa:bb:cc:

base64(sha1(002215aabbcc00)) = 
base64(a5cdf262361664694fbe26eadb87eed4dc4d2e79) =
pc3yYjYWZGlPvibq24fu1NxNLnk=

Sedan kan man ju fråga sig om man verkligen vill läcka ut UHI-värdet till vilka webbsidor som helst. Dels för att det är ett unikt nummer för datorn, och dels för att det går att brute forca MAC-adressen utifrån SHA1-värdet (det finns bara 2^24 st per tillverkar-id).

RPR

RPR är en hash av nonce/challenge-parametern i signaturer. Formel för den:

base64(sha1(nonce + xorstr(c1, c2)))

Där nonce är det base64-kodade nonce-värdet, c1 och c2 är konstanterna nedan.

c1 = (0x30,0x59,0x57,0x43,0x44,0x74,0x5,0x46,0x2,0x6b,0x62,0x55,0x2,0x1,0x52,0x4b,0x66,0x55,0x58,0x4b)
c2 = "SmartCard_Reader"

xorstr är XOR av strängarna. Kommer man till slutet av c2-strängen så börjar man om från början. xorstr kan t.ex. beräknas så här i Python:

def ordifchar(x):
    if isinstance(x, basestring): return ord(x)
    else: return x

def xorchar(a, b):
    return chr(ordifchar(a) ^ ordifchar(b))

def xorstr(a, b):
    return "".join([xorchar(a[i], b[i%len(b)]) for i in range(len(a))])

Update tickets

Nexus Personal verkar regelbundet hämta en "update ticket" från en server. Det sker i flera steg över HTTP:

  1. skicka förfrågan till servern
  2. servern skickar en challenge
  3. skicka tillbaka challenge + response
  4. servern ger oss en update ticket


Förslag på mer integritetsvänligt UHI

Man skulle kunna skicka ett tomt UHI-värde i versionsträngen och bara skicka med UHI-värdet i signaturer. Man skulle också kunna blanda in fler bitar i UHI-värdet så att det blir svårare att brute-forca, dvs mer än vad man får från MAC-addressen. T.ex. datorns modellnummer (tror man kan få det från BIOS/ACPI...), info från moderkortet m.m.