Arkiv for "Bank og Eftpos' Kategori

EFT Syetms og Enhet Hensyn

05 august 2008 i Bank og Eftpos, Sikkerhet

enheter og systemer variere land og / aggregator.
Nedenfor er en liste over ting du kanskje liker å tenke. Denne listen er på toppen av hodet mitt, så det er nok ikke fullført.

Se på produkter og relasjoner oss vanligvis en god start.

Ting du bør vurdere:

Internet Banking Security Assessment Hensyn

05 august 2008 i Bank og Eftpos, Sikkerhet

Jeg ble bedt om for en tid siden hva slags ting som kan være når du ser på

Nedenfor er en liste over ting som kan vurderes. Det var bare en hjerne dump og derfor ikke kan fullføre.

Ikke undervurder verdien av standard for infrastruktur nettsted konfigurasjon database engine konfigurasjon / miljø og / QA miljøer.

Noen tanker:

  • Mange ikke låse kontoer etter X mislykkede påloggingsforsøk, er dette normalt gjøres på god kundeservice, men forlater systemet

- Og alle de andre tingene forventet for en (tvunget endres, aldring, osv.))
- Verktøy som kan bruke til å "brute force autentiserte økter.

  • Mange tillate økt sekvens tall skal økes, slik at en godkjent bruker for å se på andre kunde økt.

- Disse kan være side, klientsiden, cookie basert osv.
- Få noen til å se metoder og koden som brukes.
- Database søkestrenger kan plasseres i test oppføring felt, slik at tabellen dumper til leseren.
- Sjekk alle sider servert er trygge og inneholde flagg.

  • Kundenes kanskje ikke segregerte, dette må sjekkes.
  • Kundenes skal ikke ligge på
  • databaser / system bør ikke ligge på webserveren.
  • Databasene bør ligge på et privat / semi-private

- Et annet segment til hovedsiden system.

  • Webserver skal Dual homed eller tilsvarende (noen VLAN teknikkene er bra)

- Skill private og offentlige kort, overvåking / backup / administrasjon
- Infrastruktur satt opp til å nekte inngående / utgående porter, private IP og overvåking escaping fra

  • På alle raseskille poeng at reglene er på plass som verdsetter trafikken skjønt det punktet.
  • Alle kunders der det er mulig bør være hentet fra en sikker baksystemer database.

- Dette kan være et miljø. dvs. ingen hoveddisplayet system.
- Dette åpner for transaksjoner som skal vises i sanntid til kunden.
- Mange transaksjoner kan være batched i virkeligheten. (intern eller ekstern til

  • Sikre hensiktsmessige regler har blitt satt opp på brannmurer.

- Det skal være inn-og utgående regler om brannmurer og filtrering rutere.

  • Ikke la noen infrastruktur på grensesnittkonfigurasjon å tillate eksterne administrative tilkoblinger. etc.)

- Bruk seriell konsoll port til å koble til en eller baksystemer

  • Kontroller at en egen / QA / produksjonsmiljø og egnet prosessen er på plass.
  • Tjenester som ikke brukes av systemet er aktive

- Disse bør være deaktivert.

  • Port scan av støtte infrastruktur (routere / switcher) og (e).

- Undersøk årsakene til alle åpne porter.

  • Ikke bruk de viktigste inngangsporten for klarerte partner (clearing / RAS / osv.)
  • Gjøre alt som standard IIS kontrollerer og NT sjekker (Eksempelkode scripts, endringsledelse, metoder, etc.)
  • Sikre tjenestenekt forholdsregler er tatt betraktning for all infrastruktur serverutstyr.
  • Sjekk tilstrekkeligheten av opptrapping prosedyrer brukes.

- Se for sanntids overvåking og varsler.
- Se for ansvar matrise.
- Se for eierskap til saker.

  • Tenk oppstrøms operatøren (e) (denial of service, IP-etterligning, etc)
  • Tenk social engineering av kunden, administrative, partner accounts / systemer / infrastruktur.

- Helpdesk prosedyrer og retningslinjer og / eller alternative teknologier (innringer-ID, Gateway IP, etc.).

  • Bruk dynamisk passord hvor mulig (SecureID, TACACS osv.).
  • Bruke krypterte tunneler hvor nødvendig Firewall-1, etc)
  • Vurdere å se på andre kunde å forbedre eksisterende metoder.

- sertifikat, IP-adresse låst til etc.
- Vurder bruk av eller CVN for utstedt kort.

  • Vurder hvor passord blir distribuert / endret for kunder.

- Ren e-post, telefon, etc.
- Kan passordene endres

  • Er ytterligere brukes mellom deler av tjenestene gang godkjent?
  • Tenk hva kunden har til én godkjent.

- Se på RTGS, til etc.
- Hvis en angriper does komme i, hva kan de gjøre?

  • Bruke teknikker for å sikre sider, kunde detaljer ikke hurtigbufret til klient-system.

- Dette er flagg som kan settes i sidene.
- Normalt SSL hurtigbufres, men noen proxy leverandører har spilt med teknikker til å gjøre det.
- Hurtigbufring av SSL sider på klientsystemet kan slås på i noen nettlesere.
- Mai banker bruke en (eller lignende) appleten for alle kundebevegelsene, begrense alle hurtigbufring problemer.

  • Sikre papirbasert og on-line ansvar klausuler er tilgjengelig, er alle berørt områder.
  • Sikre innenfor kunde registreringsprosess ansvar er redusert.

- Jeg har sett utsagn som "bruker dette systemet på egen risiko, ansvar for erstatningsansvar eller krav vil IKKE ... ..."
- Ikke veldig kundeorientert, men det er hva deres juridiske avdeling anbefales.

Alle disse kan påvirke og / eller drift av et on-line system.

Andre ting du bør vurdere:

  • Eksterne og av programmet.
  • Eierskap og styring av / programmer
  • Publiseringsløsning for nytt innhold (intern / privat / betrodde eller
  • Topology av grensesnitt. Dvs. dokumentet bør være på plass og håndteres på riktig måte.
  • Er begrenset AP testene utføres når det er gjort endringer for miljøet? dvs. integrert AP i Change prosess.
  • Database Er det bufrede eller er det live til kjernen
  • Hva er gitt? Direkte + + + ... .... Vurdere ulike scenarier for avhengig av funksjonen.
  • Hvilke andre tjenester er delt innen segment at tjenesten kjører. Kan dette bli brukt til å kompromittere området. f.eks. forskjellige / bedrift / organisasjoner med ulike / profiler.
  • Betrakt alle eksterne støtter tjenester innen du AP. Se på intern / ekstern forgiftning muligheter post relé, etc. Hva IPS's bruker de har noen mulighet til å få til systemer eller støtte tjenester som kan påvirke
  • Avhengig av størrelsen på mange organisasjonen ikke bruke samme grupper for infrastruktur og programmet. Som et resultat av eksterne tilkoblinger til infrastrukturen kan gis for en ekstern organisasjonen til å administrere infrastrukturen.
  • Se på forretnings-og metoder og baner (klientsiden certs, sikker ID, etc). Tenk to faktor og moderne brukeren metoder. f.eks. Hva er din favoritt mat i tillegg til vanlig brukernavn og passord. Har systemadministrasjon staff bruke dynamiske passord (secureID, osv.)?
  • Se om programmet sender e-post til brukerne som kan inneholde interessant informasjon.
  • Bedre til programmet er vanligvis fikk etter til systemet. dvs. få en legitim på systemet. Jeg har funnet ut at noen eksempler / administrasjon skjermene har vært begrenset til godkjente brukere.
  • Vurder social engineering Hjelp desk å ha en

Mobile Banking Security and Risk Assessment Hensyn

05 august 2008 i Bank og Eftpos, Sikkerhet

Når banktjenester og tilhørende risiko, er en vurdering tilnærming avhenger i stor grad på den løsningen som blir opprettet eller forutsatt.
Vanligvis tilnærmingen er basert på lagdelte støtte og rundt teknologi og teknikker som brukes.

Her er noen ting du bør vurdere.

evalueringer generelt fokuserer på to hovedtyper ting.

1 / Sensitivitet av
Hva blir sendt. f.eks. bankkontonummer, etc.
kan ikke sensitive til men kan bli vurdert av klienten som sensitive.
osv. ... ... ....

2 / mulighet til å til
Hva medium som brukes?
Er det enkelt å
Hva blir brukt?
Er alle stier sikker (klient og back end)?
Er det en 3dje part involvert i veksling av transaksjonene?
osv. ... ... ...

Ting du bør vurdere:

  • tilbakestilles sendt via til klienten, bør ikke brukes som eneste metode for å få tilgang til kontoene. En ekstra klient spesifikke (muligens statisk) pass ord / setninger som bør brukes i tillegg til en dynamisk genererte kan sniffed (avhengig av modus og sted).
  • Hvis WAP brukes, er alle enhetene i stand til Hvis enhetene ikke er i stand til skal vi nekte til disse enhetene? Hvis klientsiden eller (seier CE, osv.), at dette kan ikke bli svekket av en trojaner og andre teknikker.
  • Har organisasjonen vurdert klientsiden sertifikater å verifisere at enheten før transaksjoner blir akseptert? Vurder flere enheten og brukeren metoder (svært løsning avhengige).
  • De fleste mobile POS terminaler kryptere kunden tastet men ikke kryptere alt innen Hvis medium er svekket, bør vi vurdere om kan sprakk og hvis ukrypterte er følsom. Vurdere ytterligere dvs. bruk av alle melding (SSL, eller bruke en terminal som utnytter Basert Unique Key per
  • Mange programmer har blitt påvirket av typiske hacks som session kapring, ikke tilfeldig økt nøkler (klientsiden og side), osv. ... Disse typiske hacks bør vurderes i Secure SDLC og QA prosesser når du er klar over brukes og / eller distribuert.
  • PBX-systemer og kabling distribusjon rammer kan ha enheter som er koblet til å samle transaksjoner. Trådløse enheter er nå koblet til disse systemene. Angriperen sitter i bilen på parkeringsplassen utenfor. Dette er ofte gjort i super markeder.
  • Trådløst gateways hvis ikke kryptert er lett samles av noen innen trådløs rekkevidde. 802,11 og andre trådløse / infra-rødt medier blir brukt (vurdere og medium som brukes).
  • Har organisasjonen vurdert dynamiske nøkler for mobile brukere? Det er noen svært lav kostnad SecureID løsninger tilgjengelig i dag, men kundene må ha disse enhetene på dem når de ønsker å gjøre en

Breaking VISA PIN

02 juli 2008 i Bank og Eftpos

Nedenfor er en artikkel jeg fant nylig. Dette et av de mest omfattende beskrivelser av Verdi

Jeg trodde jeg ville gjenskape det her for min lokale referanse.

Som kommentar har blitt gjort om grammatikk brukt i den opprinnelige jeg har rettet opp noen av de åpenbare feil samtidig opprettholde sammenheng med det opprinnelige materialet.

http://69.46.26.132/ ~ biggold1/fastget2you/tutorial.

--- Opprinnelig ----

Forord
Har du noen gang lurt på hva som ville skje hvis du mister debetkort, og noen finner den. Vil denne personen kunne ta ut penger fra en minibank gjette, annen, Videre, hvis du var som finner noen vil du forsøke å gjette og ta sjansen til å få noen enkle Selvfølgelig er svaret på begge disse spørsmålene er "nei". Dette arbeidet har ikke avtale med andre spørsmål, er det et spørsmål om Dette jeg forsøker å svare på det første spørsmålet.

All informasjon som brukes til dette arbeidet er offentlig, og kan fritt funnet i Resten er et spørsmål om og programmering, og dermed kan vi lære og ha det moro. Jeg avslører ingen hemmeligheter. Videre er målet (og endelige av dette arbeidet er å vise at algoritmer er fortsatt sterk nok til å gi tilstrekkelig Vi vet alle er ikke det

Dette arbeidet analyserer en av de vanligste algoritmer, brukt av mange debetkort) og prøver å finne ut hvordan resistente er å gjette angrep. Ved å "gjette" Jeg trenger ikke bety å velge en tilfeldig og prøver den i en minibank. Det er kjent at generelt vi får tre forsøk å angi riktig hvis vi mislykkes minibank holder Som er firesifret lenge det er lett å utlede at sjansen for en tilfeldig gjette er 3 / 10000 = 0,0003, det synes lite nok til å være sikker, det betyr at du trenger å miste mer enn tre tusen ganger ( eller å miste mer enn tre tusen kort på samme tid:) inntil det er en rimelig sjanse for å tape

Det jeg egentlig menes med "gjetter" var å bryte slik at gitt noen kan du umiddelbart kjenner den tilknyttede Derfor dette dokumentet studier at muligheten, analysere og foreslå en metode for Til slutt gir vi et verktøy som implementerer og presentere resultater om anslått å ødelegge systemet. Merk at så lenge andre algoritmer (andre formater som IBM eller validering signaturer som eller CVC) ligner samme analyser kan gjøres gir nesten samme resultater og konklusjoner.



En av de vanligste algoritmer er Verdi Kunden får en og en Kodet inn i er et firesifret tall, kalt Dette nummeret er en kryptografisk signatur for andre knyttet til Når en bruker skriver inn sin minibanken leser krypterer og sender denne informasjonen til en sentral datamaskin. Det en prøveordning er beregnet ved hjelp av kunden tastet inn og med en kryptografisk Prøveordningen er sammenlignet med lagret i hvis de samsvarer med den sentrale datamaskinen tilbake til ATM autorisasjon for Se mer detaljert.

Beskrivelsen av kan finnes i to dokumenter knyttet i forrige side. Oppsummert det består i av en 8 byte (64 bit) streng med kalt transformert Parameter (TSP), med (DEA) i Code Book modus (ECB) ved hjelp av en hemmelig 64-biters nøkkel. Den er utledet fra utdataene for som er en 8 byte streng. De fire sifrene i (fra venstre til høyre) tilsvarer de første fire desimaler (fra venstre til høyre) av produksjonen fra når regnet som en 16 heksadesimale tegn (16 x 4 bit = 64 bit) streng. Hvis det ikke finnes fire desimalar blant 16 heksadesimale tegn deretter er fullført tatt (fra venstre til høyre) ikke desimal tegn og decimalizing dem ved hjelp av konvertering A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Her er et eksempel:

Produksjonen fra 0FAB9CDEFFE7DCBA

0975

Strategien for å unngå decimalization ved å hoppe tegn til fire desimaler finnes (som skulle nesten alle ganger som vi vil se nedenfor) er veldig smart fordi den unngår en viktig skjevhet i fordelingen av tall som har vist seg å være dødelig for andre systemer, selv om virkningen på dette systemet vil være mye lavere. Se også et relatert problem ikke gjelder

Den TSP, sett på som en 16 heksadesimale tegn (64 biter) strengen er dannet (fra venstre til høyre) med 11 høyre sifrene i PAN unntatt det siste sifferet (sjekk siffer), ett siffer fra 1 til 6 som velger hemmelig kryptere nøkkelen og til slutt fire siffer i Her er et eksempel:

PAN: 1234 5678 9012 3445
Key selektor: 1
2468

TSP: 5678901234412468

Tydeligvis problemet med å bryte består i å finne den hemmelige kryptere nøkkelen for Metoden for dette er å gjøre et "brute force" søk på nøkkelen plass. Merk at dette er ikke den eneste metoden, man kunne prøve å finne en svakhet i DEA, mange prøvde, men denne gamle standarden er fortsatt på bred bruk (nå erstattet av AES og skjønt). Dette viser at det er robust nok til at "brute force er den eneste gjennomførbare metoden (er det noen bedre angrep, men ikke praktisk i vårt tilfelle, for en oversikt se LASEC memo og for skitne detaljer se Biham & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 og Heys 2001).

Nøkkelen selektor sifferet var svært sannsynlig innført for å dekke muligheten for en nøkkel kompromiss. Da de bare nødt til å utstede nye kort med en annen tast selektor. Voksne kortene kan erstattes med nye, eller bare minibanken kan transparent skrive en ny (tilsvarende den nye nøkkelen og holde den samme neste gang kunden bruker hans / hennes For å riste av alle brukere bør bli bedt om å endre sin PIN-koder, men det ville være pinlig for å forklare, og derfor svært sannsynlig ville de ikke gjøre slik forespørsel.

Forbereder


En "brute består i å kryptere en TSP med kjente bruke alle mulige kryptere tastene og sammenligne hvert fått med kjente Når en kamp blir funnet vi har en kandidat tasten. Men hvor mange nøkler må vi prøve? Som vi sa over tasten er 64 bits lang, vil dette at vi må prøve 2 ^ 64 nøkler. Men dette er ikke sant. Faktisk bare 56 biter er effektive i nøkler fordi en bit (minst signifikante) ut av hver oktett ble historisk enerett som en kontrollsum for andre, i praksis de 8 biter (ett for hvert av de 8 octets) ignoreres.

Derfor nøkkelen plass består av 2 ^ 56 nøkler. Hvis vi prøver alle disse tastene vil vi finner en og bare en kamp, tilsvarende hemmelig nøkkel? Absolutt ikke. Vi vil få mange samsvarende tastene. Dette er fordi er bare en liten del (kvart) av utgang. Videre er degenerated fordi noen av sifre (de mellom 0 og 5 etter siste sett fra venstre til høyre, siffer mellom 6 og 9) kan komme fra en desimal siffer eller fra en decimalized heksadesimale siffer av utgang. Dermed mange nøkler vil produsere en utgang som gir de samme samsvarende

Så hva kan vi gjøre for å finne den virkelige nøkkelen blant de andre falske positive nøklene? Bare vi har til å kryptere et sekund ulike TSP, også kjent men bruker bare kandidatsiden tastene som ga en positiv samsvarende med den første par. Imidlertid er det ingen garanti for vi vil ikke komme igjen mange falske positive sammen med ekte tast. Hvis det er slik, trenger vi en tredel paret gjenta prosessen og så videre.

Før vi starter våre må vi vite hvor mange parene vi trenger. For at vi har for å beregne for en tilfeldig output å gi en samsvarende bare ved en tilfeldighet. Det er flere måter å beregne dette nummeret, og her vil jeg bruke en enkel tilnærming enkle å forstå, men som krever litt bakgrunnsinformasjon i av

En kan alltid bli sett på som forholdet mellom gode saker til mulige tilfeller. I vårt problem antall mulige tilfeller er gitt av av 16 elementer (0 til F heksadesimaltall) i en gruppe på 16 av dem (16 heksadesimaltall av output). Dette er gitt ved 16 ^ 16 ~ 1,8 * 10 ^ 19 som selvfølgelig faller sammen med 2 ^ 64 (forskjellige tall av 64 biter). Dette settet med tall kan bli delt opp i fem kategorier:

De med minst fire desimaler (0 til 9) blant de 16 heksadesimaltall (0 til F) av utgang.

De med nøyaktig bare tre desimalar.

De med nøyaktig to desimalar.

De med nøyaktig én desimal siffer.

De uten desimaler (alle mellom A og F).

La oss regne ut hvor mange tall faller i hver kategori. Hvis vi merke 16 heksadesimaltall av utgang som X1 til x16 så vi kan merke de første fire desimalar av et gitt antall den første kategorien som Xi, XJ, Xk og Xl. Antallet forskjellige kombinasjoner med denne profilen er gitt ved produktet 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 LK-1 * 10 * 1616-l der 6 ' er kommet fra flere muligheter for en A til F siffer, de 10 er kommet fra mulighetene for a 0 til 9 siffer, og 16 kommer fra mulighetene for en 0 til F siffer. Nå er de totale tallene i den første kategorien er bare oppgitt av oppsummering av dette produktet over i, j, k, l fra 1 til 16, men med i <j <k <l. Hvis du gjør noen matematiske arbeid du vil se denne lik til produktet av 104 / 6 med oppsummering over i fra 4 til 16 av (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1,8 * 1019.

I tilsvarende antall tilfeller i den andre kategorien er gitt av oppsummering over i, j, k fra 1 til 16 med i <j <k av produktet 6i-1 * 10 * 6j-i-1 * 10 * 6k-j -1 * 10 * 616-k som du kan arbeide det ut til å være 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. Tilsvarende for tredje kategori har vi oppsummering over i, j fra 1 til 16 med i <j av 6 i-1 * 10 * 6j-i-1 * 10 * 616-j som tilsvarer 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Igjen, for fjerde kategorien har vi oppsummering over i fra 1 til 16 av 6i-1 * 10 * 616-i = 160 * 615 ~ 7,5 * 1013. Og endelig antall tilfeller i den femte kategorien er gitt av av seks elementer (A til F sifre) i en gruppe på 16, det vil si 616 ~ 2,8 * 1012.

Jeg håper du har fulgt beregninger opptil er den tyngste delen er ferdig. Nå som et bevis på at alt er riktig kan du summen av antall tilfeller i 5 kategorier og se det tilsvarer det totale antallet mulige tilfeller beregnes før. Gjøre operasjoner bruker 64 bits eller avrunding (for flottører) eller overflyt (for heltall) feil vil ikke la deg få nøyaktig resultat.

Hittil har vi beregnet antall mulige tilfeller i hver av fem kategorier, men vi er interessert i å skaffe det antall gunstig tilfeller stedet. Det er veldig enkelt å utlede sistnevnte fra det tidligere så dette er bare å fikse en kombinasjon av de fire desimaler (eller ønsket heksadesimaltall hvis det ikke finnes fire desimalar) av i stedet for å la dem gratis. I praksis betyr dette dreie 10 står i formelen ovenfor i 1 og den nødvendige mengden 6 står i 1's hvis det ikke finnes fire desimalar. Det er vi nødt til å dele det første resultatet av 104, den andre med 103 * 6, den tredje en av 102 * 62, den fjerde en av 10 * 63 og den femte av 64. Deretter antall gode saker i de fem kategoriene er ca 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, 2,2 * 109 hhv.

Nå har vi muligheten til å få tak i hva som er for et output å matche en ved en tilfeldighet. Vi må bare legge til de fem numrene til gode saker og dele det på det totale antallet mulige tilfeller. Gjør det vi får at er svært omtrent 0.0001 eller én av ti tusen. Er det rart denne brønnen avrundet resultatet? Ikke i det hele tatt, bare ta en titt på tallene vi beregnet ovenfor. Den første kategorien dominerer med flere bestillinger av omfanget antall gode og mulige tilfeller. Dette er ganske intuitivt som det synes klart at det er svært lite sannsynlig ikke har fire desimaler (10 sjansene av 16 per siffer) blant 16 heksadesimale tall. Vi så tidligere at forholdet mellom antall mulige og gode saker i den første kategorien er en divisjon av 10 ^ 4, det er der vårt resultat p = 0,0001 kommer fra.

Vårt mål for alle disse beregningene var å finne ut hvor mange parene vi må gjennomføre en vellykket "brute Nå har vi muligheten til å beregne den forventede antall falske positive i første søk vil det være antall rettssaker ganger for en enkelt tilfeldig falske positive, dvs. t * p hvor t = 2 ^ 56, størrelsen på nøkkelen plass. Dette utgjør om lag 7,2 * 10 ^ 12, en ganske stort antall. The expected number of false positives in the second search (restricted to the positive keys found in the first search) will be (t * p) * p, for a third search will be ((t * p) * p) * p and so on. Thus for n searches the expected number of false positives will be t * p^n.

We can obtain the number of searches required to expect just one false positive by expressing the equation t * p^n = 1 and solving for n. So n equals to the in base p of 1/t, which by properties of logarithms it yields n = log(1/t)/log(p) ~ 4.2. Since we cannot do a fractional search it is convenient to round up this number. Therefore what is the expected number of false positives if we perform five searches? It is t * p^5 ~ 0.0007 or approximately 1 out of 1400. Thus using five TSP- pairs is safe to obtain the true secret key with no false positives.

The


Once we know we need five TSP- pairs, how do we get them? Of course we need at least one with known , and due to the nature of the , that’s the only thing we need. With other systems, such as IBM, we would need five cards, however this is not necessary with . We just have to read the and then change the four times but reading the after each change.

It is necessary to read the of the to get the and the encrypting key selector. You can buy a commercial or make one yourself following the instructions you can find in the previous page and links therein. Once you have a see this description of standard magnetic tracks to find out how to get the from the read. In that document the field in tracks 1 and 2 is said to be five character long, but actually the true consists of the last four digits. The first of the five digits is the key selector. I have only seen cards with a value of 1 in this digit, which is consistent with the standard and with the secret key never being compromised (and therefore they did not need to move to another key changing the selector).

I did a simple C program, getpvvkey.c, to perform the . It consists of a loop to try all possible keys to encrypt the first TSP, if the derived matches the true a new TSP is tried, and so on until there is a mismatch, in which case the key is discarded and a new one is tried, or the five derived PVVs match the corresponding true PVVs, in which case we can assume we got the secret key, however the loop goes on until it exhausts the key space. This is done to assure we find the true key because there is a chance (although very low) the first key found is a false positive.

It is expected the program would take a very long time to finish and to minimize the risks of a power cut, computer hang out, etc. it does checkpoints into the file getpvvkey.dat from time to time (the exact time depends on the speed of the computer, it’s around one hour for the fastest computers now in use). For the same reason if a positive key is found it is written on the file getpvvkey.key. The program only displays one message at the beginning, the starting position taken from the checkpoint file if any, after that nothing more is displayed.

The is a key point in the program, it is therefore very important to optimize its speed. I tested several implementations: libdes, SSLeay, openssl, cryptlib, nss, libgcrypt, catacomb, libtomcrypt, cryptopp, ufc-crypt. The functions of the first four are based on the same code by Eric Young and is the one which performed best (includes optimized C and x86 assembler code). Thus I chose libdes which was the original implementation and condensed all relevant code in the files encrypt.c (C version) and x86encrypt.s (x86 assembler version). The code is slightly modified to achieve some enhancements in a brute force : the initial is a fixed common steep in each TSP and therefore can be made just one time at the beginning. Another improvement is that I wrote a completely new setkey function (I called it nextkey) which is optimum for a brute force loop.

To get the program working you just have to in the corresponding place five TSPs and their PVVs and then compile it. I have tested it only in UNIX platforms, using the makefile Makegetpvvkey to compile (use the command “make -f Makegetpvvkey”). It may compile on other systems but you may need to fix some things. Be sure that the definition of the long64 corresponds to a 64 bit integer. In principle there is no dependence on the endianness of the processor. I have successfully compiled and run it on Pentium-Linux, Alpha-Tru64, Mips-Irix and Sparc-Solaris. If you do not have and do not want to install Linux (you don’t know what you are missing ;-) you still have the choice to run Linux on CD and use my program, see my page running Linux without installing it.

Once you have found the secret key if you want to find the of an arbitrary you just have to write a similar program (sorry I have not written it, I’m too lazy :) that would try all 10^4 PINs by generating the corresponding TSP, encrypting it with the (no longer) secret key, deriving the and comparing it with the in the of the . You will get one match for the true . Only one match? Remember what we saw above, we have a chance of 0.0001 that a random matches the . We are trying 10000 PINs (and therefore TSPs) thus we expect 10000 * 0.0001 = 1 false positive on average.

This is a very interesting result, it means that, on average, each has two valid PINs: the customer and the expected false positive. I call it “false” but note that as long as it generates the true it is a as valid as the customer’s one. Furthermore, there is no way to know which is which, even for the ATM; only customer knows. Even if the false positive were not valid as , you still have three trials at the ATM anyway, enough on average. Therefore the we calculated at the beginning of this document about random guessing of the has to be corrected. Actually it is twice that value, ie, it is 0.0006 or one out of more than 1600, still safely low.

Results


It is important to optimize the compilation of the program and to run it in the fastest possible processor due to the long expected run time. I found that the compiler optimization flag -O gets the better performance, thought some improvement is achieved adding the -fomit-frame-pointer flag on Pentium-Linux, the -spike flag on Alpha-Tru64, the -IPA flag on Mips-Irix and the -fast flag on Sparc-Solaris. Special flags (-DDES_PTR -DDES_RISC1 -DDES_RISC2 -DDES_UNROLL -DASM) for the code have generally benefits as well. All these flags have already been tested and I chose the best combination for each processor (see makefile) but you can try to fine tune other flags.

According to my tests the best performance is achieved with the AMD Athlon 1600 MHz processor, exceeding 3.4 million keys per second. Interestingly it gets better results than Intel Pentium IV 1800 MHz and 2000 MHz (see figures below, click on them to enlarge). I believe this is due to some I/O saturation, surely cache or memory , that the AMD processor (which has half the cache of the Pentium) or the motherboard in which it is running, manages to avoid. In the first figure below you can see that the breaking speed of all processors has more or less a linear relationship with the processor speed, except for the two Intel Pentium I mentioned before. This is logical, it means that for a double processor speed you’ll get double breaking speed, but watch out for saturation effects, in this case it is better the AMD Athlon 1600 MHz, which will be even cheaper than the Intel Pentium 1800 MHz or 2000 MHz.

In the second figure we can see in more detail what we would call intrinsic break power of the processor. I get this value simply dividing the break speed by the processor speed, that is, we get the number of keys tried per second and per MHz. This is a measure of the performance of the processor independently of its speed. The results show that the best processor for this task is the AMD Athlon, then comes the Alpha and very close after it is the Intel Pentium (except for the higher speed ones which perform very poor due to the saturation effect). Next is the Mips processor and in the last place is the Sparc. Some Alpha and Mips processors are located at bottom of scale because they are early releases not including enhancements of late versions. Note that I included the performance of x86 processors for C and assembler code as there is a big . It seems that gcc is not a good generator of optimized machine code, but of course we don’t know whether a manual optimization of assembler code for the other processors (Alpha, Mips, Sparc) would boost their results compared to the native C compilers (I did not use gcc for these other platforms) as it happens with the x86 processor.

Update

Here is an article where these techniques may have been used.

http://redtape.msnbc.com/2008/08/could-a-hacker.html

Financial Transaction Processing

Jul 02, 2008 in Banking and EFTPoS

I have been recently working inside one of the larger Banks in .
Through this work I have been looking at the controls and surrounding the of and cards around the Asia Pacific.

I get perform many and systems assessments.
Over the years I have always considered the of the as one of the key considerations.

Until yesterday I had never seen an or . I think some scripted use of these tools could be very interesting.
The site hziggurat29.com

Many of the other tools on this site are also very unique and worth a look.
Big thanks to ziggurat29 for providing such awesome tools.

As many of these sites are of this nature are difficult to find and often seem to vanish over the years, I have chosen to replicate the the from this page and provide local copies on the files.
It is worth periodically visiting the ziggurat29 site every now and again to see if any additional tools have been posted.

One of the more extraordinary files is the Atalla Module ( )  and for (simulation) tools. So I wonder if and are shaking in their boots. Some how I don’t think so. ;-)

——– ziggurat29 ———

These are all Windows command-line utilities (except where noted); execute with the -help option
to determine usage.

DUKPT Decrypt (<- the actual file to download)

This is a that will Encrypted Blocks that have been produced via the triple- method.  I used this for testing the output of some Pad software I had created, but is also handy for other debugging purposes.

VISA PVV Calculator (<- the actual
file to download)

This is a that will compute and verify Values that have been produced using the