Iniciação científica

No meio do meu segundo ano do curso de computação, decidi que queria fazer uma iniciação científica. Para um aluno de graduação, aquilo era o topo da cadeia alimentar. Estágio fora do departamento não dava muito acesso interno; monitoria ajudava um pouco, mas a iniciação científica era diferente. Trazia um certo status e, mais importante, acesso privilegiado: havia uma sala exclusiva para os participantes do programa, com computadores que podíamos usar sem competir com o resto dos alunos. Dependendo do professor, a iniciação dava acesso também a um laboratório de verdade, cheio de máquinas e equipamentos especiais que a maioria dos estudantes nem chegava a ver.

Para participar era preciso ter um projeto e se inscrever dentro do prazo, perder a data significava esperar mais um ano. Quando anunciaram que as inscrições iam abrir, comecei a procurar professores. Primeiro fui falar com o professor Bauer, com quem eu já tinha tido algum contato quando descobrimos os vírus no laboratório do curso. Eu disse que queria fazer um projeto na área de vírus, mas ele respondeu algo como: “tudo bem, escreva um projeto e traga aqui”. Só que eu era um aluno do segundo ano, sem a menor ideia de como escrever um projeto de pesquisa, muito menos um sobre vírus. E não havia ninguém no departamento trabalhando formalmente nesse tema.

Fui também conversar com outros professores. Entre eles, o professor Márcio Bunte, que nos havia ensinado o algoritmo RSA, mencionado em outro capítulo. A conversa foi bem diferente. Ele entendeu que eu estava nos anos iniciais e explicou que criptografia não era a área dele. Sua área era computação paralela e de alto desempenho. Ainda assim, sugeriu um tema que cruzava as duas coisas: estudar geração de números primos em máquinas de processamento paralelo. Esse acabou sendo nosso projeto.

O projeto foi aceito e passei a receber bolsa. Entrei oficialmente no grupo de computação paralela do Departamento de Ciência da Computação da UFMG. O grupo tinha um laboratório próprio: finalmente eu tinha um lugar tranquilo para trabalhar, sempre com computador disponível e com máquinas às quais poucos tinham acesso. Foi lá que conheci, por exemplo, a workstation da Silicon Graphics, que me foi apresentada pelo Yuri. Aquilo era de outro mundo: gráficos em 3D, áudio de altíssima qualidade, animações 3D rodando na tela — tudo o que um estudante dos anos 90 sonhava em ver num computador. Também tinha um servidor estranho num canto, que descobri depois ser um coprocessador vetorial. Era tão avançado que ninguém sabia usar direito.

Voltando ao projeto: para gerar números primos, o primeiro passo era ter bons geradores de números aleatórios. Então mergulhei no estudo de algoritmos de geração de números pseudoaleatórios, implementei vários e depois precisei descobrir como comparar os resultados. A revisão bibliográfica me levou a um método visual que virou meu preferido, embora não fosse o mais rigoroso cientificamente. A ideia era simples: usar pares (ou trios) de números aleatórios como coordenadas e plotá-los num gráfico. Bons geradores produzem uma nuvem uniforme de pontos; os ruins revelam padrões — linhas, aglomerados, estruturas geométricas. Em 2D muitos algoritmos passam no teste; em 3D vários começam a falhar. Os gráficos ficavam lindos e ver padrões surgindo onde não deveria haver padrão nenhum era fascinante.

Depois desse projeto, veio outro: meu trabalho de conclusão de curso, que foi sobre o protocolo Kerberos. Kerberos é um protocolo de autenticação baseado em criptografia, criado no MIT em 1988 e usado até hoje. O projeto consistia em estudar seu funcionamento e colocar a teoria em prática. Na época, um dos problemas dos laboratórios era controlar o acesso às impressoras e limitar o número de páginas por aluno. Então implementei um sistema de impressão que usava Kerberos “por baixo dos panos” para autenticar o usuário e contabilizar suas páginas. Funcionou o suficiente para passar na disciplina, mas não estava pronto para produção, porque a infraestrutura da rede ainda não usava Kerberos e muita coisa ainda precisava ser montada.

Ainda assim, foi o suficiente para ser a minha porta de entrada no mágico mundo da criptografia.