Especificações Técnicas

A camada mais baixa da arquitetura do Bluetooth é a camada física. Ela define as especificações que um aparelho deve possuir para operar com a tecnologia Bluetooth. Dois aparelhos conectados via Bluetooth partilham um canal físico de comunicação. Para que haja transmissão, ambos aparelhos devem estar sintonizados na mesma frequência ao mesmo tempo, e também estarem próximos um do outro.

Em uma determinada região, a probabilidade de que inúmeros aparelhos estejam operando na mesma frequência é grande. Isto poderia resultar em uma colisão do canal físico. Para atenuar os efeitos de tal colisão, cada transmissão é iniciada com um código de acesso, que serve para correlacionar os aparelhos sintonizados ao mesmo canal físico. O código de acesso é sempre enviado no início de cada pacote, como será explicado adiante.          

Topologia

O Bluetooth permite a transmissão de dados sem fio através de piconets. Um aparelho dotado de tecnologia Bluetooth pode comunicar-se com um ou mais aparelhos simultaneamente. As piconets são formadas por um membro mestre e por diversos escravos, dos quais até 7 podem ocupar o espaço de ativos, enquanto que os restantes são caracterizados como escravos estacionados (podendo chegar até 255). Cada um destes ganha um “endereço de estacionamento” de 8 bits. Um escravo estacionado pode se tornar um ativo em apenas 2ms. Para o caso de a operação envolver somente dois aparelhos dá-se o nome de conexão ponto-a-ponto e conexão ponto-a-multiponto caso outros aparelhos também participem da transmissão.

Uma mesma unidade pode participar como escravo de várias piconets, mas pode atuar como mestre em somente uma delas. Para participar de mais de uma piconet, deve ser feita a multiplexação no tempo (TDM – Time Division Multiplex), ou seja, a unidade pode participar de uma segunda piconet nos intervalos de tempo em que não estiver ativa na piconet inicial (a unidade permanece ativa em uma piconet e em estado de Hold nas outras as quais pertence). O conjunto de várias piconets independentes e não-sincronizadas é chamado de Scatternet, como mostrado a seguir. Uma Scatternet pode conectar até 10 piconets.

 Para haver sintonia entre as unidades de uma mesma piconet, os saltos em frequência (frequency hopping), relativamente aleatórios, ditados pela unidade mestre devem ser seguidos pelas unidades escravos.

 

Acesso ao Meio

É principalmente através dos saltos em frequência que o Bluetooth consegue evitar interferência entre os vários dispositivos operantes em uma mesma frequência. Depois de estabelecida a conexão entre o mestre e seus escravos, cabe ao mestre ditar os saltos que serão efetuados e seguidos pelos escravos. Existem 79 frequências que podem ser utilizadas dentro da faixa ISM, cada uma espaçada da outra por 1MHz. A cada segundo são feitos 1600 saltos. Desse jeito, mesmo que duas redes partilhem da mesma frequência, a interferência causada por isso será muito pequena porque ocorre somente durante uma pequena fração de segundo.

A transmissão de pacotes só pode ser feita dentro de slots, intervalos de 625 µs. Um pacote pode ocupar 1, 3 ou 5 slots consecutivos (chamados de pacotes multislot). No caso de pacotes multislot, não haverá salto em frequência durante sua transmissão. A transmissão é alternada entre mestre e escravo (método chamado de Time-Division Duplex), o aparelho mestre só pode transmitir em slots pares, e os escravos nos ímpares. A numeração dos slots (definição se serão pares ou ímpares) é dada pelo lsb (bit menos significativo) do clock do mestre.

Na tecnologia Bluetooth, o método de acesso ao meio utilizado é o CDMA (Code Division Multiple Access). Há dois tipos de enlace possíveis na camada física. Como a tecnologia Bluetooth lida tanto com transmissão de dados como de voz ou vídeo, diferentes enlaces serão utilizados para cada tipo de mídia.

Primeiramente, temos o chamado SCO (Synchronous Connection-Oriented). Como o nome já indica, é usado principalmente para mídias contínuas e faz a ligação ponto-a-ponto entre dois aparelhos (um sendo o mestre e outro o escravo). Os pacotes transmitidos em uma ligação do tipo SCO nunca são retransmitidos, mesmo havendo erro. Ou seja, se em uma transmissão de som algum pacote for recebido com erro ou for perdido, o receptor reproduz ruído.

Apesar de ser adequado principalmente à transmissão de voz ou vídeo, dados também podem ser transmitidos com uma ligação SCO. Há diferentes taxas de transmissão para diferentes mídias: pacotes com dados são transmitidos a 432 Kbps, e os pacotes de voz a 64 Kbps. Em uma piconet, pode haver até três ligações SCOs simultâneas.

O outro padrão de enlace é o ACL (Asynchronous Connection-Less). É um enlace do tipo ponto-a-multiponto (há um mestre e vários escravos). Como é um método de transmissão assíncrona, utiliza somente os slots que não foram previamente reservados para a transmissão por SCO (que, por ser síncrona, reserva e utiliza os slots de maneira periódica, em intervalos fixos). É usado para o envio de pacotes com dados, e por isso permite o reenvio de pacotes perdidos ou que contenham erros. Sua velocidade de transmissão é de até 721 Kbps.

Na versão 1.2, aparece o chamado Modo Síncrono Estendido (eSCO). Ele melhora o SCO, permitindo a retransmissão de pacotes que contenham erro. Após o envio de um pacote pelo mestre seguido de outro pelo escravo, o eSCO define uma janela de 4 slots para uma possível retransmissão.

Controle de Acesso

A função do dispositivo mestre em uma piconet, além de incluir a determinação dos saltos de frequência a serem seguidos pelos escravos, também inclui todo o controle de acesso e tráfego na rede.

Como já visto, o Bluetooth suporta conexões do tipo ponto-a-multiponto. Por este motivo, é importante que haja um controle de tráfego na rede, de forma a evitar que colisões devido a múltiplas transmissões pelos dispositivos escravos ocorram. Este controle é feito através da técnica de pooling. Com a técnica de pooling, ao transmitir um pacote em seu slot, o mestre indicará qual dos escravos está apto a transmitir no slot seguinte.

Modelo de pacote

O modelo dos pacotes transmitidos em uma conexão Bluetooth está esboçado a seguir:

Há três tipos de Código de Acesso:

CAC (Channel Access Code – Código de Acesso ao Canal) – identifica a piconet

DAC (Device Access Code – Código de Acesso do Aparelho) – usado durante o pedido e resposta de conexão (chamado de Paging Procedure).

IAC (Inquiry Access Code – Código de Acesso de Inquérito) – usado durante o chamado Processo de Inquérito, quando um aparelho determina quais os aparelhos estão operantes, seus endereços e clocks.

O Cabeçalho pode ser detalhado da seguinte forma:

          Isto dá um total de 18 bits, que, usando-se codificação FEC 1/3, resulta no valor de 54 bits para o cabeçalho. O número de sequência serve para estabelecer uma ordem para os pacotes enviados. Há 15 diferentes tipos de pacotes, listados a seguir:

           ID: Tipo de pacote de 68 bits, usado para pedido de conexão e resposta ao pedido.

           NULL: tipo de pacote de 126 bits que tem somente o código de acesso ao canal e cabeçalho. É usado para retornar a informação de conexão à fonte e não requer resposta do tipo ACK ou NACK.

           POLL: similar ao pacote NULL, porém requer uma confirmação (ACK ou NACK) do destino.

           FHS: Frequency Hopping Synchronization (Sincronização dos saltos de frequência). Entre outras funções, este pacote carrega as informações de clock (sincronismo) do aparelho mestre.

           DM1: carregam somente dados. Em seu corpo têm até 18 bytes de informação e ainda 16 bits de CRC (Cyclic Redundancy Check – efetua controle de erro no corpo). São codificados com FEC 2/3.

           DH1: similar ao DM1, exceto que sua informação não recebe codificação FEC.

           AUX1: similar ao DH1, exceto que não possui o CRC.

           DM3, DH3, DM5 e DH5: muito similares aos já mencionados DM1 e DH1. O que muda em cada pacote é o tamanho da informação que transportam.

           HV1: High quality Voice. Estes pacotes carregam 10 bytes de informação, codificadas com FEC 1/3.

HV2: similar ao HV1, porém carrega 20 bytes de informação, codificada com FEC 2/3.

HV3: similar aos anteriores, porém carrega 30 bytes de informação e não possui codificação FEC.

DV: Data Voice. Pacote para ambos dados e voz. É divido em 80 bits para voz e 150 bits para dados. A parte de voz não é protegida por FEC, mas a parte de dados é codificada com FEC 2/3. Há controle de erros somente na parte de dados que, caso necessário, será retransmitida independentemente da parte de voz.

Os pacotes do tipo ID, NULL, POLL, FHS e DM1 são usados em conexões com enlace SCO e ACL; os DH1, AUX1, DM3, DH3, DM5 e DH5 são definidos somente para ACL; os HV1, HV2, HV3 e DV somente para SCO.

A parte de Dados pode ser detalhada da seguinte forma:

O cabeçalho dos Dados contém, principalmente, a informação do tamanho do Corpo, onde as informações são enviadas. O Código CRC, já mencionado acima, é responsável pelo controle de erro.

 

Estados Operacionais

Dependendo das operações exercidas por um aparelho em um dado momento, ele pode ser classificado em um dos quatro possíveis estados operacionais. Cada estado é caracterizado por um consumo diferente de energia, dependendo das funções exercidas em cada estado. Todas as operações realizadas por um dispositivo são feitas automaticamente, o que quer dizer que não requerem qualquer intervenção do usuário.

1) Estado Desconectado: antes que qualquer conexão em uma piconet seja criada, todos os aparelhos estão em Standby, “escutando” o meio periodicamente em busca de mensagens de conexão. Um dispositivo “escuta” o meio a cada 2048 slots (1,28 s) para verificar se há pedidos de conexão. Esta operação é chamada de scan.

2) Estado de Conexão: duas operações podem ser efetuadas neste estado: page e inquiry :

page - O page é utilizado pelo dispositivo que deseja estabelecer uma conexão. São transmitidos pedidos de conexão seguidos em 16 frequências diferentes, a cada 1,28 s. O dispositivo transmite duas vezes um pedido de conexão e escuta duas vezes para verificar se há alguma resposta.

   inquiry – Para saber quais dispositivos estão dentro do raio de alcance do dispositivo, ele envia esse tipo de mensagem. Os aparelhos que receberem o inquiry devem retornar um pacote do tipo FHS (Frequency Hopping-Synchronization), contendo sua identidade e informações para o sincronismo entre os dispositivos. Com o objetivo de não haver muitos dispositivos respondendo ao mesmo tempo e, portanto, colisões, os dispositivos que respondem a uma mensagem de inquiry utilizam uma temporização aleatória para enviar a resposta.

      Estado Ativo: neste estado, o aparelho participa do tráfego de dados. Quando conectado, um aparelho recebe um endereço curto de três bits.

      Estado de Baixa Energia: quando um aparelho não participa intensamente do tráfego de dados, automaticamente entra em um dos três estados de baixo consumo de energia: Hold, Sniff ou Park.

 

      Hold – o aparelho ainda pode manter enlaces SCO, mas nenhum ACL. Também pode realizar operações de scan, inquiry e page.

      Sniff- consome menos energia do que em Hold. O aparelho “dorme” e “acorda” periodicamente, após um intervalo de tempo pré-definido

      Park – modo de menor consumo de energia. Nele, o aparelho perde seu endereço de três bits (endereço de membro ativo) e ganha um novo de 8 bits (endereço de membro “estacionado”). Ele ainda faz parte da rede, mas não participa de nenhum tráfego de pacotes.

 

Segurança

           Em qualquer rede sem fio, a vulnerabilidade das informações é evidente. Como o meio que propaga o sinal é o próprio ar, um dispositivo pode captar um sinal sendo enviado se este não for devidamente protegido. No caso da tecnologia Bluetooth, onde as conexões são feitas de forma automática, é especialmente importante definir formas de proteger os usuários para que não recebam dados de dispositivos que não desejam.

Para garantir a integridade das informações transmitidas em uma conexão, aplicam-se recursos de criptografia e autenticação. Desse jeito, um usuário pode definir dispositivos que classifica como “confiáveis”. Para tais dispositivos, não será necessário pedir permissão antes da troca de dados.

Quando qualquer outro dispositivo desejar estabelecer uma conexão, um pedido de permissão deve ser enviado. Os dispositivos Bluetooth usam uma chave de acesso, também denominada número de identificação pessoal (PIN), para autenticação. Se a chave de acesso digitada pelo usuário corresponder à chave de acesso do dispositivo detectado, a autenticação será realizada com êxito. Se essa chave não corresponder, a autenticação falhará. 

Existem várias formas de interferir com uma conexão Bluetooth. Ultimamente, as técnicas de Bluejacking, Bluebugging e Car Whisperer se tornaram populares entre os hackers. Especialmente preocupante é o Bluebugging, que permite a um usuário externo acessar e utilizar um telefone pessoal, chegando a realizar chamadas ou a enviar mensagens de texto.