1. O Artigo
    1. Objetivo
      1. Propor de um novo modelo para geração do PIN
    2. Conteúdo
      1. Geração de PIN usando Gramática Regular e Gramática Livre de Contexto
      2. Reconhecimento do PIN usando Autômatos Finitos e Autômatos Pushdown
  2. Introdução
    1. Ideia Geral
      1. Os caixas eletrônicos (ATM) substituiem os bancos para muitas operações saques, depósitos, geração de extratos, transferências, etc. por sua facilidade de operação, acessibilidade e outros fatores
      2. Orientado para o cliente, as duas chaves para qualquer transação em ATM são o cartão do banco e o PIN (código numérico 4 dígitos)
      3. PINs são gerados pelo banco, randomicamente, e dados ao titular da conta de forma confidencial, após o qual o cliente pode alterar o seu PIN
    2. Dificuldade
      1. A geração randômica do primeiro PIN é simples e rápida
      2. A gestão de inúmeros PINs é complexa
  3. Histórico
    1. 1º ATM - 1967, por John Shepherd-Barron, Londres
    2. Com serviços bancários de saques, depósitos e outros serviços, evita filas nas agências bancárias
    3. Problemas de segurança tornaram-se mais críticos a partir dos anos 90, quando usuários passaram a se preocupar menos com a complexidade dos PINs, facilitando invasões
    4. instituições investem enormes quantias na compra de ferramentas de terceiros para gerar aleatoriamente seus primeiros PINs
  4. Métodos existentes de geração de PIN
    1. IBM 3624
      1. O mais simples. O PIN é uma encriptação do número da conta/cartão, com chave exclusiva. Se um novo cartão é emitido, um novo PIN é gerado
    2. IBM 3624 + offset
      1. O usuário pode escolher seu PIN, que é interpretado como PIN natural com base em seu valor de módulo para derivar o respectivo valor de deslocamento. Esse valor pode ser armazenado no banco emissor ou no cartão do usuário
    3. VISA
      1. O método VISA é semelhante ao IBM 3624 + offset. É gerado utilizando o número da conta + o PIN do usuário. Com base neste no conta/PIN é gerado o PVKI, que é uma chave encriptada de verificação.
  5. Proposta de geração de PINs
    1. 1. PIN gerado por Gramática Regular
      1. Gramática regular é do tipo 3 na Hierarquia de Chomsky
        1. G = (V, T, P, S)
          1. S - Símbolo Inicial
          2. V - Símbolos não Terminais
          3. T - Símbolos Terminais
          4. P - Conjunto de Produções na forma S → Aa/bB/a/b/ε
          5. Onde maiúsculos são não terminais, minúsculos são terminais e ε é a string vazia
      2. As strings geradas e aceitas pela gramática são expressas de forma declarativa por RE (Regular Expression)
      3. Geração do PIN''
        1. Exemplo
        2. A → B5
        3. B5 → C05
        4. C05 → D405
        5. D405 → 9405
    2. 2. PIN gerado por Gramática Livre de Contexto
      1. Gramática livre de contexto é do tipo 2 na Hierarquia de Chomsky
        1. G = (V, T, P, S)
          1. S - Símbolo Inicial
          2. V - Símbolos não Terminais
          3. T - Símbolos Terminais
          4. P - Conjunto de Produções na forma S → Aa/bB/a/b/ε
          5. Onde maiúsculos são não terminais, minúsculos são terminais e ε é a string vazia
      2. É expressa na forma Backus-Naur (BNF). São referidas como gramáticas de estrutura de frase
      3. Padrões de strings são gerados por um conjunto de regras de produção recursivas.
      4. Geração do PIN
    3. 3. PIN gerado em Python
  6. Reconhecimento dos PINs com Autômato Finito e PDA
    1. Definições
      1. FSA - Finite State Automata - Autômato Finito
        1. A partir de um estado inicial, transições para outros estados, emissão de símbolos e estado de aceitação (final)
        2. Uma string será reconhecida como aceita para uma linguagem gerada por um autômato de estado finito apenas se a derivação dessa string começar no estado inicial e terminar no estado final
      2. O autômato reconhecedor é uma 5-tupla
        1. M = {Q, Fi, Fa, Σ, δ}
          1. Q = conjunto de todos os estados
          2. Fi = estado inicial
          3. Fa = estado final
          4. Σ = conjunto dos alfabetos de entrada
          5. δ = função de transição
    2. Implementação
      1. FSA
        1. M = {Q, Fi, Fa, Σ, δ}
          1. Q = nº de estados = {q0, q1, q2, q3, q4}
          2. Fi = q0 (estado inicial)
          3. Fa = q4 (estado final)
          4. $ = Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} (alfabetos de entrada)
          5. δ: Q × Σ → Q * definido como δ (q0, $) = q1 δ (q1,$) = q2 δ (q2, $) = q3 δ (q3, $) = q4
      2. Autômato Pushdown (PDA)
        1. O que é
          1. É um autômato com uma estrutura de dados em pilha, reconhecedor de Linguagens Livres de Contexto
        2. Quando uma string é aceita?
          1. Esvaziando a pilha
          2. Ou entrando no estado de aceitação
        3. Definição
          1. M = (Q, Σ, S, δ, q0, Z0, F)
          2. Q: número finito de estados Σ são símbolos de entrada S são símbolos de pilha δ: Q × (Σ ∪ { ε}) × S → Q × S * é a função de transição q0 ∈ Q é o estado inicial Z0 ∈ S é o símbolo inicial do topo da pilha F ∈ Q é um conjunto de estados de aceitação
        4. Função de transição
          1. A função de transição de autômatos pushdown que reconhecem o PIN ATM gerado pela gramática livre de contexto é a seguinte
  7. Processo de implementação