Documente Academic
Documente Profesional
Documente Cultură
Felipe Zimmerle da Nbrega Costa Orientador: Prof. Carlos Alexandre Barros de Mello Recife, junho de 2008
Felipe Zimmerle da Nbrega Costa Orientador: Prof. Carlos Alexandre Barros de Mello Recife, junho de 2008
Resumo
A tecnologia USB, Universal Serial Bus, surgiu da necessidade de diminuir-se o nmero de protocolos de comunicao e de instituir-se um padro de transmisso. Porm, a mobilidade cada vez mais uma necessidade do usurio, e em decorrncia desse fato, foi criada a tecnologia WUSB ou Wireless USB. O meio com fio no demanda uma grande preocupao com a proteo dos dados por ele trafegados. Contudo, o meio sem fio enfrenta mais obstculos em relao segurana, uma vez que, mais propenso a sofrer interferncias e ataques. Neste trabalho so efetuadas diversas anlises sobre a segurana da informao no WUSB e seu protocolo de comunicao, alm de melhorias nas implementaes existentes. Tambm realizado um estudo sobre criptografia, algoritmos de cifra e USB para embasar a compreenso das especificaes WUSB. So analisados os drivers dos dispositivos HWA para aferir se estes encontram-se nos padres de codificao do Kernel e no modelo de especificao WUSB. Tambm realizada uma anlise da implementao do Cable Association no sistema operacional Windows e no Linux. Ao longo do trabalho, tambm esto descritos os processos de teste e homologao das implementaes de correo.
ii
Abstract
The USB, Universal Serial Bus, technology arose from the needs for reducing the number of communication protocols and to establish a transmission pattern. However, mobility is an increasingly need for the user, and it resulted in the establishment of the WUSB or Wireless USB technology. The wired USB transmission does not demand a great concern with data protection. However, wireless connections face more obstacles in relation to security, since it is more prone to suffer interference and attacks. This work does various analyses about information security in WUSB, its communication protocol, and improvements in existing deployments. Also it is presented an study on cryptography, encryption algorithms, and USB protocol in order to allow a complete comprehension of WUSB specifications. We make an analysis on device drivers of HWA devices to ascertain if they are found in the patterns of the kernel coding style and in the model of WUSB specification. It was also analyzed the implementation of the Cable Association in the Windows and Linux operating systems. The work describes the procedures for testing and approval of the necessary implementations.
iii
Sumrio
ndice de Figuras ndice de Tabelas Tabela de Smbolos e Siglas 1! Introduo
1.1! Objetivos 1.2! Organizao do Trabalho
2! Conceitos Bsicos
2.1! Definies Iniciais sobre Criptografia 2.2! Criptografia Simtrica 2.2.1! Advanced Encryption Standard 2.2.2! Modos de Operao 2.3! Criptografia Assimtrica 2.4! Algoritmos de Hash
12!
12! 13! 13! 15! 17! 18!
20!
21! 21! 21! 22!
4! Wireless USB
4.1! Sobre WUSB 4.1.1! Topologia Fsica 4.1.2! Topologia Lgica 4.1.3! Modelo de Conexo 4.2! Modelo de Criptografia do WUSB 4.3! Connection Context 4.3.1! Associao com Chave Simtrica 4.3.2! Associao com Chave Pblica
25!
25! 26! 26! 27! 27! 28! 28! 29!
30!
30! 30! 31! 32! 32! 33! 35! 36! 37! 38!
5.3.4! Homologao
40!
ndice de Figuras
Figura 1.! Operaes do AES, (a) SubBytes. (b) ShiftRows. (c) MixColumns. (d) AddRoundKey......................................................................................................................... 14! Figura 2.! Etapas do AES. ........................................................................................................... 15! Figura 3.! Modo de operao CBC, Cipher Block Chaining: (a) representa uma cifragem enquanto (b) representa um decifragem. ................................................................................. 16! Figura 4.! Diagrama de operao do modo Counter, sendo (a) o processo para cifrar e (b) o processo para decifrar.............................................................................................................. 17! Figura 5.! Diagrama de operao do MAC. Observe que a chave K a mesma tanto para o receptor quanto para o emissor................................................................................................ 17! Figura 6.! Exemplo do funcionamento do algoritmo de chave pblica RSA.............................. 18! Figura 7.! Exemplos de aplicaes de um algoritmo de Hash. ................................................... 18! Figura 8.! Logos colocados em dispositivos USB que seguem o padro espeficado pelo USB-IF. A imagem (a) representa os dispositivos 2.0 enquanto a (b) representa os dispositivos nas verses anteriores 2.0............................................................................................................ 20! Figura 9.! Topologia fsica da ponte USB [26]. .......................................................................... 21! Figura 10.! Topologia Lgica da ponte USB [26]....................................................................... 22! Figura 11.! Assinatura da funo de envio de mensagem de controle para um dispositivo USB, definida no kernel do Linux, verso 2.6.17 no arquivo drivers/USB/core/message.c e encontrada na linha 135........................................................................................................... 23! Figura 12.! Comunicao entre um host e um dispositivo lgico [26]. ...................................... 24! Figura 13.! Logo que representa a garantia de compatibilidade dos dispositivos Wireless USB com o padro estabelecido pela USB-IF. ................................................................................ 25! Figura 14.! Exemplo de dispositivos conectados a uma rede WUSB [30]. ................................ 26! Figura 15.! Topologia WUSB [30].............................................................................................. 27! Figura 16.! Processo de associao [30]. .................................................................................... 29! Figura 17.! Exemplo de ataque de MITM: Bob tenta mandar uma mensagem para Alice; entretanto, o invasor coloca-se no meio da conexo, fingindo ser Alice para Bob e Bob para Alice. .................................................................................................................................. 31! Figura 18.! Primeira troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: GET_ASSOCIATION_INFORMATION. (b) Tamanho da estrutura. (c) Nmero de requisies. (d) Valor pr-definido. (e) Valor do ndice. (f) Byte reservado. (g) Valor prdefinido. (h) Tipo da requisio. (i) Tamanho da informao associada a requisio. (j) Valor do ndice. (l) Byte reservado. (m) Valor pr-definido. (n) Tipo da requisio. (o) Tamanho da informao associada a requisio. ......................................................................................... 33! Figura 19.! Segunda troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: HOST_INFO. (b) Tipo da associao. (c) Sub-tipo da associao. (d) CHID. (e) ID da linguagem utilizada. (f) Nome amigvel do host. ................................................................... 34! Figura 20.! Terceira troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: DEVICE_INFO. (b) Tamanho desta estrutura. (c) CDID. (d) BandGroups. (e) Nome amigvel do dispositivo. (f) ID da linguagem utilizada. ......................................................... 34! Figura 21.! Quarta e ltima troca de mensagem entre o host e o dispositivo. (a) Tipo de comunicao: SET_ASSOCIATION_REQUEST. (b) Tipo da associao. (c) Sub-Tipo da
vi
associao. (d) Tamanho da estrutura de dados. (e) CC, Connection context. (f) BandGroups. .................................................................................................................................. 35! Figura 22.! Dispositivos HWAs. (a) Dispositivo do fabricante IOGear. (b) Dispositivo do fabricante Intel......................................................................................................................... 36! Figura 23.! Trecho do log de sistema, aps d dispositivo ser ligado ao sistema, onde (a) representa uma mensagem de erro aps o envio do firmware................................................. 37!
vii
ndice de Tabelas
Tabela 1.! Tabela S-Box usada pelo AES. As colunas determinam o nybble menos significativo e as linhas o mais significativo [23]. ....................................................................................... 14! Tabela 2.! Comparativo entre diversos algoritmos de Hash........................................................ 19! Tabela 3.! Dados que so considerados na gerao do nonce utilizado pelo WUSB.................. 31! Tabela 4.! Distribuio do cabealho MAC mais payload num bloco de dados WUSB. ........... 32! Tabela 5.! Firmawares suportado pelos dispositivos HWA........................................................ 36! Tabela 6.! Tabela comparativa entre a segurana da USB com fio e sem fio ............................. 41!
viii
ix
Agradecimentos
#include <linux/module.h> #include <linux/config.h> #include <linux/init.h> static int __init mymodule_init(void) { printk ("Agradeo em especial a minha famlia, meus pais, Flvia e Domingos por \n"); printk ("todo o apoio e incentivo. A meus avs, em especial meu av Ramon \n"); printk ("Nbrega, por todo carinho e por ter sido para mim, todos esses anos, um \n"); printk ("grande exemplo.\n\n); printk ("Ao meu sogro e sogra, Prof. Lee e Sonia, pelo incentivo e ajuda. \n"); printk ("A minha cunhada, Sonmi, sempre disposta a nos levar pro mau caminho. \n\n"); printk ("A todos os meus professores/amigos da faculdade especialmente a Carlos \n"); printk ("Alexandre, que mesmo depois de me aturar durante dois anos seguidos \n"); printk ("em lgebra Aplicada, ainda assim, aceitou ser meu orientador. Obrigado. \n\n"); printk ("A Ricardo Ulisses e a toda sua pacincia por ter me aturado como dupla e \n"); printk ("como colega de equipe em quase 100% dos trabalhos. \n\n"); printk ("Agradeo a todos com quem trabalhei, que agentaram meu mau humor e \n"); printk ("minha cara de sono !. Especialmente, a Marco Kiko Carnut por me passar \n"); printk ("um pouco do seu conhecimento de criptografia e de l33t. Obrigado a clm, \n"); printk ("ech, csm, jcpac, ^2, tcb, mabj e a todos os outros Tempesters. \n\n"); printk ("Aos amigos do INdT, em especial ao meu chefinho Eduardo Rocha, por me \n"); printk ("permitir trabalhar em projetos to motivadores. A meu ex-chefinho Frvio \n"); printk ("Jos, por tolerar meus atrasos e ausncias. Han? O que? \n\n"); printk ("A Inaky Perez e a Intel pela doao dos equipamentos utilizados durante \n"); printk ("este trabalho. A Lizardo e a David Vrabel pela ateno e pacincia na \n"); printk ("reviso e nos comentrios dos meus patches. \n\n"); printk ("Agradeo a todos os que me ajudaram. Obrigado.\n\n"); return 0; } static void __exit mymodule_exit(void) { printk ("Tks to Greg HK... I Love Greg. \n\n"); module_init(mymodule_init); module_exit(mymodule_exit); MODULE_LICENSE("Dual BSD/GPL"); MODULE_AUTHOR("Felipe Zimmerle <felipe@zimmerle.org>"); }
10
Captulo 1 Introduo
Foi com o intuito de diminuir o nmero de protocolos de comunicao, instituindo-se um padro de transmisso de dados entre perifricos e computador, que a tecnologia USB, Universal Serial Bus, foi criada. Hoje, a USB j consagrada, pois possui inmeras vantagens como: baixo custo, padro robusto, reduo do nmero de cabos e fcil utilizao [1]. Cada vez mais a necessidade dos usurios se volta para a mobilidade e esta se alia rapidez e agilidade nas comunicaes. Atualmente, a interface de conexo eficiente e de alta velocidade USB j oferece as suas funcionalidades sem precisar dos fios. Um grupo de promotores da USB sem fio (tambm chamada de WUSB Wireless USB) que define as especificaes que fornecem um padro para a tecnologia. Esse grupo foi anunciado no Frum de Desenvolvedores da Intel em 2004 e formado por sete lderes no setor: Agere Systems [2], HP [3], Intel [4], Microsoft Corporation [5], NEC [6], Philips Semiconductors [7] e Samsung Eletronics [8]. A especificao da interface WUSB mantm a mesma utilizao e arquitetura da USB com fio, definida por uma conexo host-dispositivo, de alta velocidade. O objetivo principal da especificao fazer com que a WUSB funcione como um substituto do cabo. Para tal, imprescindvel que exista na WUSB o mesmo grau de segurana que na USB com fio. A nvel de conexo entre dispositivos, a segurana garantir que o dispositivo seja associado e autenticado para permitir seu funcionamento. Os nveis mais altos de segurana, como os que envolvem criptografia, por exemplo, devem ser implementados no nvel de aplicao [9]. O meio com fio no necessita de uma grande preocupao com a proteo dos dados por ele trafegados. O meio sem fio, no entanto, mais propenso a interferncias e ataques, enfrentando mais dificuldades em relao segurana. Fazer a equivalncia da segurana provida por um meio fsico em um meio sem-fio uma tarefa que historicamente tem se provado desafiadora, principalmente em dispositivos que demandam uma alta velocidade de transmisso, onde uma menor latncia ou o mnimo atraso pode prejudicar o bom funcionamento da comunicao e, por conseqncia, dos equipamentos. Tal desafio somente aceito em benefcio da facilidade e comodidade das transmisses sem-fio [10], [11]. Para obter uma comunicao segura deve haver garantia de autenticidade, integridade e confidencialidade dos dados transmitidos. Nesse contexto, a autenticao, que garante que ambas as partes em uma comunicao esto trocando informaes com a entidade correta, um fator importante uma vez que a comunicao no meio a ser protegido compartilhada. Atravs da autenticao evita-se que um equipamento ou pessoa maliciosa se aproveite da arquitetura para
11
captura de dados ou ainda, que equipamentos com mau funcionamento - conhecido ou no comprometam o sistema. Garantir a comunicao segura entre os dispositivos garantir a integridade dos dados bem como a autenticidade dos mesmos. Uma vez que os dados podem ser manipulados ainda em sua transmisso, isso pode gerar comportamentos inesperados que podero acarretar at em uma negao de servio do sistema. A integridade a garantia de que os dados chegaro a seu destino de forma ntegra, ou seja, sem terem sofrido alteraes, erros ou modificaes indevidas [12], [13]. No menos importante, a confidencialidade dos dados que esto sendo transmitidos no canal de comunicao de extrema necessidade para proteo dos mesmos. evidente que qualquer indivduo mal intencionado pode, atravs de equipamentos adequados, capturar os dados que passam pelo canal, estes podem ser facilmente interpretados quando em texto claro. A confidencialidade a garantia de que apenas as partes envolvidas em uma comunicao tero acesso s informaes trafegadas [14], [15]. A comunicao com fio apresenta menos vulnerabilidades em relao segurana das informaes trafegadas devido prpria natureza do meio. J, prover um meio de comunicao seguro para a transmisso de dados sem fio, cujas informaes podero ser crticas e em grandes volumes, respeitando o requisito inicial da praticidade com relao ao uso, demanda a utilizao de criptografia aplicada diretamente em tal necessidade.
1.1 Objetivos
Este trabalho tem como objetivo o estudo dos conceitos de criptografia, incluindo alguns algoritmos de cifra, o estudo do funcionamento dos dispositivos WUSB, bem como suas respectivas especificaes, a anlise de segurana da informao nos dispositivos WUSB e melhorias na implementao do Linux para a segurana dos canais de comunicao propostos pelo padro WUSB.
12
13
Criptanalista procura fraquezas que podem ajudar algum a quebrar um algoritmo criptogrfico mais rapidamente. Alm disso, a criptografia moderna exige que trs propriedades sejam atendidas por qualquer criptossistema [13], [16]: Integridade: Garantia de que o dado que foi recebido, no sofreu nenhuma alterao durante a sua transmisso, ou seja, ele chegou no seu receptor de forma integra. Autenticao: Garantia do receptor sobre quem enviou a mensagem. No-Repdio: O emissor no pode negar o envio de uma mensagem. Algoritmos de criptografia podem ser classificados como restritos, onde a segurana do algoritmo est baseada no prprio algoritmo; ou baseados em chave, onde a segurana est na proteo da chave [17]. Os algoritmos cuja segurana est na chave so os mais fortes. Tais algoritmos podem ser classificados em simtricos ou assimtricos como detalhado a seguir.
14
definidos como descrito na Tabela 1. Observe, por exemplo, que o valor 0x9a do byte do bloco corresponde ao valor 0xb8 na tabela S-Box (exemplo marcado em cinza na Tabela 1). Tabela 1. Tabela S-Box usada pelo AES. As colunas determinam o nybble1 menos significativo e as linhas o mais significativo [23].
00 10 20 30 40 50 60 70 80 90 a0 b0 c0 d0 e0 f0 0 63 ca b7 04 09 53 d0 51 cd 60 e0 e7 ba 70 e1 8c 1 7c 82 fd c7 83 d1 ef a3 0c 81 32 c8 78 3e f8 a1 2 77 c9 93 23 2c 00 aa 40 13 4f 3a 37 25 b5 98 89 3 7b 7d 26 c3 1a ed fb 8f ec dc 0a 6d 2e 66 11 0d 4 f2 fa 36 18 1b 20 43 92 5f 22 49 8d 1c 48 69 bf 5 6b 59 3f 96 6e Fc 4d 9d 97 2a 06 d5 a6 03 d9 e6 6 6f 47 f7 05 5a b1 33 38 44 90 24 4e b4 f6 8e 42 7 c5 f0 cc 9a a0 5b 85 f5 17 88 5c a9 c6 0e 94 68 8 30 ad 34 07 52 6a 45 bc c4 46 c2 6c e8 61 9b 41 9 01 d4 a5 12 3b cb f9 b6 a7 ee d3 56 dd 35 1e 99 A 67 a2 e5 80 d6 be 02 da 7e b8 ac f4 74 57 87 2d b 2b af f1 e2 b3 39 7f 21 3d 14 62 ea 1f b9 e9 0f c fe 9c 71 eb 29 4a 50 10 64 de 91 65 4b 86 ce B0 d d7 a4 d8 27 e3 4c 3c ff 5d 5e 95 7a bd c1 55 54 E Ab 72 31 b2 2f 58 9f f3 19 0b e4 Ae 8b 1d 28 Bb f 76 c0 15 75 84 cf a8 d2 73 db 79 08 8a 9e df 16
Na operao de ShiftRows cada linha sofre uma operao de deslocamento cclico que se repete n vezes, onde n o nmero da linha menos um. Essa operao est ilustrada na Figura 1b. Em MixColumns, os quatro bytes de cada coluna so combinados atravs de uma transformao linear (Figura 1c). Na etapa de AddRoundKey, cada coluna do dado submetida a uma operao de XOR com a coluna correspondente da chave da rodada, conforme demonstrado na Figura 1d.
(a)
(b)
(c) (d) Figura 1. Operaes do AES, (a) SubBytes. (b) ShiftRows. (c) MixColumns. (d) AddRoundKey.
1
Nybble ou nibble um termo que representa um conjunto de quatro de quatro bits, ou seja, a metade de
um octeto. Um nmero em hexadecimal, representado por dois nibbles, um para cada digito [24].
15
Todas as quatro operaes ocorrem em seqncia (Figura 2) e seu trmino resulta em um bloco cifrado.
Figura 2. Etapas do AES. Note que cada rodada faz uso de uma chave, esta depende diretamente do modo de operao escolhido para o funcionamento do algoritmo de cifra de blocos. Os modos de operao so detalhados a seguir.
16
O IV, ou bloco falso, auxilia na cifra do primeiro bloco de dados. Na maioria dos casos, o IV no precisa ser secreto, entretanto ele nunca deve ser utilizado duas vezes com a mesma chave.
Figura 3. Modo de operao CBC, Cipher Block Chaining: (a) representa uma cifragem enquanto (b) representa um decifragem. O modo Counter, ilustrado na Figura 4, utilizado para cifrar a mensagem. Diferente do modo CBC, ele no depende do bloco anterior para realizar a criptografia, entretanto depende de um nmero incremental que utilizado junto a cada bloco. O modo CCM funciona como uma juno do modo CBC e Counter, sendo necessrias duas operaes de cifragem para cada bloco. No CCM, tambm utilizado o MAC, Message Authentication Code. O MAC uma informao utilizada para autenticar uma mensagem [25]. Um algoritmo gerador de MAC aceita como entrada uma chave secreta e um dado de tamanho arbitrrio; como produto, recebe-se um MAC. Esse garante tanto a autenticidade quanto a integridade da mensagem, permitindo ao receptor detectar qualquer tipo de mudana ocorrida na mesma. Assim como na criptografia simtrica, no MAC, a chave secreta compartilhada entre o emissor o e receptor da mensagem. A Figura 5 apresenta um diagrama de operaes do MAC.
17
Figura 4. Diagrama de operao do modo Counter, sendo (a) o processo para cifrar e (b) o processo para decifrar.
Figura 5. Diagrama de operao do MAC. Observe que a chave K a mesma tanto para o receptor quanto para o emissor.
18
entretanto destacam-se por no compartilhar uma chave secreta. Um dos mais populares algoritmos de criptografia de chave pblica o RSA [17] (criado por Rivest, Shamir e Adleman), publicado inicialmente em 1977 e bastante utilizado em transaes eletrnicas, provendo segurana, inclusive, em conexes web. Uma ilustrao do funcionamento do RSA pode ser vista na Figura 6.
19
Um bom algoritmo de Hash Criptogrfico deve seguir um srie de propriedades, dentre elas, podemos destacar: ! ! ! Dada a funo de Hash H e um dado d, o clculo de H(d) no deve ser computacionalmente caro; O resultado de H(d) tem um tamanho fixo, mesmo que o dado possua um tamanho arbitrrio; A partir do resultado de H(d) no deve ser fcil encontrar d.
Uma vez que dados quaisquer so representados dentro de um conjunto finito, formado pelos possveis resultados de um algoritmo de Hash, h a possibilidade de haver diferentes dados que so mapeados pelo algoritmo na mesma codificao hash. A isso se d o nome de coliso e inevitvel que ela ocorra. Entretanto, a pseudo-aleatoriedade do resultado do algoritmo deve garantir que um resultado de hash especfico no possa ser obtido atravs de manipulao de dados. Atualmente, existem diversos algoritmos de Hash utilizados na criptografia, variando na sua forma de operar e no tamanho de suas sadas (Tabela 2). No entanto, apesar se suas caractersticas prprias, eles tm o mesmo objetivo. Devido ao crescente avano computacional, alguns algoritmos caram em desuso por tornarem-se suscetveis ataques de coliso. Tabela 2. Comparativo entre diversos algoritmos de Hash. Tamanho do bloco Sujeito ataques Algoritmo Tamanho da sada (bits) de operaes (bits) de coliso HVAL MD2 MD4 MD5 PANAMA RIPEMD RIPEMD-128/256 RIPEMD-160/320 SHA-0 SHA-1 SHA-256/224 SHA-512/384 Tiger(2)-192/160/128! WHIRLPOOL 256/224/192/160/128 128 128 128 256 128 128/256 160/320 160 160 256/224 512/384 192/160/128 512 1024 128 512 512 256 512 512 512 512 512 512 1024 512 512 Sim Sim Sim Sim Sim Sim No No Sim Parcialmente No No No No
20
(a) (b) Figura 8. Logos colocados em dispositivos USB que seguem o padro espeficado pelo USB-IF. A imagem (a) representa os dispositivos 2.0 enquanto a (b) representa os dispositivos nas verses anteriores 2.0. O padro USB no somente especifica o modo de comunicao entre o dispositivo e o host, como tambm especifica o modo de funcionamento de algumas classes de dispositivos, como: teclados, mouses, adaptadores bluetooth, entre outros, que podem ser suportados pelo sistema operacional sem a necessidade de um driver especfico.
21
Rede estrela: Diz-se topologia estrela quando um dispositivo se conecta a outro apenas atravs de um
equipamento central, concentrador, sem nenhuma ligao direta entre os dispositivo [28].
22
Na topologia lgica, os dispositivos USB so conectados diretamente ao host, sem nenhuma distino quanto hierarquia. Tambm na perspectiva lgica, no so representados os HUBS, sendo esses transparentes na comunicao entre o dispositivo e o host. A Figura 10 representa a topologia lgica de uma ponte USB.
Buffer uma regio de memria utilizada temporariamente por um dado que ser movido para outro Kernel ou cerne do Linux, e o ncleo do sistema operacional. Ele responsvel por prover uma interface
lugar. Um dado fica num buffer esperando em uma fila, por exemplo.
4
23
Figura 11. Assinatura da funo de envio de mensagem de controle para um dispositivo USB, definida no kernel do Linux, verso 2.6.17 no arquivo drivers/USB/core/message.c e encontrada na linha 135. A direo da mensagem num barramento pode ser de input (do dispositivo para o host) ou de output (do host para o dispositivo). Cada troca de menssagem com um endpoint tem caractersticas que determinam o tipo de transferncia. Essas transferncias so compostas de: Freqncia/Latncia de acesso; Largura de banda requerida; Identificador; Requerimentos para tratamento de erro; Tamanho mximo do pacote que pode ser tratado pelo endpoint; Tipo de transferncia que poder ser feita; A direo dos dados. Os pipes de comunicao apresentam-se de duas formas: Stream - No existe uma estrutura que pr-defina a forma dos dados. Mensagem - Existe alguma definio do tipo de dados que passa no canal. As mensagens enviadas pelo barramento no so interpretadas enquanto esto no canal de comunicao, mesmo quando so mensagens de controle onde a sua forma conhecida. A comunicao Stream iniciada com o requerimento de transferncia de dados via I/O Request Packets (IRPs) para um pipe que ao ser concluda gera uma notificao. Caso no haja nenhuma IRPs pendentes ou em progresso, o estado do canal ser idle em espera - at que uma requisio ocorra. Os pipes do tipo Stream so geralmente uniderecionais e respeitam a ordem seqencial FIFO (first in first out) de transferncia de dados. A Figura 12 representa a comunicao entre um dispositivo e um host.
24
Figura 12. Comunicao entre um host e um dispositivo lgico [26]. Os pipes do tipo mensagem funcionam em um modelo diferente do Stream, onde uma mensagem enviada e sua confirmao de recebimento enviada em seguida (de maneira sncrona).
25
Figura 13. Logo que representa a garantia de compatibilidade dos dispositivos Wireless USB com o padro estabelecido pela USB-IF.
26
Os conceitos de host e dispositivo, vistos no padro USB, so respeitados no padro WUSB, destacando, porm, que nesse ltimo, o meio de propagao das informaes no mais um fio. Dado que no existe mais a necessidade de um dispositivo HUB, uma vez que as entradas fsicas no so mais necessrias, esse dispositivo passou a ser desconsiderado pelo padro WUSB. Contudo, outro dispositivo especial passou a existir. Este chamado de DWA, Device Wire Adaptor, e tem a funo de permitir a conexo entre dispositivos com fio no barramento sem-fio, fornecendo no s a conexo no barramento mais tambm a potncia eltrica necessria para o seu funcionamento.
Figura 14. Exemplo de dispositivos conectados a uma rede WUSB [30]. Existem alguns dispositivos que para troca inicial de chaves utilizadas para estabelecer uma comunicao segura necessitam ser ligados fisicamente a um barramento USB, fazendo a troca de chaves Out of Band (OOB) ou fora da banda.
27
Figura 15. Topologia WUSB [30]. Tambm chamado de HWA, Host Wire Adapter, o host UWB pode ser adicionado no sistema atravs do barramento USB (necessitando de um barramento USB 2.0).
28
Vrias chaves so utilizadas na comunicao segura do dispositivo com o host no padro WUSB. As Master Keys tm vida longa e so geralmente utilizadas para compartilhamento do segredo de autenticao. Para a associao de dispositivos atravs do mtodo de chaves pblicas, utilizado um par de chaves (PK). Cada dispositivo, que usa chave pblica, deve conter a sua prpria chave. Caso a gerao da chave ocorra na hora em que o dispositivo ligado, esta dever ser feita em menos de 3 segundos, tempo esperado para que o dispositivo esteja pronto para o funcionamento segundo as especificaes do WUSB [30]. A chave de conexo (CK) a chave secreta utilizada para estabelecer conexes. Ela gerada pelo host e distribuda para os dispositivos juntamente com o CHID (Connection Host Identification - Identificador de conexo de host) e a CDID (Connection Device Ideintification Identificador de conexo do dispositivo) no momento da associao. importante observar que o host no deve mandar a mesma CK para vrios dispositivos, a menos que, seja com o propsito de depurao. O envio da mesma CK para vrios dispositivos aumenta a probabilidade de descoberta por um atacante. As chaves de seo so utilizadas somente durante o tempo de conexo de um dispositivo, sendo descartadas logo em seguida. As chaves do tipo GTK (Group Temporal Key) no so utilizadas para cifra de dados; so usadas apenas para checar a integridade das mensagens. Elas so de conhecimento de todos os dispositivos que esto conectados a um determinado host. O host utiliza essa chave quando faz alguma comunicao para todos os dispositivos que esto conectados a ele.
29
para continuar o processo, essa pode ser feita via software. Aps o dispositivo ser desligado do host possvel a conexo via WUSB, onde atravs de solicitao do usurio, o dispositivo inicia o processo de associao. Depois de iniciado, o dispsitivo envia ao host uma requisio de conexo. Aps a resposta da requisio, eles fazem a troca de chave inicial (handshake) e o dispositivo passa a estar operacional, como ilustrado na Figura 16.
30
31
O AES com CCM no vulnervel a ataques do tipo texto claro conhecidos [17]. Tais ataques, ao contrrio do texto claro escolhido, podem ser realizados passivamente. Porm o modo CMM, por usar o modo Counter, evita que a chave privada seja capturada. O modo Counter, alm de usar a chave para fazer a cifra, usa tambm o nonce que um nmero que representa unicamente um bloco. Um fator que depende da quantidade de blocos que j foram cifrados que, geralmente, no de conhecimento do invasor. No caso do WUSB, o nonce utilizado uma composio de valores, que consideram os dados: SFN, TKID, DestAddr e SrcAddr de acordo com a Tabela 3. Tabela 3. Dados que so considerados na gerao do nonce utilizado pelo WUSB. Offset Campo Tamanho Descrio 0 SFN 6 O nmero do frame seguro associado a essa mensagem 6 TKID 3 Referncia da chave utilizada para cifrar/decifrar essa mensagem 9 DestAddr 2 Endereo do dispositivo de destino 11 SrcAddr 2 Endereo do dispositivo de origem A utilizao do nonce, tambm garante que o resultado da cifra de dois dados iguais produzam resultados diferentes, adicionando um maior carter de aleatoriedade ao processo e, dessa forma, introduzindo um complicador a mais no cdigo, dificultando a criptoanlise. A resistncia a ataques ativos e no somente a passivos, como demonstrado anteriormente, tambm uma caracterstica desse modelo adotado pelo padro WUSB. Protegendo a comunicao de ataques como Men-in-the-middle, MITM [17], que caracteriza-se por explorar os primeiros passos da comunicao cifrada, antes que um elo de segurana seja estabelecido. Nesses casos especiais, o invasor, ou homem do meio, se apresenta para A como B e como B para A, ficando exatamente no meio da comunicao, a par de todas as informaes que passam pelo o canal. A Figura 17 mostra com mais detalhes um ataque de MITM.
Figura 17. Exemplo de ataque de MITM: Bob tenta mandar uma mensagem para Alice; entretanto, o invasor coloca-se no meio da conexo, fingindo ser Alice para Bob e Bob para Alice.
32
Para qualquer texto cifrado de tamanho M pelo menos M bytes correspondem a um MAC cifrado, o resto da mensagem pode ser considerado como payload (no caso, os dados cifrados). No WUSB, essas informaes esto dispostas de acordo com a Tabela 4. Tabela 4. Distribuio do cabealho MAC mais payload num bloco de dados WUSB. Offset Campo Tamanho Tipo Descrio 0 cabealho MAC 10 Record Campo de 10 bytes obrigatoriamente preenchido com o cabealho do MAC. 11 payload N Bitmap Refere-se aos dados cifrados. O processo de verificao checa a corretude do MAC em relao ao payload e s informaes adicionais: nonce e bloco de dados. No ato da validao, duas so as respostas esperadas: invlido ou o prprio MAC. Quando invlido, tanto o payload quanto os dados acessrios no podem ser validados de forma independente; apenas possvel aferir que eles no foram gerados a partir de um emissor confivel. Quanto o resultado o prprio MAC, de acordo com o design do modelo, possvel afirmar que os dados so autnticos. Entretanto, tal afirmao no pode ser considerada absolutamente verdadeira, afinal, um atacante pode gerar uma mensagem que passe por essa validao. A probabilidade de um atacante ter sucesso na validao de uma mensagem inversamente proporcional ao tamanho do MAC. claro que um atacante pode enviar dados aleatrios a fim de obter, ao menos, uma mensagem aceita pela validao.
33
Como garantia de corretude da associao, esta Seo visa a apresentar os resultados da anlise entre a associao de um dispositivo WUSB (WUSB Hub do fabricante IOGear) e um host que utiliza um HWA tambm da IOGear. O software de associao analisado foi fornecido pelo prprio fabricante e pode ser encontrado em [33]. O processo a ser analisado uma viso das informaes trocadas entre o dispositivo e o host atravs da USB. Esses dados foram obtidos atravs do uso da ferramenta de captura UsbSnoop que pode ser encontrada em [34].
5.2.1 Associao
O processo de associao tem o objetivo de garantir a troca da chave de conexo (CK). Esse processo ocorre da seguinte forma: o dispositivo conectado atravs da USB de um host e esse dispositivo, aps ser identificado, passa por um processo de reconhecimento, onde aguarda a autorizao do usurio que dar incio ao processo de associao. Como parte da anlise da segurana do WUSB, o processo de associao foi detalhado em 4 blocos referentes a cada requisio USB. O primeiro bloco refere-se requisio de informao de associao (GET_ASSOCIATION_INFORMATION) e est ilustrado na Figura 18.
Figura 18. Primeira troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: GET_ASSOCIATION_INFORMATION. (b) Tamanho da estrutura. (c) Nmero de requisies. (d) Valor pr-definido. (e) Valor do ndice. (f) Byte reservado. (g) Valor prdefinido. (h) Tipo da requisio. (i) Tamanho da informao associada a requisio. (j) Valor do ndice. (l) Byte reservado. (m) Valor pr-definido. (n) Tipo da requisio. (o) Tamanho da informao associada a requisio. Esse segundo bloco de informao contm os dados, a respeito do host, que so enviados para o dispositivo. Esse bloco est ilustrado na Figura 19.
34
Figura 19. Segunda troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: HOST_INFO. (b) Tipo da associao. (c) Sub-tipo da associao. (d) CHID. (e) ID da linguagem utilizada. (f) Nome amigvel do host. O terceiro bloco do processo de associao contm informaes a respeito do dispositivo e est ilustrado na Figura 20.
Figura 20. Terceira troca de mensagem entre o host e o dispositivo. (a) Tipo da comunicao: DEVICE_INFO. (b) Tamanho desta estrutura. (c) CDID. (d) BandGroups. (e) Nome amigvel do dispositivo. (f) ID da linguagem utilizada. O quarto bloco contm a quarta e ltima troca de mensagem entre o host e o dispositivo. nesse bloco que ocorre a confirmao da associao atravs da passagem da CK. O bloco est ilustrado na Figura 21.
35
Figura 21. Quarta e ltima troca de mensagem entre o host e o dispositivo. (a) Tipo de comunicao: SET_ASSOCIATION_REQUEST. (b) Tipo da associao. (c) Sub-Tipo da associao. (d) Tamanho da estrutura de dados. (e) CC, Connection context. (f) BandGroups. Para um melhor entendimento, valido ressaltar que todos os dados numricos representado nessa anlise esto no formato little-endian6. As strings esto representadas no formato Unicode7, por exemplo, a Figura 20, legenda e, representa: IOGEAR WUSB Hub. Com essa anlise, possvel constatar que os equipamentos e softwares testados esto dentro da especificao do padro WUSB e, por isso, podem ser considerados seguros. Alm disso, pode-se mostrar em detalhes como ocorre o processo de associao, fato esse, que j representa uma grande contribuio. No fica claro, entretanto, como o dispositivo armazena as chaves, uma vez que ele tem suporte a armazenar mais de uma e no existe uma interface para list-las requisito da especificao.
O termo little-endian refere-se a ordenao de bytes usado para representar algum tipo de dado na
memria. Dizer que o dado est armazenado num formato little-endian e afirmar que se byte menos significativo esta no endereo mais baixo. Os outros bytes seguem em ordem de significncia crescente [35].
7
Unicode um padro que permite aos computadores representar e manipular, de forma consistente, texto
36
funcionamento dos HWA. Nos dois dispositivos testados foi necessrio o uso de um arquivo de firmware8. Sendo o arquivo de firmware do distpositivo da Intel liberado para download em [38]. Aps a anlise do suporte ao HWA no Linux, foi analisado o suporte associao dos dispositivos com o host atravs de cabo. Essa ltima anlise tambm visa a verificar a corretude da implementao do modelo proposto em relao s especificaes do WUSB e do WUSB Association Model [39].
(b)
Figura 22. Dispositivos HWAs. (a) Dispositivo do fabricante IOGear. (b) Dispositivo do fabricante Intel. Dadas as semelhanas, testes foram feitos para averiguar se os dispositivos so capazes de trabalhar com firmwares de outros fabricantes. Os resultados podem ser encontrados na Tabela 5. Tabela 5. Firmawares suportado pelos dispositivos HWA.
Dispositivo Firmware
Utilizando o firmware da IOgear, os dispositivos funcionam. Entretanto, o firmware no prov suporte ao WLP, Wimedia Link Protocol. O WLP permite a comunicao IP (Internet Protocol) atravs dos HWA. WLP no faz parte do escopo deste trabalho e as suas especificao ainda no foram concludas.
Firmware o termo usado para se referenciar um software que roda embarcado em um hardware [37].
37
Aps a concluso de qu firmwares utilizar, foi necessrio modificar o cdigo do suporte a upload do firmware, pois o mesmo apresentava diversos warnings e ignorava alguns erros que deveriam ser tratados. Esses foram corrigidos, a fim do cdigo estar alinhado com o estilo de programao do kernel [40]. importante seguir esse estilo, para que atravs da submisso do patch9 o cdigo possa ser analisado por outros desenvolvedores. Caso no esteja dentro dos padres, o cdigo sequer analisado. Esses so os patches inicialmente submetidos para a comunidade linux-uwb: [linux-uwb] [PATCH] dfu: Use %zu instead of %d when dealing with size_t dfu: Makes i1480_cmd_reset(), i1480_mpi_write() and i1480_mpi_read() static instead of global Aps as correes, o usurio dever obter no seu log uma sada como a ilustrada na Figura 23. Essa sada deve ser vista logo aps o dispositivo ser ligado ao sistema.
Figura 23. Trecho do log de sistema, aps d dispositivo ser ligado ao sistema, onde (a) representa uma mensagem de erro aps o envio do firmware. Na Figura 23, na legenda a, pode-se observar que ainda persiste uma mensagem de erro; esse erro no foi tratado, pois, mesmo aps discusso na comunidade, no se chegou a nenhuma concluso da exata origem do mesmo. O erro poderia apenas representar um problema no hardware, que no atrapalha o funcionamento final do dispositivo. Com o fim da anlise do suporte ao HWA no Linux e com patches aceitos pela comunidade, o dispositivo est apto a funcionar de acordo com as especificaes. Sabendo-se que o dispositivo DWA, que foi utilizado neste trabalho, necessita realizar sua associao atravs de cabo, este , naturalmente, o prximo passo a ser analisado.
Patch um arquivo texto que contm as diferenas da alterao de um arquivo, estas diferenas podem
ser geradas com o uso do comando diff [41] do Unix e aplicadas com um programa do mesmo nome, patch [42].
10,11
O Linux cria uma barreira virtual entre a memria que esta em Kernel Space e a memria de User
Space, em Kernel space esta tudo de Kernel, Kernel extension e alguns drivers de dispositivos, o resto roda em User space [43].
38
O estilo de cdigo do Kernel recomenda que no devem existir entradas para dois tpicos diferentes em apenas um arquivo sysfs, sendo isso um problema para implementao do CBAF que em sua implementao original recebia mltiplos parmetros como forma de entrada. Por exemplo, o parmetro wusb_cc recebia como entrada CK, CHID e BandGroups. Novamente, para atender aos padres de codificao do Kernel, foram implementados patches para correo desses arquivos sysfs. Nesse conjunto de patches, tambm foram corrigidos problemas na entrada do BandGroups, que agora refere-se ao BandGroups do dispositivo e no do host como acontecia antes. Aps o CBAF estar organizado da forma correta, ficou claro constatar que havia um problema na implementao da funo que recebe informaes do dispositivo (Figura 20). Ao receber os dados com informaes sobre o dispositivo, atravs de um conjunto de bytes, a implementao os reparte de maneira correta. Entretanto, utiliza a funo strncpy [44] que, ao receber um conjunto de bytes, interpreta o 00 como final de um conjunto de caracteres. Como os dados repassados pelo dispositivo so seguidos sempre por um byte 00, o nome do dispositivo fica resumido ao seu primeiro caractere. Essa uma falha grave, uma vez que o usurio pode ter mais de um dispositivo fazendo Cable Association e no conseguiria, assim, aferir quem quem, se as primeiras letras forem iguais. Tambm foram adicionados meios de depurao. Os meios anteriores tambm no seguiam os padres aconselhados pela comunidade do Kernel. Os novos meios de depurao esto compatveis com o modelo proposto e tambm ganharam entrada no menu de opes de compilao do Kernel para serem ativados ou no na compilao do mdulo ou do Kernel.
5.3.3 Testes
Para testar os patches produzidos, foram utilizados 2 computadores Dell, Xeon 3.2 GHz com 2 Gigas de memria RAM e dois notebooks IBM ThinkPad T41 com processador Pentium M de 1.6 e 1 Giga de memria RAM. Cada uma das mquinas de teste possui Kernel nas verses: 2.6.24 2.6.25 2.6.25-rc6 2.6.26-rc1 2.6.26-rc2 Nas mquinas Dell, foram instalados os kernels citados com suporte instrues de 64 bits. Como comum no processo de testes/depurao, as mquinas podem travar isto acontece porque, em geral, o espao de memria do Kernel no tem proteo; qualquer corrupo na memria acarreta em um congelamento que muitas vezes impede o testador de identificar a possvel causa e de ler mensagens de depurao. Para que isso no ocorra, necessria a utilizao de um cabo de comunicao serial para que um console do computador possa ser exportado para outro computador, onde as mensagens do sistema so transferidas diretamente. No caso de um erro, a mensagem de depurao enviada remotamente antes que a mquina pare de funcionar. A etapa de testes de extrema importncia para garantir o bom funcionamento do WUSB uma vez que na ocasio de um erro no Kernel o usurio final no seria capaz de identific-lo. Todos os patches produzidos no decorrer deste trabalho foram devidamente testados e homologados.
39
5.3.4 Homologao
A homologao ocorre atravs de uma hierarquia de 3 nveis, sendo o primeiro deles no mesmo computador onde so realizados os testes. Uma verso limpa do sistema operacional que no foi utilizado para desenvolvimento utilizada para realizao de uma bateria de testes. Uma vez que os patches passam por essa bateria so enviados para outra equipe de desenvolvimento que tem por funo analisar o cdigo, questes de estilo, identao e padronizao, alm de avaliar se os mesmos esto funcionando conforme deveriam. Essa mesma equipe responsvel pela instalao do seu prprio ambiente, evitando problemas de vcios de instalaes e aumentado a heterogeneidade do ambiente de testes. A terceira e ltima fase de homologao acontece pela comunidade do projeto, onde o patch submetido anlise de todos os envolvidos (usurios, desenvolvedores, pesquisadores). Depois de recebido os devidos comentrios e realizadas as argumentaes, o patch finalmente aprovado pelo mantenedor da comunidade, que adiciona o mesmo na rvore de desenvolvimento oficial do projeto. Neste momento, o cdigo torna-se oficialmente reconhecido pela comunidade, e far parte de um release12, de acordo com o cronograma do projeto.
12
Entende-se por release uma verso de software que ser disponibilisada para o usurio final.
40
41
Tabela 6. Tabela comparativa entre a segurana da USB com fio e sem fio USB com fio USB sem fio Ataques passivos Impossvel Fcil Integridade Garantida Garantida Autenticidade Garantida Garantida Conexo acidental Impossvel Fcil MITM Impossvel Desconhecido O fato do AES 128bits com CCM ser o nico algoritmo citado pelas especificaes um problema, uma vez que o poder computacional cresce cada vez mais, auxiliando a criptoanlise. Apesar de hoje no existirem tcnicas conhecidas para a quebra da cifra AES nesse modo de operao, poder existir em um futuro prximo e isso acarretar num legado de dispositivos inseguros. Se no for estabelecido um meio dos dispositivos se inter-operarem, suportando diversos algoritmos de cifras, no ser possvel ter num mesmo host dispositivos, utilizando o AES 128 bits e outro algoritmo. Um ponto muito forte no modelo adotado o fato das conexes j comearem protegidas. O prprio aviso do host para comunicar que est ativo (MMC) j se encontra protegido com a GTK. A GTK utilizada somente para validar o MMC, a informao do GTK transmitida para o dispositivo depois que o mesmo se conecta com o host pela primeira vez; a partir de ento, ele passa a validar as informaes no MMC. De forma geral, foi percebido ao longo deste trabalho que a qualidade do cdigo do WUSB no Linux deixa a desejar quando contrastado com os padres especificados pela comunidade do Kernel sendo esse um ponto no qual tivemos que atacar, para contarmos com a homologao da comunidade.
42
Bibliografia
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] BUCCI, Andrea, COSTA, Newton. A Interface USB: Uma Viso Geral. Universidade Estadual de Campinas, 2006. Disponvel em: <www.ic.unicamp.br/~rodolfo/Cursos/ mc722/2s2006/Trabalho/g17-apresentacao.pdf>. ltimo acesso em: 17 de maro de 2008. Agere Systems. Disponvel em: <http://www.agere.com>. ltimo acesso em: 23 de maro de 2008. Hewlett-Packard. Disponvel em: <http://www.hp.com>. ltimo acesso em: 23 de maro de 2008. Intel. Disponvel em: <http://www.intel.com>. ltimo acesso em: 23 de maro de 2008. Microsoft Corporation. Disponvel em: <http://www.microsoft.com/en/us/default.aspx>. ltimo acesso em: 23 de maro de 2008. NEC. Disponvel em: <http://www.nec.com>. ltimo acesso em: 23 de maro de 2008. Philips Semiconductors. Disponvel em: <http://www.nxp.com/>. ltimo acesso em: 23 de maro de 2008. Sansung Eletronics. Disponvel em: <http://www.samsung.com>. ltimo acesso em: 23 de maro de 2008. KOLIC, Rafael. Wireless USB Brings Greater Convenience and Mobility to Devices. Intels Corporate Tecnology Group, 2004. Disponvel em: <http://www.deviceforge.com/ articles/AT9015145687.html>. ltimo acesso em: 17 de maro de 2008. ROCHA, rico, BRUNO, Gaspare. Estudo e anlise de vulnerabilidades de segurana na tecnologia Bluetooth. Centro Universitrio Lasalle, Canoas, RS. KARYGIANNIS, Tom, OWENS, Les. Wireless Network Security 802.11, Bluetooth and Handheld Devices. NIST Special Publication 800-48, novembro de 2002. Federal Standard 1037c. ANS T1.523-2001, Telecom Glossary 2000. Disponvel em: <http://www.atis.org/tg2k/>. ltimo acesso em: 16 de marco de 2008. BRAINARD, J., JUELS, A., RIVIEST, R., SZYDLO, M., YUNG, M. Fourth-Factor Authentication: Somebody You Know. ACM CCS, pp. 168-78, 2006. SOUSA, Rafael, PUTTINI, Ricardo. SSLeay/OpenSSL Tutorial. Disponvel em: <http://www.redes.unb.br/security/ssleay/tutorial.html>. ltimo acesso em: 17 de maro de 2008. ANDERSSON, Fredik. ISO/IEC 17799 Compliant? Master Thesis, Department of Computer and Systems Sciences, Stockholms University, dezembro de 2004. HARRIS, S. All in One CISSP: Exam Guide.California: McGraw-HILL/Osborne, 2005. MAO, W. Modern Cryptography: Theory & Practice. Nova Jersey: Prentice Hall PTR, 2004. BURNETT, S., PAINE, S. Criptografia e Segurana: O Guia Oficial RSA. Rio de Janeiro: Campus, 2002.
43
[19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41]
GOMES, A. Criptografia Usando Protocolos Qunticos. Universidade Federal de Lavras, 2004. Disponvel em: <http://bazar.ginux.ufla.br/index.php/MonosARL/article/viewPDF Interstitial/93/25>. ltimo acesso em: 14 de maio de 2008. NIST. Announcing the Advanced Encryption Standard (AES). Federal Information Processing Standards Publications, 2001. NIST. Data Encryption Standard (DES). Federal Information Processing Standards Publications, 1999. IBM, Disponvel em: <http://www.ibm.com>. ltimo acesso em: 25 de maio de 2008. Rijnadael S-BOX, Disponvel em: <http://en.wikipedia.org/wiki/Rijndael_S-box>. ltimo acesso em: 25 de maio de 2008. Nibble, Disponvel em: <http://en.wikipedia.org/wiki/Nibble>. ltimo acesso em: 25 de maio de 2008. RIVEST, R. Lecture on MACs, 1997, Disponvel em: < http://web.mit.edu/6.857/OldStuff/Fall97/lectures/lecture3.pdf >. ltimo acesso em: 25 de maio de 2008. USB Specification, Disponvel em: <http://www.usb.org/developers/docs/usb_20_ 040908.zip>. ltimo acesso em: 25 de maio de 2008. USB Implementers Forum. Disponvel em: <http://www.usb.org/developers>. ltimo acesso em: 25 de maio de 2008. Rede estrela. Disponvel em: <http://en.wikipedia.org/wiki/Star_topology>. ltimo acesso em: 25 de maio de 2008. Linux Kernel. Disponvel em: <http://www.kernel.org>. ltimo acesso em: 25 de maio de 2008. WUSB Specification. Disponvel em: <http://www.usb.org/developers/wusb/ wusb_2007_0214.zip>. ltimo acesso em: 27 de maio de 2008. Linux UWB. Disponvel em: <http://www.linuxuwb.org/>. ltimo acesso em: 25 de maio de 2008. NIST. Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality. IOGear Support. Disponvel em: <http://www.iogear.com/support/dm/>. ltimo acesso em: 25 de maio de 2008. UsbSnoop. Disponvel em: <http://usbsnoop.sourceforge.net/>. ltimo acesso em: 25 de maio de 2008. Little-endian. Disponvel em: <http://en.wikipedia.org/wiki/Endianness>. ltimo acesso em: 25 de maio de 2008. Unicode. Disponvel em: <http://pt.wikipedia.org/wiki/Unicode>. ltimo acesso em: 25 de maio de 2008. Firmwares. Disponvel em: <http://en.wikipedia.org/wiki/Firmware>. ltimo acesso em: 25 de maio de 2008. Intel i1480 Firmwares. Disponvel em: < http://www.linuxuwb.org/thewiki/Firmware_ for_the_Intel(r)_Wireless_UWB_Link_1480>. ltimo acesso em: 25 de maio de 2008. Association Models Supplement to the Certified Wireless Universal Serial Bus Specification. Disponvel em: <http://www.usb.org/developers/wusb/ wusb_2007_0214.zip>. ltimo acesso em: 25 de maio de 2008. Kernel coding style. Disponvel em: <http://lxr.linux.no/linux/Documentation/ CodingStyle>. ltimo acesso em: 25 de maio de 2008. Diff man page. Disponvel em: <http://unixhelp.ed.ac.uk/CGI/man-cgi?diff>. ltimo acesso em: 25 de maio de 2008.
44
Patch man page. Disponvel em: <http://www.rt.com/man/patch.1.html>. ltimo acesso em: 25 de maio de 2008. CORBET, J., RUBINI, A., KROAH-HARTMAN, G. Linux Device Drivers, Estados Unidos: OReilly, 2005. strncpy man page. Disponvel em: <http://linux.com.hk/penguin/man/3/strcpy.html>. ltima acesso em: 25 de maio de 2008.