Nesta seção são mostrados os conceitos utilizados no desenvolvimento de algumas funções computacionais, cujo objetivo consiste em obter um ambiente de simulação realista para o protocolo de criptografia quântica baseado no protocolo BB84 e nos de- senvolvimentos teóricos realizados anteriormente. Esse intuito é alcançado por meio da simulação das ações de Alice, Bob e Eva e dos canais entre eles. A seguir são dis- cutidas as definições utilizadas na implementação das funções de simulação para esses diferentes atores, utilizando a mesma notação para as variáveis de simulação verificada na codificação das funções. O código referente a definição do escopo das funções é mostrado em maiores detalhes no apêndice C.
7.1.4.1 Alice
Alice é quem inicia o protocolo, devendo se comunicar com Bob de forma a es- tabelecer uma chave aleatória com segurança. Isso é feito por meio do procedimento descrito na seção 4.1.
Em um primeiro passo, Alice deve preparar a sequência inicial de qubits aleatórios. Tal ação pode ser implementada por meio da função randomSequence, que gera duas
sequências de bits aleatórias de tamanhorawSize referentes a chave a ser estabelecida
e a sequência de bases escolhidas na codificação dos qubits. Alice deve então imple- mentar essa codificação por meio da produção do feixe a ser enviado a Bob, etapa na qual deve ser considerado a limitação das técnicas de implementação atuais, que ocasi- onalmente produzem mais de um fóton por pulso. A função photonSource, utilizando
a distribuição de Poisson, indica para uma dada intensidade de feixe escolhida em quais pulsos produzidos por Alice há mais de um fóton.
Após o término do recebimento da sequência de qubits por Bob, Alice deve então anunciar publicamente a sequência de bases utilizadas no processo de codificação para que, juntamente com Bob, elimine os bits em que Bob utilizou uma base diferente para realizar a medição. Essa ação consiste no segundo passo e é realizada por meio da função basesVerification, que executa a comparação entra as bases anunciadas por
Alice e Bob e retorna as posições em que a medida de Bob foi realizada na base correta, gerando a sequência intermediariasiftedKey.
O terceiro passo realizado por Alice consiste na verificação de erros. Para isso é uti- lizada a funçãobitsDivulgedque seleciona aleatoriamente um subconjunto de tamanho testSizeda sequênciasiftedKeye compara publicamente os valores correspondentes
entre os subconjuntos de Alice e Bob. Com isso é calculado e erro observado no sub- conjunto por meio de equação (7.1). Os bits anuciados no processo são descartados após esta etapa.
No quarto passo Alice e Bob, possuem privadamente suas sequênciassiftedKey,
que devido ao ruído introduzido na comunicação é parcialmente correlacionada. Para a correção de erros é realizado o processo de reconciliação por meio da variação do algoritmo Cascade proposto em 4.1.2.5. O processo é realizado por meio de três funções. A primeira função, parityCheck testa a paridade entre dois blocos de ta-
manho vectorPosition de sequências distintas, anunciando publicamente o bit de
paridade para cada bloco. Uma segunda função, binaryAction, utilizando a função parityCheck, executa a primitiva iterativa BINARY proposta em 4.1.2.5, que localiza
e encontra possíveis erros no bloco iniciado na posição vectorPosition e de tama-
nho blockSize. Por fim, a função biconfirmAction executa a primitiva iterativa BICONFIRMsproposta em 4.1.2.5, tomando um subconjunto aleatório de duas sequências
7.1 Implementação um protocolo de criptografia quântica 143
distintas e executando a primitivaCONFIRMsobre este.
A etapa seguinte consiste na execução do procedimento de amplificação de privaci- dade, tal como proposto em 4.1.2.6. Para isso é utilizada a funçãouniversalHashque
toma aleatoriamente um bloco de bits de tamanho randomBlockda chave estabelecida
após o procedimento de reconciliação de informação, calcula sua paridade e registra o valor, executando este processo um número de vezes igual a hashSize. A chave final
obtida tem tamanho igual a hashSize, sendo a relação entre estes valores mostrada na
seção 7.2 7.1.4.2 Bob
Sendo Bob a contraparte de Alice no protocolo, algumas funções utilizadas para descrever sua ação são semelhantes aquelas utilizadas para Alice.
No primeiro passo, Bob deve obter uma sequência aleatória para as bases que uti- lizará na medição dos qubits enviados por Alice, fazendo isso por meio da função
randomSequence. Em um segundo passo, Bob realiza a medição dos estados envia-
dos por Alice de acordo com as bases obtidas anteriormente, fazendo isso por meio da função bitColapseque implementa o colapso de estados probabilisticamente. Como
resultado da operação Bob obtém a sequênciasiftedKey.
Os passos seguintes executados por Bob são equivalentes aqueles executado por Alice, utilizando por isso as mesmas funções descritas anteriormente para Alice, con- siderando como entrada as correlacionadas mais ainda distintas sequências siftedKey
que Alice e Bob pretendem compartilhar. 7.1.4.3 Eva
Eva age entre Alice e Bob tentando adquirir o máximo de informação possível da chave compartilhada entre eles. Dessa forma, as ações relacionadas a Eva estão as- sociadas aos possíveis ataques que podem ser efetuados contra o protocolo quântico. A primeira abordagem consiste na interferência ativa na sequência de qubits enviada por Alice, representada por uma medição dos qubits capturados e posterior reenvio a Bob. Essa ação é realizada por meio da funçãorandomSequence, que neste caso é uti-
lizada para executar uma seleção aleatória dos qubits enviados por Alice, e a função
bitColapse, utilizada para definir o colapso de estados. Com o intuito de analisar o
pior caso, é considerado que Eva possui um detector ideal, não inserindo erro em sua medida.
Uma segunda abordagem é representada pela execução de um ataque do tipo beam- splitting. Como visto anteriormente, este ataque está relacionado a imperfeição intrín- seca das fontes de fótons desenvolvidas até o momento. Estas fontes tem uma distruição de probablidade de se encontrar mais de um fóton por pulso definida pela distrubuição de Poisson. A definição do procedimento de amplificação de privacidade, realizada na seção 4.1.2.6, trata adequadamente a existência da informação extra que é divulgada na produção de fótons, tornando esta inútil. Com isso, no ambiente de simulação é consi- derada uma fonte de fótons com probabilidade dada pela distrubuição de Poisson. Isso é feito por meio da função photonSource, que aplica essa distribuição à sequência de
qubits produzidos por Alice. 7.1.4.4 Canal
A implementação do comportamento do canal está relacionada a eficiência com que o meio físico escolhido executa o transporte dos fótons preservando seus estados iniciais. As técnicas atuais invariavelmente inserem ruído na transmissão dos qubtis. Sendo assim, é utilizada a função randomErro que insere aleatoriamente uma taxa de
errosphysicalRatena sequência de fótons codificadas por Alice.
7.1.4.5 Encaminhador quântico
O elemento adicional representado pelo Encaminhador de Distribuição de Chaves Quânticas, apresentado na seção 6.1, é necessário na simulação de um cenário realista de aplicação de criptografia quântica. Como discutido anteriormente, o comportamento desse elemento é essencialmente o mesmo executado por Bob, sendo por isso utilizadas as mesmas funções daquele na obtenção do seu comportamento.