Skip to content

Ricardo07g/Multifactor-main

Repository files navigation

Multifactor

Este projeto é um trabalho de conclusão de curso e tem por objetivo a construção de uma aplicação mobile de código aberto e gratuita para autenticação multifator com o intuito de possibilitar que usuários possam adicionar um camada extra de proteção ao ratificar seu acesso em qualquer serviço que ofereça suporte a esta tecnologia de forma prática. Caso deseje aprender um pouco mais sobrea framework Ionic basta acessar este link.

Requisitos do projeto

  • Requisitos do projeto
  • Ionic 6 CLI
  • Android Studio ou Xcode instalado

Executar Projeto

Baixando este projeto

Para Baixar este projeto basta digitar o seguinte comando no terminal:

https://github.com/Ricardo07g/Multifactor-main.git

Instalando dependências

Para as dependências basta se dirigir ao diretório raiz do mesmo e digitar o seguinte comando no terminal:

npm install

Compilação deste projeto para IOS

Caso deseje desenvolver este projeto para o sistema operacional IOS é recomendado seguir a documentação da própria Framework pois podem haver peculiaridades na configuração do ambimente de compilação do mesmo, sugiro acessar este link.

Por fim para executar o Projeto basta se dirigir ao diretório raiz do mesmo e digitar o seguinte comando no terminal :

$ ionic cordova run ios -l --external

Compilação deste projeto para Android

Caso deseje desenvolver este projeto para o sistema operacional Android é recomendado seguir a documentação da própria Framework pois podem haver peculiaridades na configuração do ambimente de compilação do mesmo, sugiro acessar este link.

Por fim para executar o Projeto basta se dirigir ao diretório raiz do mesmo e digitar o seguinte comando no terminal:

$ ionic cordova run android -l

Criando projeto do zero

Neste capitulo ensinarei como criar estruturalmente este projeto, o código fonte para funcionamento do mesmo não será inserido na documentação pois o mesmo ainda passa por manutenções para otimização e refinamento de código, contudo por se tratar de um projeto de código aberto, basta fazer download do código atualizado.

Instalando Ionic

Para instalar o Ionic e suas dependências basta colar o seguinte comando no terminal:

npm install -g @ionic/cli native-run cordova-res

Criando projeto Ionic

Após esta etapa, no mesmo diretório digite o seguinte comando para criar um novo projeto Ionic Angular em branco com o nome de sua preferência:

ionic start "nomeDoProjeto" blank --type=angular

Instalando dependências do projeto

SQLite

Esta dependência permite que a aplicação crie e acesse o bancos de dados SQLite do mesmo no dispositivo em que estiver instalado.É fundamental para armazenarmos os segredos no próprio dispositivo de forma persistente, uma vez que utilizar o localStorage ou sessionStorage do In App Browser da propria framework Ionic está fora de questão para maior segurança e persistência das informações a serem armazenadas, uma vez que qualquer limpeza de cache poderia apagar as credenciais armazenadas.

npm install cordova-sqlite-storage
npm install @awesome-cordova-plugins/sqlite
ionic capacitor sync

Clipboard

Este plugin que permite o gerenciamento de área de transferência do dispositivo em que a aplicaçã for instalada.Será utilizado para inserir na areá de transferência algum OTP gerado que o usuário selecionar para se autenticar em alguma plataforma.

npm install @ionic-native/clipboard
ionic capacitor sync

Toast

Este componente permite mostrar um Toast nativo (pequeno pop-up de texto) no dispositivo em que a aplicação estiver instalada. É útil para mostrar uma notificação nativa que seja menos invasiva e direta para o usuário final, por exemplo quando algum OTP for selecionado pelo usuário e movido para a areá de transferência do dispositivo, informamos que o mesmo foi devidamente copiado.

npm install --save @ionic-native/toast@4
ionic capacitor sync

Jssha

Uma biblhoteca escrita em TypeScript/JavaScript que implementa de forma completa todas as Secure Hash Standard (SHA) (SHA-1, SHA-224/256/384/512, SHA3-224/256/384/512, SHAKE128/256, cSHAKE128/256, e KMAC128/256) com HMAC.

npm install jssha@1.6.2 --save
ionic capacitor sync

Criando serviços

Para este projeto iremos à raiz do projeto, se dirigir a pasta \textbf{./src/app/ }e no mesmo criar uma nova pasta com o nome services. Futuramente esta pasta pode ser utilizada pode ser utilizada para inserir novos serviços na aplicação, como um componente para comunicação com serviços via API, entre outros.

Um serviço pode ser entendido como uma componente que desempenha um papel fundamental nas regras de negócio de um sistema. Ele permite armazenar e centralizar funcionalidades de forma organizada.

No contexto de um projeto Ionic, os serviços não possuem uma interface visual, consistindo apenas de código reutilizável. Isso ocorre porque sua principal função é disponibilizar funcionalidades que podem ser importadas e utilizadas em várias partes da aplicação, como páginas, componentes, diretivas e até mesmo outros serviços.

Os serviços no Ionic desempenham um papel crucial na criação de funcionalidades compartilhadas e na separação de preocupações. Eles permitem encapsular lógicas de negócio complexas e torná-las acessíveis em diferentes partes do aplicativo. Além disso, a reutilização de serviços promove um código mais limpo e organizado, facilitando a manutenção e o desenvolvimento contínuo do projeto.

Em resumo, os serviços no Ionic são unidades funcionais que atuam como blocos de construção essenciais para a implementação das regras de negócio. Sua importância reside na capacidade de armazenar e disponibilizar funcionalidades de forma organizada, promovendo a reutilização de código e facilitando o desenvolvimento de um aplicativo robusto e escalável.

Serviço database

O serviço database contém toda a regra de negócio que necessária para utilizar o banco de dados da aplicação, desde a criação do mesmo, assim como métodos para leitura, inserção e deleção de dados.

ionic generate service database
ionic capacitor sync

Serviço password

O serviço password contém toda a regra de negócio que utilizaremos para calcular e gerar de forma correta os segredos descartáveis.

ionic generate service password
ionic capacitor sync

No fim desta etapa o projeto estará com a seguinte configuração:

./src/app/services
├── database
|   ├── database.service.spec.ts
|   └── database.service.ts
├── password
|   ├── password.service.spec.ts
|   └── password.service.ts

Referências

Para construção desta aplicação foram utilizadas as seguintes referências:

ALOUL WASSIM EL-HAJJ, S. Z. F. A. Multi factor authentication using mobile phones. International Journal of Applied Mathematics and Computer Science, v. 2, p. 65–80, 2009. ISSN 1814-0424. Disponível em: https://www.researchgate.net/publication/228972704_Multi_Factor_Authentication_Using_Mobile_Phones

APWG. Phishing Activity Trends Report, 2nd Quarter 2020. [S.l.], 2020. Disponível em: https://docs.apwg.org//reports/apwg_trends_report_q2_2020.pdf

BASIT A., Z. M. L.-X. e. a. A comprehensive survey of ai-enabled phishing attacks detection techniques. Telecommun Syst, v. 76, p. 139–154, January 2021. ISSN 1572-9451. Disponível em: https://doi.org/10.1007/s11235-020-00733-2

LAMPORT, A. I. . C. L. Password authentication with insecure communication. Communications of the ACM, v. 24, p. 770–772, 1981. Disponível em: https://doi.org/10.1145/358790.358797

RABOY, N. Phishing Activity Trends Report, 2nd Quarter 2020. [S.l.], 2014. Disponível em: https://www.thepolyglotdeveloper.com/2014/10/generate-time-based-one-time-passwords-javascript

RABOY, N. Build A Time-Based One-Time Password Manager With Ionic 2. [S.l.], 2016. Disponível em: https://www.thepolyglotdeveloper.com/2016/08/build-time-based-one-time-password-manager-ionic-2

VERIZON. 2021 Data Breach Investigations Report. [S.l.], 2021. Disponível em: https://www.verizon.com/business/resources/reports/2021-data-breach-investigations-report.pdf

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors