O NeoMatrix Tech está de casa nova!

Você deverá ser redirecionado em 6 segundos. Se não, visite:
http://www.leonelfraga.com/neomatrixtech
e atualize seus favoritos.

Aviso IMPORTANTÍSSIMO!

Aviso aos navegantes:

O NeoMatrix Tech mudou de casa!!!

A partir de agora, acessem pelo novo endereço:

http://www.leonelfraga.com/neomatrixtech

Ué... mas é só o domínio mudou de lugar?

R: Na verdade, não é bem assim hehe. Este domínio que você acessa agora aponta para um blog hospedado no Blogger, enquanto no novo, aponta para um blog na plataforma Wordpress, hospedagem própria, muito mais rápida e com um layout mais agradável de ler ;)

Não vou fechar este domínio igual ao que eu fiz com o NM Light (que já está 100% na nova plataforma). Talvez beeeeeeem depois eu faça isso.

Todos os posts daqui se encontram lá, e novos posts serão colocados somente no novo endereço.
A única coisa que não consegui importar foram os comentários. Mas em breve vai ter um post contando sobre a epopéia que foi migrar o NeoMatrix Tech!

Somente vou fechar a área de comentários daqui. Caso queiram comentar, favor ver o post correspondente no "Novo NeoMatrix Tech" e comentem por lá. É bem melhor! (pena que os permalinks "amigáveis para SEO" não funcionam lá, dá erro 404 e não consigo fazer a configuração funcionar. E olha que eu já vi vários artigos falando desse assunto :( ).

Quem assina o feed, já está lendo o conteúdo do novo NeoMatrix Tech!

segunda-feira, 15 de fevereiro de 2010

De onde você baixa seus programas?

image

Quando você quer baixar um programa da Internet e você sabe exatamente qual programa baixar, em qual lugar você o procura primeiro?

Não vale dizer que é do Google, hein!

Tá, pode dizer que é pelo Google (ou outro buscador, para não ser monopolista ;) ), mas o X desta questão é: você baixa o programa a partir de seu site oficial ou de um site de downloads?

Desde antes da Web, os BBSs eram a nossa fonte de loucupletação onde baixávamos nossos programas (eu não peguei essa época); daí com a profusão da Web surgiram alguns sites de download, sendo os mais famosos o Tucows e o Download.com da CNET.

Aqui em Terra Brasilis não é muito diferente. Os dois maiores exemplos de “agregadores de downloads” são o Baixaki, hoje pertencente ao portal Terra, e o Superdownloads, do iG.

Os sites contam com uma grande variedade de programas para serem baixados, acompanhados de descrição, resenha, informações sobre a licença, comentários dos usuários, entre outros serviços.

Estes sites, na minha opinião, são feitos mais para atender ao público leigo em informática. Não que isso seja ruim, muito pelo contrário, pois são uma fonte segura de onde estes usuários poderão baixar os programas com um risco menor de contrair pragas virtuais.

Eu mesmo baixo, conforme a necessidade, programas por essas vias, de sites como o Softpedia, e até mesmo dos supracitados Baixaki e Superdownloads, mas, em primeiro lugar, como um usuário avançado, prefiro primeiro procurar o site oficial do programa, na minha opinião, a melhor fonte de download de um determinado programa.

Baixar a partir do site oficial conta com a vantagem de se obter a versão mais atualizada do programa em questão, e além disso, ver a planilha de recursos, quais foram as modificações realizadas em relação às versões anteriores, ver questões de licenciamento, entre outras coisas.

Só que dependendo do programa, um impecilho para os usuários mais leigos baixarem a partir do site oficial é o idioma.

O “Mundo Linux” conta com os repositórios, onde com alguns cliques, sem acessar um navegador de Internet, temos à disposição milhares de programas para serem baixados e automaticamente instalados. Mas, isso vai depender muito de qual distribuição você estará utilizando, os pacotes e repositórios podem diferir muito entre elas. Mas eles também são uma fonte confiável.

E você, a partir de quais fontes costuma baixar seus programas?

Leia o restante deste post...

sexta-feira, 5 de fevereiro de 2010

Assinando arquivos com certificados do tipo A3 (smartcard / token)

Já aprendermos como assinar arquivos digitalmente, no formato PKCS #7 a partir de certificados X.509 instalados através de arquivos .pfx, ou seja, certificados do tipo A1.

Programa SafeSign com um e-CNPJ A3 plugado

Os certificados do tipo A3 são armazenados em hardware, tais como smartcards (cartões inteligentes) e tokens (parecido com um pendrive). Para utilizá-los, primeiramente é necessário instalar os drivers necessários: driver do cartão / token e driver da leitora.

Após a instalação destes pré-requisitos, ao espetar o token na USB ou colocar o cartão na leitora, os certificados armazenados nestes dispositivos são exibidos pelo Gerenciador de Certificados do Windows, como mostra a imagem abaixo:

Gerenciador de Certificados do Windows

Veja só onde ele aparece: No armazenamento “Pessoal” do usuário que está logado na máquina! E ele pode ser acessado através da classe X509Store :).

Se você já teve a curiosidade e testou os códigos presentes na classe SignWrappers que foi postada anteriormente, ao passar um certificado do tipo A3 para o método SignFile você pode ter ficado decepcionado, pois dá uma mensagem de erro com alguma coisa remetendo a um modo silencioso (não me lembro da mensagem exata hehe).

E se você notou, cada vez que você utiliza o certificado A3 em um programa para assinar arquivos, como a suite Microsoft Office, ele sempre pede a senha PIN do certificado, coisa que não ocorre na nossa classe de assinatura digital.

Meus queridos, estes problemas podem ser resolvidos com uma minúscula alteração no método SignFile da nossa classe SignWrappers! Veja o código:

public static byte[] SignFile(X509Certificate2Collection certs, byte[] data)
{
	try
	{
		ContentInfo content = new ContentInfo(data);
		SignedCms signedCms = new SignedCms(content, false);
		if (VerifySign(data))
		{
			signedCms.Decode(data);
		}
		foreach (X509Certificate2 cert in certs)
		{
			CmsSigner signer = new CmsSigner(cert);
			signer.IncludeOption = X509IncludeOption.WholeChain;
			signedCms.ComputeSignature(signer, false);
		}
		return signedCms.Encode();
	}
	catch(Exception ex)
	{
		throw new Exception("Erro ao assinar arquivo. A mensagem retornada foi: " + ex.Message);
	}
}

Neste post tem o funcionamento completo da classe. A adição que fizemos foi passar o parâmetro “Silent”, do tipo booleano, no método ComputeSignature do objeto SignedCms. E o que ele faz?

Caso passemos true, a assinatura será calculada sem intervenção do usuário, ou seja, a senha para acessar a chave privada do(s) certificado(s) deverá(ão) ser informada(s) junto com o certificado. Isso é válido para os certificados A1, vide sobrecargas do método SignFile que possui passagem de senha.

Um certificado A3 geralmente pede a senha PIN (utilizada para acesso aos objetos privados do token / smartcard) através de uma caixa de diálogo do driver do dispositivo, e caso o método ComputeSignature esteja em modo silencioso, esta caixa não será exibida e disparará uma exceção com a mensagem de erro informando a respeito.

Para que a caixa de diálogo do PIN apareça quando o método ComputeSignature for chamado, devemos passar false como valor do parâmetro Silent do ComputeSignature.

E então é isso! Um grande abraço ;)

Ah, e na próxima vamos fazer um programinha que assina arquivos? ;)

Leia o restante deste post...

domingo, 31 de janeiro de 2010

Verificando uma assinatura digital PKCS #7 com C#

Há algum tempinho atrás, postei uma classe com métodos estáticos cuja finalidade é empacotar arquivos com assinatura digital em uma mensagem PKCS #7, utilizando certificados padrão X.509.

Em um dos comentários daquele post, fui questionado sobre como fazer a verificação da validade dessa assinatura digital.

Opa, mas na classe tem um método chamado VerifySign, que verifica se existe a assinatura em um arquivo que é passado como parâmetro. Sim, você leu direito: ele verifica apenas a existência da assinatura, não a sua validade.

Dando uma pesquisada, achei o método CheckSignature do objeto SignedCms, que faz exatamente o que o nosso leitor quer: verificar a validade da assinatura digital. Vamos ao código:

public static bool VerifySign2(byte[] data)
{
	try
	{
		SignedCms signed = new SignedCms();
		signed.Decode(data);
		signed.CheckSignature(true);
	}
	catch
	{
		return false;
	}
	return true;
}

Chamei-o de VerifySign2, para não “quebrar” o propósito do outro método.

A única adição que é necessária fazer ao método VerifySign existente no outro post é a chamada do método CheckSignature do objeto da classe SignedCms, que verifica a validade da assinatura digital, e recebe como parâmetro um booleano que indica se será verificada apenas a validade da assinatura (true) ou se além da validade da assinatura também serão verificados os dados dos certificados empregados, tais como a validade, revogação, propósito da chave privada, entre outros.

Vamos dar uma recapitulada no funcionamento do método VerifySign, já incluindo esta pequena adição.

O método recebe como parâmetro um arquivo qualquer, assinado ou não, e cria uma instância da classe SignedCms na variável signed, que manipula mensagens PKCS #7.

Em seguida, chamamos o método Decode() passando como parâmetro este arquivo. Ele serve para decodificar a mensagem PKCS #7, de maneira que possamos acessar os certificados utilizados para acessar o arquivo e o arquivo em si, para poder “detachá-lo” da mensagem PKCS #7.

Se o arquivo não contiver uma assinatura digital, será disparada uma exceção do tipo CryptographicException, que será interceptada pelo “catch” e fará o nosso método retornar false. Neste caso o retorno é false causado pela não existência de assinatura digital.

Se o arquivo estiver assinado, chamaremos o método CheckSignature do objeto “signed”, informando que apenas queremos verificar a validade da assinatura digital, sem verificar os detalhes dos certificados (se passarmos false, o processo de verificação dos certificados requer uma conexão com a Internet – o que nem sempre é possível -, para verificação de lista de certificados revogados – geralmente no servidor da entidade que emitiu o certificado - entre outras coisas).

Interessante é que este método retorna void! Caso a assinatura seja inválida, por exemplo, o arquivo foi alterado depois de assinar, também será disparada uma exceção do tipo CryptographicException, que será interceptada pelo “catch” e fará com que o nosso método VerifySign retorne false.

Caso o método não dispare nenhuma exceção, ele retornará true, informando que a assinatura digital é válida.

Simples, não é?

Abraços!

Leia o restante deste post...

quinta-feira, 14 de janeiro de 2010

Um MVP no mundo do Software Livre? Sim, o Miguel de Icaza é o cara!

MVP Se os evangelistas mais radicais da filosofia do Software Livre (a.k.a. freetards) já andavam com um pé atrás com fato de Miguel de Icaza, o co-fundador GNOME (um dos ambientes gráficos mais utilizados na plataforma Linux), desenvolvedor da plataforma de desenvolvimento MONO, vice-presidente da Novell (sim, aquela mesma que é – ou era – a top nas redes corporativas), querer trazer para o mundo Linux coisas do mundo Microsoft, agora eles tem motivo para ficar com os dois pés atrás.

Ele foi nomeado com o título de MVP, que é concedido pela Microsoft à pessoas que são consideradas (por processo de indicações, avaliações, etc) como sendo líderes de comunidades que se destacam por voluntariamente disponibilizar seu conhecimento àqueles que apoiam produtos e tecnologias da Microsoft.

Icaza foi o cara que implementou a idéia de portar a plataforma .NET para o Linux através do Mono, que a esta altura do campeonato está maduro o suficiente para que várias aplicações sejam criadas, e postas em produção, em cima dele.

Só este fato faz brotar nos freetards um sentimento de ódio, nutrido pelo simples fato de que algo feito pela Microsoft seja incorporado ao mundo do Software Livre.

Várias “teorias da conspiração” (a.k.a mimimi) já foram ditas, como por exemplo, “planos malígnos da Microsoft para processar quem usa software livre a torto e direito”, rotulado Icaza como “traidor do movimento”, entre outros.

Certa vez, Icaza disse, em uma entrevista para a Info Exame (trecho da edição de Julho de 2003):

“No mundo do código aberto, as pessoas partem do princípio de que tudo que a Microsoft faz é ruim, que tudo que eles tocam é ruim. Isso é ridículo. Você não deve olhar as coisas simplesmente sob a perspectiva de onde elas vem. Acho que não devemos dar adjetivos como bom ou ruim para as coisas por causa de política ou de valores errados”.

Já faz quase sete anos, isso mesmo, QUASE SETE ANOS que ele fez essa citação e as coisas continuam iguais!

Tá certo, que no passado, a Microsoft tenha feito práticas comerciais nada adequadas, que dilaceraram a concorrência e tal, mas hoje, a coisa está um tanto diferente, em uma época onde o povo tem um maior acesso às informações e pode queimar uma empresa rapidamente.

Até a Microsoft, está bem mais amigável com o mundo do Software Livre, tendo como exemplos o portal CodePlex, o auxílio ao pessoal do Samba, doações à Fundação Apache, entre outras iniciativas.

Esse título de MVP dado ao Icaza, na minha opinião, é uma prova de reconhecimento ao seu trabalho por “intermediar” esses dois mundos tão distintos, o do SL e a MS.

Tem que ter coragem para fazer o que esse cara fez, indo contra a grande maioria dos pregadores da filosofia do Software Livre.

Se o .NET é uma coisa boa (sim, EU acho), a especificação é aberta, está padronizada na ISO, por que não criar N implementações?

Então, para terminar, #CHUPA Feetards! :P

Um abraço!

Fonte: BR-Linux

Leia o restante deste post...

terça-feira, 12 de janeiro de 2010

Nokia: Disconnecting People

image

Este começo de 2010 está sendo um tanto quente para a blogosfera brasileira

Primeiro, um kibador (um FDP de marca maior) fez com que a autora de um dos metablogs que é referência para quem usa a plataforma Blogger (NeoMatrixes inclusos), o Dicas Blogger, perdesse o “tesão” de continuar a postar o conteúdo que ajuda a muita gente.

De tanto ser plagiada, e ainda mais com o capivara contando vantagens, chegou uma hora que cansou. Não é para menos.

Outro caso que está quente no momento é o fechamento do blog NokiaBR através de uma ação extrajudicial enviada pela Nokia da Finlândia, através de adEvogados brasileiros, que obrigou o dono do mesmo a retirar o blog do ar e cancelar o domínio.

O motivo alegado é o uso indevido da marca Nokia, o que pode confundir os consumidores, e blá blá blá.

E olha que a Nokia do Brasil reconhecia o blog, enviava aparelhos para análise, o dono fazia um trabalho melhor do que o suporte da Nokia no que diz respeito a indicar soluções para os vários problemas dos usuários…

Eles até escreveram um comunicado, pedindo desculpas, querendo uma solução amigável, mas agora a cagada já está feita. Os heavy-users são os mais antenados no mundo dos blogs, e inúmeras postagens negativas (inclusive esta) já estão na Internet para todo o mundo ver.

Merda no ventilador se espalha mais rápido do que penas, ou seja, uma propaganda negativa tem um peso muito maior do que uma positiva, na minha opinião. Principalmente se a propaganda negativa foi gerada por um motivo, digamos assim, tosco.

Defender a marca contra uso INDEVIDO, pirataria, ok. Era o caso de chamar o cara para conversar ANTES dos advogados entrarem com a ação.

Foi um tiro no pé. Eu tenho o meu N95 de primeira geração e estou satisfeito com ele, porém confesso que já estou querendo trocar de celular, e até penso seriamente em pegar um iPhone, embora eu seja bem reticente às restrições que a Apple coloca nos seus produtos (ou recursos/funções que existem em celulares mais “toscos” e que não são implementados nos produtos da Apple).

É… a Nokia está desconectando as pessoas…

Fontes: MeioBit, BR-Linux, Contraditorium

Leia o restante deste post...

Sobre o NeoMatrix Tech

Meu blog para assuntos profissionais, ligado com tecnologia.
Dicas de programação (grande parte de C# e ASP.NET, mas não limitado a essa plataforma :-) ), dicas de utilitários, análises de equipamentos e serviços, resenhas sobre sites que eu visito, relacionados com tecnologia, opinião sobre mercado de trabalho, metodologias de desenvolvimento, comportamento no mundo tecnológico...

NeoMatrix Light

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008 - Editado e configurado por Leonel F.

Voltar ao TOPO