Coder Social home page Coder Social logo

acacio-coding / secstor Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 1.9 MB

Destinado ao projeto de iniciação científica de aplicação de algoritmos de compartilhamento de segredos e anonimização de dados para adequação de sistemas à LGPD.

Java 99.24% CSS 0.07% JavaScript 0.20% HTML 0.49%

secstor's Introduction

Secstor

O objetivo é desenvolver uma biblioteca ou uma api para a utilização de algoritmos de compartilhamento de segredos e anonimização de dados para adequação de sistemas à LGPD.

Requerimentos

  • JDK 17 ou superior
  • JRE 1.8.0 ou superior
  • MySQL 8.0.27 ou superior
  • Lombok Annotations Support for VS Code (extensão para o Visual Studio Code)
  • Docker (opcional)

Para utilizar o projeto

Utilize o comando abaixo:

git clone https://github.com/Acacio-coding/Secstor

Agora siga os seguintes passos:

  1. Abra o projeto com a IDE ou editor de código de sua preferência;
  2. Crie um arquivo chamado "config.properties" dentro da pasta resources, localizado em "src/main";
  3. Adicione as seguintes linhas no arquivo criado adaptando os parâmetros para o seu ambiente:
server.port=PORTA DESEJADA

spring.datasource.url=jdbc:mysql://localhost:3306/NOME DO BANCO DE DADOS?createDatabaseIfNotExist=true
spring.datasource.username=USUÁRIO DO BANCO DE DADOS
spring.datasource.password=SENHA DO BANCO DE DADOS

secstor.auth-secret=SEGREDO UTILIZADO NA GERAÇÃO DOS TOKENS

secstor.admin-username=USUÁRIO ADMINISTRADOR INICIAL
secstor.admin-password=SENHA DO USUÁRIO ADMINISTRADOR INICIAL

secstor.n=NÚMERO DE CHAVES GERADAS NO SPLIT
secstor.k=NÚMERO MÍNIMO DE CHAVES UTILIZADAS NO RECONSTRUCT
  1. Caso esteja utilizando docker, utilize o comando abaixo, para que o container do banco de dados seja criado:
docker-compose up --build --force-recreate
  1. A partir da ferramente realize um build para que os arquivos de código fonte sejam compilados e os arquivos de saída (para execução) sejam gerados;
  2. Execute o projeto a partir da classe que contém o método main.

Request throttling

No arquivo application.properties localizado em src/main/resources as seguintes linhas correspondem a configuração do bucket4j para a gestão de ratelimit em cada request, é possível configurá-lo a partir do seguinte exemplo:

bucket4j.enabled=true
bucket4j.filters[0].cache-name=rateLimit
#endpoints onde o filtro de ratelimiting é aplicado
bucket4j.filters[0].url=/api/v1/*
bucket4j.filters[0].filter-method=servlet
bucket4j.filters[0].filter-order=100

#condição para que o filtro seja aplicado, nesse caso, caso o usuário esteja autenticado
bucket4j.filters[0].rate-limits[0].execute-condition[email protected]()
#expressão para validar para quem o filtro deve ser aplicado, por padrão para o usuário que está autenticado
bucket4j.filters[0].rate-limits[0].expression="@userServiceImplementation.getAuthenticatedUsername()"
#condição de exclusão ao filtro, por padrão o administrador não é afetado pelo ratelimiting
bucket4j.filters[0].rate-limits[0].skip-condition[email protected]()
#número máximo de requests por tempo, por padrão 20 requests
bucket4j.filters[0].rate-limits[0].bandwidths[0].capacity=20
#tempo para o número máximo de requests, por padrão a cada 1 minuto
bucket4j.filters[0].rate-limits[0].bandwidths[0].time=1
bucket4j.filters[0].rate-limits[0].bandwidths[0].unit=minutes

#condição para que o filtro seja aplicado, nesse caso, caso o usuário não esteja autenticado
bucket4j.filters[0].rate-limits[1].execute-condition[email protected]()
#expressão para validar para quem o filtro deve ser aplicado, por padrão para cada endereço de IP
bucket4j.filters[0].rate-limits[1].expression="getRemoteAddr()"
#condição de exclusão ao filtro, por padrão o ip local não é afetado pelo ratelimiting
bucket4j.filters[0].rate-limits[1].skip-condition=getRemoteAddr() == '127.0.0.1'
#número máximo de requests por tempo, por padrão 20 requests
bucket4j.filters[0].rate-limits[1].bandwidths[0].capacity=20
#tempo para o número máximo de requests, por padrão a cada 1 hora
bucket4j.filters[0].rate-limits[1].bandwidths[0].time=1
bucket4j.filters[0].rate-limits[1].bandwidths[0].unit=hours

Referências

T. Loruenser, A. Happe, D. Slamanig: "ARCHISTAR: Towards Secure and Robust Cloud Based Data Sharing"; Vortrag: Cloud Computing Technology and Science (CloudCom), 2015, Vancouver, Canada; 30.11.2015 - 03.12.2015; in: "CloudCom 2015", IEEE, (2016), S. 371 - 378.

Disponível em: https://github.com/Archistar/archistar-smc

secstor's People

Contributors

acacio-coding avatar

Stargazers

Luciano Barreto avatar

Watchers

Luciano Barreto avatar  avatar

secstor's Issues

Cannot use random key indexes in PVSS algorithm

The main problem is that the PVSS algorithm only works with keys that are part of a sequence, for example:

0 -> 1 -> 2 -> 3 -> 4 => works
8 -> 7 -> 6 -> 5 -> 4 => works
3 -> 5 -> 2 -> 4 -> 6 => works
0 -> 9 -> 7 -> 2 -> 5 => won't work

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.