segunda-feira, setembro 28, 2009

Segurança...

Este artigo que mostra o quanto estamos expostos no dia a dia do que é postado no Orkut.

Uma ótima leitura (e reflexão) a todos!

http://materiasjuridicas.wordpress.com/2009/09/28/os-perigos-do-orkut/

sexta-feira, setembro 18, 2009

PGCon Brasil 2009

As inscrições estão abertas para o PGCon (caso não saiba o que é, ai está uma ótima oportunidade pra descobrir).

Inscrições para o PGCon Brasil 2009

Sucesso pra todos no evento.

domingo, setembro 13, 2009

[java] Validador Schemas

Código funcional e com riqueza de detalhes que facilitam a vida do desenvolvedor.


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package validadorxml;

import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Schema;
import javax.xml.XMLConstants;
import javax.xml.transform.sax.SAXSource;
import org.xml.sax.InputSource;
import javax.xml.validation.Validator;
import java.io.*;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.ErrorHandler;

/**
*
* @author Armando Roque
* Copy´nPaste: http://www.herongyang.com/XML-Schema/JAXP-XSD-Schema-XML-Validator-Final-Version.html
* Tradução livre pt-br
*
*/
public class Main {
private static int errorCount = 0;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length<2) {
System.out.println("Use:");
System.out.println("java -jar ValidadorXML nome_do_arquivo_do_schema.xsd "
+ "nome_do_arquivo.xml");
} else {
String schemaName = args[0];
String xmlName = args[1];
Schema schema = loadSchema(schemaName);
validateXml(schema, xmlName);
}
}
public static void validateXml(Schema schema, String xmlName) {
try {
// creating a Validator instance
Validator validator = schema.newValidator();

// setting my own error handler
validator.setErrorHandler(new MyErrorHandler());

// preparing the XML file as a SAX source
SAXSource source = new SAXSource(
new InputSource(new java.io.FileInputStream(xmlName)));

// validating the SAX source against the schema
validator.validate(source);
System.out.println();
if (errorCount>0) {
System.out.println("ERRO: Os seguintes erros foram detectados "+errorCount);
} else {
System.out.println("OK.");
}

} catch (Exception e) {
// catching all validation exceptions
System.out.println();
System.out.println(e.toString());
}
}
public static Schema loadSchema(String name) {
Schema schema = null;
try {
String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
SchemaFactory factory = SchemaFactory.newInstance(language);
schema = factory.newSchema(new File(name));
} catch (Exception e) {
System.out.println(e.toString());
}
return schema;
}
private static class MyErrorHandler implements ErrorHandler {
public void warning(SAXParseException e) throws SAXException {
System.out.println("Avisos: ");
printException(e);
}
public void error(SAXParseException e) throws SAXException {
System.out.println("ERROS: ");
printException(e);
}
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("ERRO FATAL: ");
printException(e);
}
private void printException(SAXParseException e) {
errorCount++;
System.out.println(" Numero da linha: "+e.getLineNumber());
System.out.println(" Numero da coluna: "+e.getColumnNumber());
System.out.println(" Mensagem: "+e.getMessage());
System.out.println();
}
}
}

sexta-feira, setembro 11, 2009

Votação, urnas, TSE...

Mais uma da série de mensagem das listas que participo.

Dessa vez na CISSP-br por Wolmer Andrade Godoi trazendo informações sobre o processo de votação, mesários e o funcionamento da urna eletrônica;

Boa tarde a todos,

Esta talvez seja a minha primeira, digamos, "manifestação" nesta lista.
Quando leio informações sobre o processo eleitoral brasileiro, urna
eletrônica ou assuntos correlatos a Justiça Eleitoral, de alguma forma
procuro entender o que está sendo dito, procuro as fontes e me intero mais
do assunto. Atuei por alguns anos na Justiça Eleitoral, com o processo
eleitoral, sistemas eleitorais e a urna eletrônica em si. Não me considero
um especialista, mas acredito ter certa bagagem no assunto.

Muito do que eu leio, normalmente, está baseado em informações corretas com
interpretações errôneas. Pegando o exemplo do Anderson no Mac/Safari e
W7/IE8, tentarei falar bem simplificadamente sobre o processo eleitoral do
momento que o eleitor vota até a apuração. As informações que descrevo aqui
são informações públicas, podem ter sofrido alterações ou terem pequenas
diferenças de estado para estado, mas acho que servem como uma referência
para que se entenda o processo como um todo.

1 - O eleitor se dirige a uma sessão eleitoral e digita seus votos na urna
eletrônica.

O que está por trás disso?

Bom, primeiro tem a urna eletrônica em si. Fabricada por uma empresa que
dentro do processo eleitoral só pode fabricar a urna e nada mais (a idéia
aqui é evitar que o conhecimento detalhado de cada parte do sistema fique
em
poder de apenas um). Tem também o sistema operacional da própria urna
eletrônica (que tem passado por alterações, no começo era VirtuOS, depois
Windows CE, hoje salvo engano está Linux), tem também o sistema eleitoral
que vai na urna, é desenvolvido por uma terceira empresa obrigatoriamente
diferente das outras duas. O interessante vem com esse terceiro sistema, o
código fonte (propriedade do TSE) é aberto aos partidos políticos, que
validam a aplicação, a mesma é compilada e assinada digitalmente em sessão
publica, uma cópia vai para popular a urna, a outra é guardada em cofre
lacrado no TSE com segredo compartilhado com os partidos. Este cofre será
aberto ao final da apuração para por amostragem (entram no sorteio todas as
urnas que foram utilizadas no Brasil) validar se o que foi utilizado no
processo eleitoral não sofreu alteração, e o que foi utilizado na eleição
foram os aplicativos corretos.

Sobre a segurança da urna antes da votação

Existe por parte da Justiça Eleitoral manipulação da urna para limpeza e
verificação do funcionamento físico da urna (bateria interna, funcionamento
de vídeo, teclado, etc.). Existe um momento em que se popula a urna com os
sistemas operacional e eleitoral. E por volta de duas semanas, (varia de
estado por estado) antes da eleição a urna é populada com as informações de
candidato e eleitores. Ou seja, no momento em que se compilam as aplicações
que vão ser utilizadas dentro da urna eletrônica, os candidatos ainda não
efetuaram seu registro de candidatura, isso quer dizer, que eles não
informaram formalmente a Justiça Eleitoral que irão participar da eleição
como candidatos (qual será seu número, etc.). Depois das informações
inseridas na urna, as mesmas são lacradas. As urnas ficam em ambiente
seguro
até serem distribuídas para a sessão eleitoral. Cada Tribunal Regional
define a melhor logística de distribuição. Via de regra a urna eletrônica
vai para a sala (sessão eleitoral) no sábado antes da eleição. Quem faz
essa
instalação pode variar, podendo ser os funcionários do cartório, os
próprios
mesários, ou outra pessoa autorizada. (todos os procedimentos podem ser
acompanhados por representantes dos partidos políticos)

Sobre a segurança da urna durante a votação

O sistema da urna trata o armazenamento dos dados em tabelas separadas.
Existe uma tabela para os eleitores e uma tabela para os candidatos. Quando
o eleitor confirma o voto (cada voto para candidato, individualmente), na
tabela de candidato, no candidato que o eleitor votou recebe mais 1 no
cômputo geral, (isto porque se a urna der algum problema, e a votação for
interrompida por qualquer motivo, o voto não é perdido). Se a urna detectar
tentativas de abertura ela trava. Quando o eleitor vota no último
candidato,
na tabela de eleitores o eleitor recebe a marcação de "votou". A urna só
recebe voto de eleitor daquela sessão, se houver a inserção de um título de
eleitor que não daquela sessão, aquele eleitor entra em uma terceira tabela
de "eleitores que justificaram a ausência na votação". Se um eleitor votar
na sua sessão e se dirigir a outra sessão para justificar o voto, no
momento
da totalização, será considerado que aquele eleitor votou. A informação de
justificativa não será válida.

Sobre a segurança da urna depois da votação

A Urna eletrônica armazena as informações em 3 lugares diferentes (o
disquete que sai da urna e vai para o sistema de transmissão e duas flash
cards). A urna não para de receber voto antes do horário final de votação.
Quando a urna é finalizada são impressos os chamados "Boletins de Urna" ou
BU, contendo o resultado daquela urna. Existe um número mínimo de vias de
BU, que são impressas. Obrigatoriamente uma via deve seguir com o disquete
para a transmissão, uma via deve ser afixada na porta da sessão eleitoral,
vias adicionais podem ser impressas para serem entregues aos representantes
dos partidos políticos, são impressas quantas vias possíveis até o limite
da
bobina de papel instalada na urna (que deve receber uma bobina nova a cada
eleição).

2 - A informação do disquete é transmitida e totalizada.

O que está por trás disso?

Processamento distribuído, as Urnas totalizam a sua própria votação, o
conteúdo do disquete quando se finaliza a votação é criptografado, assinado
digitalmente e enviado para o TRE de cada estado. No TRE existe o sistema
de
totalização que computa as informações pro município, por candidato,
estatísticas, porcentagem de comparecimento etc., relativas aquela Unidade
da Federação. Se o disquete apresentar problema, vai-se a urna daquela
sessão e regera-se o disquete baseado nas informações que estão no flash
card. (Lembre-se que toda informação publicada pelos TRE´s e o TSE pode ser
validado com o boletim de urna que está afixado do lado de fora da sessão
eleitoral). Nos TRE´s se totaliza os votos proporcionais e majoritários de
cada estado. No TSE se totaliza os votos dos presidenciáveis.

3 - Concluindo

As contratações de todos os fornecedores ocorrem através de licitação,
processo público de concorrência, qualquer um qualificado pode participar é
aberto e público. O projeto básico com os requisitos dos sistemas, urna e
etc., também é publico. A urna é construída com componentes de mercado,
placa mãe, memória, processador, é um PC personalizado. Tenta ser um
dispositivo de baixo consumo e dar autonomia de 12hs para a urna,
funcionando com bateria. Existem alguns vários outros sistemas e processos
de controle e auditoria para garantir a celeridade e segurança do processo
eleitoral que não menciono aqui.

4 - Uma visão pessoal

Não me ponho na posição de defensor da Justiça Eleitoral, acho que muito
ainda precisa ser melhorado. Mas conheço o trabalho, conheço as pessoas. Em
meu período lá lidei com pessoas muito sérias e comprometidas com o
funcionamento e o sucesso do processo eleitoral brasileiro. É claro e
evidente que tudo deve e precisa ser melhorado. Mas teorias da conspiração
a
parte, eu confio no processo eleitoral. Já ouvi bastante sobre suposições
do
tipo alguém digita uma senha e muda votos, acrescendo votos em determinado
partido ou candidato. As pessoas que supõe tal tipo de teoria estão se
esquecendo do fator humano. Lembre-se que quem manipula a urna no dia da
votação são pessoas escolhidas do povo (mesários) em um universo de
centenas
de milhares de pessoas (1,6 milhões, nesse último pleito) será que ninguém,
uma viva alma faria uma denúncia desse tipo de prática? Não vejo a urna
como
uma caixa preta. Acho que quem vê a coisa preta precisa procurar a luz. :o)
Quem quiser saber mais sobre o processo eleitoral, seu funcionamento e
sobre
as urnas, sugiro se envolver mais e se inscrever como mesário. Muito se
fala
da urna e do seu funcionamento no treinamento ministrado aos mesários.
Por fim o que eu posso dizer é que o Brasil exporta tecnologia de votação e
apuração eletrônica.

São os meus 50c.

Abraços,

Eng. Wolmer Andrade Godoi
CISSP

SyntaxHighlighter

Vou postar alguns códigos em breve e encontrei o SyntaxHighligter.

Interessante e prático...

A instalação tem um tutorial aqui!
Algumas configurações que podem facilitar a colocação do mesmo no Blogger.