quinta-feira, 30 de abril de 2015

Neste artigo vamos explorar o gerenciamento de memória no Linux para entendermos como funciona a paginação e explorar as funções de acesso a memória do espaço do usuário que usam estes conceitos. Movimentar dados entre espaço de usuário e kernel. Vamos usar tmb APIs.

Liguem suas VMs!

Uma introdução à memória e APIs de espaço do usuário do Linux

Como o kernel e o espaço do usuário existem em espaços de endereço virtuais diferentes, existem considerações especiais para movimentar dados entre eles. Explore as ideias por trás dos espaços de endereço virtuais e as APIs do kernel para movimentar dados do e para o espaço do usuário, e aprenda algumas das outras técnicas de mapeamento usadas para mapear memória. Embora o byte seja a menor unidade de memória que pode ser endereçada no Linux, é a página que serve como a abstração gerenciada da memória. Este artigo começa com uma discussão sobre o gerenciamento da memória no Linux e, em seguida, explora os métodos para manipular o espaço de endereço a partir do kernel.

Memória no Linux

No Linux, a memória do usuário e a memória do kernel são independentes e implementadas em espaços de endereço separados. Os espaços de endereço são virtualizados, ou seja, os endereços são abstraídos da memória física (por meio de um processo que será detalhado mais adiante). Como os espaços de endereço são virtualizados, podem existir vários deles. Na verdade, o kernel reside em um espaço de endereço, e cada processo reside em seu próprio espaço. Esses espaços consistem em endereços de memória virtual, permitindo que vários processos com espaços de endereço independentes se refiram a um espaço de endereço físico consideravelmente menor (a memória física da máquina). Isso não é apenas conveniente, como também é seguro, pois cada espaço de endereço está isolado e, consequentemente, protegido.

Mas essa segurança tem um preço. Como cada processo (e o kernel) pode ter endereços idênticos que se referem a regiões diferentes da memória física, não é imediatamente possível compartilhar memória. Felizmente, existem algumas soluções. Processos do usuário podem compartilhar memória por meio do mecanismo de memória compartilhada da Portable Operating System Interface for UNIX® (POSIX) (shmem), com a advertência de que cada processo pode ter um endereço virtual diferente que se refere à mesma região da memória física.

O mapeamento da memória virtual para a memória física ocorre por meio de tabelas de página, implementadas no hardware subjacente. O próprio hardware fornece o mapeamento, mas é o kernel que gerencia as tabelas e sua configuração. Observe que, como mostrado aqui, um processo pode ter um grande espaço de endereço, mas é esparso, ou seja, pequenas regiões (páginas) do espaço se referem à memória física através das tabelas de página. Isso permite que um processo tenha um enorme espaço de endereço que é definido apenas para as páginas necessárias em um dado momento.


Figura 1. Tabelas de página fornecem o mapeamento de endereços virtuais para endereços físicos

A capacidade de definir memória para processos de maneira esparsa significa que a memória física subjacente pode ser confirmada em excesso. Por meio de um processo chamado paginação (embora, no Linux, seja geralmente chamado de troca), páginas pouco usadas são movidas dinamicamente para um dispositivo de armazenamento mais lento (por exemplo, um disco) para acomodar outras páginas que precisam ser acessadas (veja a Figura 2). Isso permite que a memória física do computador forneça páginas que um aplicativo precisa imediatamente, e migre páginas menos necessárias para o disco para melhor uso da memória física. Observe que algumas páginas podem se referir a arquivos, caso no qual os dados podem ser descarregados se a página estiver suja (por meio do cache de página) ou, se a página estiver limpa, simplesmente descartados.

 

Figura 2. A troca permite melhor uso do espaço da memória física ao migrar páginas pouco usadas para armazenamento mais lento e menos caro

O processo pelo qual uma página é selecionada para ser descarregada para o armazenamento é chamado de algoritmo de substituição de página e pode ser implementado usando alguns algoritmos diferentes (como, por exemplo, usado menos recentemente). Esse processo pode ocorrer quando é solicitado um local de memória cuja página não está na memória (não há mapeamento presente na memory management unit [MMU]). Esse evento é chamado de falha de página e é detectado pelo hardware (a MMU) e gerenciado pelo firmware após uma interrupção de falha de página ocorrer. A Figura 3 contém uma ilustração dessa pilha.

O Linux apresenta uma implementação interessante da troca, que oferece algumas características úteis. O sistema de troca do Linux permite a criação e uso de várias partições e prioridades de troca, o que permite uma hierarquia de troca para dispositivos de armazenamento que fornecem diferentes características de desempenho (por exemplo, uma troca de primeiro nível em uma unidade de estado sólido [SSD] e um espaço de troca maior, de segundo nível, em um dispositivo de armazenamento mais lento). Designar uma prioridade maior à troca em SSD permite que ele seja usado até estar cheio; só então as páginas seriam gravadas na partição de troca de baixa prioridade (mais lenta).


Figura 3. Espaços de endereço e elementos de mapeamento de endereço virtual para físico

Nem todas as páginas podem ser descarregadas para a área de troca. Por exemplo, código do kernel que responde a interrupções, ou código que gerencia as tabelas de página e a lógica de troca. Essas são páginas que, obviamente, não devem ser descarregadas para a área de troca, e portanto são fixadas, ou residentes permanentemente na memória. Embora páginas do kernel não possam ser descarregadas, páginas do espaço do usuário podem, mas é possível fixá-las através da função mlock (ou mlockall) para bloquear a página. Esse é o propósito das funções de acesso à memória do espaço do usuário. Se o kernel achasse que um endereço passado por um usuário é válido e acessível, ocorreria por fim um pânico do kernel (por exemplo, porque a página do usuário foi descarregada para a área de troca, resultando em uma falha de página no kernel). Essa interface de programação de aplicativo (API) assegura que tais casos sejam tratados corretamente.

APIs do Kernel

Agora, vamos explorar as APIs do kernel para manipular a memória do usuário. Observe que esta seção cobre a interface do kernel e do espaço do usuário, mas a próxima explora mais algumas APIs de memória. As funções de acesso à memória do espaço do usuário que iremos explorar estão listadas na Tabela 1.

Tabela 1. A API de acesso à memória do espaço do usuário

Função Descrição

access_ok             Verifica a validade do ponteiro de memória do espaço do usuário

get_user                 Obtém uma variável simples do espaço do usuário

put_user              Envia uma variável simples para o espaço do usuário

clear_user              Limpa ou zera um bloco no espaço do usuário

copy_to_user      Copia um bloco de dados do kernel para o espaço do usuário

copy_from_user      Copia um bloco de dados do espaço do usuário para o kernel

strnlen_user      Obtém o tamanho de um buffer de cadeia de caractere no espaço do usuário

strncpy_from_user    Copia uma cadeia de caractere do espaço de usuário para o kernel



Como seria de se esperar, a implementação dessas funções depende da arquitetura. Em arquiteturas x86, é possível achar essas funções e símbolos definidos em ./linux/arch/x86/include/asm/uaccess.h, com origem em ./linux/arch/x86/lib/usercopy_32.c e usercopy_64.c.

O papel das funções de movimentação de dados é mostrado na Figura 4 em relação aos tipos envolvidos na cópia (simples vs. agregado). 


Figura 4. Movimentação de dados usando a API de acesso à memória do espaço do usuário

A função access_ok

A função access_ok é usada para verificar a validade do ponteiro no espaço do usuário que deverá ser acessado. O responsável pela chamada fornece o ponteiro (que se refere ao início do bloco de dados), o tamanho do bloco e o tipo de acesso (se a área deve ser lida ou gravada). O protótipo de função é definido como:

access_ok( type, addr, size );

O argumento type pode ser especificado como VERIFY_READ ou VERIFY_WRITE. O simbólico VERIFY_WRITE também identifica se a região da memória é legível, além de gravável. A função retorna diferente de zero se a região for provavelmente acessível (mas o acesso ainda pode resultar em -EFAULT). Essa função simplesmente verifica se o endereço é provável no espaço do usuário, não no kernel.

A função get_user

Para ler uma variável simples do espaço do usuário, usa-se a função get_user. Ela é usada para tipos simples, tais como char e int, mas tipos de dados maiores, como estruturas, devem usar a função copy_from_user. O protótipo aceita uma variável (para armazenar os dados) e um endereço no espaço do usuário para a operação de leitura:

get_user( x, ptr );

A função put_user

A função put_user é usada para gravar uma variável simples do kernel para o espaço do usuário. Assim como get_user, ela aceita uma variável (que contém o valor a ser escrito) e um endereço no espaço do usuário como destino da gravação: 

put_user( x, ptr );            

Assim como get_user, a função put_user é mapeada internamente para a função put_user_x, e retorna 0 em caso de sucesso ou -EFAULT em caso de erro.

A função clear_user

A função clear_user é usada para zerar um bloco de memória no espaço do usuário. Ela toma um ponteiro no espaço do usuário e um tamanho para zerar, definido em bytes:


clear_user( ptr, n );

Internamente, a função clear_user verifica primeiramente se o ponteiro do espaço do usuário é gravável (via access_ok), e em seguida chama uma função interna (escrita em assembly sequencial) para realizar a operação de Limpeza. Essa função está otimizada como um loop muito rígido usando instruções de cadeia de caractere com o prefixo de repetição. Ela retorna o número de bytes que não puderam ser limpos, ou zero caso a operação tenha tido sucesso.

A função copy_to_user

A função copy_to_user copia um bloco de dados do kernel para o espaço do usuário. Ela aceita um ponteiro para um buffer no espaço do usuário, um ponteiro para um buffer no kernel e um comprimento definido em bytes. A função retorna zero em caso de sucesso, ou diferente de zero para indicar o número de bytes que não foram transferidos.

copy_to_user( to, from, n );
Após verificar a possibilidade de gravar no buffer do usuário (através de access_ok), é chamada a função interna __copy_to_user, que, por sua vez, chama __copy_from_user_inatomic (em ./linux/arch/x86/include/asm/uaccess_XX.h, no qual XX é 32 ou 64, dependendo da arquitetura). A função (depois de determinar deve-se realizar cópias de 1, 2 ou 4 bytes) chama por fim __copy_to_user_ll, que é responsável pelo trabalho de verdade. Em hardware quebrado (antes do i486, quando o bit WP não era honrado em modo de supervisor), as tabelas de página podiam mudar a qualquer momento, exigindo que as páginas desejadas fossem fixadas na memória, de modo que não fossem descarregadas para a área de troca enquanto estavam sendo endereçadas. Depois do i486, o processo nada mais é que uma cópia otimizada.

A função copy_from_user

 A função copy_from_user copia um bloco de dados do espaço do usuário para um buffer do kernel. Ela aceita um buffer de destino (no espaço do kernel), um buffer de origem (no espaço do usuário) e um comprimento definido em bytes. Assim como copy_to_user, a função retorna zero em caso de sucesso, e diferente de zero para indicar o fracasso em copiar certo número de bytes.

copy_from_user( to, from, n );

A função começa por verificar a possibilidade de ler o buffer de origem no espaço do usuário (via access_ok), e em seguida chama __copy_from_user e, por fim, __copy_from_user_ll. A partir daí, dependendo da arquitetura, uma chamada é feita para copiar do buffer do usuário para um buffer do kernel zerando (os bytes indisponíveis). As funções de assembly otimizadas incluem a capacidade de gerenciar.

A função strnlen_user

A função strnlen_user é usada da mesma maneira que strnlen, mas ela considera que o buffer está disponível no espaço do usuário. A função strnlen_user aceita dois parâmetros: o endereço do buffer no espaço do usuário e o comprimento máximo a ser verificado.

strnlen_user( src, n );

A função strnlen_user verifica primeiramente se o buffer do usuário é legível, por meio de uma chamada para access_ok. Se for acessível, a função strlen é chamada, e o argumento max length é ignorado.

A função strncpy_from_user

A função strncpy_from_user copia uma cadeia de caractere do espaço do usuário para um buffer do kernel, dados um endereço de origem no espaço do usuário e um comprimento máximo.

strncpy_from_user( dest, src, n );

Como se trata de uma cópia do espaço do usuário, a função primeiramente verifica se o buffer é gravável por meio de access_ok. De forma semelhante a copy_from_user, essa função é implementada como uma função assembly otimizada (em ./linux/arch/x86/lib/usercopy_XX.c).

Outros esquemas para mapeamento de memória


A seção anterior explorou métodos para movimentar dados entre o kernel e o espaço do usuário (com o kernel iniciando a operação). O Linux oferece outros métodos que podem ser usados para movimentação de dados, tanto no kernel como no espaço do usuário. Embora esses métodos possam não apresentar funcionalidade igual à das funções de acesso à memória do espaço do usuário, eles são semelhantes em sua capacidade de mapear memória entre os espaços de endereço.

Observe que, no espaço do usuário, como os processos do usuário aparecem em espaços de endereço separados, a movimentação de dados entre eles deve ocorrer por meio de algum tipo de mecanismo de comunicação interprocessos. O Linux oferece vários esquemas (tais como filas de mensagens), mas o mais notável é a memória compartilhada POSIX (shmem). Esse mecanismo permite que um processo crie uma área de memória e compartilhe essa região com um ou mais processos. Observe que cada processo pode mapear a região de memória compartilhada para diferentes endereços em seus respectivos espaços de endereços. Portanto é necessário um certo deslocamento de endereços.

A função mmap permite que um aplicativo do espaço do usuário crie um mapeamento no espaço de endereço virtual. Essa funcionalidade é comum em algumas classes de drivers de dispositivo (para desempenho), permitindo que a memória física do dispositivo seja mapeada para o espaço de endereço virtual do processo. Em um driver, a função mmap é implementada através da função do kernel remap_pfn_range, que fornece um mapeamento linear da memória do dispositivo para o espaço de endereço do usuário.



Conteúdo retirado do developerworks da IBM.
Publicado no Fórum da Brutal Security por Natan

quarta-feira, 29 de abril de 2015

Fala Galera!

Trago-vos aqui, dois canais do Youtube excelentes no quesito Programação, e eles são: Curso em Vídeo e eXcript;

O Curso em Vídeo é um projeto do Prof Gustavo Guanabara, no qual, ensina a arte de programar de uma maneira mais didática e compreensível por aqueles que estão começando na área de programação ainda. Vale a Pena Conferir, segue a playlist do Curso de Algoritmos do Canal:



O Canal ainda Possui outros cursos como: PHP para iniciantes, HTML5 que já postamos aqui, Java, e Photoshop CC. Vale a pena Conferir!

Enquanto que ao Projeto eXcript, não conseguir muitas informações referentes ao projeto, porém, os mesmo se identificam como Ama-Dores em sua Fanpage do Facebook, eles podem ser Masoquistas(cada qual com seu gosto né?).

Brincadeiras a parte, vale a pena dá uma conferida em suas vídeos aulas, pois o conteúdo é super envolvente e utiliza uma linguagem clara que acaba atraindo o visitante de seu canal a continuar vendo seus videos(To falando sério!). Vejam Dicas de como estudar programação em uma playlist:


Tem outros cursos interessantes no canal, como da Linguagem C, Java, Python, C#, PHP, C++ e Android, e o melhor de todos é o de violão (Pode Crer!).

Visitem os canais, e se surpreendam, e aprendam a programar também! Mas nunca esqueçam, a importância de se ter um livro, ou metas para se alcançar durante uma jornada de conhecimento, ok?

Até mais pessoal!

terça-feira, 28 de abril de 2015

Mais um post do antigo fórum. Este originalmente postado por mim na área de Engenharia Social.


Veja ai 30 sinais de mentira.

1. A pessoa fará pouco ou nenhum contato direto nos olhos;

2. A expressão física será limitada, com poucos movimentos dos braços e das mãos. Quando tais movimentos ocorrem, eles parecem rígidos e mecânicos. As mãos, os braços e as pernas tendem a ficar encolhidos contra o corpo e a pessoa ocupa menos espaço;

3. Uma ou ambas as mãos podem ser levadas ao rosto (a mão pode cobrir a boca,  indicando que ela não acredita - ou está insegura - no que está dizendo). Também é improvável que a pessoa toque seu peito com um gesto de mão aberta;

4. A fim de parecer mais tranqüila, a pessoa poderá se encolher um pouco;

5. Não há sincronismo entre gestos e palavras;

6. A cabeça se move de modo mecânico;

7. Ocorre o movimento de distanciamento da pessoa para longe de seu acusador, possivelmente em direção à saída;

8. A pessoa que mente reluta em se defrontar com seu acusador e pode virar sua cabeça ou posicionar seu corpo para o lado oposto;

9. O corpo ficará encolhido. É improvável que permaneça ereto;

10. Haverá pouco ou nenhum contato físico por parte da pessoa durante a tentativa de convencê-lo;

11. A pessoa não apontará seu dedo para quem está tentando convencer;

12. Observe para onde os olhos da pessoa se movem na hora da resposta de sua pergunta. Se olhar para cima e à direita, e for destra, tem grandes chances de estar mentindo.

13. Observe o tempo de demora na resposta de sua pergunta. Uma demora na resposta indica que ela está criando a desculpa e em seguida verificando se esta é coerente ou não. A pessoa que mente não consegue responder automaticamente à sua pergunta.

14. A pessoa que mente adquire uma expressão corporal mais relaxada quando você muda de assunto.

15. Se a pessoa ficar tranqüila enquanto você a acusa, então é melhor desconfiar. Dificilmente as pessoas ficam tranqüilas enquanto são acusadas por algo que sabem que são inocentes. A tendência natural do ser humano é manter um certo desespero para provar que é inocente. Por outro lado, a pessoa que mente fica quieta, evitando a todo custo falar de mais detalhes sobre a acusação;

16. Quem mente utilizará as palavras de quem o ouve para afirmar seu ponto de vista;

17. A pessoa que mente continuará acrescentando informações até se certificar de que você se convenceu com o que ela disse;

18. Ela pode ficar de costas para a parede, dando a impressão que mentalmente está pronta para se defender;

19. Em relação à história contada, o mentiroso, geralmente, deixa de mencionar aspectos negativos;

20. Um mentiroso pode estar pronto para responder as suas perguntas, mas ele mesmo não coloca nenhuma questão.

21. A pessoa que mente pode utilizar as seguintes frases para ganhar tempo, a fim de pensar numa resposta (ou como forma de mudar de assunto): "Por que eu mentiria para você?", "Para dizer a verdade...", "Para ser franco...", "De onde você tirou essa idéia?", "Por que está me perguntando uma coisa dessas?", "Poderia repetir a pergunta?", "Eu acho que este não é um bom lugar para se discutir isso", "Podemos falar mais tarde a respeito disso?", "Como se atreve a me perguntar uma coisa dessas?";

22. Ela evita responder, pedindo para você repetir a pergunta, ou então responde com outra pergunta;

23. A pessoa utiliza de humor e sarcasmo para aliviar as preocupações do interlocutor;

24. A pessoa que está mentindo pode corar, transpirar e respirar com dificuldade;

25. O corpo da pessoa mentirosa pode ficar trêmulo: as mãos podem tremer. Se a pessoa estiver escondendo as mãos, isso pode ser uma tentativa de ocultar um tremor incontrolável.

26. Observe a voz. Ela pode falhar e a pessoa pode parecer incoerente;

27. Voz fora do tom: as cordas vocais, como qualquer outro músculo, tendem a ficar enrijecidos quando a pessoa está sob pressão. Isso produzirá um som mais alto.

28. Engolir em seco: a pessoa pode começar a engolir em seco.

29. Pigarrear: Se ela estiver mentindo têm grandes chances de pigarrear enquanto fala com você. Devido à ansiedade, o muco se forma na garganta, e uma pessoa que fala em público, se estiver nervosa, pode pigarrear para limpar a garganta antes de começar a falar.

30. Já reparou que quando estamos convictos do que estamos dizendo, nossas mãos e braços gesticulam, enfatizando nosso ponto de vista e demonstrando forte convicção? A pessoa que mente não consegue fazer isso. Esteja atento.


Créditos : Dr. David J. Lieberman
No cenário da segurança digital, nada é monótono, isso é certo. E proteger as informações corporativas do ataque de cibercriminosos está ficando cada vez mais complexo. “Praticamente toda empresa sabe que os riscos à segurança da informação existem e que eles podem trazer consequências catastróficas para as organizações”, afirma Vladimir Alem, Gerente de Produtos de Segurança da Dell para América Latina. 
Segundo o Relatório Anual de Ameaças, divulgado pela Dell esta semana, o mundo viu em 2014 o crescimento de malware capaz de atacar equipamentos usados em pontos de venda e grandes empresas de varejo e presenciou o aumento do tráfego de códigos maliciosos dentro de sites criptografados (https). Outro indicador preocupante identificado pela companhia é que em 2014 dobrou o número de ataques a sistemas SCADA (para supervisão e aquisição de dados).
O estudo se baseou em pesquisas realizadas, ao longo de 2014, pelo Dell GRID (Global Response Intelligence Defense) e nos dados de tráfego de rede dos equipamentos Dell SonicWALL. A partir das informações, colhidas em mais de 200 países – incluindo o Brasil -, a empresa mapeou os principais riscos à segurança da informação a que as empresas ficaram expostas no último ano, bem como quais as grandes tendências para 2015.
Ao todo, a equipe de pesquisa de ameaças da Dell SonicWALL identificou 13 tipos de malwares em pontos de venda em 2014, contra apenas 3 em 2013. O que reflete em um aumento de 333% no número desse tipo de código malicioso.
“Os ataques crescem em volume e em sofisticação e, pior, afetam companhias em todo o mundo, independentemente do seu porte ou segmento de atuação”, diz Vladimir.
HTTPS comprometido
O uso do protocolo de criptografia para os sites web (o HTTPS) era tido como uma alternativa segura para a navegação e proteção da privacidade dos usuários. Embora sua adoção seja recomendada e positiva, não é mais certeza de proteção, uma vez que segundo o relatório da Dell os cibercriminosos têm identificado maneiras de explorar falhas dentro do HTTPS com o objetivo de ocultar códigos maliciosos.
Na prática, os criminosos virtuais usam a criptografia para trafegar os malwares e, assim, burlar os firewalls tradicionais.O relatório aponta que os ataques de malware que utilizam sites criptografados já começaram a visar ambientes com grande tráfego de usuários.
Dobram ataques a sistemas SCADA
O relatório aponta para um aumento de 100% nos ataques voltados a sistemas SCADA (para supervisão e aquisição de dados), normalmente usados pela indústria para controlar equipamentos a distância e recolher dados sobre o desempenho dos mesmos. O principal ponto para esse tipo de ataque são as vulnerabilidades geradas por sobrecarga.
Na maior parte dos casos, os ataques tendem a ter uma natureza política, com o intuito de afetar a capacidade de operação de usinas de energia, fábricas e refinarias. Os especialistas em segurança da Dell apontam que esse tipo de ataque tende a crescer nos próximos anos. “Ainda não vemos regionalmente muitas notícias sobre esse tema, mas, as empresas precisam ficar atentas para esses dados – o número de ataques dobrou em apenas um ano.”, analisa Vladimir.
Na lista de previsões para 2015, o Relatório de Ameaças da Dell identifica um crescimento da adoção de autenticação de dois fatores pelas empresas e o risco dos cibercriminosos investirem num incremento nos ataques contra esse tipo de tecnologia.
No terreno das plataformas, o Android continuará a ser um alvo de cibercriminosos, com aumento de malwares e técnicas mais sofisticadas de ataques; e as tecnologias vestíveis devem começar a ver malwares voltados especialmente para elas, assim como roteadores domésticos e equipamentos conectados, como sistemas de vigilância. Da mesma forma, moedas digitais, incluindo Bitcoin continuarão a ser alvos de ataques.
Fonte: IDGNow!

segunda-feira, 27 de abril de 2015


No artigo de hoje, falaremos sobre navegadores web, mas antes de chegar ao ponto em que queremos, vai ser necessário utilizar de uma abordagem histórica sobre a internet, para poder entender com mais clareza como funciona os navegadores, e porque andam em pé de igualdade com a internet. Abordaremos a história da internet de forma cronológica e simples para melhor seu melhor entendimento, e também, por ser um conteúdo extenso e que se formos se aprofundar nele, consequentemente, teríamos umas 10 mil linhas para escrever aqui.

Cronologia

De forma resumida e com citação de pontos importantíssimos para a evolução da internet até a era dos navegadores modernos e de sites mais amigáveis para o público.

Entre 1950 e 1960 – É criada a ARPA (Advanced Research Project Agency), órgão de Pesquisa do Departamento de Defesa dos Estados Unidos.

Em 1965 – Aconteceu a primeira troca de mensagens entre computadores. Mas por falta de fontes confiáveis, alguns pesquisadores acreditam que possa ser uma falsa noticia.

Em 1969 – A Rede ARPAnet já estava em funcionamento, e como seu nome sugeria, foi criada pelo órgão de pesquisa ARPA. A princípio interligava apenas a Universidade da Califórnia: Los Angeles e Santa Bárbara; Instituto de pesquisa de Stanford e a Universidade de Utah.

Em 1971 – Criação do E-mail pelo engenheiro americano Ray Tomlinson.

Em 1974 – Criação do Protocolo TCP/IP pelos pesquisadores Robert Kahnet e Vint Cerf.

Em 1976 – A ARPAnet adota a nova padronização de Protocolos.

Entre 1980 e 1981 - Misturam-se três mundos distintos: militares, cientistas e universidades. Esta mistura surge como consequência da criação de duas redes ligadas a instituições universitárias e científicas americanas: a BitNET (Universitária) e a CSNET (científica); vindo a potenciar o aparecimento de uma rede alargada com múltiplas aplicações.

Em 1983 – É criada a MILnet, uma rede dedicada a comunicação entre os órgãos de Defesa Norte Americano.

Em 1984 – É introduzido um novo sistema para nomear domínios na Internet, conhecido hoje em dia com DNS(Domain Name System).

Em 1986 – É criada a NSFNET, pela Fundação Nacional de Ciência(NSF -National Science Foundation) dos Estados Unidos.

Em 1990 – A ARPANET deixa de Existir, e é integrada a NSFNET; é criado um novo protocolo de navegação, conhecido como HTTP, e também, a linguagem de marcação HTML, por Tim Berners-Lee, pesquisador da CERN (Conselho Europeu de Pesquisa Nuclear) em genebra. Lançado também o primeiro Provedor de Internet Privado nos Estados Unidos.

Em 1991 – É lançada a World Wide Web (WWW) pela CERN.

Nossa Cronologia acaba aqui.

Obviamente após 1991, começaram a nomear a NSFNET como Internet, pela intensa popularização que a mesma foi ganhando nos anos seguinte. Em 1996, começa a guerra dos Browsers, no qual, trouxe consigo a era do desenvolvimento de Softwares em massa. Modernização de sistemas operacionais, formas de se navegar na internet, entre vários surgimentos de tecnologias inovadoras, acarretaram como consequência, a criação de várias empresas focadas em desenvolvimento. Sem tal ato, talvez hoje não tivéssemos a facilidade que temos em navegar na internet.

Modernização de Navegadores Web

Imagine você não podendo ver um vídeo em boa qualidade como se vê hoje no Youtube, ou não poder acessar com facilidade uma rede social como facebook; ou ainda ter que enfrentar novamente a lentidão da internet discada (56kbps). Claro, apesar de ser uma baixa velocidade se comparados às oferecidas pelos provedores que temos disponíveis hoje em dia; anos atrás, essa velocidade seria ótima para carregar as paginas web, que em sua maioria, utilizavam apenas textos, pois naquela época o HTML ainda estava em suas primeiras versões (E sabemos que textos são leves, dependendo também do quanto de caracteres ele possui).



Hoje, a maioria dos sites possuem SHTML, XHTML ou HTML5, e são versões suportadas pelos navegadores Web, sendo o HTML5 a versão mais recente e que oferece melhores ferramentas para desenvolvedores. Os navegadores Web modernos, ainda possuem compatibilidade com versões mais antigas do HTML.


Observe o Portal Terra em 2000:



E agora observe o Portal Terra em 2015:



Existe uma grande diferença no design do terra, muita coisa mudou nessa parte. Porém, muita coisa mudou por dentro também, em seu código fonte, pois foi se adaptando no decorrer dos anos as transições no qual o HTML foi passando, consequentemente, evoluiu junto dele. Não vamos nos aprofundar nisso, apenas de passagem para um melhor entendimento.

Funcionamento dos Navegadores WEB


Entre os navegadores mais usados pelo Mundo, estão Google Chrome, Mozilla Firefox, Safari(MAC)Opera e Internet Explorer(finado). O que interliga eles, são a semelhanças oferecidas na interface do Usuário, como exemplo:

- Barra de endereço para inserção do URL 
- Botões voltar e avançar 
- Opções para adicionar favoritos 
- Histórico de Navegação
- Plugins 
- Complementos
- Speed Dial
- Botões atualizar e parar para atualizar e parar o carregamento dos documentos atuais 
- Botão Início que o leva à página inicial 
- Opção para Navegação Anônima, no qual não armazena nenhum histórico quando ativada.

Porém, esse é o padrão que pode servir de semelhança entre os navegadores. Mas, cada um tem um diferencial à parte, pois o Firefox possui seu próprio gerenciador de downloads, o Opera Browser foi o pioneiro do Speed Dial, por exemplo. São pequenas características, que os difere dos outros.


Enquanto que seu funcionamento, eu caracterizo os navegadores, como interpretes de sistemas web. Pois cada site, hoje em dia, são complexos por possuírem um verdadeiro sistema por trás de suas paginas de leitura, como exemplo o Google, Facebook, Yahoo, MSN e dentre outros, que chega a ser difícil medir sua magnitude. Quando o conteúdo é solicitado, o mecanismo de renderização é responsável pela exibição do conteúdo solicitado. Por exemplo, se o conteúdo solicitado estiver em HTML, ele é responsável pela análise do HTML e do CSS e pela exibição do conteúdo analisado na tela. Também possuem um Interprete de Javascript, que ao analisar os códigos javascript, retorna o resultado em pagina web para o usuário.




Cookies e Cache

Cookies são os testemunhos de uma conexão, onde, na maioria dos sites que você visita, cria um arquivo, para armazenar dados que neles foram adquiridos, como exemplo: Você para acessar o seu Facebook, é exigido que o seu navegador esteja habilitado a opção de Cookies (é padrão, então já vem habilitado), para que quando você digite seu email e senha, eles possam ser armazenados nesse pequeno arquivo que seu navegador armazena em uma pasta oculta do seu computador, para que a ligação entre o site e o seu computador possa ser possível. E esse cookie que foi criado para o Dominio http://www.facebook.com/, funcionará apenas nesse domínio, assim que para acessar o domínio http://www.brutalsecurity.com.br/ seja necessário que outro arquivo cookie seja criado. Em claras palavras, são únicos para cada site que solicitar armazenamento.

Enquanto que caches, servem para armazenas dados das páginas web que você visitou. A exemplo, se na primeira vez que você visitou, certo site parecia carregar de forma lenta, após armazenar um arquivo cache na memória do navegador, na próxima vez que tentar acessar o site, será com mais rapidez. A exemplo do cookie, cache são únicos para qualquer site.


Terminamos por aqui a Primeira Parte, no próximo artigo, falaremos sobre Navegação e Segurança. Obviamente, tentei deixar tudo em uma linguagem mais clara para nossos visitantes que estão começando.

Divulgue, para sua família, Amigos e Inimigos(Por que não?), vamos tentar transformar a internet em um lugar melhor :)

Até a próxima!



Sinopse

Quando se trata de criar ferramentas eficazes e eficientes de hacking, o Python é a linguagem preferida da maioria dos analistas da área de segurança. Mas como a mágica acontece?

Em Black Hat Python, o livro mais recente de Justin Seitz (autor do best-seller Gray Hat Python), você explorará o lado mais obscuro dos recursos do Python – fará a criação de sniffers de rede, manipulará pacotes, infectará máquinas virtuais, criará cavalos de Troia discretos e muito mais. Você aprenderá a:

  • Criar um cavalo de Troia para comando e controle usando o GitHub.
  • Detectar sandboxing e automatizar tarefas comuns de malware, como fazer logging de teclas e capturar imagens de tela.
  • Escalar privilégios do Windows por meio de um controle criativo de processo.
  • Usar truques forenses de ataque à memória para obter hashes de senhas e injetar shellcode em uma máquina virtual.
  • Estender o Burp Suite, que é uma ferramenta popular para web hacking.
  • Explorar a automação do Windows COM para realizar um ataque do tipo man-in-the-browser.
  • Obter dados de uma rede, principalmente de forma sub-reptícia.
Técnicas usadas por pessoas da área e desafios criativos ao longo de toda a obra mostrarão como estender os hacks e criar seus próprios exploits.Quando se trata de segurança ofensiva, sua habilidade para criar ferramentas eficazes de forma imediata será indispensável. Saiba como fazer isso em Black Hat Python.

Review

Mais um livro da nossa parceria com a Editora Novatec para review e indicação aqui no blog. Vamos lá!

Conheço pouco sobre o autor, mas pelas pesquisas que fiz e pelo que li dele no próprio livro pela apresentação do Charlie Miller (que todo mundo já deve saber que é uma das pessoas da área que mais admiro), o cara é bom, e tem uma grande experiência na área.

O livro é originalmente da Editora No Starch Press, mesma editora do livro Pentest da Georgia, que já fizemos review aqui. Olhando para os dois livros e outros desta editora é possível notar um padrão entre eles, talvez façam parte de algum tipo de série ou coleção. Pretendo ter todos, estou gostando da qualidade e do conteúdo dos livros.

Antes de mais nada, se você não vê vantagem ou necessidade de programação, leia o post "A importância da programação". Talvez esse post clareie um pouco sua mente. Este post também fala um pouco sobre Python, uma linguagem que uso e defendo como uma linguagem muito versátil e muito boa pra nossa área, entre várias possíveis áreas em que Python se da bem. Outra coisa que pode te convencer a estudar programação é o velho ditado, que vai desde newbies e script kiddies até black hats e white hats: Para ser um hacker de verdade você precisa deixar de usar ferramentas e fazer as suas próprias.

Concordo com esse ditado até um certo ponto. Saber programação vai abrir muitas portas e aumentar significantemente sua área de atuação, mas tem alguns pontos que não é necessário reinventar a roda, por exemplo, você não precisa reinventar todo um Framework para alguma coisa se já existe um. Você pode usar o framework pronto em seu favor.

Agora sim, sobre o livro, ele é surpreendentemente pequeno, comparado com o livro Pentest. Até estranhei quando vi uma caixa fininha me esperando. O livro tem cerca de 200 páginas, mas são muito bem aproveitadas. Como o livro diz na capa, "Programação Python para hackers e pentesters", o autor não se preocupa em explicar conceitos de programação, Python ou rede. Este não é um livro para você aprender a programar ou conhecer Python, é esperado que você já saiba programar e conheça a linguagem.

Já que o livro foca no assunto não é necessário muitas páginas. Existem outros livros sobre programar em Python de modo geral e focado em segurança. Todos eles perdem muito tempo e muitas páginas ensinando a programar e mostrando a base do Python, ou seja, sobra pouco espaço para aprofundar no tema. Normalmente estes livros mostram exemplos simples, como por exemplo, scripts para fazer varreduras de portas, crawlers web e uma ferramenta para bruteforce. Este livro já começa com uma ferramenta similar ao netcat, e evolui rapidamente para códigos extremamente complexos como malwares e ferramentas inteligentes para os usos mais criativos.

O autor demonstra fragmentos ou até programas inteiros e se necessário, explicando linha a linha. Faz parecer fácil desenvolver aquelas ferramentas e malwares.

Eu sei programar (isso não quer dizer que sou um bom programador :D ) e conheço Python. Até a metade do livro consegui acompanhar bem, e a cada pedaço de código eu pensava "porque nunca pensei nisso antes!", após a metade comecei a ter um pouco de dificuldade, passou do meu nível de conhecimento e tive que estudar um pouco para por tudo aquilo em prática.

E então para finalizar, recomendo que você comesse a estudar programação, se já programa, recomendo que vá para o Python, e se já está no Python recomendo este livro. Sem dúvida que você vai aprender muito e ter diversas idéias lendo este livro.

Se você não tem conhecimento em programação ou em Python este livro não é pra você, por ir direto ao assunto e não dar nenhuma base. Já estou lendo e pesquisando por bons livros sobre programação e Python básico para você que está começando agora.

Caso tenha ficado interessado no livro ai vem a boa notícia, o livro é barato, R$ 65 por um livro desses é um preço justo. E não se esqueça de comprar no site da Novatec que você tem desconto. O cupom de desconto BRUTALSEC vai dar 20% de desconto em todo o site e é válido até o fim do ano.

sexta-feira, 24 de abril de 2015

Mais um post do finado fórum da BS.

Se alguém testar em Windows 8, 8.1 e 10 e ainda funcionar (acredito que sim), comente aqui!







Vejam como o sistema Windows é vulnerável ate quando não está ligado... kkk

Situação: PC com windows instalado e com senha para login. Você tem acesso físico a máquina...


Você vai precisar de: Live CD de instalação de qualquer linux, ou outro sistema semelhante.

Sei que é algo óbvio, mas me quebrou um galhão aqui, espero que ajude também.

Vamos lá!

1- Boote seu sistema com o Live CD do Linux.

2- Vá na pasta Windows (Partição do Windows) > System32.

3- Renomeie o executável "cmd.exe" (o famoso prompt, terminal do windows) para "cmd2.exe"

4- Nesta mesma pasta renomeie o executável "Utilman.exe" para "cmd.exe".

5- Para evitar confusão renomeie o "cmd2.exe" para "Utilman.exe".

6- Boote agora no Windows e na tela de login aperte no botão de acessibilidade, que por mudar os nomes vai abrir o cmd.

7- No cmd digite "net user", irá listar os usuários daquela máquina.

8- Agora digite o comando "net user [nome_do_usuário] * "

9- Coloque uma nova senha para ele.

10- Para confirmar que a senha foi alterada com sucesso de o comando "explorer"

11- Agora volte para a tela de login e logue com a senha que você escolheu...


Este é um método, existem muitos outros...

Espero ter ajudado =D



P.S.: Testado em XP, Vista e 7, quem sabe funfe no 8 e 8.1 também

quinta-feira, 23 de abril de 2015



A partir de hoje, criarei uma série de artigos para nossos visitantes que entendem pouca coisa relacionada a Segurança, e gostariam de aprender.

Antes de Introduzirmos ao assunto em questão, é importante deixar claro que Segurança digital, é diferente de Segurança da Informação. É uma opinião própria, e que sempre Preservo, e gosto de diferenciar dessa Forma:

Segurança Digital: É algo simples se comparada a Segurança da Informação, pois foca principalmente em ensinar métodos de Defesa de sistemas computacionais, e de navegação segura na internet. E por ensinar a proteger, não ensina como invadir, como se fosse um conjunto de técnicas para defesa na web (como o Krav Magá), e por isso, é algo mais superficial.


Segurança da Informação: É algo mais complexo, pois não envolve apenas computadores e Internet, envolve várias questões que devem ser debatidas que são relacionadas à informação. Você aprende dos conceitos primitivos de Invasão e Defesa. Digamos assim, você aprende e cria técnicas para invadir, para poder aprender e criar técnicas para proteger, acaba sendo uma área bem mais aprofundada. 

Enfim, essa é apenas uma opinião própria, é claro que existem outros tipos de conceito. Mas vamos ao nosso artigo.

Introdução


Com a grande revolução da tecnologia, dos meios de comunicação e da própria internet nos últimos 20 anos, houve uma grande expansão nas áreas em que essas tecnologias abrangem. Se antes Apenas América Do norte, Alguns Países da América Latina, Alguns países da Europa, alguns do continente africano e outros da Ásia apenas tinham acesso a essas tecnologias, hoje, podemos afirmar, que com a grande expansão tecnológica, se existir um país que não tenha Acesso aos mais modernos meios de comunicação e internet, dentro de alguns anos, terão. Mas esse não é o caso que será abordado aqui, é apenas uma breve citação dos tempos modernos em que estamos vivendo.


Não demorou muito também, para que cada canto do mundo se conectasse ao outro. Podemos visitar países através da internet, que em algum momento na vida tivemos a ambição de conhecer seus pontos turísticos, como exemplo, o Gran Canyon – Arizona/EUA, O muro das Lamentações em Jerusalém/ISRAEL, A Torre Eiffel em Paris/França. São muito os lugares pelo mundo a fora, que alguma vez na vida, você deve ter sentido vontade de conhecer, mas hoje, temos o Google Stret View para nos mostrar os lugares bonitos mundo a fora.
Houve também, a criação das redes sociais, como no caso da primeira rede social criada em 1995, e foi conhecida como a ClassMates. Mas como a internet evolui, as formas de comunicação e interação social também são levadas junto a essa constante evolução, quem não se lembra do Orkut e do MSN? Onde tínhamos a oportunidade de nos comunicar com várias pessoas ao redor do mundo(Foca nos Indianos, eram os que mais adicionavam Brasileiros nas duas redes sociais), e também, comunidades para trocar conhecimento, diversão e os nossos abençoados Downloads. Logo após a onda Orkut e MSN(que diga-se de passagem, começaram a ter muitos bugs) foi começando a se desmanchar, com o aumento de popularidade de outras redes sociais como Skype, Twitter e Facebook, foi perdendo seu espaço entre os grandes, e se mantiveram firmes e fortes aguentando as perdas de usuários para estas redes sociais em ascensão até o ano passado, quando foram finalmente desativadas.

Também é necessário citar o número crescente de aparelhos eletrônicos, que em suas novas versões, possuem a opção de conexão com a internet. Babás eletrônicas, Cameras de Segurança, Smart TV’s entre outros aparelhos que hoje em dia possuem suporte para a internet.

Mas, esta revolução trouxe apenas coisas boas para nós? 

Interligar cada canto do mundo é uma boa, mas e os riscos por trás de tal projeto? E os riscos que corremos ao permitir que tais aparelhos eletrônicos, se conectem a internet sem certo controle e segurança?

BINGO! Chegamos a onde queríamos desde o principio!


É correto afirmar que ao conectar os quatro cantos do mundo, e permitir que esse encontro ocorra através de redes sociais, e em demais sites, e esperar que apenas pessoas boas façam parte das mesmas, é como pedir a um lobo faminto, que não coma um pedaço de picanha crua e desprotegida a sua frente. Toda essa evolução, trouxe fatores bons e ruins, o crime organizado se especializou, hoje, atuam em sua maioria como Cyber criminosos, é uma forma de ganhar dinheiro ilícito com mais facilidade.

Pedofilia


Pedófilos escolhem suas vitimas, baseando-se em seus perfis das redes sociais, não mantendo o tradicional caso de pedofilia dentro de casa. E o pior de tudo, não existe um controle ou educação dada por parte dos pais das crianças que são vitimas de pedofilia pela internet, são deixadas largadas a mercê desse tipo de criminoso. Raros são os pais que se preocupam com tal situação. 

Relacionamentos Virtuais




Casos também, de relacionamentos pela internet entre adultos, em que geralmente não existe sinceridade por parte de ambos. Criam perfis fakes, para ocultar seu verdadeiro Biótipo, que em maioria, são pessoas de moral baixa, talvez por não se sentirem bem com sua forma física e em outros casos, são para aplicar golpes. Fazem as vitimas se “Apaixonarem”, para depois começar a criar histórias em que o mesmo sempre irá precisar de certa quantia para aplicar em alguma empresa, ou para pagar alguma divida. O interessante, é que sempre, o golpista, apresenta um perfil no qual o mesmo é rico, isso contribui para atrair mulheres mais bem resolvidas financeiramente pois são ótimos alvos para eles. Como no Caso de Sarah, que enviou Quase R$ 3 milhões para seu namorado virtual(obviamente, um golpe).

Cyber Criminosos


Além desses casos, estamos expostos a Cyber criminosos, que lucram a partir de fraudes financeiras, vazamento de informações de grandes empresas, Roubo de dados pessoais e uma série de coisas mais. Fora isso, temos também o risco de a qualquer momento, ser invadido por um Software Malicioso, durante uma navegação de rotina pela Web. A cada dia, surgem novas vulnerabilidades em sistemas, e isso acarreta um monte de coisas, desde o desenvolvimento de novos Softwares Maliciosos, até mesmo a uma exposição maior dos usuários para invasão de crackers. Acesso a contas pessoais, senhas bancárias e grandes desvios, infelizmente, tem se tornado muito comum.

CyberBullying


O Cyber Bullying é uma realidade perturbadora em redes sociais, chegando a ser considerado um caso de saúde pública, e vem crescendo o numero de casos a cada dia, como se fosse um vírus biológico se espalhando pelas pessoas. Mas, segundo pesquisas, quem pratica CyberBullying, são pessoas que em algum momento na vida, sofreram bullying na vida real.

Exposição Intima


Exposição Intima também é algo alarmante na internet. Os números de fotos e vídeos expostos hoje em dia em sites pornográficos, chegam a ser absurdo. E isso não é um caso isolado apenas para pessoas comuns, mas também para famosos, como a atriz Carolina Dieckmann em 2012, que após ter suas fotos intimas expostas na internet por Crackers e repercutir da mídia, os Deputados Federais resolveram levar a questão mais a sério, em 2013, puseram em prática a lei carolina Dieckmann para crimes virtuais, porém, com a falta de profissionais capacitados e com a falta de estrutura para por esse tipo de lei para funcionar, continuamos na estaca zero. Porém, sempre existem vacilos entre Crackers que os fazem ser capturados pela policia federal.

Segurança de Eletrônicos


Além de todos os riscos já apresentados, existe a fragilidade da segurança dos aparelhos eletrônicos que possibilitam acesso a internet, em muitos, são encontrados vulnerabilidades que poderiam expor o proprietário de tal tecnologia, em sérios riscos. Como no caso de um Invasor, que ao ter acesso as Câmeras de segurança(que estão conectadas a internet) da casa de um possível alvo para arrombamento e furto, o invasor saberia onde encontrar os objetos de valor, melhorando em 100% as chances do mesmo de evasão após o roubo. Esse é apenas um exemplo. Existem outros tipos de eletrônicos que podem ou não, possibilitar esse tipo de ação.


Mas com todos esses riscos, como posso me proteger?

Algumas prevenções são necessárias para evitar esses riscos, entre elas:

- Eduque o seu filho/Filha, ou qualquer criança/adolescente em sua família, a não conversar com nenhum estranho pela internet e pessoalmente, se você não fizer isso, quem irá ?

- Desconfie sempre de qualquer pessoa de índole duvidosa, e que tem muito a oferecer em sites de relacionamento, na maioria dos casos, poderá ser um golpista. Aproveite e acabe com as duvidas marcando um encontro pessoalmente ou uma Chamada de vídeo.

- Use senhas com mais de 16 Caracteres, e brinque com os números, letras e simbolos, consequentemente, fará sua senha mais forte e segura. Senhas de 8 caracteres já foram comprovadas serem inseguras.

- Não faça download qualquer coisa que ver pela internet, sempre procure se informar com alguem mais experiente sobre como fazer um download seguro.

- Cyber Bullying é algo muito sério, portanto, se notar mudança de comportamento de alguem de sua família, faça sua parte e procure se informar sobre o que está acontecendo. Em momentos de tristeza e pré-depressão, não existe nada melhor que um conselho ou alguem se importando com você.

- Não deixe qualquer pessoa ter acesso ao seu computador pessoal. Os riscos não estão somente na internet, mas também no convívio social.

- Mantenha-se informado sobre um produto eletrônico que possibilite acesso a internet sempre! Pesquisadores em Segurança não descansam, são zumbis e ficam direto em busca de novas vulnerabilidades. Caso algum aparelho eletrônico que você possua, possuir uma vulnerabilidade, com certeza será anunciado em portais de noticias, e logo depois(ou no mesmo dia), a fabricante disponibilizará um atualização de Software para corrigir. Fique Atento!

São passos simples assim, que fazem toda a diferença e evitam momentos de crises.

É isso pessoal! Compartilhe com seus familiares, amigos e até inimigos (Por que não?), vamos transformar a internet em um lugar melhor para se navegar.

Semana que vem tem mais! Até a próxima.

Par de chaves

Como comentado no texto anterior, os algoritmos de criptografia assimétrica utilizam um par de chaves. Vimos também que cada pessoa gera seu par de chaves, e que essas chaves são diferentes e matematicamente relacionadas.

Vamos ver agora mais algumas características desse modelo de criptografia.

As chaves são chamadas de Chave Pública e Chave Privada por um motivo óbvio. Uma das chaves vai ser disponibilizada publicamente e a outra será mantida privada.

Como a chave pública é disponível a qualquer pessoa, esta pessoa que deseja se comunicar com você usa sua chave pública para cifrar a mensagem, e apenas você com sua chave privada pode decifrar a mensagem.

Veremos logo abaixo os usos da criptografia assimétrica e como este modo de par de chaves tem menos chances de ser comprometido do que o modo simétrico.

Pode-se usar a criptografia assimétrica de várias maneiras, para os mais variados usos, veremos alguns.

Criptografia (Confidencialidade)

Podemos utilizar a criptografia assimétrica para criptografar dados, do mesmo modo que poderíamos utilizar a criptografia simétrica, com o mesmo nível de segurança, nem mais nem menos. Esta é uma associação errada que normalmente se faz, que um modelo é melhor que o outro. Sem levar em consideração o algoritmo de criptografia, os dois modelos tem o mesmo potencial.

Caso nosso objetivo seja criptografar uma mensagem, podemos fazer isso utilizando a chave pública do destino, e assim que receber, o próprio pode utilizar sua chave privada para decifrar a mensagem.

Por exemplo, A deseja enviar uma mensagem para B de forma confidencial:


A cifra a mensagem com a chave pública de B e a envia. Quando B receber a mensagem ele a decifra com sua chave privada.

Sempre que nos referirmos a criptografia ou confidencialidade estamos falando em criptografar texto ou arquivos, ou seja, usamos a chave pública do destinatário para a cifragem e o destinatário usa sua chave privada para decifrar.

No exemplo acima, se B deseja responder para A o processo é o mesmo, mas usando as chaves de A.

Um dos problemas da criptografia assimétrica na cifragem de arquivos grandes é a demora para a decifragem. Por se tratar de algoritmos mais complexos que os algoritmos simétricos, não é viável cifrar grandes quantidades de dados com este modelo.

Assinatura (Autenticação)

Outro uso para a criptografia assimétrica é a assinatura, ou garantir autenticação.

Garantir autenticação, basicamente quer dizer, garantir que uma parte seja realmente quem alega ser.

No caso de assinatura, trabalharemos com as chaves na ordem contrária, a chave privada irá "cifrar" a mensagem e a chave pública irá "decifrar"a mensagem. Para esse tipo de operação é mais comum trocar o termo Cifrar/Decifrar por Assinar.

Este modo não garante confidencialidade, já que a chave que "decifra" a mensagem é pública e qualquer pessoa teria acesso a ela. Este modo é utilizado para garantir a identidade do autor da mensagem. Se a mensagem só pode ser "decifrada" com a chave pública de B, isso quer dizer que somente B pode ter "cifrado" a mensagem com sua chave privada.

Vamos a um exemplo:

A deseja enviar uma mensagem assinada para B, garantindo que foi A quem enviou a mensagem:


A assina o texto claro com sua chave privada, gerando a mensagem assinada, e envia esta para B. B recebe a mensagem assinada e passa pelo algoritmo criptográfico com a chave pública de A para verificar sua autenticidade.


No próximo texto veremos outros métodos de uso de criptografia assimétrica.

quarta-feira, 22 de abril de 2015



A Microsoft tem investido muito em segurança, principalmente pelo fato da mesma prometer que o Windows 10 seja mais seguro que o Windows 8 e 8.1(Será mesmo?¹). Utilizando Biometria para poder entrar no sistema, um método de criptografia bem interessante por sinal.

E recentemente a mesma declarou a extinção do seu navegador Web, o Internet Explorer, e dará um novo Voou entre os poderosos Google Chrome e Mozilla Firefox, com o Projeto Spartan. É claro, prometendo mais segurança e menos bugs(Será mesmo?²), com o seu programa de Recompensas para bugs reportados com documentação encontrados em seus produtos, com recompensas que chegam há U$ 15.000,00. Não é o valor que os Pesquisadores de segurança estão acostumados, mas, para iniciantes, é um excelente valor.

Porém, o valor da premiação é dada de acordo com o grau de risco da falha e como a documentação está feita, algo desorganizado e amador, provavelmente não valerá muita coisa. Se a falha for muito grave, obviamente conseguirás o U$ 15.000,00. Só uma breve observação, o Programa não está limitado apenas ao Projeto Spartan, mas também a outros produtos como o Azure, Sway e ao próprio Windows 10 em sua versão de testes.

E se caso você criar novos métodos para exploração, poderá ganhar até U$ 100.000,00 em recompensa, e caso crie novos métodos de defesa para os produtos Microsoft, poderá ganhar  até U$ 50.000,00.

A pergunta é, por que não tentar? =D

Let's Go! Hackers =D

Lembrando, que a Data de inicio para os Reportes de Falhas, começa hoje dia 22/04/2015 e vai até o dia 22/06/2015. Para maiores Informações acesse TechNet Microsoft


Subscribe to RSS Feed Follow me on Twitter!