Archief voor de 'Bank-en Eftpos' Category

EFT Syetms apparaat en overwegingen

05 augustus, 2008 in Banking en Eftpos, Security

apparaten en systemen kunnen verschillen, afhankelijk van land en aggregator.
Hieronder is een lijst van dingen die u graag in overweging geven. Deze lijst is de top van mijn hoofd dus het is waarschijnlijk niet compleet.

Kijkend naar de producten en relaties ons doorgaans een goede start.

Wat te overwegen:

Internet Banking Security Assessment overwegingen

05 augustus, 2008 in Banking en Eftpos, Security

Ik was enige tijd geleden gevraagd wat voor soort dingen kunnen worden beschouwd als gekeken wordt naar

Hieronder vindt u een lijst van dingen die zouden kunnen worden overwogen. Het was gewoon een brain dump en als zodanig kan niet worden voltooid.

Niet onderschatten de waarde van de norm voor uw infrastructuur, website configuratie, database-engine configuratie de organisatie milieu ontwikkeling / QA-omgevingen.

Enkele ideeën:

  • Veel geen lock-accounts na X mislukte aanmeldingen, dit is normaal gesproken alleen voor een goede klantenservice, maar laat het systeem

- En alle andere dingen worden verwacht een externe zitting (gedwongen veranderingen, veroudering, etc))
- Tools zoals kan worden gebruikt om brute force gewaarmerkt sessies.

  • Veel sessie toestaan volgnummers te worden opgehoogd, zodat een geverifieerde gebruiker om een andere klant sessie.

- Dit kan worden client-kant, op cookies gebaseerde, enz.
- Kies iemand uit om te controleren of ontwikkeling van methoden en de code die gebruikt wordt.
- Database-query strings kan worden geplaatst in de test invoervelden, waardoor tabel stortplaatsen te browser.
- Controleer alle pagina's geserveerd worden beveiligd en bevatten vlaggen.

- Een ander segment van de belangrijkste systeem.

  • Webserver moet worden dual homed of gelijkwaardig (sommige VLAN technieken zijn goed)

- Aparte private en publieke monitoring / backup / administratie
- Infrastructuur set-up om expliciet ontkennen inbound / outbound havens, prive IP & monitoring ontsnappen uit netwerk.

  • Op gegevens segregatie punten zorgen regels bestaan die waardering voor al het verkeer dat punt.
  • Alle waar mogelijk moet afkomstig zijn van een veilige back-end database.

- Dit kan een omgeving. dat wil zeggen niet voornaamste bank-systeem.
- Deze doorgaans in staat om transacties te verschijnen real-time aan de klant.
- Veel transacties kunnen worden batched in werkelijkheid is. (intern of extern zijn aan bank)

  • Zorgen voor adequate regels zijn set-up op firewalls.

- Er moet worden inkomende en uitgaande regels inzake filtering firewalls en routers.

  • Laat niet toe dat alle infrastructuur op de front-end, zodat de administratieve aansluitingen. etc.)

- Gebruik de seriële console poort voor verbinding met een back-end terminal

  • Zorg ervoor dat een aparte QA / productie-omgeving en geschikt proces is op zijn plaats.
  • Diensten die niet gebruikt worden door het systeem actief zijn

- Deze moeten worden uitgeschakeld.

  • Port scan van de ondersteunende infrastructuur (routers / switches) server (s).

- Onderzoek naar de redenen voor alle open poorten.

  • Gebruik niet de belangrijkste toegangspoort voor vertrouwde partner / RAS / enz.)
  • Doe alles wat standaard IIS-controles en de controles NT (Sample scripts, change management, methoden, enz.)
  • Zorgen voor denial of service voorzorg is gehouden voor alle server-apparatuur.
  • Controleer de toereikendheid van de escalatie procedures gebruikt.

- Kijk voor real-time monitoring en alarmering.
- Kijk voor verantwoordelijkheid matrix.
- Kijk voor de eigendom van zaken.

  • Overweeg upstream vervoerder (s) of service, DNS hacking, enz.)
  • Denk aan social engineering van de klant, de bestuurs-, partner-accounts / systemen en infrastructuur.

- Helpdesk procedures en het beleid en / of alternatieve technologieën (Caller ID, IP, enz.).

  • Gebruik dynamische wachtwoorden waar dat mogelijk is (SecureID, TACACS, etc.).
  • Gebruik encrypted tunneling zo nodig Firewall-1, etc)
  • Overwegen te kijken naar een andere klant methoden ter verbetering van bestaande methoden.

Digitale cert, het IP-adres geblokkeerd verantwoording te roepen, enz.
- Overweeg het gebruik van of CVN voor de uitgegeven kaarten.

  • Denk aan de manier waarop wachtwoorden worden gedistribueerd / veranderd voor de klanten.

- tekst e-mail, telefoon, enz.
- Kan wachtwoorden worden gewijzigd?

  • Is extra gebruikt tussen afdelingen van de diensten eenmaal geauthenticeerd?
  • Denk aan wat de klant heeft tot een keer geverifieerd.

- Kijk naar RTGS-, transfers, enz.
- Als een hacker krijgen, wat kan het doen?

  • Gebruik technieken om pagina's, de klant gegevens worden niet opgeslagen in het cachegeheugen op of client-systeem.

- Dit zijn vlaggen die kan worden ingesteld binnen pagina's.
- Normaal SSL-cache is opgeslagen, maar sommige proxy-leveranciers zijn te spelen met technieken om dat te doen.
- Caching van SSL-pagina's op het client systeem kan worden ingeschakeld op sommige browsers.
- Mei banken gebruik maken van Java (of soortgelijke) applet voor alle interactie met de klant, het beperken van alle aspecten cachegebruik.

  • Zorgen voor de papieren en on-line aansprakelijkheid clausules beschikbaar zijn, worden alle getroffen gebieden.
  • Zorgen binnen de klant aanmelden aansprakelijkheid, wordt verkleind.

- Ik heb gezien dat uitspraken als "dit systeem gebruiken voor uw eigen risico, de verantwoordelijkheid voor eventuele aansprakelijkheid of vordering wordt NIET ... ..."
- Niet erg klantgericht, maar dat is wat hun juridische afdeling aanbevolen.

Al het bovenstaande is van invloed de veiligheid en / of de exploitatie van een banking systeem.

Andere overwegingen:

  • Externe en ondersteuning van de aanvraag.
  • Eigendom en beheer van hardware / toepassingen
  • Publishing punten voor de nieuwe inhoud (intern / particulier / vertrouwde
  • Topologie van de front-end. Dwz document moeten worden in plaats en adequaat beheerd.
  • Zijn beperkte AP tests die worden uitgevoerd wanneer er wijzigingen zijn aangebracht aan het milieu? dwz geïntegreerde AP in Change management proces.
  • Database Is het gebufferd of is het leven tot een kerntemperatuur van
  • Welke voorzieningen worden aangeboden? incasso + + ... .... Denk aan verschillende scenario's voor aanval, afhankelijk van de functie.
  • Welke andere diensten worden gedeeld het netwerk segment Internet wordt uitgevoerd. Kan dit worden gebruikt om de Banking site. Bijv. verschillende bedrijven / met verschillende / profielen.
  • Overweeg alle externe ondersteunende diensten binnen je AP. Kijk eens naar de interne / DNS-poisoning kansen, relay, enz. Wat IPS doen ze gebruiken heeft ISP geen enkele mogelijkheid toegang te krijgen tot systemen of ondersteunende diensten die van invloed kunnen zijn op
  • Afhankelijk van omvang van de bank, veel organisatie geen gebruik maken van dezelfde voor de infrastructuur en de toepassing. Als gevolg externe aansluitingen op de infrastructuur kunnen worden voorzien in een externe voor het beheer van de infrastructuur.
  • Kijk bij de zakenreiziger en de gebruiker methoden en paden (client certificaten, beveiligde ID, Card, etc). Beschouw twee factor moderne gebruiker methoden. Bijv. wat is je favoriete voedsel Naast de normale gebruikersnamen en wachtwoorden. Doe systeembeheer medewerkers gebruik maken van dynamische wachtwoorden (SecureID, etc)?
  • Kijk of de Banking applicatie stuurt e-mail aan gebruikers die kunnen bevatten interessante informatie.
  • Betere kunnen over het algemeen worden opgedaan na tot het systeem. dat wil zeggen krijgen een legitieme op het systeem. Ik heb geconstateerd dat sommige monster / administratie-schermen zijn beperkt tot geverifieerde gebruikers.
  • Denk aan social engineering de Help-desk te beschikken over een voor een account resetten.

Mobile Banking Security and Risk Assessment overwegingen

05 augustus, 2008 in Banking en Eftpos, Security

Bij het overwegen van Mobile de bijbehorende risico's, de aanpak van een beoordeling hangt zeer nauw samen met de oplossing moet worden gemaakt of verstrekt.
Het algemeen is de aanpak is gebaseerd op gelaagde rond de technologieën en technieken gebruikt.

Hier zijn een aantal dingen na te denken.

beoordelingen meestal richt zich op twee belangrijke dingen.

1 / De gevoeligheid van gegevens
Wat wordt verzonden. Bijv. credit card nummers, woonadres, enz.
gevoelig is voor bank, maar mag worden beschouwd door de cliënt als gevoelig worden aangemerkt.
etc ... ... ....

2 / Gelegenheid toegang te krijgen tot gegevens.
Welk medium wordt gebruikt?
Is het makkelijk te
Wat wordt gebruikt?
Zijn alle veilige paden (client-en back-end)?
Is er een 3e partij die bij de overschakeling van de verrichtingen?
etc ... ... ...

Wat te overwegen:

  • opnieuw verzonden via een client, mag niet worden gebruikt als de enige methode om toegang te krijgen tot accounts. Een bijkomende specifieke client (eventueel statische) pass woord / zin moet worden gebruikt als aanvulling op een dynamisch gegenereerde niks (afhankelijk van de modus en locatie).
  • Als WAP wordt gebruikt, zijn alle apparaten in staat Als apparaten niet geschikt voor doen we ontzeggen van de toegang tot deze apparaten? Als client intelligent (win CE, etc), ervoor zorgen dat dit niet kan worden ondermijnd door een Trojaans's andere belangrijke technieken.
  • Heeft de organisatie beschouwd als client-certificaten te controleren of het apparaat voorafgaand aan transacties worden geaccepteerd? Overweeg apparaat en de gebruiker meerdere (zeer oplossing persoon ten laste).
  • De meeste mobiele POS terminals versleutelen van de klant opgegeven maar die niet binnen versleutelen van alles wat transactie. Als de medium is aangetast, moeten we overwegen of de worden gekraakt en als ongecodeerde gevoelig zijn. Denk aan gegevens dat wil zeggen het gebruik van alle berichten van of gebruik een terminal die gebruik Afgeleide unieke sleutel transactie
  • Vele zijn aangetast door typische hacks zoals SQL niet willekeurige sessie-sleutels (client server side), etc ... Deze typische hacks moet worden beschouwd in uw Secure SDLC en QA Processen zodra u zich bewust zijn van de en / of ingezet.
  • PBX-systemen en bekabeling distributie frames kunnen zijn apparaten die zijn aangesloten bij het verzamelen van transacties. Draadloze apparaten zijn nu aangesloten op deze systemen. De aanvaller zit in hun auto op het parkeerterrein buiten. Dit gebeurt vaak in super markten.
  • Wireless gateways indien niet versleuteld zijn gemakkelijk verzameld door iedereen binnen draadloos bereik. 802.11 en andere draadloze / infra-rood mediums worden gebruikt (beoordelen van de medium wordt gebruikt).
  • Heeft de organisatie beschouwd dynamische sleutels voor mobiele gebruikers? Er zijn enkele zeer lage kosten SecureID oplossingen die vandaag beschikbaar zijn, maar klanten moeten deze apparaten bij hen wanneer ze willen transactie.

Breaking visum PIN

02 juli, 2008 in Banking en Eftpos

Hieronder staat een artikel dat ik onlangs gevonden. Dit een van de meest uitgebreide beschrijvingen PIN Waarde hacken.

Ik dacht dat ik zou repliceren dat hier voor mijn lokale referentie.

Als reactie hebben plaatsgevonden met betrekking tot de grammatica gebruikt in de tekst, ik hebben een aantal voor de hand liggende fouten met behoud van de context van het oorspronkelijke materiaal.

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

--- Original ----

Voorwoord
Heb jij je ooit afgevraagd wat er zou gebeuren als je verliest debetkaart, en iemand vindt. Zou deze persoon in te trekken in contanten uit een geldautomaat gissen, ergens, is uw Bovendien, als je die vindt dat iemand kaart zou je proberen om te raden naar de en neem de kans om wat geld gemakkelijk Natuurlijk is het antwoord op beide vragen moeten worden: "Nee." Dit werk houdt zich niet bezig met de tweede vraag, het is een van persoonlijke Hierbij probeer ik naar het antwoord op de eerste vraag.

Alle gegevens die worden gebruikt voor dit werk is openbaar en vrij kan worden gevonden in De rest is een kwestie van programmeren, dus we kunnen leren en iets gezelligs doen. Ik tonen geen geheimen. Bovendien is de doelstelling (en de uiteindelijke van dit werk is aan te tonen dat zijn nog steeds sterk genoeg om te voorzien in voldoende We weten allemaal zwakke punt.

Dit werk analyseert een van de meest voorkomende die wordt gebruikt door vele en probeert het uit te vinden hoe resistent is om gissen aanvallen. Met "raden" Ik bedoel daarmee niet het kiezen van een willekeurige probeert haar in een ATM. Het is algemeen bekend dat we een drie achtereenvolgende proeven te voer de juiste als we falen ATM houdt de Zoals is vier cijfers lang is het makkelijk om afleiden dat de kans op een willekeurige gissen is 3 / 10000 = 0,0003, lijkt laag genoeg om veilig te zijn, betekent dit dat je nodig hebt te verliezen kaart meer dan drie duizend keer ( of verliezen meer dan drieduizend kaarten tegelijk:) totdat er een redelijke kans op verlies van

Wat ik echt bedoeld met "geraden" was het breken van zodat een willekeurige kunt onmiddellijk weten wat de bijbehorende Daarom is dit document studies die mogelijkheid, het analyseren van algoritme en het voorstellen van een methode voor aanval. Ten slotte geven wij een instrument dat uitvoering geeft aan de huidige resultaten over de geschatte kans om te breken van het systeem. Merk op dat, zolang andere algoritmen (andere zoals IBM kaart validatie handtekeningen zoals of CVC) is vergelijkbaar met hetzelfde onderzoek kan worden gedaan die leidden tot nagenoeg dezelfde resultaten en conclusies.



Een van de meest voorkomende is de Waarde De klant krijgt een en een Gecodeerd in magneetstrip is een vier-cijferige nummer, genaamd Dit nummer is een cryptografische handtekening van de gegevens in verband met kaart. Wanneer een gebruiker zijn / haar de ATM leest de codeert en stuurt al deze informatie naar een centrale computer. Er een proefabonnement wordt berekend met gebruikmaking van de klant opgegeven de kaart informatie met een cryptografisch Het proces wordt vergeleken met de de kaart opgeslagen, indien zij overeenkomen met de centrale computer keert terug naar de ATM toestemming voor de Zie in detail te bekijken.

De beschrijving van de kan gevonden worden in twee documenten met elkaar verbonden zijn in de vorige pagina. Samenvattend bestaat in de een 8-byte (64 bit) string gegevens, genaamd Transformed Parameter (TSP), (DEA) Electronic Code Book-modus (ECB) met behulp van een geheime 64-bits sleutel. De is afgeleid van de output van de een 8-byte string. De vier cijfers van het (van links naar rechts) komen overeen met de eerste vier decimale cijfers (van links naar rechts) van het uitgangssignaal van toen beschouwd als een 16 hexadecimale tekens (16 x 4 bits = 64 bit) string. Als er geen vier decimale cijfers van de 16 hexadecimale tekens dan is de is voltooid genomen (van links naar rechts) niet decimalizing decimale karakters en ze worden met behulp van de A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Hier is een voorbeeld:

Output van 0FAB9CDEFFE7DCBA

0975

De strategie van vermijding decimalization door het overslaan van karakters tot vier decimalen worden aangetroffen (die toevallig ook bijna alle tijden, zoals we verder zullen zien) is erg slim, omdat men daarmee een belangrijke vertekening bij de verdeling van de cijfers, dit is bewezen te zijn fatale voor andere systemen, hoewel het effect op dit systeem zou veel lager zijn. Zie ook een aanverwant probleem niet van toepassing zijn op

De TSP, gezien als een 16 hexadecimale tekens (64 bits) string, wordt gevormd (van links naar rechts) met de 11 meest rechtse cijfers van het PAN met uitzondering van het laatste cijfer (check digit), een cijfer van 1 tot 6 die kiest voor het versleutelen van de geheime sleutel en tenslotte de vier cijfers van de Hier is een voorbeeld:

PAN: 1234 5678 9012 3445
Key selector: 1
2468

TSP: 5678901234412468

Vanzelfsprekend doet dit probleem van het breken bestaat in het vinden van de geheime sleutel voor het versleutelen van De methode daarvoor is om een brute force zoek naar de sleutel ruimte. Let op: dit is niet de enige methode, kan men proberen te vinden van een tekortkoming in de DEA, veel geprobeerd, maar dit oude norm is nog steeds op grote schaal wordt gebruikt (nu vervangen door AES RSA, hoewel). Dit toont het is stevig genoeg is zodat brute kracht is de enige haalbare methode (er zijn een paar aanvallen maar beter niet praktisch in ons geval, voor een overzicht zie LASEC memo en voor de dirty details zie Biham & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 en Heys 2001).

De belangrijkste cijfers selector is zeer waarschijnlijk ingevoerd ter dekking van de mogelijkheid van een belangrijk compromis. In dat geval worden ze gewoon van de uitgifte van nieuwe kaarten met een andere sleutel selector. Oudere kaarten kunnen worden vervangen door nieuwe of simpelweg het op transparante ATM kunnen schrijven van een nieuw (overeenkomend met de nieuwe sleutel en het houden van dezelfde volgende keer dat de klant gebruikt zijn / haar Voor het schudden de veiligheid voor alle gebruikers moet worden gevraagd om hun pincodes, maar het zou pijnlijk voor bank om de reden, dus zeer waarschijnlijk zouden zij niet een dergelijk verzoek.

Voorbereiden van de


Een brute force bestaat uit het versleutelen van een TSP met een bekende met behulp van alle mogelijke sleutels versleutelen en te vergelijken elk verkregen met de bekende Wanneer er een match is gevonden hebben we een kandidaat-sleutel. Maar hoeveel toetsen we moeten proberen? Zoals we al boven de toets is 64 bits lang, dit zou betekenen dat we moeten proberen 2 ^ 64 sleutels. Dit is echter niet waar. Eigenlijk slechts 56 bits effectief in de omdat een bit (de minst belangrijke) van elk octet was vroeger al gereserveerd als een checksum voor de anderen, die in de praktijk 8 bits (een voor elk van de 8 octets) worden genegeerd.

Daarom is de ruimte bestaat uit 2 ^ 56 sleutels. Als we proberen al deze toetsen vinden we een en slechts een wedstrijd, wat overeenkomt met bank geheime sleutel? Zeker niet. We krijgen veel bijpassende sleutels. Dit komt doordat de is slechts een klein deel (een kwart) van het Bovendien is de is ontaard, omdat sommige van de cijfers (die tussen 0 en 5 na de laatste, gezien van links naar rechts, cijfer tussen 6 en 9) kan afkomstig zijn van een decimale cijfers of uit een decimalized hexadecimale cijfers van het Zo veel sleutels zullen een output levert aan dezelfde matching

En wat kunnen we doen om de echte sleutel tot die andere valse positieve sleutels? Simply hebben we bij het coderen van een seconde verschillende TSP, ook met bekende maar met alleen de kandidaat-sleutels die heeft een positieve matching met de eerste paar. Er is echter geen garantie die we gaan nu niet weer veel false positives samen met de echte toets. Zo ja, wij hebben een derde herhaal het proces en ga zo maar door.

Voordat we beginnen onze moeten we weten hoeveel paren zullen we nodig hebben. Om die we hebben voor het berekenen van de willekeurige output moet leiden tot een matching gewoon door toeval. Er zijn verschillende manieren om dit aantal te berekenen en hier zal ik gebruik maken van een eenvoudige benadering gemakkelijk te begrijpen, maar dat vereist enige achtergrond in

Een kan altijd worden gezien als de verhouding van de gevallen gunstig mogelijke gevallen. In ons probleem is het aantal mogelijke gevallen wordt gegeven door de van 16 elementen (de 0 tot en met F hexadecimale cijfers) in een groep van 16 van hen (de 16 hexadecimale cijfers van het Deze wordt gegeven door 16 ^ 16 ~ 1,8 * 10 ^ 19, dat samenvalt met uiteraard 2 ^ 64 (verschillende getallen van 64 bits). Deze reeks getallen kunnen worden gescheiden in vijf categorieën:

Degenen met ten minste vier decimale cijfers (0 t / m 9) van de 16 hexadecimale cijfers (0 t / m F) van het

Degenen met precies slechts drie decimalen.

Degenen met precies slechts twee decimalen.

Degenen met precies alleen een decimaal cijfer.

Degenen die geen decimalen (alle tussen A en F).

Laten we eens berekenen hoeveel nummers vallen in elke categorie. Als we het etiket van 16 hexadecimale cijfers van het output als X1 van X16 dan kunnen we etiket de eerste vier decimalen van een bepaald nummer van de eerste categorie als Xi, XJ, XK en XL. Het aantal verschillende combinaties met dit profiel wordt gegeven door het product 6 i-1 * 10 * 6 undecies-i-1 * 10 * 6k-j-1 * 10 * 6 LK-1 * 10 * 1616-l wanneer de 6 ' s komen uit het aantal mogelijkheden voor een A tot F cijfers, de 10's afkomstig zijn van de mogelijkheden voor een 0 tot en met 9 cijfers, en de 16 is afkomstig van de mogelijkheden voor een 0 tot en met F cijfer. Nu is de totale aantallen in de eerste categorie is gewoon gegeven door de sommering van dit product via i, j, k, l, van 1 tot en met 16 maar met i <j <k <l. Als u nog een aantal wiskundige werk dat u zult zien deze is gelijk aan het product van 104 / 6 met de sommering over i van 4 tot en met 16 van (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1,8 * 1019.

En het aantal gevallen in de tweede categorie wordt gegeven door de sommering over i, j, k van 1 tot 16 met i <j <k van het product 6i-1 * 10 * 6 undecies-i-1 * 10 * 6k-j -1 * 10 * 616-k waarin je er wel uit te zijn 16! / (3! * (16-13)!) * 103 * 13 6 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. Ook voor de derde categorie hebben we de sommering over i, j van 1 tot 16 met i <j, van 6 i-1 * 10 * 6 undecies-i-1 * 10 * 616-j dat gelijk is aan 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Nogmaals, voor de vierde categorie hebben we de sommering over i van 1 tot 16 van 6i-1 * 10 * 616-i = 160 * 615 ~ 7,5 * 1013. En tot slot het bedrag van de gevallen in de vijfde categorie wordt gegeven door de van zes elementen (A tot F cijfers) in een groep van 16, dat is, 616 ~ 2,8 * 1012.

Ik hoop dat u de berekeningen tot aan dit punt, het harde deel is gedaan. Nu als een bewijs dat alles goed is kun je som van het aantal gevallen in de categorieën 5 en ziet het gelijk aan het totaal aantal mogelijke gevallen hebben we berekend vóór. Doe de operaties met gebruikmaking van 64-bits getallen of afronding (voor drijft) of overloop (voor integers) fouten zullen niet toestaan dat u om de exacte resultaat.

Tot nu toe hebben we berekend het aantal mogelijke gevallen in elk van de vijf categorieën, maar we zijn geïnteresseerd in het verkrijgen van het aantal gunstige gevallen plaats. Het is erg makkelijk om de laatste uit de voormalige als dit is slechts tot vaststelling van de combinatie van de vier decimale cijfers (of de vereiste hexadecimale cijfers als er geen vier decimale cijfers) van de in plaats van ze gratis. In de praktijk betekent dit keerpunt in de 10's in de bovenstaande formule 1's en het vereiste bedrag van 6's in 1's als er geen vier decimalen. Dat wil zeggen, we hebben tot het verdelen van het eerste resultaat met 104, het tweede door een 103 * 6, de derde door een 102 * 62, het vierde door een 10 * 63 en de vijfde door een 64. Dan het aantal gunstige gevallen in de vijf categorieën zijn ongeveer 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, respectievelijk 2,2 * 109.

Nu zijn we in staat zijn te verkrijgen wat is de op een match door toeval. We hoeven alleen maar het toevoegen van de vijf nummers van gunstige gevallen en de verdeling daarvan door het totale aantal mogelijke gevallen. Hierdoor bekomen we de kans groot is ongeveer 0.0001 of een op de tienduizend. Is het vreemd dat goed gevolg afgerond? Helemaal niet, ga dan naar de nummers we hierboven berekende. De eerste categorie overheerst door verschillende ordes van grootte, het aantal gunstige en mogelijke gevallen. Dit is nogal intuïtief als het lijkt duidelijk dat het zeer onwaarschijnlijk is niet met vier decimalen (10 kans van 16 procent cijfers) tussen 16 hexadecimale cijfers. We zagen reeds dat de relatie tussen het aantal positieve gevallen mogelijk en in de eerste categorie was een deling door 10 ^ 4, dat is waar onze resultaat p = 0,0001 vandaan komt.

Ons doel voor al deze berekeningen was om erachter te komen hoeveel pairs we nodig hebben om een succesvol brute attack. Nu zijn we in staat zijn voor de berekening van het verwachte aantal valse positieven in een eerste zoekopdracht: het zal het aantal proeven keer de voor een willekeurige valse positieve, dat wil zeggen t * p waarin t = 2 ^ 56, de grootte van de sleutel ruimte. Dit komt neer op ongeveer 7,2 * 10 ^ 12, een heel groot getal. Het verwachte aantal valse positieven in de tweede search (beperkt tot de positieve sleutels gevonden in het eerste zoekresultaat) zal worden (t * p) * p, voor een derde zoekopdracht wordt ((t * p) * p) * p en enzovoort. Dus voor n zoekt in het verwachte aantal valse positieven zal 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