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 / 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 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

  • 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 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 brukes 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 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.
  • Tenk social engineering Hjelp desk å ha en

Cisco Command jukse Sheet

04 juli 2008 i infrastruktur

Jeg fant en liste over nyttige som jeg om jeg skulle poste her. Når jeg får en sjanse jeg vil fortsette å utvide listen og utvide kommandoen set.

Takket være fastget2you.com Begynte med # missomhack Community for den opprinnelige listen.

Router :

  • Config # terminal redigering - gir forbedret redigeringskommandoer
  • Config # terminal monitor - viser utgang sesjon
  • Config # terminal ip netmask-format heksadesimalformat | bit-count | desimal - endringer formatet delnett masker

Vertsnavn:

  • Config # hostname ROUTER_NAME

Banner:

  • Config # banner MOTD # # - # kan erstatte alle tegn, må starte og avslutte melding

Omtale:

  • Config # Dette er South ruter - kan angis på Config-hvis nivå

Klokke:

  • Config # klokken timezone Central -6
    # Klokken satt tt: mm: ss dd måned yyyy - Eksempel: klokke sett 14:13:00 25 august 2003

ENDRE REGISTER:

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

CDP:

  • Config # cdp kjøre - Slår CDP på
  • Config # cdp holdtime 180 - Setter gang at en enhet gjenstår. Standard er 180
  • Config # cdp timer 30 - Setter oppdatering timer.The standard er 60
  • Config # int 0
  • Config-hvis # cdp aktiverer - Aktiverer cdp på
  • Config-hvis # ingen cdp aktiverer - Deaktiverer CDP på
  • Config # ingen cdp kjøre - Slår CDP off

HOST TABELL:

  • Config # ip host ROUTER_NAME INT_Address - Eksempel: ip host lab-en 192.168.5.1
    -eller -
  • Config # ip host RTR_NAME INT_ADD1 INT_ADD2 INT_ADD3 - Eksempel: ip host lab-en 192.168.5.1 203.23.4.2 199.2.3.2 - (for E0, s0, s1)

  • Config # ip domene-lookup - Fortell ruteren lookup domenenavn
  • Config # ip 122.22.2.2 - Plassering av
  • Config # ip domene-navn cisco.com - Domene skal legges til slutten av navnene

FJERNER COUNTERS:

Statiske ruter:

  • Config # ip rute Net_Add SN_Mask Next_Hop_Add - Eksempel: ip rute 192.168.15.0 255.255.255.0 205.5.5.2
  • Config # ip rute 0.0.0.0 0.0.0.0 Next_Hop_Add - Default rute
    -eller -
  • Config # ip Net_Add - Gateway LAN

IP ruting:

  • Config # ip ruting - aktivert som standard
  • Config # router rip
    -eller -
  • Config # router igrp 100
  • Config # 0
  • Config-hvis # ip-adressen 122.2.3.2 255.255.255.0
  • Config-hvis # no shutdown

IPX ruting:

lister:

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

IP-standard:

IP EXTENDED:

  • Config # venteliste 101 tillater tcp 133.12.0.0 0.0.255.255 122.3.2.0 0.0.0.255 eq
    -protokoller: TCP, UDP, ICMP, IP (ingen stikkontakter deretter), blant andre
    kilde deretter destinasjon adresse
    -eq, gt, lt for sammenligning
    -socketer kan numerisk eller navn (23 eller 21 eller ftp, etc)
    -eller -
  • Config # venteliste 101 nekte tcp eventuelle vert 133.2.23.3 eq www

-eller -

-eller -

  • Config # venteliste 801 tillater -1 -1 - "-1" er det samme som "alle" med / vert adresser
  • Config # 0
  • Config-hvis # IPX gruppen 801 ut IPX EXTENDED:
  • Config # venteliste 901 tillater 4AA alle 4BB alle
    - Tillatelse protokollen src_add socket dest_add socket
    - "Alle" inneholder alle stikkontakter, eller kan bruke socket tall

-eller -

-eller -

-eller -

NAMED lister:

  • Config # ip listen standard LISTNAME
    -kan IP eller IPX, standard eller utvidet
    -etterfulgt av tillatelsen eller avslå listen
  • Config # tillate noen
  • Config-hvis # ip gruppe LISTNAME i
    bruke listen i stedet for en liste nummer
    -muliggjør en større mengde

PPP SETUP:

  • Config-hvis # PPP
  • Config-hvis # PPP fyr PAP
    -rekkefølgen de skal brukes
    bare forsøkt med oppført
    -Hvis en mislykkes, forbindelsen brytes
  • Config-hvis # exit
  • Config # brukernavn Lab-b 123456
    -brukernavnet er ruteren som skal koble til en
    bare oppgitt rutere kan koble

-eller -

  • Config-hvis # PPP fyr hostname ruter
  • Config-hvis # PPP sprekk 123.456
    -Hvis dette er satt på alle rutere, og noen av dem kan kobles til andre
    -set samme på alle for enkel konfigurasjon

ISDN SETUP:

  • Config # isdn basic-5ess - bestemmes av telekom
  • Config # serial 0
  • Config-hvis # isdn spid1 2705554564 - isdn "Telefonnummer" av linje 1
  • Config-hvis # isdn spid2 2705554565 - isdn "Telefonnummer" av linje 2
  • Config-hvis # PPP - eller HDLC, LAPD

DDR - 4 trinn for å sette opp ISDN med DDR Configure bytte

1. Config # isdn basic-5ess - kan gjøres på config

2. Konfigurer statisk ruter
Config # ip rute 123.4.35.0 255.255.255.0 192.3.5.5 - sender trafikk gått til 123.4.35.0 til 192.3.5.5
Config # ip rute 192.3.5.5 255.255.255.255 bri0 - angir hvordan komme seg til 192.3.5.5 (gjennom bri0)

3. Configure
Config-hvis # ip-adressen 192.3.5.5 255.255.255.0
Config-hvis # no shutdown
Config-hvis # PPP
Config-hvis # Dialer-gruppe 1 - gjelder Dialer-listen til dette
Config-hvis # oppringingsprogram kart ip 192.3.5.6 navn Lab-b 5551212
koble til lab-B på 5551212 med ip 192.3.5.6 hvis det er interessant trafikk
kan også bruke "oppringingsprogram string 5551212" i stedet hvis det er bare en ruter for å koble til

4. Spesifisere interessante trafikk
Config # Dialer-listen 1 ip tillate noen
-eller -
Config # Dialer-listen 1 ip venteliste 101 - bruk 101 som oppringingsprogram listen

5. Andre alternativer
Config-hvis # hold-køen 75 - queue 75 pakker før oppringing
Config-hvis # oppringingsprogram load-terskel 125 enten
laste før andre linjen er ført opp
- "125" er et tall 1-255, der% last er x/255 (dvs. 125/255 er ca 50%)
-kan sjekke med i, ut, eller begge

Config-hvis # oppringingsprogram inaktiv-timeout 180
-avgjør hvor lenge opphold inaktiv før avslutte økten
-standard er 120

Relay SETUP:

SHOW-kommandoer

  • Vis lister - alle lister på ruteren
  • Vis cdp - cdp tidtaker og holdtime
  • Vis cdp oppføring * - samme som neste
  • Vis cdp naboer detalj - detaljer om nabo med ip legge til og IOS versjon
  • Vis cdp naboer - id, lokale holdtime, kapasitet, plattform portid
  • Vis cdp - int kjører cdp og
  • Vis cdp trafikk - cdp pakker sendt og mottatt
  • Vis kontrollerne serielle 0 - DTE eller DCE status
  • Vis oppringingsprogram - antall ganger oppringingsprogram strengen er nådd, andre statistikker
  • Vis flash - filer i flash
  • Vis lmi - lmi statistikk
  • Vis kart - statiske og dynamiske kart for 's
  • Vis - er og dlci's
  • Vis historie - kommandoer oppgitt
  • Vis verter - Innholdet i vert tabell
  • Vis int f0/26 - statistikk over f0/26
  • Vis 0 - vis statistikk over 0
  • Vis ip - ip config av bryteren
  • Vis ip lister - ip lister på bryteren
  • Vis - ip config av
  • Vis IP-protokoller - routing-protokoller og tidtakere
  • Vis ip rute - Viser IP-rutingtabellen
  • Vis IPX lister - samme, bare IPX
  • Vis IPX grensesnitt - RIP og info blir sendt og mottatt, IPX-adresser
  • Vis IPX rute - IPX ruter i tabellen
  • Vis IPX servere - tabellen
  • Vis IPX trafikk - RIP og info
  • Vis isdn aktiv - tallet med aktiv status
  • Vis isdn status - viser om SPIDs er gyldige hvis koblet
  • Vis mac-adresse-table - innholdet i dynamisk tabell
  • Vis protokoller - rutet protokoller og net_addresses av grensesnitt
  • Vis kjøre-config - dram konfigurasjonsfil
  • Vis økter - tilkoblinger via til ekstern enhet
  • Vis oppstarts-config - NVRAM konfigurasjonsfil
  • Vis terminal - viser historien størrelse
  • Vis a / b - statistikk over port 26/27
  • Vis versjon - IOS info, oppetid, adresse av bryteren
  • Vis VLAN - alt konfigurert VLAN's
  • Vis VLAN-medlemskap - VLAN oppdrag
  • Vis vtp - vtp configs

Catalyst kommandoer
For Native IOS - Ikke CatOS

SLÅ ADRESSE:

  • Config # ip adressen 192.168.10.2 255.255.255.0
  • Config # ip default-gateway 192.168.10.1 DUPLEX MODE:
  • Config # 0 / 5 - "fastethernet" for 100 Mbps porter
  • Config-hvis # duplex fullt - også halvparten | auto | full-flow-control

Bytte modus:

  • Config # bytte modus store og fremover - også fragment-free

MAC-adressen CONFIGS:

  • Config # mac-adresse-tabellen permanent aaab.000f.ffef E0 / 2 - bare denne mac vil arbeide på denne porten
  • Config # mac-adresse-tabellen tilgangsbegrenset statisk aaab.000f.ffef E0 / 2 E0 / 3
    -port 3 kan bare sende ut porten 2 med at mac
    -svært sikkerhetsinnstillinger
  • Config-hvis # port sikre max-mac-teller 5 - tillater kun 5 mac adresser tilordnet denne porten

VLAN:

  • Config # VLAN 10 navn Finansieringsalternativer
  • Config # 0 / 3
  • Config-hvis # VLAN-medlemskap statiske 10 LENKER:
  • Config-hvis # på - også utenfor | auto | ønskelig | nonegotiate
  • Config-hvis # ingen VLAN 2
    -fjerner VLAN 2 fra port
    -standard, alle VLAN er satt på en port

    KONFIGURERE VTP:

  • Config # slette vtp - bør gjøres før du legger til et
  • Config # vtp - er standard også klienten og gjennomsiktig
  • Config # vtp domene Camp - Navnet betyr ingenting, bare så alle svitsjer bruker samme
  • Config # vtp 1234 - begrenset
  • Config # vtp pruning aktiverer - grenser vtp sendinger bare bytter berørt
  • Config # vtp pruning deaktivere FLASH UPGRADE:
  • Config # kopi TFTP: / / 192.168.5.5/configname.ios opcode - "opcode" for IOS oppgradering "NVRAM" for oppstart config

DELETE STARTUP CONFIG:

  • Config # slett NVRAM

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

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 er 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.

Those with no decimal digits (all between A and F).

Let’s calculate how many numbers fall in each category. If we label the 16 hexadecimal digits of the output as X1 to X16 then we can label the first four decimal digits of any given number of the first category as Xi, Xj, Xk and Xl. The number of different combinations with this profile is given by the product 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l where the 6’s come from the number of possibilities for an A to F digit, the 10’s come from the possibilities for a 0 to 9 digit, and the 16 comes from the possibilities for a 0 to F digit. Now the total numbers in the first category is simply given by the summation of this product over i, j, k, l from 1 to 16 but with i < j < k < l. If you do some math work you will see this equals to the product of 104/6 with the summation over i from 4 to 16 of (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1.8 * 1019.

Analogously the number of cases in the second category is given by the summation over i, j, k from 1 to 16 with i < j < k of the product 6i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 616-k which you can work it out to be 16!/(3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14/(3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7.3 * 1015. Similarly for the third category we have the summation over i, j from 1 to 16 with i < j of 6 i-1 * 10 * 6j-i-1 * 10 * 616-j which equals to 16!/(2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9.4 * 1014. Again, for the fourth category we have the summation over i from 1 to 16 of 6i-1 * 10 * 616-i = 160 * 615 ~ 7.5 * 1013. And finally the amount of cases in the fifth category is given by the of six elements (A to F digits) in a group of 16, that is, 616 ~ 2.8 * 1012.

I hope you followed the calculations up to this point, the hard part is done. Now as a proof that everything is right you can sum the number of cases in the 5 categories and see it equals the total number of possible cases we calculated before. Do the operations using 64 bit numbers or rounding (for floats) or overflow (for integers) errors won’t let you get the exact result.

Up to now we have calculated the number of possible cases in each of the five categories, but we are interested in obtaining the number of favorable cases instead. It is very easy to derive the latter from the former as this is just fixing the combination of the four decimal digits (or the required hexadecimal digits if there are no four decimal digits) of the instead of letting them free. In practice this means turning the 10’s in the formula above into 1’s and the required amount of 6’s into 1’s if there are no four decimal digits. That is, we have to divide the first result by 104, the second one by 103 * 6, the third one by 102 * 62 , the fourth one by 10 * 63 and the fifth one by 64 . Then the number of favorable cases in the five categories are approximately 1.8 * 1015, 1.2 * 1012, 2.6 * 1011 , 3.5 * 1010, 2.2 * 109 respectively.

Now we are able to obtain what is the for a output to match a by chance. We just have to add the five numbers of favorable cases and divide it by the total number of possible cases. Doing this we obtain that the is very approximately 0.0001 or one out of ten thousand. Is it strange this well rounded result? Not at all, just have a look at the numbers we calculated above. The first category dominates by several orders of magnitude the number of favorable and possible cases. This is rather intuitive as it seems clear that it is very unlikely not having four decimal digits (10 chances out of 16 per digit) among 16 hexadecimal digits. We saw previously that the relationship between the number of possible and favorable cases in the first category was a division by 10^4, that’s where our result p = 0.0001 comes from.

Our aim for all these calculations was to find out how many TSP- pairs we need to carry a successful brute force . Now we are able to calculate the expected number of false positives in a first search: it will be the number of trials times the for a single random false positive, ie t * p where t = 2^56, the size of the key space. This amounts to approximately 7.2 * 10^12, a rather big number. 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