LU para o método revisado [90]. Mas novamente, devido a matrizes muito esparsas e à comunicação intensa, o algoritmo Simplex Revisado com decomposição LU dificilmente consegue um bom speedup, mesmo com padrões de paralelização cuidadosamente escolhidos e otimização na comunicação [90].
2.1.3.3 Métodos de Ponto-Interior
Outra possibilidade para a resolução de problemas de programação linear são os métodos de Ponto-Interior [58, 96]. O elemento básico destes métodos consiste em uma função de barreira auto- concordante que é utilizada para codificar o conjunto convexo. Ao contrário do método Simplex, estes métodos buscam por uma solução ótima percorrendo o interior da região factível.
Uma grande vantagem destes métodos é que estes requerem um número de iterações que é praticamente independente do tamanho do problema [53]. As melhorias devido ao uso de tais métodos são diretamente influenciadas pela estrutura do problema. Os métodos de Ponto-Interior exploram a densidade das matrizes identificando certas estruturas de bloco pré-definidas e aplicando soluções especiais para casos conhecidos.
Em [53] os autores propõem uma implementação baseada em orientação a objetos para um método de ponto-interior que é executado em paralelo. Eles incorporam o conceito de polimorfismo definindo diferentes classes que são, então, responsáveis por resolver problemas específicos, possibili- tando ao método a resolução de uma grande variedade de problemas.
Os resultados são consideravelmente bons: aproximadamente linear sobre o número de processa- dores. No entanto, os resultados dependem diretamente da estrutura do problema, i.e., densidade da matriz que representa o sistema.
2.2
Sistemas Criptográficos Probabilísticos e
Homomórficos
O objetivo da criptografia é assegurar a confidencialidade e a integridade dos dados tanto durante a comunicação quanto durante seu armazenamento. A impossibilidade do uso da criptografia em dispositivos com certas restrições de funcionamento, como restrições na capacidade de processamento, tem feito com que recursos adicionais sejam considerados, como a habilidade de delegar computações a máquinas de apoio. Neste tipo de cenário, seria desejável fornecer a tal computador não confiável apenas uma versão criptografada dos dados. Este deveria então ser capaz de executar todas as operações necessárias usando apenas os dados criptografados, sem nada saber a respeito dos valores reais. Ao fim, tal computador enviaria de volta o resultado e, somente aí, os dados seriam decifrados. De maneira coerente, os dados decifrados (resultado da computação) devem ser iguais aos dados resultantes de uma computação usando os dados originais (em claro). Para que isto seja possível, o esquema criptográfico precisa apresentar uma certa estrutura.
Rivest et al. propuseram resolver este problema, em 1978, fazendo uso da chamada criptografia homomórfica [84]. Em 1987, Brickell e Yacobi identificaram certas falhas de segurança na proposta de Rivest et al. [12]. Desde a primeira tentativa, muitos outros artigos científicos propuseram soluções para as mais diversas aplicações: compartilhamento de segredos, esquemas baseados em limiar (ver e.g., [82]), zero-knownlegde proofs (ver, e.g., [31]), oblivious transfer (ver, e.g., [70]), commitment schemes (ver, e.g., [82]), anonimato, privacidade, votação eletrônica, leilões eletrônicos, protocolos para loterias (ver, e.g., [44]), proteção de agentes móveis (ver, e.g., [87]), computação multi-parte (ver, e.g., [50, 97]), e outros mais.
Antes de apresentar de maneira detalhada sistemas criptográficos probabilísticos e homomórficos, introduz-se algumas definições. Uma chave criptográfica corresponde a uma porção de informação (ou parâmetro) que determina o resultado de um algoritmo criptográfico. Sem a chave, o algoritmo não teria resultado. Texto em claro corresponde à informação que um emissor deseja enviar a um dado receptor. Texto criptografado, por sua vez, corresponde ao resultado do processo pelo qual a informação (ou texto em claro) é transformada, com o uso de um algoritmo, de modo a tornar-se secreta ou não legível a todos excetuando-se aqueles que possuem um conhecimento específico, comumente chamado de chave. No que se refere ao processo de cifragem, a chave especifica uma transformação particular do texto em claro para o texto criptografado, ou vice-versa (processo de decifragem).
2.2.1 Criptografia Probabilística
Os sistemas criptográficos mais conhecidos são os sistemas ditos determinísticos, ou seja, para uma chave criptográfica fixa, a cifragem de um mesmo texto em claro resultará sempre no mesmo texto criptografado [43].
De maneira informal, um esquema de criptografia probabilístico é aquele no qual com uma probabilidade > 0 o resultado de duas crifragens da mesma mensagem utilizando-se as mesmas chaves resultam no mesmo texto criptografado. Em outras palavras, a cifragem probabilística de uma mensagem m possui sempre um número aleatórico r como entrada. O primeiro esquema de criptografia probabilística foi proposto por Goldwasser e Micali em [52] (para uma descrição detalha favor referir-se a [52]).
A utilização de um sistema criptográfico probabilístico garante que nenhuma informação a res- peito do texto em claro pode ser obtida a partir do texto criptografado. Além disso, esse sistema, quando combinado com um sistema homomórfico, oferece a possibilidade de esconder uma cifragem. Esta propriedade será apresentada na seção seguinte.
2.2.2 Cifragem Homomórfica
Seja M (resp., C) o conjunto de textos em claro (resp., ciphertexts). Um esquema criptográfico é dito homomórfico se para qualquer chave criptográfica k a função (transformação) de criptografia E satisfaz a seguinte condição
∀m1, m2 ∈ M, E(m1Mm2) ← E(m1) CE(m2)
para certos operadores M in M e C in C, onde ← significa "pode ser diretamente computado
de", ou seja, sem que seja necessário nenhum processo de decifragem intermediário [43].
Se (M, M) e C forem grupos, tem-se um homomorfismo de grupo. Homomorfismo de grupo
é um homomorfismo entre dois grupos. Um grupo é uma estrutura algébrica consistindo de um con- junto qualquer de elementos e uma operação (adição, por exemplo) que combina dois elementos do conjunto a fim de formar um terceiro elemento, também contido no conjunto. Diz-se que um esquema é homomórfico na adição se forem considerados operadores de adição e homomórfico na multiplicação se consideram-se operadores multiplicativos.
Além disto, é interessante a obtenção de homomorfismos de anel ou algébricos. Homomorfismo de anel é um homomorfismo entre dois anéis. Um anel é definido como uma estrutura algébrica consistindo de um conjunto qualquer de elementos e duas operações binárias (usualmente adição e multiplicação), no qual cada operação combina dois elementos do conjunto a fim de formar um terceiro elemento, também contido no conjunto. Tais esquemas são capazes de satisfazer a seguinte relação:
∀m1, m2 ∈ M, E(m1+Mm2) ← E(m1) +CE(m2),
E(m1×Mm2) ← E(m1) ×CE(m2).
De maneira menos formal, homomorfismo criptográfico ou cifragem homomórfica implica que, para uma chave fixa k, é equivalente executar operações sobre os textos em claro antes da cifragem, ou opearções (possivelmente diferentes) sobre os correspondentes textos criptogrados. Então é necessário haver uma certa comutatividade entre as operações criptográficas e as operações de processamento dos dados. Para tal, consideram-se apenas esquemas probabilísticos e, ainda, considera-se que E se comporta como definido nas relações acima.
Durante o decorrer deste trabalho será utilizado o sistema criptográfico probabilista e homomór- fico proposto por Paillier em [77] (para uma descrição detalhada e provas, por favor referir-se a [77]). O esquema proposto por Paillier é um sistema criptográfico homomórfico na adição, o que significa que, para uma dada chave pública e textos criptografados E(m1) e E(m2), pode-se calcular, de maneira
direta, o valor de m1+ m2 sem que seja necessário revelar os valores de m1 ou m2 (decifrar).
Outra propriedade muito útil dos esquemas de criptografia probabilísticos e homomórficos, tam- bém presente no esquema de Paillier, é a habilidade de esconder uma cifragem. Em alguns protocolos (e.g., Garay and Schoenmakers em [46]) as partes envolvidas precisam fazer um broadcast de uma