quinta-feira, 22 de novembro de 2012

MODELOS DE REDE (OSI E TCP-IP)


Esta postagem irá falar sobre dois modelos de arquitetura de redes que usam o formato de uma pilha de protocolos independentes:
Arquitetura TCP-IP (IPS) e Arquitetura OSI

Quando os primeiros computadores surgiram, cada fabricante utilizava suas próprias arquiteturas e isto não permitia a conectividade de computadores de modelos diferentes. Para resolver este problema, foi desenvolvida as arquiteturas de redes TCP-IP (IPS) e OSI. A arquitetura  TCP-IP é um modelo mais simples de ser implementado e possui 4 camadas, a saber: APLICAÇÃO, TRANSPORTE, REDE E INTERFACE. Já a arquitetura OSI é um modelo mais complexo de ser implementado, entretanto garante mais independência entre as 7 camadas: APLICAÇÃO, APRESENTAÇÃO, SESSÃO, TRANSPORTE, REDE, ENLACE E FÍSICA.
Estes modelos em comum trabalham empilhando protocolos independentes. A medida que uma mensagem vai passando de uma pilha para outra (camada) esta vai aumentando. Ambos modelos descrevem como os componentes de rede, tanto a nível de hardware ou de software, devem funcionar em simetria para se comunicarem. Cada camada destes modelos de arquiteturas possuem protocolos, funções e serviços detalhados que interagem com a camada vizinha tanto acima como abaixo dela. 

Modelo TCP-IP:
Se diz modelo padrão. Os dados entram no topo da pilha pela camada de aplicação e ao passar para a camada seguinte, transporte, é decomposta em segmentos para então virar um pacote na camada de rede.
Neste modelo os serviços existentes são:
* FRAGMENTAÇÃO -> Permite que um datagrama passe por diferentes segmentos de redes sem problemas com a tecnologia adotada. 
* INTERCONEXÃO -> Se encarrega de fazer comunicar diversas redes físicas diferentes, de modo que as camadas superiores abstraiam o caminho percorrido. 
* ENDEREÇAMENTO -> Faz a identificação de cada host da rede Lan ou Internet.
* ENCAPSULAMENTO -> A cada passagem por uma camada o dado recebe acréscimos de informações que serão decompostas na outra rede.
* ROTEAMENTO -> Neste serviço se escolhe as rotas a que os dados irão trafegar para chegar ao destino final.

O IP não é um protocolo confiável, mas o protocolo TCP é. O modelo TCP-IP não diferencia claramente serviços, protocolos e interfaces. É um modelo principalmente utilizado para a Internet.
Na realidade é muito comum encontrarmos apontado o nome deste modelo como TCP-IP. Só que isso não é bom, visto que dá a entender que se trata de um único protocolo, o que não é a realidade. TCP é um protocolo e IP é outro protocolo totalmente diferente. A nomenclatura correta deste modelo é IPS, sigla de Internet Protocol Switch adotada nos mais diversos livros.
As camadas que fazem parte do modelo TCP-IP e uma breve explicação de cada uma:
Aplicação: Esta é a primeira camada e os usuários estão mais próximas dela. Faz a comunicação entre os aplicativos e a camada de transporte através de uma porta numerada. Nesta camada operam os seguintes protocolos: HTTP, SMTP, FTP, TELNET, DNS.
Transporte : Faz o controle de fluxo e congestão. Permite  a comunicação entre duas máquinas. Recebe os dados da camada de aplicação e os transforma em pacotes a serem repassados à camada seguinte, rede. Nesta camada operam os seguintes protocolos: TCP e UDP. O tcp é um protocolo confiável, orientado a conexão da internet, utilizado por exemplo, em envio de e-mails,  já o protocolo udp não é confiável, não oferece garantia de entrega dos dados, como é protocolo rápido, é utilizado na telefonia ip (skype).
Rede : Faz o roteamento do início ao fim. Esta camada quando recebe o pacote da camada inferior o divide em subpacotes, os chamados datagramas, que serão enviados para a camada superior pelo cabeamento da rede. Nesta camada os seguintes protocolos são utilizados: ARP, IGMP, ICMP, IP, RARP.
Interface : Possui dentro dela as sub camadas enlace e física. É responsável por enviar os datagramas que chegam a ela em forma de um quadro através da rede. Na camada física da interface opera bits e bytes. Utiliza Ethernet e protocolos PPP.


Modelo OSI: 
Se diz um modelo real. Modelo de 7 camadas que são as seguintes:
Aplicação : representa os serviços de acesso à rede que suportam os aplicativos dos usuários, como programas de transferência de arquivos, banco de dados e e-mail. A camada de Aplicação é responsável pelo acesso geral à rede, controle do fluxo de informações e recuperação de erros. Faz tranferência de arquivos.
Apresentação : determina o formato usado para a troca de informações entre os computadores da rede. Pode-se pensar nela como a "tradutora" da rede. No computador origem, essa camada traduz os dados recebidos da camada de Aplicação para um formato comum, intermediário. No computador destino, ela traduz os dados do formato comum para um formato que pode ser reconhecido pela camada de Aplicação. As principais funções dessa camada são: conversão de protocolos, "tradução" de formatos, encriptação e compressão dos dados. Faz formatação de dados e conversão de caracteres e códigos.
Sessão :permite que duas aplicações em computadores diferentes usem uma conexão, chamada Sessão. Essa camada executa funções, como a de segurança, necessárias para que as aplicações se comuniquem pela rede e implementa o controle de diálogo na comunicação, regulando quem transmite, quando e por quanto tempo. Também é a responsável pela sincronia durante uma transmissão, colocando "pontos de verificação" no fluxo de dados. Dessa forma, se houver uma falha na rede, apenas os dados posteriores ao último "ponto" serão retransmitidos. Faz conexão com outro nó.
Transporte : implementa um nível de conexão confiável abaixo da camada de Sessão, garantindo uma transmissão sem erros, na sequência correta e sem perdas ou duplicações. Executa o controle de fluxo, correção de erro e participa do processo de solução de problemas na transmissão e recepção dos pacotes. 
Rede : é responsável pelo endereçamento das mensagens e tradução dos nomes e endereços lógicos em endereços físicos. É ela também que determina qual caminho será usado na transmissão, baseando-se nas condições da rede, prioridade nos serviços e outros fatores. Faz roteamento de pacotes através das redes.
Enlace : o objetivo dessa camada  é detectar e, opcionalmente, corrigir erros que possam ocorrer na camada Física, transformando um canal de transmissão não-confiável em um canal confiável. Para isso, divide os dados em pedaços menores, ou quadros, contendo informações para detecção de erros. Outra função dessa camada é o controle de fluxo, que evita relacionamento entre as Camadas. As camadas estão configuradas de tal maneira que cada uma parece estar se comunicando com a camada correspondente do outro computador. Essa comunicação virtual ou lógica cria o conceito de Parceiros ou Peer. Faz correção de erros.
Física : Esta camada pega os quadros enviados pela camada de enlace e os transforma em sinais compatíveis com o meio onde os dados deverão ser transmitidos. Se o meio for elétrico, essa camada converte os 0s e 1s dos quadros em sinais elétricos a serem transmitidos pelo cabo; se o meio for óptico (uma fibra óptica), essa camada converte os 0s e 1s dos quadros em sinais luminosos; se uma rede sem fio for usada, então os 0s e 1s são convertidos em sinais eletromagnéticos; e assim por diante. No caso da recepção de um quadro, a camada física converte os sinais do cabo em 0s e 1s e envia essas informações para a camada de Link de Dados, que montará o quadro e verificará se ele foi recebido corretamente. Faz a transmissão de bits.

Esta foi mais uma postagem, espero que gostem das explicações sobre as diferenças entre estes dois modelos de  rede.

É começo de madrugada, meia noite e pouca...
Até um próximo post.
Forte abraço,

Fabiano Lopes - 23 de novembro - 00:31








terça-feira, 20 de novembro de 2012

REDE EQUIPAMENTOS

Nesta postagem irei falar sobre os equipamentos que são utilizados para montar uma rede e qual a função de cada um deles.
Existe muita confusão sobre qual equipamento atende melhor uma projeção de rede.

                      M o d e m





Repetidor


Bridge/Ponte



Roteador



Switch



Os equipamentos de rede existentes são:
-> MODEM - Equipamento que troca dados através da LINHA TELEFÔNICA. O modem quando ativo, pega um sinal digital e o transforma em sinal analógico e o envia na linha, já quando receptivo, capta o sinal analógico e o transforma em sinal digital para que possa ser interpretado. A atuação do modem é na camada física.
-> HUB - Equipamento que funciona como um concentrador para os meios físicos. Utiliza portas, ele direciona os dados recebidos para todas as portas como um broadcast, e o computador destinatário dos dados o pega. Já está ultrapassado, por conta de existirem soluções mais adequadas. A atuação do hub é na camada física.
-> REPETIDOR - É um amplificador de sinal fraco. São instalados em pontos onde se nota o início da perda de sinal. Indicado para cenários onde o cabo irá percorrer grandes distâncias. A atuação do repetidor é na camada física.
-> PONTE OU BRIDGE - Equipamento utilizado para interligar várias redes. É um equipamento dotado de inteligência, faz filtro do que trafega, guarda informações mac. A ponte interliga as redes de forma transparente. Assim quem está acessando uma outra maquina não percebe, pois lhe parece estar na mesma máquina. As pontes podem ser usadas para interligar meios físicos diferentes ou redes de protocolos de enlace diferentes. A atuação da ponte é na camada de enlace.
-> ROTEADORES - Equipamento utilizado para determinar qual a melhor rota para um pacote trafegar na rede. Os roteadores dinâmicos são dotados de algoritmos que objetiva sempre escolher o melhor caminho, o caminho que gastará menos tempo para o pacote conseguir ser entregue. O roteador é mais lento que uma ponte, pois toma mais decisões. A atuação do roteador é na camada de rede.
-> SWITCH OU COMUTADOR - Equipamento utilizado para otimizar os recursos da rede, interligam redes de mesmo protocolo, fazem desvio quando há sobrecarregamento para uma rede menos carregada. Utiliza o sistema de portas como o hub, entretanto ele não replica o sinal para todos. O sinal é entregue para o real destinatário como um unicast. A atuação do switch é na camada de enlace.
-> GATEWAY - Equipamento utilizado para possibilitar a comunicação de ambientes computacionais totalmente diferentes. Interliga sistemas que utilize protocolos de comunicação diferentes, linguagens diferentes, arquiteturas diferentes e ou formato de arquivos diferentes. É melhor aproveitado estando dedicado na rede. A atuação do gateway é na camada de transporte.

Gosto deste assunto de equipamentos. Aqui me prendi a explicar cada um dos equipamentos utilizados em uma rede. 
Até um próximo post
Forte abraço

Fabiano Lopes - 20 de novembro - 20:24




SEGURANÇA NA NUVEM




APRESENTAÇÃO E INTRODUÇÃO

Este post  proposto por Fabiano Lopes e Ênio Almeida objetiva apresentar o tema SEGURANÇA NA NUVEM. 
Uma notícia divulgada pela BSA há cerca de 6 meses atrás é de certa temeridade: As políticas de segurança adotadas pelo Brasil o faz ficar em último lugar nesta questão num rankeamento em que foi agrupado 24 países. 
A Computação em Nuvem já faz parte do cotidiano da maioria dos usuários de computador. Numa tradução literal é um conceito de internet simples, mas que muda a forma de como armazenamos, processamos e compartilhamos os dados.
Tendo uma boa conexão de internet, não é necessário ter um computador com softwares específicos e espaço em HD dedicado para a criação de documentos, armazenamento de arquivos e edição de mídias por exemplo. Ao que parece,
teremos computadores cada vez menos “infestados” de softwares. Usaremos cada vez mais os aplicativos Web, que ficarão mais e mais sofisticados. Nossos pcs, notebooks e tablets servirão apenas como suporte para acessa-los. Apesar de suas inúmeras vantagens, a computação em nuvem também possui suas deficiências. Neste post de Segurança na Nuvem, descreveremos os principais riscos e soluções. Ao longo do post são apresentados aspectos importantes como o aprofundamento da questão da privacidade, os principais tipos de ataques em nuvem, pontos que podem ser explorados por pessoas mal-intencionadas e as atitudes recomendadas para quem
deseja contratar um serviço.
Por ser uma infra-estrutura compartilhada por n usuários, onde a informação é processada longe do local em que é visualizada e manipulada por terceiros, a computação em nuvem se torna um atrativo em especial para os hackers.
Pesa ainda o fato de que com um ataque bem sucedido, muitos usuários podem ser prejudicados ao invés de um ataque direcional.




RISCOS EMINENTES

Conservar todos os seus dados na nuvem parece bastante encantador, principalmente quando vemos os benefícios relacionados ao custo e a manutenção de servidores.
Contudo, ao tirar proveito dessas regalias, aceitamos alguns riscos inerentes ao processo. Alguns deles podem ser minimizados ou até mesmo anulados se nos informarmos o suficiente. Outros, todavia, ainda não possuem uma solução satisfatória ou não são tão graves. Esses riscos serão explanados abaixo:

Vá com calma ao se aventurar em uma nuvem pública !!!

*LIMITAÇÃO DE GOVERNANÇA: O usuário pode ficar sem saber como estará sendo feito alguns processos como backup, armazenamento, medidas de segurança, etc. O 
ideal é que o SLA (Acordo de Nível de Serviço) seja transparente, objetivo e claro para que os usuários saibam de que forma estarão protegidos e o que será de sua responsabilidade ou não.

*CONEXÂO CONSTANTE: O ponto fraco da nuvem é a instabilidade da internet. Se a conexão cair, toda a produtividade ficará comprometida, por isso, é recomendado
contratação de um serviço de banda larga veloz e, se possível, um segundo fornecedor para ter outra opção de acesso caso a primeira conexão falhe. Esse problema pode parecer um pouco distante, já que se escolhermos um grande provedor como Google, Amazon ou RedeHost essa situação não ocorre frequentemente. No entanto, não é impossível, há exemplos para se preocupar: Em 2009,  o Gmail ficou fora do ar por duas horas e em 2008 o Amazon ficou fora do ar por oito horas, prejudicando inúmeros usuários que necessitavam de suas contas até mesmo para realizar transações e negócios.

*APRISIONAMENTO NA NUVEM: Este é o problema de falta de portabilidade de dados entre os provedores. Caso o usuário tenha contratado um serviço em uma empresa e depois deseje sair, não necessariamente conseguirá importar todos os seus dados para a nova empresa contratada. Acontece isso pois cada provedor oferece o seu próprio conjunto de APIs para o usuário programar. Isto é um problema, pois ao se querer mudar de provedor, pode ser muito trabalhoso e dispendioso em matéria de tempo. A melhor maneira para evitar desagradáveis surpresas é já criar uma estratégia de saída antes de contratar um provedor.


*PROTEÇÃO DOS DADOS: Este ponto pode ser considerado o mais sensível quando se discute Computação em Nuvem. Confiança é a palavra-chave para este modelo 
funcionar. O usuário precisa acreditar que o provedor de serviço está engajado em proteger seus dados de exposição não autorizada, seja passando por auditorias de segurança de tempos em tempos ou oferecendo informações detalhadas de como seus dados serão utilizados e para quais propósitos.


*VULNERABILIDADES DAS NUVENS: A nuvem tem sido uma das tecnologias mais comentadas desde a Web 2.0. Como qualquer outra tecnologia, a nuvem é vulnerável a ataques mal intencionados. Embora a maioria dessas vulnerabilidades pese principalmente sobre os ombros do provedor na nuvem, o cenário de ameaça de interceptação de conta ou de serviço é algo compartilhado entre o provedor e o cliente. Assim como ocorre com qualquer serviço de TI, há vulnerabilidades de segurança que os invasores procuram na nuvem. Quanto mais os profissionais de TI ficam conscientes dessas vulnerabilidades e como resolvê-las, mais segura se torna a nuvem. É necessário fazer uma avaliação ao contratar seu provedor na nuvem.


*SEQUESTRO DA CONTA: Assim como a perda e o vazamento de dados, o sequestro da conta também é uma consequência dos problemas de vulnerabilidade da nuvem somada à distração ou ingenuidade do usuário. O ataque mais conhecido, phising, normalmente provê ao atacante alguma senha do usuário e partir desta o hacker passa a ter o domínio da conta e pode utilizá-la para atacar outros usuários, descobrir outras senhas e informações, enviar informações falsas, entre outros. Em 2007 na empresa Salesforce um dos seus empregados foi enganado por um ataque de phishing, expondo sua senha aos atacantes. Com isso, os hackers puderam descobrir informações importantes, como clientes do serviço, e passaram a enviar
faturas falsas para os mesmos.


*PERDA OU VAZAMENTO DE DADOS: É a consequência da falta de proteção dos dados e das vulnerabilidades das nuvens. No artigo, "Data Leakage Prevention and Cloud Computing", KPMG LLP diz, "Quando os dados estão em uma nuvem pública, sua implementação organizacional de DLP não tem mais valor para ajudar a proteger a confidencialidade desses dados. E, sua organização não tem controle direto sobre a confidencialidade de seus dados em uma nuvem pública nos modelos de entrega Software como serviço (SaaS) ou Plataforma como serviço (PaaS)."
Em uma época em que o Health Insurance Portability and Accountability Act de 1996 (HIPAA) e Payment Card Industry Data Security Standard (PCI DSS) exigem que as organizações levem a proteção dos dados a sério, o que você pode fazer para impedir o vazamento de dados na nuvem?
Recorrer aos produtos de prevenção de vazamento de dados existentes no mercado parece ser a melhor solução. No entanto, esses produtos têm mais como objetivo garantir a integridade e disponibilidade dos dados, não protegê-los. Além disso, provavelmente essas soluções não são implementadas em qualquer ambiente no qual você não controla a infraestrutura.
A prevenção, em vez disso, é o que protege os sistemas que hospedam e transportam dados.
Antes de qualquer coisa, o provedor na nuvem deve empregar um alto nível de criptografia quando o assunto é manipular seus dados tanto em armazenamento quanto em trânsito. Você também deve executar etapas a fim de assegurar que exista um acordo de nível de serviço assinado entre sua organização e o provedor de serviço na nuvem, definindo claramente as funções e responsabilidades da
proteção dos dados na nuvem. Como parte desse acordo, certifique-se de que o provedor de serviço na nuvem limpe a mídia persistente antes de liberá-la no pool.
Outra etapa DSS é se certificar de que exista um firewall de aplicativo da web configurado apropriadamente, para proteger aplicativos baseados na web contra diversos ataques.
Antes de se comprometer com qualquer provedor de SaaS, o departamento de TI de uma organização precisa discutir o nível de proteção usado para proteger o software baseado na web. Se tiver permissão, execute testes de penetração em quaisquer aplicativos usados por sua empresa.
Finalmente, é possível executar etapas internamente para 
se proteger contra vazamento de dados na nuvem, mas isso envolve uma mudança nas políticas relacionadas aos dados. As organizações que temem o vazamento de dados devem
ter políticas que classificam os dados e fornecem normas sobre como lidar com os diferentes níveis de dados. Resumindo, alguns dados não servem para serem 
armazenados na nuvem. 

    


A PRIVACIDADE

Atenção: Este é um ponto preocupante.
Hospedar dados nas nuvens traz inúmeras vantagens e desvantagens como já foi mostrado até aqui. O ponto mais crítico desse assunto é a questão da privacidade, afinal o usuário está confiando a terceiros as suas informações. Como garantir que seus dados serão confidenciais? Que a empresa terceirizada para guardá-los não irá utilizá-los posteriormente para outros fins? Ou sofrer um ataque e possibilitar o acesso de indivíduos estranhos e não 
autorizados?
A estratégia de segurança da Amazon é o chamado XEN HYPERVISOR, para realizar virtualizações . Nesta técnica, o sistema operacional da máquina virtual interage com o monitor da máquina virtual (VMM), onde somente as instruções sensíveis são interpretadas neste e as outras 
são repassadas ao hardware. O resultado pode ser interpretado como uma virtualização de hardware, aumentando a segurança da separação entre o sistema operacional convidado e o VMM.
A abordagem que apresenta o maior potencial é a que envolve a criptografia de dados-propõe uma solução baseada em uma arquitetura capaz de executar diversos aplicativos simultaneamente, cada um em uma área dedicada de um coprocessador à prova de adulteração (tamper-proof). A chave dessa solução é que a arquitetura é capaz de rodar lado a lado programas privados e aplicativos normais, como se fossem caixas separadas.
Dessa maneira, podemos ter para um mesmo serviço diferentes níveis de configuração e segurança. Nesse esquema, propõe o conceito de "Privacidade como Serviço" (Privacy as a Service, Pass), onde uma empresa terceirizada confiável, diferente da empresa provedora de serviço, fica responsável pela configuração criptográfica dos coprocessadores. Todo usuário, ao se cadastrar na empresa, ganha uma chave pública e outra privada. E para cada programa criado pelo usuário, chaves específicas são criadas para o mesmo. Fica a cargo da empresa configurar os coprocessadores com as respectivas chaves.
Soluções em torno dessa abordagem ainda são incipientes, técnicas atuais consomem bastante banda e são lentas. No entanto, com o crescimento da demanda por essa área, com
o surgimento de coprocessadores criptográficos de código aberto e o aumento das pesquisas e investimentos, ela tende a se desenvolver para soluções mais práticas que possam ser adotadas em larga escala .



TIPOS E CONSEQUÊNCIAS DOS ATAQUES

Abaixo falarei de alguns tipos de ataques que um invasor costuma escolher. As consequências dos ataques na maioria das vezes é se auto beneficiar de algum modo.

*ATAQUE DoS: Para efetuar um DoS (ataque de negação de serviço), pode ser empregado o fato de o protocolo TCP necessitar de uma resposta do cliente para estabelecer a conexão. Neste ataque vários pedidos de sincronização (SYN) são feitos pelo atacante ao servidor que responde com um sinal. O atacante não responde novamente ao servidor, fazendo com que este consuma memória e 
processamento esperando por uma resposta. Um exemplo aplicado à computação em nuvem seria fazendo uso da fácil escalabilidade de um serviço. O que é normalmente uma vantagem, se mal intencionado, pode sobrecarregar não só
os recursos alocados para aquele serviço como para os outros usuários que compartilham da estrutura. O dono do sistema atacado, caso tenha contratado o modelo pague-o-que-usar, ainda terá de arcar com os custos extras. Ou seja, irá prejudicar quem contratou o serviço, pois este tipo de ataque fará consumir maior tráfego e acontecendo isto, o consumidor irá gastar mais $$$.


*ATAQUE DDoS: Há também o DDoS (ataque distribuído de negação de serviço), onde um computador, chamado de mestre, comanda vários outros computadores, conhecidos como zumbi. Uma maneira de se realizar um DDoS é sequestrar um servidor e desabilitar todos os serviços de web, exigindo um resgate para habilitá-los novamente.


*ATAQUE MAN IN THE MIDDLE (homem no meio): Ataque cujo objetivo é colocar o atacante entre dois pontos, como um elemento transparente. Dessa maneira, um usuário crê que está conversando diretamente com outro quando na verdade o atacante é que recebe a informação e a repassa. Consequências desse ataque é a leitura dos dados e até mesmo a alteração dos mesmos ao repassá-los. Assim, um
atacante pode descobrir as credenciais para se logar em um serviço de computação em nuvem. Uma variante desse ataque é o man-in-the-mailbox, onde o intruso se coloca como receptor de mensagens de e-mail para enviar arquivos maliciosos ou descobrir senhas, relatórios e outras informações privilegiadas enviadas por funcionários de corporações. Em 2009, a Google teve seus sistemas  atacados. Os hackers aproveitaram uma falha do Microsoft Internet Explorer para praticá-lo e então entrar nos servidores da empresa.


*INJEÇÃO DE CÓDIGO: Ato cujo objetivo é inserir pedaços de código no servidor. Se usado como ataque, o código mal-intencionado pode alterar um banco de dados injetando SQL, roubar informações pessoais, ou até mesmo instalar malware no computador do usuário ou no servidor. O intuito do malware é permanecer despercebido, ocultando-se ativamente ou simplesmente não se fazendo notar em um
sistema conhecido pelo usuário. Um malware instalado em uma nuvem, por exemplo, pode infectar as outras instâncias da nuvem ou os usuários que requisitarem seus serviços.



MEDIDAS DE SEGURANÇA

Tomar medidas de segurança antes de contratar um serviço é muito importante: possuem o objetivo de minimizar o risco tomado por uma empresa ou usuário ao contratar um serviço. Em geral, elas tentam maximizar a transparência entre contratado e contratante para que fique claro para ambas as partes o nível de segurança oferecido pelo provedor.

Um acordo de nível de serviço (SLA) deve ser assinado por ambas as partes de modo a definir as responsabilidades de cada um e os termos e condições para uma eventual quebra de contrato.

Verifique se a empresa é de confiança, pois 77% dos vazamentos  envolvendo propriedade intelectual ocorrem por causa de ataques vindos de dentro da própria empresa. Colocar suas informações em empresas reconhecidas diminui a probabilidade de vazamento, tanto por  uma parte mal intencionada da empresa como por ataques externos, já que elas investem bem mais em segurança e infra-estrutura.

Dar importância maior aos seus dados sensíveis, pois dependendo do valor que eles representam pode ser uma boa ideia contratar um modelo privado ou comunitário, 
onde todos os usuários são conhecidos. Apesar de mais caro, proporciona uma segurança a mais.

Considerar as implicações legais é uma medida de segurança. Muitos provedores de serviço possuem seus datacenters espalhados pelo mundo. É importante saber
a localidade de onde seus dados estarão guardados, pois, as leis do país também serão aplicadas aos dados. Isso pode se tornar um problema se o país possui leis inadequadas à segurança de dados privados.

Descubra a política de backup do seu provedor. Jamais use dedução. Não deduza que ele será capaz de restaurar todos os seus dados e serviços sem antes verificar com o próprio servidor.


Concluindo, guardar dados em nuvens, utilizar nuvens para usar aplicativos é uma realidade atual. Certamente irá se desenvolver cada vez mais, com o advento de novas tecnologias que surgirão. Pensar na segurança destes dados confiados a terceiros é basicamente questão de vida. Uma perda de dados na nuvem pode ser irreparável, se a política de segurança do provedor não for eficiente.

Este foi mais um post, 
Desejo um bom dia pra você
Forte abraço, 
Fabiano Lopes - 20 de novembro - 17:52










segunda-feira, 19 de novembro de 2012

UNICASTING, BROADCASTING E MULTICASTING


Falar de unicasting, broadcasting e multicasting é falar de formas de COMUNICAÇÃO EM GRUPOS.

Um grupo é um conjunto de processos que atuam juntos. O propósito principal de utilizar-se da comunicação de grupos é o de enviar uma mensagem para um grupo de servidores sem se preocupar em saber quantos são, onde estão localizados e quem são estes servidores.

UNICASTING - este conceito foge um pouco da forma de comunicação em grupos, pois na comunicação unicast, um pacote é enviado de um remetente para um destinatário. Para se enviar mensagens para um grupo, o remetente neste estilo de comunicação deverá enviar uma mensagem por vez para cada componente do grupo. Exemplo de unicasting é o uso da internet e rede local. A vantagem da comunicação unicast é que ele funciona bem nos ambientes de rede, com uso de roteadores. Os protocolos que posso citar serem utilizados neste tipo de transmissão são: FTP, HTTP, SMTP, TELNET.

BROADCASTING - neste tipo de comunicação um remetente envia uma única mensagem e esta mensagem é recebida por TODOS os componentes de um grupo. Não importa se você solicitou a mensagem, caso você seja um dos componentes do grupo a irá receber. Exemplo claro de broadcasting é uma transmissão de rádio, caso você faça parte do grupo sintonizado na estação, irá receber a mesma transmissão que todos que estão sintonizados receberão. Um outro caso mais ligado á area de TI: Se for preciso  descobrir uma determinada impressora de uma rede, um computador pode formular uma mensagem que especifica o nome dela e então enviar por broadcasting para todas as unidades da rede. Certamente todas as unidades receberão a mensagem, entretanto a única a responder a mensagem será a impressora especificada. A vantagem da comunicação broadcast é que um mesmo sinal é recebido por todos em cópia. O protocolo que posso citar ser utilizado neste tipo de transmissão é: ARP

MULTICASTING - um para alguns, ou seja, um remetente envia para alguns destinatários selecionados uma mensagem. Um exemplo de multicasting é uma transmissão de futebol feita por um servidor. Os receptores captam a transmissão e a reproduzem. A vantagem do multicasting é que um pacote enviado é duplicado apenas para os hosts interessados nele. Isto diminui consideravelmente o tráfego da rede (em comparação ao broadcast). O protocolo que posso citar ser utilizado neste tipo de transmissão é: IGPM

Esta então foi mais uma postagem. Aqui explanei sobre os modos de comunicação em grupos.

Espero que a leitura tenha sido de bom grado para você

Forte abraço,

Fabiano Lopes - 19 de novembro - 22:37
sd

MIDDLEWARE

O que é middleware?


Middleware não quer dizer diretamente aplicação, nem faz parte do sistema operacional. Podemos definir middleware como uma camada entre a aplicação e o sistema operacional. A camada de middleware faz autenticação, identificação, executa diretórios e certificados digitais. Tem propósito de solucionar problemas de conexão e de interoperabilidade (ô palavrinha difícil,rs). O middleware facilita a comunicação em sistemas distribuídos e deve ser implementado de forma a garantir o aspecto multiplataforma. O programador deve se atentar quais serão as funcionalidades para clientes e quais serão as funcionalidades para servidor.

Serviços que a middleware oferece:

GERENCIAMENTO - (balanceamento de carga na rede, gerenciamento de histórico, gerenciamento de arquivos, servidor de diretório entre outros)  utilizado para  acesso de aplicações aos serviços de banco de dados e de rede.

COMUNICAÇÃO - (procedimento remoto, correio eletrônico, fila de mensagens, mensagens ponto a ponto)  utilizado para troca de informações entre um programa e outro.

MONITORAÇÃO - (notificação de eventos, gerenciamento de configuração, gerenciamento de instalação de aplicativo, detector de erros)  utilizado para aplicações gerenciadoras.

O nosso país conseguiu uma grande proeza, que foi a produção do Ginga, que é um middleware para uso em tvs digitais. O Ginga visa possibilitar acesso a internet através da televisão ou telefone celular sem se importar com qual sistema operacional está lidando.

Bem, fica aqui mais uma contribuição expressa no blog.
Forte abraço,

Fabiano Lopes - 19 de novembro - 20:46


domingo, 18 de novembro de 2012

SOQUETE (socket)

O que é soquete ? Qual a sua função ?

Soquete é um termo do ramo da TI que realmente gera ambiguidades e confusões.
Pois soquete a nível de hardware pode significar tomada ou ainda, o local reservado na placa-mãe para receber o processador. Existe vários tipos de soquetes e o numeral que o acompanha é correspondente ao número de pinos que ele suporta. Um soquete do tipo 771J , aceita o processador Xeon que possui 771 pinos.

O soquete (socket) que me prenderei a explanar é o Soquete de Rede.
O soquete de rede é a interface existente entre a camada de aplicação e a de transporte no modelo OSI-ISO. A camada de transporte utiliza os protocolos UDP (não orientado a conexão e não seguro) e TCP (orientado a conexão e seguro).
Os soquetes de rede são responsáveis por possibilitar a troca de informações entre processos operando em hosts diferentes. Trocando em miúdos: Permitem a comunicação entre programas instalados em diferentes computadores. São as extremidades de canais de comunicação. O datagrama de um soquete é formado pelo endereço IP combinado com o número de porta. A arquitetura utilizada para a comunicação de soquetes é a de cliente-servidor. O cliente, conhecedor do que o servidor oferece, envia requisições de conexão ao servidor. O servidor aguarda ser contactado pelo cliente através de uma porta. Uma vez contactado libera uma das portas (aproximadamente 32 mil no padrão TCP) para o aplicativo cliente. Num mesmo aplicativo pode haver n clientes. Utiliza protolo TCP (são chamados de Stream Sockets). Nesta comunicação para cada processo existe um soquete. Logo, dois processos, dois soquetes.
Já na comunicação usando soquetes que utilizam protocolos UDP (são chamados de datagram socket)a interface é semelhante à das caixas de correio habituais nos sistemas de inter comunicação entre processos. O canal é conceitualmente estabelecido apenas para o envio de uma mensagem (sem garantia de sucesso).
Ao se desenvolver um aplicativo, este terá nuances de servidor e cliente.
Do lado servidor são invocados os seguintes métodos:   Socket - para criar um soquete, Bind - para ceder e esperar a porta de conexão, Listen - deixa as APIs de sobre aviso, Accept - para aceitar uma conexão, Recv - para receber dados, Send - para repassar dados, Close - fecha a conexão. 
Do lado cliente são invocados os seguintes métodos: Get Host By Name - usado para achar o endereço IP, Connect - conectar ao endereço ip encontrado, Socket, Recv, Send, Close.
Entretanto, programar com soquetes não é tão simples. Mas é estritamente necessário quando formos por exemplo criar um chat.
Recomendo a leitura da apostila criada pela Universidade Federal de Campina Grande (Edmar Candeia). È para aplicativos em C. Só que podemos ter a idéia de como funciona todo este processo de programação utilizando soquetes. Querendo se aprofundar, o link está aí:

 http://www.dee.ufcg.edu.br/~ecandeia/downloads/redes/textoprogramacaosockets.pdf

Bem, por aqui vou encerrando mais um post.
Abraços,

Fabiano Lopes, 18 de novembro, 21:40




THREADS - O que são? Qual sua função?

THREADS - O que são? Qual a sua função?



THREADS

Basicamente escrevemos nossos simples códigos com um único fluxo de controle. Quando isso acontece, o programa irá executar passo a passo as linhas de código. Quando se trata de um programinha bobo, ter um único fluxo de controle não é relevante.

As threads são trechos de códigos com o intuito de executar processo de forma paralela. As threads permitem que varias execuções ocorram no ambiente do aplicativo. Desta forma ao se utilizar de threads de forma correta, teremos melhor aproveitamento de memória e ganho de tempo.

O sistema operacional que usamos no dia-a-dia, seja Windows, Linux ou qualquer outro é carregado de multi threads que são gerenciadas pelo próprio sistema operacional.

O termo multithreading diz respeito aos conjuntos de threads existentes em um mesmo aplicativo.

Exemplo de uso de threads é a planilha de excel: Enquanto estamos inserindo dados na planilha ela ao mesmo tempo pode estar salvando todo o documento.

Quem distribui as threads aos processadores é o S.O, mas é importante verificar se algum programa pode estar rodando na função de alta prioridade, pois isso faz o S.O alocar um núcleo somente para aquele programa. Desta forma, se isto estiver ocorrendo, a distribuição ficará comprometida.


ESTADOS DE UMA THREAD:

*New Thread - A thread está se inicializando, ainda não há recursos do sistema alocado para ela ainda. Quando neste estado, você só pode iniciar a execução dela (start) ou a aniquilar (stop).

*Runnable - Significa que a thread está na agulha, só aguardando a sua execução. Os métodos a serem utilizados quando ela está neste estado são: Start - inicia a execução da thread requisitando os recursos necessários e também chama o método Run - que faz o que está implementado no código da thread.

*Not Runnable - Significa thread parada - Os métodos que são utilizados para parar uma thread de algum jeito específico são: Sleep - faz a thread parar por um tempo pré determinado, desta forma a thread pára e retorna a execução automaticamente quando estoura este tempo pré determinado. Suspend - suspende a execução de uma thread, quando isto ocorre fica-se aguardando o método Resume - que faz retornar a execução da thread suspensa. A thread também pode ser bloqueada por I/O, se isto ocorrer, fica dependente da I/O ser completada.
 
*Dead - Significa o término natural da thread - O método Run termina ou fazemos uso do método Stop.
 
 
MULTITHREADING NO CHIP:
 
Todas as CPUs atuais tem condições de utilizar de multithreading, trata-se de uma abordagem para evitar a ociosidade do processador em um determinado processo.
 
Aqui vou dar um exemplo de multithread de granularidade fina com a utilização de 3 threads. Consideremos cada etapa (a1, a2 ...) como um ciclo do relógio. O "X" representa ociosidade do processador na execução da thread, por algum motivo a thread não foi executada naquele ciclo. Observe abaixo.
 
Ex: THREAD A
A1 A2 X X A3 A4 A5 X X A6 A7
 
Ex: THREAD B
B1 X X B2 X X B3 B4 B5 B6 B7
 
Ex: THREAD C
C1 C2 C3 C4 X C5 C6 X X C7
 
O multithreading de granularidade fina utiliza o processador em um rodízio circular, aproveitando todos os ciclos do relógio, não deixando a cpu ociosa (como ocorreu no exemplo acima). A CPU é utilizada em velocidade integral. Veja abaixo como ficaria o exemplo utilizando a granularidade fina com a utilização das três threads citadas acima:
 
Ex: Granularidade Fina : THREAD D
A1 B1 C1 A2 B2 C2 A3 B3 C3 ...
 
Abaixo dou um exemplo de multithread de granularidade grossa, neste exemplo, utilizado por alguns desenvolvedores, nessa abordagem, a thread A é iniciada até a primeira ociosidade ou protelação e se desperdiça um ciclo. Neste ponto a execução é transferida para B1 até ocorrer a primeira ociosidade ou protelação, quando novamente há transferência de execução e quem passa a ser executado é C1.
 
Ex: Granularidade Grossa : THREAD E
A1 A2 X B1 X C1 C2 C3 C4 X A3 A4 A5
 
Nestes exemplos que utilizei, estou considerando apenas uma instrução por cada ciclo do relógio. Hoje é possível emitir múltiplas instruções por ciclo. Isto é conseguido com uma CPU superescalar dual. Darei mais três exemplos de multithreading, um de multithreading fino superescalar (F), outro de multithreading grosso superescalar (G) e outro de multithreading simultâneo (H).
 
Ex: Granularidade Fina Superescalar : THREAD F
-note que cada coluna representa duas instruções sendo executadas num unico ciclo.
 
A1 B1 C1 A3 B2 C3 A5 B3 C5 A6 B5 C7
A2  X  C2 A4  X  C4 X   B4 C6 A7 B6 C8
 
Ex: Granularidade Grossa Superescalar: THREAD G
-note que cada coluna representa duas instruções sendo executadas num unico ciclo
 
A1 B1 C1 C3 A3 A5 B2 C5 A6 B3 B5
A2  X  C2 C4 A4  X   X  C6 A7  X  B6
 
Ex: Simultâneo : THREAD H
-note que cada coluna representa duas instruções sendo executadas num único ciclo
 
A1 B1 C2 C4 A4 B2 C6 A7 B4 B6 C7
A2 C1 C3 A3 A5 C5 A6 B3 B5 B7  X
 
Estes foram exemplos de como utilizar multi thread a fim de aproveitar melhor um aplicativo e aproveitar melhor os recursos do sistema.
 
Há um outro fator a se pensar : Já que a execução de partes de uma thread ocorre a cada ciclo do relógio porque não aumentar a velocidade do relógio? Por que não colocar duas Cpus em único chip? Aumentar a velocidade do relógio desagradavelmente pode trazer problemas - um relógio mais rápido gasta mais energia, isto é um diferencial negativo em caso de notebooks ou outros dispositivos que utilizem bateria  - um relógio mais rápido faz o processador esquentar muito mais e há de se dissipar este calor. Colocar duas cpus em único chip equivale a duplicar a área do chip e aumentar o custo de produção e não ter garantia de ganho. Por estes motivos o uso de thread tem sido uma constante para resolver problemas de aproveitamento do processador.
 
Bem, quis dar uma breve explicação do que é thread e qual a sua função. Espero uma lida em um próximo post.
 
Fabiano Lopes, 18 de novembro, 14:18
SD
 
 
 
 
 
 
 

QUEM SOU ?


Meu nome é Fabiano Lopes e resolvi criar esse blog para deixar registro de um pouco das minhas experiências com a finalidade de compartilhar o sei e o que tenho aprendido.
  • Universitário cursando Analise de Sistemas pela Faculdade Salgado de Oliveira (UNIVERSO - Niterói - RJ).
Sou morador de Niterói, cidade de Araribóia, trabalho há mais de quinze anos numa empresa de jornais e revistas.

e-mail: fabiano211075@gmail.com


Três frases norteiam minha vida e gostaria de deixa-las para reflexão:
"NUNCA SE VENCE UMA GUERRA LUTANDO SOZINHO" - nunca seja arrogante a ponto de achar que você não precisa de ninguém para resolver um problema, tente sempre contar com as pessoas mais próximas e se achegue a Deus, ouça conselhos, aprenda com os mais velhos.

"CORAGEM, SE O QUE VOCÊ QUER É AQUILO QUE PENSA E FAZ" - tenha uma meta em sua vida e batalhe para cumpri-la. Só conseguiremos fazer de um sonho uma realidade se tivermos determinação constante e não desanimarmos de nossos sonhos nos percalços do dia-a-dia. Sonhe mesmo, sonhe muito, ouse sonhar, mas aprenda a realizar.

"TUDO POSSO NAQUELE QUE ME FORTALECE" - sou cristão e este versículo bíblico resume tudo: Tenha em Deus a sua fortaleza. Com Deus no coração somos diariamente vencedores.

Gosto muito de linguagens de programação. Gosto de programar e desenvolver. Adoro ver um software que posso chamar de meu. Conheço C, Delphi, Java. Fiz alguns cursos. Também conheço alguns SGBDs como Oracle, MySql, Firebird.
Bem, falei um pouco de mim, e informo que neste blog, pretendo deixar registrado muitas coisas relacionadas a TI em geral. O intuito é que este blog futuramente vire um site talvez escrito em joomla.

Forte abraço a todos