Biblioteca para utilização de algoritmos de compartilhamento de segredos e anonimização de dados para adequação de sistemas à LGPD
- JDK 17 ou superior
- JRE 1.8.0 ou superior
- Lombok Annotations Support for VS Code (extensão para o Visual Studio Code)
Utilize o comando abaixo:
git clone https://github.com/Acacio-coding/Secstor-library
Agora siga os seguintes passos:
- Abra o projeto com a IDE ou editor de código de sua preferência;
- Certifique-se de instalar as dependências presentes no arquivo pom.xml
- Cheque o exemplo de utilização dentro no pacote ifsc.secstor.library
- Crie uma classe com o método main
- Utilize a biblioteca seguindo o exemplo abaixo:
import com.ifsc.secstor.library.facade.EngineMaker;
public class Example {
public static void main(String[] args) throws Exception {
int N = 10;
int K = 5;
EngineMaker engineMaker = new EngineMaker(N, K);
//Informação a ser dividida e reconstruída
String data = "teste";
//Divisão
engineMaker.split(data, "shamir");
//Printando as chaves geradas, lembre-se de utilizar
//o get na engine que você realizou split
engineMaker.getShamir().getPieces().forEach(System.out::println);
//Reconstrução
//N chaves
String reconstructed = engineMaker.reconstruct("shamir");
System.out.println("\n" + reconstructed);
//K chaves ou um número de chaves, onde K <= número de chaves <= N
reconstructed = engineMaker.reconstruct("shamir", K);
System.out.println("\n" + reconstructed);
}
}
Obs.: os algoritmos disponíveis são shamir, pss, css, krawczyk e pvss, as classes dentro do pacote ifsc.secstor.library.facade estão documentadas seguindo os padrões do javadoc
Existem duas formas de realizar os testes, a primeira é utilizando o shellscript timing-test-runner.sh:
- Certifique-se de ter o maven instalado utilizando o JDK 17;
- Executre o script seguindo as informações requeridas.
- Sempre que for realizar o teste novamente não esqueça de apagar os resultados gerados em timing-tests/results/ para evitar que os novos resultados sejam anexados ao mesmo arquivo;
- Todos os resultados são gerados em formato .csv na pasta citada acima.
A outra forma é pelo próprio executor das IDE's java
- Realize um build do projeto;
- Encontre o arquivo de configuração de execução gerado pela sua IDE;
- Adicione os seguintes argumentos respectivamente separados por espaços:
- N número de chaves (número máximo de chaves gerados na divisão) ;
- K número de chaves (número mínimo de chaves utilizados na reconstrução);
- Número de chaves a serem utilizadas na reconstrução por rodada, podem ser vários números como 10 7 5 (onde N=10 e K=5) por exemplo;
- Tamanho do dataset (1, 3, 5 ou 10) seguido de _100objects_dataset_to_split.json, ex.: 1kb_100objects_dataset_to_split.json;
- Número de threads utilizadas paralelamente durante o teste.
- Sempre que for realizar o teste novamente não esqueça de apagar os resultados gerados em timing-tests/results/ para evitar que os novos resultados sejam anexados ao mesmo arquivo;
- Todos os resultados são gerados em formato .csv na pasta citada acima.
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