Um tema de tese

Quando eu voltei pra Unicamp pra começar o doutorado, foi bem diferente da chegada do mestrado. Eu já estava em casa: conhecia o lugar, as pessoas e como as coisas funcionavam, tanto no Instituto de Computação quanto no campus. Ao mesmo tempo, era tudo muito diferente. Agora éramos uma família, não era mais só eu, sozinho, podendo levar a vida do jeito que quisesse. A gente precisava achar um lugar pra morar, e não um quartinho nos fundos de qualquer república. Tínhamos um filho que demandava atenção, horários, comida, alguém pra cuidar dele enquanto a gente estivesse em aula, trabalhando na tese ou, às vezes, só tentando ter um pouco de tempo como casal.
Conseguimos achar uma casinha bem no fim de Campinas, mas perto o suficiente da Unicamp para manter a vida razoavelmente prática. Também encontramos uma escolinha pro Pedro, o que trouxe uma certa tranquilidade, pelo menos em meio período, que era o que a gente conseguia pagar. Perto do final do semestre, às vezes conseguíamos colocá-lo em período integral para ter mais tempo de estudo e trabalho. No início era só meu salário da UFLA, mas logo depois a Gisele conseguiu uma bolsa. A vida era apertada, mas dava pra levar.
Uma coisa que eu já tinha notado nas áreas de pesquisa da Unicamp, e que era bem diferente da UFMG, era o foco muito forte em aspectos teóricos da computação: teoria da computação, métodos formais e, em especial, um peso grande na área de grafos.
No doutorado não tinha mais como evitar certas áreas da computação. Eu precisava cursar disciplinas das principais áreas e também fazer as provas de qualificação, que cobriam praticamente todo o espectro de pesquisa do Instituto de Computação. As áreas mais ligadas a sistemas não me preocupavam tanto, mas teoria e banco de dados eram pontos fracos da minha formação na UFMG e também áreas que eu tinha evitado no mestrado. Agora não tinha mais jeito: ia ter de estudar esses temas.
Comecei então a cursar várias disciplinas nessas áreas. Uma das que mais me marcou foi uma disciplina focada em grafos, oferecida como “tópicos”, o que significava que o conteúdo variava conforme o professor e o semestre. Naquele ano, o tema era algoritmos de fluxo em redes (grafos). A proposta era mostrar como grafos e algoritmos de fluxo podiam resolver problemas que, à primeira vista, não pareciam ter relação nenhuma com teoria de grafos, como, por exemplo, problemas de como colorir mapas.
Como era de se esperar, estudamos também algoritmos de caminho mínimo e o famoso problema do caixeiro viajante. Nessa linha, o professor propôs um trabalho bastante desafiador. A ideia era uma simulação simplificada de trânsito: encontrar o caminho de menor custo em um grafo, mas com uma regra adicional. O professor rodava os algoritmos, identificava os caminhos escolhidos por cada um e, em seguida, aumentava o custo das arestas mais utilizadas. A ideia era simular congestionamento: se todo mundo escolhe o mesmo caminho sugerido pelo GPS, esse caminho deixa de ser o melhor. O trabalho exigia tanto a implementação correta dos algoritmos quanto a criação de uma heurística razoável para fugir do caminho mais óbvio. Havia bastante espaço para criatividade. Eu fiquei longe do melhor resultado, mas passei na disciplina.
Enquanto isso, eu trabalhava com meu orientador para definir um tema de tese. Além das provas de qualificação, era necessário apresentar um projeto de tese para uma banca, o que exigia já ter uma ideia mais concreta e uma revisão bibliográfica inicial. A gente ainda andava meio sem saber exatamente por onde seguir. Naquele momento, a opção mais provável era trabalhar com implementação de algoritmos de curvas elípticas, já que havia gente no grupo de criptografia da Unicamp atuando nessa área com bons resultados.
Em paralelo, eu ia lendo uns artigos de criptografia e acabei ficando intrigado com o trabalho de [threshold signatures(https://dl.acm.org/doi/10.1145/502090.502094) do Boneh e com a relação possível desse conceito com o esquema de [blind signatures[(https://en.wikipedia.org/wiki/Blind_signature) do David Chaum, usado no e-Cash. Comecei a me perguntar se seria possível construir algo parecido com threshold signatures usando técnicas inspiradas nas assinaturas cegas do Chaum. Dessa reflexão surgiu uma variação que chamamos de blinded-key signatures. Esse acabou se tornando o tema central da minha tese: definir e analisar um esquema criptográfico para esconder chaves públicas e explorar protocolos e possíveis usos dessa ideia.
Naquela época, uma grande parte da pesquisa em computação estava focada no conceito de agentes móveis. A visão era de que a internet se tornaria apenas uma infraestrutura, e que o código iria até onde os dados estivessem. Imaginava-se, por exemplo, agentes que viajariam por sistemas de companhias aéreas para buscar passagens, ou que seriam enviados a ambientes financeiros para executar operações e depois retornar com os resultados. Imaginava-se uma bolsa de valores que seria um ambiente computacional para onde poderíamos mandar nossos agentes para negociar por nós. Um dos grandes problemas era como permitir que esses agentes assinassem contratos ou acordos. Colocar uma chave de assinatura dentro do agente não era seguro, já que ela poderia ser extraída pelo hospedeiro e usada de forma não autorizada. A nossa ideia era esconder essa chave de tal forma que, mesmo se capturada, ela tivesse pouco ou nenhum valor prático. Foi nesse contexto que o esquema da tese tomou forma.
Conselhos que ninguém pediu mas que vou escrever mesmo assim:
- Ao escolher um tema de tese, é sempre vantajoso ter um tema que se seja parte do tema principal de pesquisa do seu orientador ou laboratório. Isso lhe permitirá ter mais trocas com os colegas e mais ajuda do orientador. Trabalhar em um tema novo como eu decidi fazer é um caminho mais solitário e você pode se deparar com problemas que ninguém vai conseguir te ajudar a resolver.