Soluções Keypasco, Autenticação & Segurança

A autenticação é o ato de confirmar a verdade de um atributo ou de uma entidade, e é um componente crítico do desenvolvimento seguro de negócios da Internet. Isso só pode ser feito através da verificação da identidade de uma pessoa ou programa de software. Na Internet, isso é feito principalmente pelo uso de credenciais de usuários, mas estas têm limitações.
A Keypasco desenvolveu uma opção com menos limitações.

Keypasco oferece uma solução de autenticação que não requer tokens hardware. O serviço combina fatores como impressões digitais / autenticação de dispositivos, geolocações, uma estrutura de 2 canais, proximidade de dispositivos móveis e uma análise de comportamento de risco para oferecer autenticação multi-fator forte.

O sistema Keypasco é dividido em:


– Servidor chamado Borgen
– client chamado Vakten

Os clients estão instalados em um navegador, computador desktop ou laptop ou em dispositivos de smartphone.
O servidor é um aplicativo Java que está sendo executado na nuvem ou no local nas instalações do cliente (ICP).

FUNDAMENTOS

Modelo cliente-servidor

• É uma estrutura que divide as tarefas entre os provedores de um recurso ou serviço, chamados servidores e solicitadores de serviço, chamados clientes.

• Muitas vezes, clientes e servidores se comunicam através de uma rede de computadores em hardware separados. Um cliente não compartilha nenhum dos seus recursos, mas solicita a função de conteúdo ou serviço de um servidor. Os clientes, iniciam sessões de comunicação com servidores que aguardam pedidos recebidos.

• No sistema Keypasco, o servidor (Borgen) é acessado pelo cliente (também conhecido como ICP) e pelos clients Vakten. O servidor Borgen aguarda e responde às chamadas do ICP e dos clientes da Vakten.

 

Comunicação de cliente e servidor

• Em geral, um serviço é uma abstração de recursos de computador e um cliente não precisa se preocupar com a forma como o servidor executa enquanto cumpre o pedido e entrega a resposta. O cliente só precisa entender a resposta com base no protocolo de aplicação bem conhecido, ou seja, o conteúdo e a formatação dos dados para o serviço solicitado.

• Clientes e servidores trocam mensagens em um padrão de solicitação-resposta: o cliente envia uma solicitação e o servidor retorna uma resposta. Para se comunicar, o cliente e o servidor devem ter um idioma comum, e eles devem seguir as regras para que tanto o cliente como o servidor saibam o que esperar.

 

Criptografia

• A criptografia é a prática e estudo de técnicas de comunicação segura e proteção de dados na presença de terceiros. De forma mais geral, neste contexto, a criptografia é sobre a codificação de informações antes de enviá-lo pela Internet ou armazená-lo em um banco de dados. Como a Internet é uma rede aberta e insegura, qualquer pessoa pode recuperar e estudar qualquer mensagem enviada. Para que as informações secretas permaneçam seguras, essas mensagens não devem estar em texto claro, mas devem ser criptografadas de forma que apenas o receptor pretendido possa descriptografar a mensagem para recuperar o texto em branco.

• Existem duas formas de criptografia; simétrica e assimétrica. Criptografia simétrica significa que o mesmo valor da chave é usado tanto para criptografia quanto para descriptografia. Criptografia assimétrica significa que um par de chaves relacionadas são usadas, uma para criptografia e outra para descriptografia. Essas chaves são chamadas de chaves públicas e privadas.

 

PKI – Infraestrutura de chave pública

• Este é o nome comum de um conjunto de regras e políticas que monitoram a criação, compartilhamento e gerenciamento de certificados digitais e chaves públicas. Um certificado digital é um arquivo que inclui informações sobre uma pessoa ou entidade, a chave pública da pessoa ou entidade e datas entre as quais o certificado é válido. Os certificados digitais são emitidos por uma autoridade de certificação, comumente chamada CA.

 

O SISTEMA DA KEYPASCO

O sistema Keypasco possui uma série de recursos a partir dos quais o cliente pode selecionar aqueles que ele deseja utilizar no processo de autenticação de seus usuários finais.

A seleção de recursos depende do nível de segurança exigido, envolvendo ou não o usuário final na inscrição e autenticação, seja necessário ou não a integração de um terceiro externo, quantos usuários acessam o sistema etc.

SERVIDOR BORGEN

Instalação

O servidor Borgen é desenvolvido em Java e é executado em alguns sistemas operacionais Linux; Ubuntu, Debian e RedHat.
Pode ser instalado on-site (no local/escritórios do cliente), ou também pode ser instalado “na nuvem”.
Atualmente, as instalações da Borgen funcionam nos serviços da nuvem Amazon em vários locais em todo o mundo e em várias instalações dos clientes.

 

APIs

O servidor Borgen no sistema Keypasco, tem vários conjuntos de definições de funções claramente especificadas. São as APIs -Interfaces de programação de aplicações. Essas interfaces mostram como os clientes podem se comunicar com o servidor Borgen.
Existem três interfaces entre um ICP e Borgen: API genérica, API do cliente e Extensão PKI.

• A interface entre o Borgen e os clientes Vakten é chamada de API do cliente.
• O ICP precisa usar a API genérica ou do cliente para adicionar um usuário, lista negra de um dispositivo, criar uma tarefa para o usuário assinar etc.
• A comunicação entre o cliente Vakten e a API do Client Borgen é ativada através do aplicativo em execução e do usuário final dispositivo.

 

Banco de dados

O próprio servidor Borgen é apátrido. Uma instância do servidor Borgen precisa de um banco de dados para poder funcionar. Aqui é onde todos os dados relevantes sobre o sistema estão armazenados. Por exemplo, os dados analisados pelo motor de risco, todos os usuários, seus dispositivos, informações sobre esses dispositivos e as configurações que especificam como o servidor deve funcionar no ambiente em que foi instalado.
Existem dois tipos diferentes de bancos de dados; bancos de dados relacionais usando SQL e bancos de dados não relacionais, muitas vezes referidos como NoSQL. Cada um desses tipos tem várias implementações diferentes.

• Bancos de dados relacionais suportados por Borgen são DB2, Oracle, PostgreSQL e Microsoft SQL Server.
• Banco de dados NoSQL suportado é o Couchbase.

Sempre que um servidor Borgen é implantado na nuvem, ou seja, usar servidores fornecidos por um terceiro, como Amazon, a Couchbase sempre é usada. Em outros casos, a Couchbase ou qualquer uma das bases de dados relacionais podem ser usadas.

CLIENT – VAKTEN

O cliente Vakten é parte do sistema Keypasco executado no lado do usuário final. Ele é executado em um dispositivo que pertence ao usuário. Ele se autenticará em um servidor Borgen e poderá assinar tarefas enviadas ao usuário pelo ICP.

O cliente Vakten existe em três formas:
• javascript para navegadores
• como um aplicativo para a área de trabalho
• como um SDK para aplicativos móveis – O SDK é um pacote de software desenvolvido em C que pode ser incluído em outros aplicativos como Android ou iOS.

Este é o componente principal em torno do qual os clientes do sistema Keypasco podem criar suas próprias funcionalidades e interfaces gráficas de usuário.

SERVIDOR BORGEN

• Instalação
– O Servidor Borgen , necessita Java JVM versão 8.

– Linux operating systems
• Ubuntu >v14.4
• RedHat >v5

• APIs
– O servidor Borgen, tem vários conjuntos de APIs:
• Admin API – A RESTful interface (with a proprietary Keypasco GUI)
• Client API – A RESTful interface.
• Generic API – defined by a WSDL file, SOAP communication.
• Customer API – defined by a WSDL file, SOAP communication.
• Extension PKI – defined by a WSDL file, SOAP communication.

• Databases
Os bancos de dados relacionais suportados são:
• DB2 >v10
• PostgreSQL >v9
• Microsoft SQL Server >v12
• Oracle >v10 
The single NoSQL database supported is Couchbase v4.1.

Configuração recomendada do hardware

Two Loadbalancers:
• Processor: Xeon 4 physical core, 3.3 Ghz 8 Mb Cache (E3-1230-v3-8M-Cache-3_30-GHz)
• Ram: 8Gb ECC
• Disk setup: 40Gb (Raid 1)
• Redundant power supply & network adapters

Two Application Servers
Processor:
• Xeon 4 physical core, 3.30 Ghz 8 Mb Cache (E3-1230-v3-8M-Cache-3_30-GHz)
• Ram: 8Gb ECC
Disk setup: 100Gb (Raid 1)
Redundant power supply & network adapters

Three Database Servers
• Processor: Xeon 6 physical core, 2.1 Ghz 15 Mb Cache (E5-2620-v2-15M-Cache-2_10-GHz)
• Ram: 16 Gb ECC
• Disk setup: 300 Gb Raid 10
• Redundant power supply & network adapters

1. O usuário final tenta acessar alguma função no ICP, por exemplo, logar ou solicitar uma transação monetária.

2. O ICP chama o servidor Borgen para criar uma tarefa para o usuário final assinar como forma de verificar se o usuário final está agindo intencionalmente.

3. O client Vakten no dispositivo do usuário final recupera a tarefa do servidor Borgen através da API do Cliente. O usuário final então analisa a mensagem da tarefa e confirma ou nega que ele ou ela deseja prosseguir com esta transação ou login.

4. O client Vakten responde com a resposta do usuário final.

5. O ICP verifica com o servidor Borgen para ver qual é a resposta do usuário final à tarefa.

6. O ICP permite que a transação ocorra ou não, dependendo da resposta do usuário final à tarefa.

Existem vários fatores de autenticação disponíveis no sistema Keypasco, além da autenticação básica do usuário final (login e senha). Todos esses fatores funcionam com base em que algum tipo de dispositivo está vinculado ou associado a um usuário final. Exemplos de dispositivos são smartphones, laptops e navegadores. O fator fundamental do sistema Keypasco é a “IMPRESÃO DIGITAL” do dispositivo, que é o único fator obrigatório e ativo por padrão.

Impressora digital do dispositivo
Onde o software client Vakten for instalado e associado a um usuário no sistema Keypasco, ele irá extrair uma série de propriedades e registrar informações comportamentais que podem definir de forma exclusiva aquele smartphone, computador PC ou Mac ou navegador. As chaves e propriedades adicionais são recuperadas do servidor e armazenadas no dispositivo. Juntos, esses dados formam o que é chamado de impressão digital desse dispositivo; ou seja, algo que identifica de forma exclusiva este dispositivo e o separa de todos os outros dispositivos.
A impressão digital pode mudar um pouco, mas se mudar de tal forma que o servidor Borgen julgue ser uma tentativa de criar um clone ou manipular o dispositivo, a autenticação de impressão digital falha e a conexão entre o dispositivo e o usuário final é removido.

Geolocalização
Um client Vakten fornecerá informações sobre sua localização geográfica no servidor Borgen. Isso é feito pelo recurso GPS em smartphones, usando o posicionamento WiFi ou através do IP. A informação de localização é fornecida ao ICP, que então é capaz de analisar e, se necessário, reagir.

• Proximidade – Sempre que dois client Vakten ligados a um único usuário estão ativos simultaneamente, o sistema Keypasco pode determinar se estão ou não na mesma região. Por exemplo, o usuário faz logon no site do ICP usando um laptop com um navegador que possui o cliente Vakten Browser instalado. O ICP solicita a Borgen que envie uma tarefa para ser assinada no smartphone do usuário, que possui o Vakten Mobile instalado. A posição é então correlacionada para determinar se o navegador e o smartphone estão localizados na mesma região.

• Offline – Se um usuário final que tenha um smartphone com um client Vakten estiver off-line, ele ou ela pode usar a Geolocation One Time Password ou o GeoOTP. Este recurso utiliza o GPS do smartphone para gerar um código de 12 dígitos que é específico para a localização, hora e smartphone em que é gerado. Este código pode então, através do ICP, ser submetido ao servidor Borgen para verificar a localização e a posição do dispositivo.

• Proximidade Bluetooth – Um usuário final pode associar um hardware capaz de se comunicar via Bluetooth, como uma pulseira ou um smartwatch para o perfil dele. Para que a autenticação do client Vakten desse usuário em execução em um laptop ou smartphone seja bem sucedida, o dispositivo Bluetooth adicional também deve estar lá. Se o dispositivo Bluetooth adicional não estiver ao alcance do cliente Vakten, a autenticação falhará.

Extensão PKI

A camada superior dos fatores de autenticação do sistema Keypasco é o recurso de extensão PKI.
O recurso PKI só está disponível para os client Vakten do smartphone.

• Objetivo – O recurso permite que o usuário final gere um par de chaves; um público e um privado. A chave pública é usada para solicitar um certificado de um terceiro (CA). A chave pública que foi gerada é inserida no certificado. A chave privada é usada para criar uma assinatura digital, que pode ser verificada pelo servidor Borgen ou pela CA, que ambos possuem o certificado, incluindo a chave pública. Desta forma, o sistema Keypasco verificou que era titular da chave privada que criou a assinatura e ninguém mais.

• Implementação – O par de chaves pode ser gerado pelo Borgen ou pelo client Vakten. . Após a geração, a chave privada é dividida entre o smartphone e o servidor. No smartphone, o código PIN do usuário é usado para criar uma chave que criptografe a parte da chave privada armazenada lá. O servidor armazena a outra metade em seu banco de dados, criptografado com outra chave. Desta forma, um invasor precisa acessar o banco de dados do servidor, o smartphone e o código PIN do usuário para derivar a chave privada.

• Integração de CA – Existe um plugin no servidor Borgen que é usado para se integrar na CA da escolha do cliente.

Motor de risco

O mecanismo de análise de risco fornece informações ao ICP sobre comportamentos suspeitos do lado do usuário e do dispositivo. Os parâmetros que são utilizados como entrada e linha de base para os recursos de análise de risco podem ser modificados no servidor Borgen, juntamente com as regras do que deve acontecer quando uma ameaça é detectada.

Uma seleção de três das regras no motor de risco são apresentadas brevemente abaixo:

• Velocidade do dispositivo – Quando um dispositivo foi usado em um local específico, e então usado tão cedo em um local tão distante que o proprietário não pode ter viajado lá. O risco é que um invasor tenha clonado com sucesso um dispositivo e o clone usado em um local muito diferente de onde o dispositivo original é usado. O sistema Keypasco irá acompanhar esse movimento, o que pode levar à suspensão deste dispositivo para evitar que ele seja usado para autenticar qualquer pessoa real.
• Verificação de credencial – Se vários usuários diferentes tentarem usar um dispositivo específico para autenticação em relação a um ICP e não fornecerem credenciais corretas, há uma chance de este dispositivo ser usado para atividades fraudulentas. O sistema Keypasco acompanhará esse comportamento, o que pode levar a uma lista negra deste dispositivo para evitar que ele seja usado para autenticar qualquer pessoa real.
• Detecção de zona quente – No caso de registrar um client Vakten significa que o usuário final ganhará algo, o registro pode ser usado como um instrumento de fraude. A detecção de zona quente alertará o ICP se houver um número elevado de clients Vakten se registrando no mesmo local dentro de um período de tempo configurável.

Adicional

O sistema Keypasco também fornecerá ao ICP informações que, dependendo da situação e do ambiente, podem afetar a validade da autenticação. Os dados enviados para o servidor Borgen pelo client Vakten contém essas informações adicionais sobre o estado do dispositivo no qual o client Vakten está sendo executado.

• Alertas de limpeza – Por exemplo, em um smartphone, o aplicativo Vakten indicará o dispositivo “rooted/jailbroken”, ouou mesmo “debuggers” conectados. Caso o ICP considere que isso é um risco muito alto, ele pode negar que o usuário tente autenticar-se no acesso aos serviços do ICP.
• Detecção de emulador – O client Vakten detectará se o ambiente em que ele está sendo executado não é o real. Por exemplo, se o smartphone com um cliente Vakten móvel for emulado em um PC, esta informação é fornecida ao ICP. Atualmente, mais de 20 emuladores de Android podem ser detectados, e o trabalho para detectar novos está constantemente em andamento.

SDK móvel, disponível para plataformas Android e iOS. Utiliza o SQLite como um banco de dados local para fins de armazenamento.

É um javascript que o cliente do sistema Keypasco (ICP) inclui em seu próprio site.
Desta forma, será executado no navegador do usuário final à medida que ele acessa o site do ICP.

Vakten – Client

O Vakten client é parte do Sistema da Keypasco no dispositivo do usuário final

Desktop
A aplicação está disponível nos ambientes:
• Linux Ubuntu >v14.04
• Windows XP and up
• OS X >v10.7
A interface entre o desktop client e ICP é javascripto. Portanot, o usuáiro final deve permitir jacascripts (ou o do ICP especificamente), para rodar a aplicação no browser. Ainda, qualquer furewall precisa permitir a troca de dados com a aplicação Vakten.

Mobile
O moble SDK é o recusro mais pesado. Está disponível para plataformas Android e iOS, através de comunicação via APIs.
Ambients suportados pelso mobile SDK:
• Android >v10
• iOS >v7

Os apps incluindo o SDK necessitam de permissões como acesso a localização, etc. Estão especificadas no arquivo “Keypasco Android / iOS documentations”

Browser

É um javascriptoi que o cliente do sistema da Keypasco (ICP) inclui no seu próprio website.

Browsers suportados:
• Chrome >v32
• Internet Explorer >v9
• Mozilla Firefox >v27
• Safari >v6

Usuário final deve permitir javascript no browser.