Mobile Banking Security Considerations e Avaliação de Riscos

05. De agosto de 2008 na Banca e Eftpos, Segurança

Ao considerar Mobile e os riscos associados, a uma avaliação abordagem depende muito da solução a ser criados ou fornecidos.
Em geral, a abordagem é baseada em camadas de apoio e em torno das tecnologias e técnicas utilizadas.

Aqui estão algumas coisas a considerar.

avaliações geralmente centra-se em duas coisas principais.

1 / sensibilidade dos
O que está sendo enviada. por exemplo. números de saldo da endereço residencial, número de etc
não podem ser sensíveis ao mas pode ser considerada pelo cliente como sensíveis.
etc ... ... ....

2 / Oportunidade de a
O médio está a ser utilizado?
É fácil de
Que está sendo usado?
Será que todos os caminhos seguros (cliente e back-end)?
Existe uma 3a parte envolvida na mudança das operações?
etc ... ... ...

Coisas a considerar:

  • redefine enviado via para o cliente, não deve ser utilizado como o único método de acesso a contas. Um outro cliente específico (possivelmente estáticos) passam palavra / frase deve ser usado para além de uma dinâmica gerada pode ser inalado (dependendo do modo e local).
  • Se for utilizado WAP, são todos os dispositivos capazes de Se dispositivos não são capazes de vamos negar o a estes dispositivos? Se lado cliente ou (CE vitória, etc), assegurar que esta não pode ser comprometida por um Trojan's e grandes técnicas.
  • Tem a organização considerada lado cliente certificados para verificar o aparelho antes de a transacção ser aceite? Considere múltiplos dispositivos e utilizadores métodos (solução muito dependentes).
  • A maioria dos terminais POS criptografar o cliente entrou número, mas não encriptar tudo dentro da Se a médio é comprometida, devemos considerar se a pode ser rachados e se não criptografada é sensível. Considere os adicionais ou seja, utilização de todas as mensagens de (SSL, ou a utilização de um terminal que utiliza derivados Unique Key Per
  • Muitos têm sido afectados por aplicações típicas hacks, tais como sessões, Injection, não aleatória sessão chaves (lado cliente eo lado do etc ... Estes típico hacks deve ser considerado em seu Secure SDLC e GQ Processos uma vez que você está ciente das utilizada e / ou utilizados.
  • Sistemas de PABX e cabeamento distribuição quadros podem ter dispositivos conectados para recolher transacções. Os dispositivos sem fios estão agora a ser conectados a esses sistemas. O atacante se sente em seu carro no parque de estacionamento exterior. Isso é muitas vezes feita em super-mercados.
  • Wireless gateways se não criptografado são facilmente coletadas por ninguém dentro wireless intervalo. 802,11 e outros wireless / infra-vermelho mídias estão sendo utilizadas (avaliar a e meio a ser utilizado).
  • Tem a organização considerada dinâmica chaves para usuários móveis? Existem cerca de custo muito baixo SecureID soluções disponíveis hoje, mas os clientes precisam de ter estes dispositivos sobre eles quando se deseja fazer uma

Cisco Command Cheat Sheet

04. De julho de 2008 em Infra-estrutura

Encontrei uma lista de útil que eu ainda gostaria de postar aqui. Quando eu tive a oportunidade eu vou continuar a expandir a lista e alargar comando set.

Graças à fastget2you.com Joined Com # missomhack comunitária para a lista original.

ROTEADOR :

  • # Config terminal edição - permite a edição melhorada comandos
  • Config # terminal monitor - apresenta a produção em sessão
  • # Config terminal ip netmask em formato hexadecimal | bit-count | decimal - muda o formato de subrede máscaras

Nome do Host:

  • Config # hostname ROUTER_NAME

BANNER:

  • Config banner MOTD # # # - # pode ser substituído por qualquer personagem, deve começar e terminar a mensagem

DESCRIÇÃO:

  • Config # ESTA É A descrição ROTEADOR DO SUL - pode ser inscrito no Config-se nível

Relógio:

  • Config # clock timezone Central -6
    # Relógio hh: mm: ss dd meses yyyy - Exemplo: Relógio 14:13:00 25 agosto 2003

EVOLUÇÃO DO REGISTO:

  • Config # config-register 0 × 2100 - ROM Monitor Mode
  • Config # config-register 0 × 2101 - ROM boot
  • Config # config-register 0 × 2102 - Inicialize a partir NVRAM

CDP:

  • Config # CDP run - Acontece no CDP
  • Config # CDP holdtime 180 - Define o tempo que um dispositivo permanece. O padrão é 180
  • Config # CDP temporizador 30 - Define a atualização timer.The padrão é de 60
  • Config # int 0
  • Config-se permitir # CDP - Habilita CDP na
  • Config-se # não permitir CDP - Desativa CDP na
  • # Config não correr CDP - Desativa CDP off

QUADRO DE ACOLHIMENTO:

  • # Ip config acolhimento ROUTER_NAME INT_Address - Exemplo: ip host Lab-um 192.168.5.1
    -ou -
  • # Ip config acolhimento RTR_NAME INT_ADD1 INT_ADD2 INT_ADD3 - Exemplo: ip host Lab-um 192.168.5.1 203.23.4.2 199.2.3.2 - (para e0, S0, S1)

  • Config # ip domain-lookup - Diz roteador para encontrar nomes de domínio
  • # Ip config nome do 122.22.2.2 - Localização do
  • Config # ip domain-name cisco.com - Domínio anexar ao final de nomes

LIMPANDO Counters:

  • # Clara 0 - Limpa contadores sobre o especificado
  • # Claro counters - Limpa todas as contadores
  • # Claro CDP counters - Limpa CDP contadores

STATIC ROTAS:

  • # Ip config rota Net_Add SN_Mask Next_Hop_Add - Exemplo: 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 - Default route
    -ou -
  • Config # ip Net_Add - Gateway LAN

Roteamento IP:

  • # Ip config roteamento - Ativado por padrão
  • Config # router rip
    -ou -
  • Config router igrp # 100
  • Config # 0
  • Config-se o endereço IP 122.2.3.2 255.255.255.0 #
  • Config-se não desligamento #

IPX ROTEAMENTO:

LISTAS:

IP Standard 1-99
IP Extensão 100-199
IPX Standard 800-899
IPX Extensão 900-999
IPX Filtros 1000-1099

IP padrão:

  • Config # 10 licenciamento 133.2.2.0 0.0.0.255 - permitir que todos src ip's na 133.2.2.0
    -ou -
  • Config # 10 permite acolhimento 133.2.2.2 - especifica um determinado host
    -ou -
  • Config # 10 autorizar qualquer um - permite a qualquer endereço
  • Config # int 0
  • Config-se # ip no grupo - também disponível em: out

IP EXTENDED:

  • Config # 101 licença tcp 133.12.0.0 0.0.255.255 122.3.2.0 0.0.0.255 eq
    -protocolos: TCP, UDP, ICMP, IP (sem soquetes então), entre outros
    -fonte então destino endereço
    -eq, gt, lt para comparação
    -sockets pode ser numérico ou o nome (23 ou 21 ou ftp, etc)
    -ou -
  • Config # 101 tcp negar qualquer acolhimento 133.2.23.3 eq www

-ou -

-ou -

  • Config # 801 licença -1 -1 - "-1" é o mesmo que "qualquer" com / host endereços
  • Config # 0
  • Config-se # ipx 801 out IPX EXTENDED:
  • Config # 901 licença 4AA todos 4BB todos
    - Permitir protocolo src_add soquete dest_add soquete
    - "Tudo" inclui todos os soquetes, ou pode usar soquete números

-ou -

  • Config # 901 autorizar qualquer todas as suas eventuais todos
    Autoriza-protocolo com qualquer endereço em qualquer tomada de ir a lado nenhum
  • Config # 0
  • Config-se # ipx no grupo IPX FILTER:
  • Config # 1000 permitem 4aa 3 - "3" é o serviço

-ou -

-ou -

  • Config-se de saída # 1000 - filtro aplicado à saída pacotes

DENOMINAÇÕES LISTAS:

  • Config # ip standard listname
    -pode ser IP ou IPX, norma ou prorrogado
    , seguido por permitir ou negar a lista
  • Config # permitir que qualquer
  • Config-se # ip no grupo
    de utilização da lista nome em vez de uma lista número
    , permite uma maior quantidade de

PPP CONFIGURAR:

  • Config-se # ppp
  • Config-se # ppp chap pap
    a ordem em que serão utilizados
    apenas de uma tentativa com o enumerados
    -se um falhar, então a ligação é arquivado
  • Config-se # exit
  • Config # nome_de_usuário Lab-b 123456
    -nome de usuário é o router que será uma ligação a este
    Só de roteadores especificados podem se conectar

-ou -

  • Config-se # ppp chap hostname ROTEADOR
  • Config-se # ppp chap 123456
    -se este é definido em todos os roteadores, então qualquer um deles pode se conectar a qualquer outro
    -definida em todos os mesmos para fácil configuração

RDIS CONFIGURAR:

  • Config # ISDN basic-5ess - determinado pela Telecom
  • Config # serial 0
  • Config-se spid1 2705554564 # ISDN - RDIS "phonenumber" da linha 1
  • Config-se spid2 2705554565 # ISDN - RDIS "phonenumber" da linha 2
  • Config-se # PPP - ou HDLC, LAPD

DDR - 4 passos para a criação de RDIS com DDR Configurar switch

1. Config # ISDN basic-5ess - pode ser feito a config

2. Configurar rotas estáticas
# Ip config rota 123.4.35.0 255.255.255.0 192.3.5.5 - envia tráfego destinados a 123.4.35.0 a 192.3.5.5
Config # ip route 192.3.5.5 255.255.255.255 bri0 - especifica o modo de chegar à 192.3.5.5 (através bri0)

3. Configurar
Config-se o endereço IP 192.3.5.5 255.255.255.0 #
Config-se não desligamento #
Config-se # ppp
Config-se # dialer-group 1 - aplica dialer-list para esta
Config-se # dialer map ip 192.3.5.6 nome Lab-b 5551212
conectar a lab-b em 5551212 com ip 192.3.5.6, se houver interesse de tráfego
também pode usar "dialer string 5551212" em vez, se existir apenas um roteador para se conectar ao

4. Especifique interessante tráfego
Config # dialer-list 1 ip permitir que qualquer
-ou -
Config # dialer-list 1 ip list 101 - utilizar o lista de 101 como o discador lista

5. Outras Opções
Config-se deter-fila # 75 - fila 75 pacotes antes de discar
Config-se # dialer load-threshold 125 quer
de carga necessários antes da segunda linha é trazido
- "125" é qualquer número 1-255, onde é x/255% de carga (ou seja, 125/255 é de cerca de 50%)
-pode verificar por dentro, fora, ou seja

Config-se # dialer idle-timeout 180
-determina o tempo para ficar ocioso antes de encerrar a sessão
-padrão é de 120

Relay CONFIGURAR:

SHOW COMANDOS

  • Mostrar - todo o listas sobre o router
  • Mostrar CDP - CDP temporizador e holdtime
  • Mostrar CDP entrada * - mesmo que o próximo
  • Mostrar CDP vizinhos detalhes - detalhes do vizinho com ip e adicionar ios versão
  • Mostrar CDP vizinhos - id, local holdtime, capacidade, plataforma portid
  • Mostrar CDP - int de funcionamento do CDP e os seus
  • Mostrar tráfego CDP - CDP pacotes enviados e recebidos
  • Mostrar controladores serial 0 - DTE ou DCE estatuto
  • Mostrar dialer - número de vezes dialer string tenha sido atingido, os outros stats
  • Mostrar flash - arquivos em flash
  • Show LMI - LMI stats
  • Show map - estático e dinâmico de mapas 's
  • Show - 's e dlci da
  • Mostrar história - comandos inscritos
  • Mostrar anfitriões - conteúdo da tabela host
  • Mostrar int f0/26 - Estatísticas do f0/26
  • Mostrar 0 - mostram estatísticas de 0
  • Show ip - ip config do interruptor
  • Mostrar ip - ip sobre switch
  • Show ip - ip config da
  • Mostrar protocolos IP - roteamento protocolos e temporizadores
  • Show ip route - Mostra tabela roteamento IP
  • Mostrar ipx - mesmo, só ipx
  • Mostrar ipx interfaces - RIP e info sendo enviados e recebidos, IPX endereços
  • Mostrar ipx rota - ipx rotas na tabela
  • Mostrar ipx servidores - tabela
  • Mostrar ipx tráfego - RIP e info
  • Mostrar RDIS activas - número com o status ativo
  • Mostrar RDIS estado - mostra se Spids são válidas, se ligado
  • Mostrar mac-address-table - conteúdo da tabela dinâmica
  • Mostrar protocolos - roteada net_addresses de protocolos e interfaces
  • Mostrar executando-config - deram config ficheiro
  • Mostrar sessões - conexão via ao dispositivo remoto
  • Mostrar startup-config - config arquivo nvram
  • Mostrar terminais - mostra história tamanho
  • Mostrar a / b - stat do porto 26/27
  • Mostrar versão - IOS info, uptime, mudar de endereço
  • Mostrar VLAN - tudo configurado VLAN's
  • Mostrar VLAN-membros - VLAN atribuições
  • Mostrar VTP - VTP configs

CATALYST COMANDOS
Para Native IOS - Não CatOS

SWITCH ENDEREÇO:

  • Config # endereço IP 192.168.10.2 255.255.255.0
  • Config # ip default-gateway 192.168.10.1 DUPLEX MODE:
  • Config # 0 / 5 - "fastethernet" para 100 Mbps portos
  • Config-se # duplex total - também, metade | auto | full-flow-controle

Comutação MODE:

  • Config # comutação de modo store-and-frente - também, fragmentam-livres

MAC ADDRESS configs:

  • Config # mac-endereço-quadro permanente aaab.000f.ffef e0 / 2 - só este mac trabalharão sobre este porto
  • Config # mac-endereço-quadro restrito estática aaab.000f.ffef e0 / 2 e0 / 3
    3-porto só pode enviar para fora com a porta 2 mac
    -muito restritiva
  • Config-se # porto seguro max-mac-count 5 - permite apenas 5 mac endereços mapeados para esta porta

VLANs:

  • Config # 10 VLAN nome FINANÇAS
  • Config # 0 / 3
  • Config-se # VLAN-adesão estática 10 LINKS:
  • Config-se # ontário - também, off | auto | desejável | nonegotiate
  • Config-se # nenhum 2
    remove-VLAN 2 do porto
    -por padrão, todas as VLANs são definidas em um porto

    CONFIGURAR VTP:

  • Config # apagar VTP - deve ser feito antes de adicionar a uma
  • Config # VTP - o padrão é também cliente e transparente
  • Config # VTP domínio Camp - o nome não importa, só para que todos os parâmetros de utilização do mesmo
  • Config # VTP 1234 - limitado
  • Config # VTP pruning permitir - VTP limites para as emissões só muda afectadas
  • Config # VTP pruning desativar FLASH ATUALIZAÇÃO:
  • Config # cópia tftp: / / 192.168.5.5/configname.ios Opcode - "Opcode" para atualizar ios, "nvram" para inicialização config

DELETE STARTUP CONFIG:

  • Config # apagar nvram

Quebrar VISA PIN

02. De julho de 2008 na Banca e Eftpos

Abaixo está um artigo que encontrei recentemente. Esta uma das mais completas descrições do Value

Eu pensei que ela iria replicar aqui para o meu local de referência.

Como observação, foram feitas sobre a gramática usada no original, tenho corrigido alguns dos erros óbvios, mantendo o contexto do material original.

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

--- original ----

Prefácio
Você já se perguntou o que aconteceria se você perder o seu ou e alguém encontra-lo. Será que essa pessoa seja capaz de retirar dinheiro de um caixa eletrônico adivinhação, de alguma forma, o seu Além disso, se você acha que alguém do que você tentar adivinhar a e ter a chance de obter algum fácil? Claro que a resposta às duas questões devem ser "não". Este trabalho não trata da segunda questão, é uma questão de Herewith tento responder à primeira pergunta.

Todas as informações utilizadas para este trabalho é público e pode ser encontrado livremente na O resto é uma questão de e programação, assim podemos aprender e ter algum divertimento. Eu não revelam segredos. Além disso, o objectivo (e do presente trabalho é demonstrar que a algoritmos ainda são fortes o suficiente para proporcionar suficientes. Todos sabemos não é o

Este trabalho analisa uma das mais comuns algoritmos, utilizada por muitos e de e tenta descobrir como é resistente a guessing ataques. Por "adivinhar" Não me refiro a uma escolha aleatória e tentar-lo em um caixa eletrônico. É sabido que geralmente são dadas nos três ensaios consecutivos para entrar à direita se não ATM mantém o Como é quatro dígitos longa, é fácil deduzir que a chance de um aleatória adivinhação é de 3 / 10000 = 0,0003, parece baixo o suficiente para ser seguro, isso significa que você precisa perder o seu mais de três mil vezes ( ou a perder mais de três mil cartões ao mesmo tempo:) até que haja uma hipótese razoável de perder

O que eu realmente entende por "adivinhar" foi quebrar o de modo que, dado qualquer que você pode saber imediatamente os associados Por conseguinte, este documento estudos essa possibilidade, analisando o e propor um método para o Finalmente vamos dar uma ferramenta que implementa o e apresentar resultados sobre a estimativa chance de quebrar o sistema. Note que, enquanto outros relacionados com algoritmos (outros formatos, como a IBM ou assinaturas, como a validação ou CVC) são semelhantes aos a mesma análise pode ser feito rendendo quase os mesmos resultados e conclusões.



Um dos mais comuns algoritmos é o Value O cliente é atribuído um e uma Encoded na é um número de quatro algarismos, chamado Este número é um criptográfico assinatura do e outros relacionados ao Quando um usuário digita o seu a ATM lê a criptografa e envia todas essas informações para um computador central. Há um julgamento é calculado utilizando o cliente entrou e as informações de com uma criptografia O julgamento é comparado com o armazenados no se corresponderem a volta para o computador central ATM autorização para a Veja mais em pormenor.

A descrição da pode ser encontrada em dois documentos ligados na página anterior. Em resumo, consiste na de um byte 8 (64 bits) seqüência de chamado Transformado Parameter (SFT), com (DEA) em Código Livro modo (BCE), utilizando uma chave secreta 64 bits. O é proveniente da produção da processo, que é um byte 8 string. Os quatro algarismos do (da esquerda para a direita) correspondem aos quatro primeiros dígitos decimais (da esquerda para a direita) da saída do quando considerada como um 16 caracteres hexadecimais (16 bits x 4 = 64 bits) string. Caso não haja quatro dígitos decimais entre os 16 caracteres hexadecimais então o é completado tomada (da esquerda para a direita) não decimais caracteres e decimalizing-los usando a conversão A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Aqui está um exemplo:

Saída de 0FAB9CDEFFE7DCBA

0975

A estratégia de evitar decimalização saltando por até quatro caracteres dígitos decimais são encontrados (o que acontece com a quase totalidade das vezes como veremos mais adiante) é muito inteligente, porque evita um viés importante na distribuição de dígitos que tem sido provado ser fatal para outros sistemas, embora o impacto sobre o sistema seria muito menor. Veja também relacionada com um problema que não se aplicam a

O SFT, considerada como um 16 caracteres hexadecimais (64 bits) string, é formada (da esquerda para a direita) com os 11 dígitos direita do PAN (número de excluindo o último dígito (check dígito), um dígito 1-6 que seleciona o segredo encriptando-chave e, finalmente, a quatro dígitos do Aqui está um exemplo:

PAN: 1234 5678 9012 3445
Chave seletor: 1
2468

TSP: 5678901234412468

É óbvio que o problema da quebra consiste em encontrar a chave secreta de encriptação O método para isso é fazer uma pesquisa de força bruta a tecla espaço. Note-se que este não é o único método, pode-se tentar encontrar um ponto fraco na DEA, muitos tentaram, mas este padrão antigo ainda está em ampla utilização (agora substituído por AES e embora). Isto demonstra que é robusto o suficiente para que a força bruta é o único método viável (existem alguns ataques, mas não melhor prática no nosso caso, para um resumo ver LASEC memória e para ver os detalhes sujos Biham & Shamir 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 e Heys 2001).

A chave era muito provável algarismos selector introduzidas para cobrir a possibilidade de um compromisso fundamental. Nesse caso, eles só têm de emitir novos cartões usando outra chave selector. Antigas cartas podem ser substituídas por novas, ou simplesmente a ATM transparente pode escrever uma nova (que corresponde à nova chave e mantendo o mesmo próxima vez que o cliente usa o seu Para o shake de todos os usuários devem ser convidados a mudar os seus PINs, porém, seria embaraçoso para o a explicar a razão, muito provavelmente não teriam de fazer tal pedido.

Preparando o


A força bruta consiste em encriptando SFT com uma conhecida utilizando todas as possíveis chaves encriptando e comparar cada obtidos com as conhecidas Quando uma correspondência for encontrada, temos um candidato chave. Mas quantas chaves temos de tentar? Como dissemos acima da chave é de 64 bits de comprimento, o que significa que temos de tentar 2 ^ 64 chaves. Contudo, isto não é verdade. De facto, apenas 56 bits são eficazes na chaves porque um bit (o menos significativo) de cada octeto foi historicamente reservado como um checksum para os outros, na prática os 8 bits (uma para cada um dos 8 octetos) são ignoradas.

Assim, o tecla espaço é composto por 2 ^ 56 chaves. Se tentarmos todas estas chaves encontraremos um e só um jogo, o que corresponde ao chave secreta? Certamente que não. Iremos obter muitos correspondentes chaves. Isto porque o é apenas uma pequena parte (um quarto) do saída. Além disso, o é degenerada porque alguns dos dígitos (aqueles entre 0 e 5 após o último, visto a partir da esquerda para a direita, algarismos entre 6 e 9) podem ser provenientes de uma casa decimal de um dígito ou dígitos hexadecimais decimalized do saída. Assim, muitas chaves irá produzir uma saída que produz a mesma correspondência

Então o que podemos fazer para encontrar a verdadeira chave entre os outros falsos positivos chaves? Simplesmente temos de encriptar um segundo diferentes TSP, também conhecida com mas utilizando apenas o candidato que deu as chaves uma correspondência positiva com o primeiro-TSP par. No entanto não há garantia de que não irá receber novamente muitos falsos positivos, juntamente com a verdadeira chave. Se assim for, teremos um terceiro par, repita o processo e assim por diante.

Antes de começarmos o nosso temos de saber quantos pares vamos precisar. Por que temos que calcular a de um aleatória produção para produzir uma correspondência apenas por acaso. Existem várias formas de calcular este número, e aqui vou usar uma abordagem simples de fácil compreensão, mas que exige uma certa experiência em de

A pode ser sempre visto como a razão de casos favoráveis a possíveis casos. No nosso problema, o número de casos possíveis é dada pela de 16 elementos (de 0 a F dígitos hexadecimais) em um grupo de 16 deles (os 16 dígitos hexadecimais do de saída). Esta é dada por 16 ^ 16 ~ 1,8 * 10 ^ 19, que obviamente coincide com 2 ^ 64 (números diferentes de 64 bits). Este conjunto de números podem ser divididos em cinco categorias:

Aqueles com pelo menos quatro dígitos decimais (0 a 9) entre os 16 dígitos hexadecimais (0 a F) do saída.

Aqueles com exactamente apenas três dígitos decimais.

Aqueles com exactamente apenas duas casas decimais.

Aqueles com exactamente apenas um dígito decimal.

Aqueles que não dígitos decimais (todos entre A e F).

Vamos calcular quantos números caem em cada categoria. Se nos rótulos dos 16 dígitos hexadecimais do X1 como saída para X16 então podemos rotular os primeiros quatro dígitos decimais de um determinado número de primeira categoria como Xi, XJ, XK e XL. O número de combinações diferentes com este perfil é dada pelo produto 6 i-1 * 10 * 6 undecies-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l quando a 6 ' s vir a partir do número de possibilidades de um dígito A a F, os 10's provêm as possibilidades de um dígito de 0 a 9 e as 16 trata das possibilidades de um 0 a F dígito. Agora, os números totais na primeira categoria é simplesmente dado pelo somatório do produto ao longo do i, j, k, l 1-16, mas com i <j <k <l. Se você fizer alguma matemática trabalho você verá esta é igual ao produto de 104 / 6, com o somatório sobre i 4-16 de (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1/8 * 1019.

Analogamente, o número de casos na segunda categoria é dada pelo somatório sobre i, j, k 1-16 com i <j <k do produto 6i-1 * 10 * 6 undecies-i-1 * 10 * 6k-j -1 * 10 * 616-k, que você pode trabalhar para fora para ser 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 * 1015 ~ 7/3. Do mesmo modo para a terceira categoria que temos sobre o somatório i, j 1-16 com i <j, de 6 i-1 * 10 * 6 undecies-i-1 * 10 * 616-J, que é igual a 16! / (2! (16-14)!) * 102 * 614 = 2 * 103 * 615 * 1014 ~ 9,4. Mais uma vez, para a quarta categoria, temos o somatório sobre i 1-16 de 6i-1 * 10 * 616-i = 160 * 615 * 1013 ~ 7,5. E, finalmente, a quantidade de casos na quinta categoria é dada pela de seis elementos (A a F dígitos) em um grupo de 16, ou seja, 616 ~ 2,8 * 1012.

Espero que você seguiu os cálculos até este ponto, a parte mais difícil está feito. Agora, como uma prova de que tudo está a direita, você pode soma do número de casos em 5 categorias e ver o que equivale ao número total de casos possíveis é calculado antes. Será que as operações com números de 64 bits ou de arredondamento (para carros alegóricos), ou por transbordamento (para inteiros) erros não vão deixar você obter o resultado exato.

Até agora temos calculado o número de casos possíveis em cada uma das cinco categorias, mas estamos interessados em obter o número de casos favoráveis vez. É muito fácil obter o último dos antigos como esta é apenas a fixação do conjunto de quatro dígitos decimais (ou o exigido dígitos hexadecimais, se não houver quatro casas decimais) do vez de deixá-las livres. Na prática, isso significa transformar os 10's na fórmula acima em 1 e do montante exigido é de 6 em 1's, se não houver quatro casas decimais. Isto é, temos que dividir o primeiro resultado por 104, o segundo um por 103 * 6, o terceiro um por 102 * 62, a um quarto por 10 * 63 eo quinto um por 64. Em seguida, o número de casos favoráveis nas cinco categorias são aproximadamente 1,8 * 1015, 1.2 * 1012, 2.6 * 1011, 3.5 * 1010, 2,2 * 109, respectivamente.

Agora somos capazes de obter o que é a de um de saída para combinar uma por acaso. Só temos de somar os cinco números de casos favoráveis e dividi-lo pelo número total de casos possíveis. Fazendo isso obtemos que a é muito 0,0001 ou aproximadamente um em cada dez mil. É estranho esse bem arredondadas resultado? Nem por isso, basta ter um olhar para os números que acima calculada. A primeira categoria domina por várias ordens de grandeza do número de casos favoráveis e possíveis. Isto é bastante intuitivo como parece claro que é muito pouco provável que não tenha quatro dígitos decimais (10 chances de 16 por algarismos), entre 16 dígitos hexadecimais. Já vimos anteriormente que a relação entre o número de casos possíveis e favoráveis na primeira categoria foi uma divisão de 10 ^ 4, que é onde o nosso resultado p = 0,0001 vem.

O nosso objectivo para todos estes cálculos foi para descobrir quantos pares precisamos para transportar uma força bruta bem sucedido Agora somos capazes de calcular o número esperado de falsos positivos em uma primeira pesquisa: ele será o número de julgamentos vezes a de um único aleatória falso positivo, ou seja, p * t em que t = 2 ^ 56, o tamanho da chave espaço. Isto equivale a cerca de 7,2 * 10 ^ 12, um número bastante grande. O número esperado de falsos positivos no segundo pesquisa (restrito ao chaves positivo encontrado na primeira busca) será (t * p) * p, para uma terceira pesquisa será ((t * p) * p) * p e assim por diante. Assim, para pesquisas n é o número esperado de falsos positivos serão p * t ^ s.

Podemos obter o número de pesquisas necessárias para esperar apenas um falso positivo, expressando a equação t * p ^ n = 1 e para a resolução 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 tools. 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