Mobile Banking Security och riskbedömningskommittén Överväganden

Aug 05, 2008 i bank-och EFTPoS, säkerhet

När man överväger Mobile och risker i en bedömning metod beror till stor del på den lösning som skapas eller tillhandahålls.
Generellt Metoden är baserad på lager stödja och kring teknik och metoder som används.

Här är några saker att tänka på.

generellt fokuserar på två saker.

1 / känslig
Vad är det som skickas. t.ex.. din adress, etc.
får inte vara känslig för men kan anses av kunden som känsliga.
osv ... ... ....

2 / Möjlighet att till
Vilka medel har använts?
Är det lätt att
Vad används?
Är alla vägar säker (klient och tillbaka slutet)?
Finns det en 3: e parts inblandade i bytet av transaktionerna?
osv ... ... ...

Saker att tänka på:

  • återställer skickas via till kund, bör inte användas som enda metod för att få tillgång till konton. En ytterligare kundspecifika (eventuellt statisk) passerar ordet / frasen ska användas i tillägg till ett dynamiskt skapade kan snusas (beroende på läge och placering).
  • Om WAP används, är alla enheter som kan Om produkter inte kan kan vi neka till dessa enheter? Om klientsidan eller (Win CE, etc), att detta inte kan äventyras av en Trojan och andra tekniker.
  • Har organisationen anses klientsidan certifikat för att kontrollera enheten innan transaktioner godkänns? Överväg flera enheten och användaren (mycket lösning beroende).
  • De flesta mobila POS terminaler kryptera kunden in men inte kryptera allt inom Om medellång äventyras bör vi överväga om kan krackat och om okrypterad är känsliga. Överväga ytterligare dvs använda alla av (SSL, eller använda en terminal som använder Härledda unik nyckel per
  • Många har drabbats av typiska Hacks såsom sessionskapning, icke slumpmässiga sessionsnycklar (klientsidan och osv ... Dessa typiska Hacks bör övervägas i din Secure SDLC och QA Processer gång du är medveten om som används och / eller aktiva.
  • PBX-system och kablage distribution ramar kan ha enheter anslutna till samla transaktioner. Trådlösa enheter är nu anslutna till dessa system. Angriparen sitter i sin bil på parkeringsplatsen utanför. Detta sker ofta i super marknader.
  • Trådlöst nätgränsstationer om inte krypterad lätt kan samlas in av någon inom trådlös räckvidd. 802.11 och andra trådlösa / infrarött medier som används (utvärdera och medium som används).
  • Har organisationen anses dynamiska nycklar för mobila användare? Det finns några mycket låg kostnad SecureID lösningar som finns i dag, men kunderna måste ha dessa produkter på dem när de vill göra en

Cisco Command lathund

04 juli 2008 i infrastruktur

Jag hittade en lista med användbara som jag även om jag skulle skicka hit. När jag får en chans jag kommer att fortsätta att utöka listan och bredda kommandot set.

Tack vare fastget2you.com förenade med # missomhack gemenskapen i den ursprungliga listan.

ROUTER :

  • Config # terminal redigering - möjliggör förbättrad redigeringskommandon
  • Config # terminal kontrollera - visar utgången på session
  • Config # terminal ip netmask-format hexadecimala | bit-räkna | decimalsystem - ändrar format nätmasker

Host Name:

  • Config # hostname ROUTER_NAME

Banner:

  • Config # banner motd # # - # kan ersättas av någon karaktär, måste börja och avsluta meddelandet

BETECKNINGAR:

  • Config # beskrivning DETTA ÄR DEN SÖDRA ROUTER - kan tas upp på Config-om-nivå

CLOCK:

  • Config # klockan tidszonen Central -6
    # Klockan inställd hh: mm: ss dd månad yyyy - Exempel: klockan inställd 14:13:00 25 august 2003

FÖRÄNDERLIG registret:

  • Config # config-register 0 × 2100 - ROM Monitor Mode
  • Config # config-register 0 × 2101 - ROM boot
  • Config # config-register 0 × 2102 - Boot från NVRAM

CDP:

  • Config # CDP köra - Sätter CDP på
  • Config # CDP holdtime 180 - Ställer in den tid som en enhet kvar. Standard är 180
  • Config # CDP timer 30 - Ställer uppdateringen timer.The standard är 60
  • Config # int 0
  • Config-om # CDP möjligt - Aktiverar CDP om
  • Config-om # no CDP möjligt - Avaktiverar CDP om
  • Config # no CDP köra - Sätter CDP off

HOST TABELL:

  • Config # ip värd ROUTER_NAME INT_Address - Exempel: ip mottagande lab-ett 192.168.5.1
    -or -
  • Config # ip värd RTR_NAME INT_ADD1 INT_ADD2 INT_ADD3 - Exempel: ip mottagande lab-en 192.168.5.1 203.23.4.2 199.2.3.2 - (för e0, S0, S1)

  • Config # ip domain-lookup - Berätta routern till lookup domännamn
  • Config # ip 122.22.2.2 - Placering av
  • Config # ip domain-name cisco.com - Domän att tillfoga till slutet av namn

CLEARING COUNTERS:

STATISK RUTTER:

  • Config # ip route Net_Add SN_Mask Next_Hop_Add - Exempel: ip route 192.168.15.0 255.255.255.0 205.5.5.2
  • Config # ip route 0.0.0.0 0.0.0.0 Next_Hop_Add - standardrutt
    -or -
  • Config # ip Net_Add - Gateway

IP-routing:

  • Config # ip routing - aktiverad som standard
  • Config # router rip
    -or -
  • Config # router igrp 100
  • Config # 0
  • Config-om # IP-adressen 122.2.3.2 255.255.255.0
  • Config-om # no shutdown

IPX routing:

FÖRTECKNINGAR:

IP Standard 1-99
IP Extended 100-199
IPX-standard 800-899
IPX Extended 900-999
IPX Filter 1000-1099

IP-standard:

  • Config # 10 tillstånd 133.2.2.0 0.0.0.255 - tillåta alla src ip's på 133.2.2.0
    -or -
  • Config # 10 tillstånd värd 133.2.2.2 - anger ett specifikt värd
    -or -
  • Config # 10 tillåta alla - gör alla adresser
  • Config # int 0
  • Config-om # ip 10 i - även tillgängligt: ut

IP EXTENDED:

  • Config # 101 tillåta TCP 133.12.0.0 0.0.255.255 122.3.2.0 0.0.0.255 eq
    -protokollen: TCP, UDP, ICMP, IP (inga uttag sedan), bland annat
    -källa sedan måladressen
    -eq, GT, lt för jämförelse
    -uttag kan numeriskt eller namnet (23 eller 21 eller ftp, etc)
    -or -
  • Config # 101 förneka tcp varje värdstat 133.2.23.3 eq www

-or -

-or -

  • Config # 801 tillåta -1 -1 - "-1" är detsamma som "alla" med / mottagande adresser
  • Config # 0
  • Config-om # IPX 801 i IPX EXTENDED:
  • Config # 901 tillåta 4AA alla 4BB alla
    - Tillstånd protokoll src_add uttaget dest_add uttaget
    - "Alla" inkluderar alla uttag, eller kan använda uttaget nummer

-or -

-or -

-or -

  • Config-om # IPX resultatrelaterad 1000 - filter på utgående paket

Namngiven FÖRTECKNINGAR:

  • Config # ip standard LISTNAME
    -kan IP eller IPX, standard eller förlängda
    -följt av tillståndet eller förnekar listan
  • Config # tillåta alla
  • Config-om # ip LISTNAME i
    -använda listan namn i stället för en förteckning antal
    -ger en större mängd

PPP SETUP:

  • Config-om # ppp
  • Config-om # ppp chap pap
    -ordning som de kommer att användas
    -bara försökt med anges
    -Om en går sönder, då anslutningen avslutas
  • Config-om # exit
  • Config # username Lab-b 123456
    -användarnamn är routern som kommer att ansluta till detta en
    -endast angivna routrar kan ansluta

-or -

  • Config-om # PPP CHAP värddatornamnet ROUTER
  • Config-om # PPP CHAP 123456
    -Om detta är inställt på alla routrar, då någon av dem kan ansluta till någon annan
    -ställa samma på alla för enkel konfigurering

ISDN SETUP:

  • Config # isdn grundundersökningen 5ess - bestäms av telekom
  • Config # serial 0
  • Config-om # isdn spid1 2705554564 - isdn "telefonnummer" på linje 1
  • Config-om # isdn spid2 2705554565 - isdn "telefonnummer" på linje 2
  • Config-om # PPP - eller HDLC, LAPD

DDR - 4 Åtgärder för att inrätta ISDN med DDR Konfigurera

1. Config # isdn grundundersökningen 5ess - kan göras på config

2. Konfigurera statiska rutter
Config # ip route 123.4.35.0 255.255.255.0 192.3.5.5 - skickar trafik avsedd för 123.4.35.0 till 192.3.5.5
Config # ip route 192.3.5.5 255.255.255.255 bri0 - anger hur man tar sig till 192.3.5.5 (genom bri0)

3. Konfigurera
Config-om # IP-adressen 192.3.5.5 255.255.255.0
Config-om # no shutdown
Config-om # ppp
Config-om # Dialer-grupp 1 - gäller Dialer-lista till detta
Config-om # Uppringningsprogram karta ip 192.3.5.6 namn Lab-b 5551212
ansluta till lab-b på 5551212 med ip 192.3.5.6 om det är intressant trafik
kan även använda "Uppringningsprogram string 5551212" i stället om det bara finns en router för att ansluta till

4. Ange intressant trafik
Config # Dialer-listan 1 ip tillåta alla
-or -
Config # Dialer-listan 1 ip lista 101 - använd 101 som Uppringningsprogram listan

5. Andra alternativ
Config-om # hold-queue 75 - queue 75 paket före uppringning
Config-om # Uppringningsprogram belastning tröskelvärde 125 antingen
belastningsström krävs innan andra raden tas upp
- "125" är ett valfritt antal 1-255, där% belastning är x/255 (dvs. 125/255 är cirka 50%)
-kan kontrollera med in, ut, eller antingen

Config-om # Uppringningsprogram idle-timeout 180
-avgör hur länge du ska stanna tomgång innan avslutande sessionen
-standard är 120

Relay SETUP:

SHOW kommandon

  • Visa - alla listor på routern
  • Visa CDP - CDP timer och holdtime
  • Visa CDP post * - samma som nästa
  • Visa CDP grannar detalj - Uppgifter om granne med ip lägga till och ios version
  • Visa CDP grannar - id, lokala holdtime, kapacitet, plattform portid
  • Visa CDP - int s kör CDP och
  • Visa CDP trafik - CDP paket som skickas och tas emot
  • Visa styrekonomer seriekonsoll 0 - DTE eller DCE status
  • Visa Dialer - antal gånger Uppringningsprogram strängen har nåtts, andra stats
  • Visa blixt - filer i Flash
  • Visa LMI - LMI statistik
  • Visa map - statiska och dynamiska kartor för är
  • Visa - s och dlci s
  • Visa historia - kommandon upp
  • Visa värdar - innehållet i värdlandet tabellen
  • Visa int f0/26 - statistik för f0/26
  • Visa 0 - Visa statistik för 0
  • Visa ip - ip config av switch
  • Visa ip - ip på omkopplaren
  • Visa ip - ip config av
  • Visa IP-protokoll - routing protokoll och timers
  • Visa ip route - Visar IP-routningstabellen
  • Visa IPX - samma, bara IPX
  • Visa IPX gränssnitt - RIP och info skickas och tas emot, IPX adresser
  • Visa IPX sträcka - IPX linjer i tabellen
  • Visa IPX servrar - tabellen
  • Visa IPX trafik - RIP och info
  • Visa isdn aktiva - antal aktiva status
  • Visa isdn status - visar om Spids är giltigt, om ansluten
  • Visa mac-adress bord - innehållet i den dynamiska tabellen
  • Visa protokoll - dirigeras protokoll och net_addresses av gränssnitt
  • Visa kör-config - DRAM konfigureringsfil
  • Visa sessioner - via till avlägsna enheten
  • Visa startup-config - NVRAM konfigureringsfil
  • Visa terminalen - visar historien storlek
  • Visa A / B - status hamn 26/27
  • Visa version - ios info, upptid, adress switch
  • Visa VLAN - alla konfigurerade VLAN: s
  • Visa VLAN-medlemskap - VLAN uppdrag
  • Visa vtp - vtp configs

CATALYST kommandon
För Native IOS - Inte CatOS

SWITCH ADRESS:

  • Config # IP-adress 192.168.10.2 255.255.255.0
  • Config # ip default-gateway 192.168.10.1 duplexläge:
  • Config # 0 / 5 - "fastethernet" för 100 Mbit / s-portar
  • Config-om # duplex full - även halv | auto | full-flow-kontroll

VÄXLANDE MODE:

  • Config # byter läge store och framåt - även fragmentera-free

MAC-adressen CONFIGS:

  • Config # mac-adress-tabellen permanent aaab.000f.ffef e0 / 2 - bara den här datorn kommer att fungera på den här porten
  • Config # mac-adress bord begränsas statisk aaab.000f.ffef e0 / 2 e0 / 3
    -port 3 kan bara skicka på port 2 med mac
    -mycket restriktiva
  • Config-om # port säkra max-mac-räkna 5 - endast 5 mac-adresser som är kopplade till denna port

VLAN:

  • Config # VLAN 10 namn FINANSER
  • Config # 0 / 3
  • Config-om # VLAN-medlemskap statisk 10 LÄNKAR:
  • Config-om # på - även off | auto | önskvärt | nonegotiate
  • Config-om # no 2
    -avlägsnar VLAN 2 från hamn
    -Som standard är alla VLAN är inställda på en hamn

    KONFIGURERA VTP:

  • Config # radera vtp - bör göras före lägga till ett
  • Config # vtp - Standard är också klient och öppna
  • Config # vtp domän Camp - namnet spelar ingen roll, bara så alla växlar använda samma
  • Config # vtp 1234 - begränsad
  • Config # vtp beskärning gör - gränser vtp sändningar endast växlar påverkas
  • Config # vtp beskärning inaktivera FLASH UPGRADE:
  • Config # kopia tftp: / / 192.168.5.5/configname.ios opcode - "opcode" för ios uppgraderingen "NVRAM" för start config

DELETE STARTUP CONFIG:

  • Config # radera NVRAM

Breaking VISA PIN

02 juli 2008 i bank-och EFTPoS

Nedan är en artikel jag hittade nyligen. Detta en av de mest omfattande beskrivningar av Value

Jag trodde jag skulle kopiera det här för min lokala referens.

Som kommentar har gjorts när det gäller grammatik som används i den ursprungliga jag har rättat några av de uppenbara fel samtidigt som det i det ursprungliga materialet.

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

--- ----

Förord
Har du någonsin undrar vad som skulle hända om du förlorar ditt och någon upptäcker det. Skulle denna person kunna ta ut kontanter från en uttagsautomat gissa, på något sätt, din Dessutom, om du var som finner någons skulle du försöka att ta och ta chansen att få lite lätta Naturligtvis är svaret på båda frågorna bör vara "nej". Detta arbete behandlar inte andra fråga är det en fråga om Härmed jag försöker besvara den första frågan.

All information som används för detta arbete är offentliga och kan hittas på Resten är en fråga om och programmering, vilket vi kan lära oss och ha lite kul. Jag avslöjar inga hemligheter. Vidare är målet (och sista med detta arbete är att visa att algoritmer är fortfarande stark nog att ge tillräcklig Vi vet alla inte den

Detta arbete analyserar en av de vanligaste algoritmer, som används av många och försöker ta reda på hur resistent är att gissa attacker. Genom att "gissa" Jag menar inte att välja en slumpmässig och försöker i en uttagsautomat. Det är väl känt att generellt vi får tre försök att ange rätt om vi inte ATM håller Som fyrsiffrigt länge det är lätt att dra slutsatsen att risken för en slumpmässig gissa är 3 / 10000 = 0,0003, det verkar tillräckligt låg för att vara säker, det betyder att du måste förlora ditt fler än tre tusen gånger ( eller förlorar mer än tretusen kort på samma gång:) tills det finns en rimlig chans att förlora

Vad jag egentligen menade med "gissa" var att bryta så att ges något du omedelbart veta tillhörande Detta dokument studier som möjligt, analysera och föreslå en metod för Slutligen ger vi ett verktyg som genomför och presentera resultaten om de uppskattade chansen att bryta systemet. Observera att så länge som andra algoritmer (andra format såsom IBM eller validering signaturer som CVC) liknar samma analys kan göras ger nästan samma resultat och slutsatser.



En av de vanligaste algoritmer är Value Kunden får en och en Encoded i är ett fyrsiffrigt nummer, kallad Denna siffra är en kryptografisk underskrift av andra med anknytning till När en användare skriver in sin ATM läser krypterar och skickar denna information till en central dator. Det en rättegång beräknas med hjälp av kund in och information med en kryptografisk Rättegången jämförs med lagras på om de matchar den centrala datorn återgår till ATM tillstånd för Se mer i detalj.

Beskrivningen av finns i två handlingar i föregående sida. Sammanfattningsvis består i av en 8 byte (64 bitar) sträng av kallas Transformed Parameter (TSP), med (DEA) i Code Book mode (ECB) med hjälp av en hemlig 64-bitars nyckel. Den härrör från produktionen av som är en 8 byte sträng. De fyra siffrorna i (från vänster till höger) motsvarar de fyra första decimalsiffror (från vänster till höger) av produktionen från då betraktas som en 16 hexadecimala tecken (16 x 4 bitar = 64 bitar) sträng. Om det inte finns några fyra decimalsiffror bland de 16 hexadecimala tecken sedan är klar fattas (från vänster till höger) utan decimal tecken och decimalizing dem med hjälp av omställning A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Här är ett exempel:

Produktion från 0FAB9CDEFFE7DCBA

0975

Strategin att undvika decimaliseringen av hoppa tecken tills fyra decimalsiffror finns (som råkar vara nästan alla gånger som vi kommer att se nedan) är väldigt smart eftersom man undviker en viktig snedvridning i fördelningen av siffror som har visat sig vara dödlig för andra system, även om påverkan på detta system skulle vara mycket lägre. Se också ett problem som inte gäller för

Den TSP, ses som en 16 hexadecimala tecken (64 bitar) sträng, bildas (från vänster till höger) med 11 höger siffrorna i PAN utom den sista siffran (kontrollsiffra), en siffra från 1 till 6 som väljer hemligt kryptera viktiga och slutligen de fyra siffrorna i Här är ett exempel:

PAN: 1234 5678 9012 3445
Key väljaren: 1
2468

TSP: 5678901234412468

Uppenbarligen problemet med att bryta består i att finna hemligheten kryptera viktiga för Metoden för detta är att göra en brute force-sökning av de viktigaste utrymme. Observera att detta inte är den enda metod kan man försöka hitta en svaghet i DEA har många försökt, men det gamla standarden är fortfarande allmänt använd (som nu ersatts med AES och men). Detta visar att det är robust nog för att "brute force" är den enda fungerande metoden (det finns några större attacker, men inte praktiskt i vårt fall, för en sammanfattning se LASEC memo och för smutsiga detaljer se Biham & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 och Heys 2001).

Nyckeln väljaren siffra var mycket sannolikt införas för att täcka risken för en kompromiss. I detta fall de bara har att utfärda nya kort med en annan nyckel väljaren. Äldre kort kan ersättas med nya eller helt enkelt ATM kan öppet skriva en ny (motsvarande den nya nyckeln och behålla samma nästa gång kunden använder sitt För att skaka av alla användare bör uppmanas att ändra sin PIN-koder, men det skulle vara pinsamt för att förklara varför, så mycket troligt att de inte skulle göra en sådan begäran.

Förberedelser


En brute innebär att kryptera ett trippelsuperfosfat med kända använda alla möjliga kryptera nycklar och jämföra varje erhållits med den kända När en matchning hittas vi har en kandidat nyckel. Men hur många nycklar måste vi försöka? Som vi sade ovan nyckeln är 64 bitar långa, så skulle detta innebära att vi måste försöka 2 ^ 64 nycklar. Men detta är inte sant. Faktiskt bara 56 bitar är effektiva för att eftersom en bit (den minsta) av varje oktett var historiskt reserverats som en kontrollsumma för andra, i praktiken de som 8 bitar (en för varje av de 8 octets) ignoreras.

Därför nyckel utrymme består av 2 ^ 56 nycklar. Om vi försöker alla dessa knappar kommer vi hitta en och endast en match, vilket motsvarar hemliga nyckel? Absolut inte. Vi kommer att få många matchande nycklar. Detta beror på att är bara en liten del (en fjärdedel) av produktion. Dessutom är degenererat, eftersom några av de siffror (mellan 0 och 5 efter det att den sista, sett från vänster till höger, siffror mellan 6 och 9) kan komma från en decimal siffra eller från en decimalized hexadecimala siffran i produktion. Alltså många nycklar kommer att producera en produktion vilket innebär att samma matchande

Vad kan vi göra för att hitta den verkliga nyckeln bland de andra falska positiva nycklarna? Bara vi har för att kryptera ett andra olika TSP, även känd men endast med de sökande nycklar som gav en positiv matchning med första par. Men det finns ingen garanti att vi inte kommer att få igen många falska positiva med den verkliga nyckeln. Om så är fallet kommer vi att behöva ett tredje par, upprepa processen och så vidare.

Innan vi börjar vår måste vi veta hur många par kommer vi att behöva. För att vi har för att beräkna för en slumpmässig produktion ge en matchning bara av en slump. Det finns flera sätt att beräkna antalet och här kommer jag att använda en enkel metod lätt att förstå, men som kräver lite bakgrundsinformation i av

En alltid kan ses som förhållandet mellan god fall att eventuella fall. I vårt problem antalet möjliga fall fås genom av 16 delar (0 till F hexadecimala siffror) i en grupp av 16 av dem (16 hexadecimala siffror i output). Detta ges av 16 ^ 16 ~ 1,8 * 10 ^ 19 vilket naturligtvis sammanfaller med 2 ^ 64 (olika nummer av 64 bitar). Denna uppsättning siffror kan delas in i fem kategorier:

De som har minst fyra decimala siffror (0 till 9) bland de 16 hexadecimala siffror (0 till F) av produktion.

De som har exakt tre decimaler.

Personer med exakt två decimaler.

De som har just bara en decimal siffra.

De som inte decimalsiffror (alla mellan A och F).

Låt oss räkna hur många siffror faller inom varje kategori. Om vi märka 16 hexadecimala siffror i produktion som X1 att X16 kan vi märka första fyra decimalsiffror av ett visst antal av den första kategorin som Xi, XJ, XK och XL. Antalet olika kombinationer med den här profilen ges av produkten 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l när 6 " har kommit från flera olika möjligheter för en A till F siffran, den 10: s kommer från möjligheterna till en 0-9-siffrigt och 16 kommer från möjligheterna till ett 0-F siffran. Nu är det totala antalet i den första kategorin är helt enkelt som summering av denna produkt under I, J, K, L 1-16, men med i <j <k <l. Om du gör några matematiska arbete kommer du att se detta är lika med produkten av 104 / 6 med summering över i 4-16 (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1.8 * 1019.

Analogt antalet fall i den andra kategorin återfinns genom summering över i, j, k 1-16 med i <j <k av produkten 6i-1 * 10 * 6j-i-1 * 10 * 6k-j -1 * 10 * 616-k som du kan arbeta ut att vara 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7.3 * 1015. Likaså för den tredje kategorin vi summering över i, j 1-16 med i <j av 6 i-1 * 10 * 6j-i-1 * 10 * 616-j som motsvarar 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9.4 * 1014. Återigen, för fjärde kategori har vi summering över i 1-16 i 6i-1 * 10 * 616-i = 160 * 615 ~ 7.5 * 1013. Och slutligen den mängd ärenden i femte kategori ges av av sex delar (A till F siffror) i en grupp av 16, det vill säga 616 ~ 2.8 * 1012.

Jag hoppas att ni följt beräkningar upp till denna punkt, det svåra är gjort. Nu som ett bevis på att allt är rätt kan du summan av antalet fall i 5 kategorier och ser det lika med totala antalet möjliga fall vi beräknat innan. Har verksamheten använder 64 bitars nummer eller avrundning (för flottar) eller överloppsrännor (för heltal) fel att inte låta dig få ut det exakta resultatet.

Hittills har vi beräknat antalet möjliga fall i något av de fem kategorier, men vi är intresserade av att få antalet gynnsamma fall istället. Det är mycket lätt att dra dem från den tidigare så detta är bara om fastställande av en kombination av de fyra decimalsiffror (eller krävs hexadecimala siffror om det inte finns fyra decimaler) i i stället för att låta dem fritt. I praktiken innebär detta att vrida 10's i formeln ovan i 1 och det erforderliga beloppet på 6 är i 1: s om det inte finns fyra decimaler. Det vill säga, vi måste dela upp det första resultatet av 104, den andra en av 103 * 6, den tredje en av 102 * 62, den fjärde en av 10 * 63 och den femte en med 64. Då antalet gynnsamma fall i fem kategorier är cirka 1,8 * 1015, 1,2 * 1012, 2,6 * 1011, 3,5 * 1010, 2,2 * 109 respektive.

Nu kan vi uppnå vad är för en produktionen för att matcha en slump. Vi måste bara lägga till fem nummer i god fall och dividera det med antalet möjliga fall. Att göra detta vi får att är mycket ca 0,0001 eller en av tio tusen. Är det konstigt detta väl avrundade resultatet? Inte alls, bara ta en titt på de siffror som vi beräknat ovan. Den första kategorin dominerar flera tiopotenser antalet god och eventuella fall. Det är ganska intuitivt som det verkar tydligt att det är mycket osannolikt att inte ha fyra decimalsiffror (10 chanser av 16 per siffra) bland 16 hexadecimala siffror. Vi såg tidigare att förhållandet mellan antalet möjliga och gynnsamma fall i den första kategorin var en division med 10 ^ 4, det är där våra resultat p = 0,0001 kommer.

Målet för alla dessa beräkningar var att ta reda på hur många par vi behöver för att genomföra en framgångsrik brute Nu kan vi beräkna det förväntade antalet falska positiva resultat i en första sökning: det blir antalet försök gånger för en enda slumpmässigt falskt positiva, dvs t * p där t = 2 ^ 56, storleken av de viktigaste rymden. Detta uppgår till cirka 7,2 * 10 ^ 12, ett ganska stort antal. Det förväntade antalet falska positiva resultat i andra sök (begränsad till den positiva nycklar hittas i första sökning) kommer att bli (t * p) * p, för en tredje sök är ((t * p) * p) * p och så vidare. Således för n sökningar det förväntade antalet falska positiva resultat kommer att t * p ^ n.

Vi kan få hur många sökningar som krävs för att vänta bara ett falskt positivt med att uttrycka ekvationen t * p ^ n = 1 och lösa för 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