Você está na página 1de 19

Funcionamento

Dispositivos Bluetooth se comunicam entre si e formam uma rede denominada


piconet, também chamada ad-hoc piconet. As piconets são redes locais com
cobertura limitada e sem a necessidade de uma infraestrutura. Esse tipo de rede é
importante para a conexão de diferentes pequenos dispositivos próximos uns dos
outros sem a necessidade de infraestrutura sem-fio.

Usando redes sem-fio, como as piconets, verifica-se a necessidade de recarregar


as baterias dos equipamentos, visto que os cabos/fios não só fazem a transmissão
de dados, mas também alimentam os dispositivos com energia.

Para projetar a camada física (aquela que transmite os dados) do Bluetooth,


algumas limitações são levadas em conta. Esses dispositivos serão integrados em
equipamentos móveis e, para tal, devem ter baterias confiáveis. Essas requerem
chips de pequena, baixa potência que possam ser construídos em equipamentos
portáteis. A transmissão de dados e voz está refletida em seu projeto, isto é,
aceita dados multimídia.

Faixa de Operação

O espectro de freqüência de operação deve estar aberto para o público sem


necessidade de licensas e, também, deve ser aceito mundialmente. Os
dispositivos Bluetooth operam na faixa ISM (Industrial, Scientific, Medical)
centrada em 2.45GHz que antigamente era reservada para alguns grupos e
recentemente aberta para uso comercial. Pequenas adaptações podem ocorrer
devido a restrições nacionais. Nos USA, a faixa ISM varia de 2400 a 2483.5 MHz.
No Japão, de 2400 a 2500 MHz. Para operação em países como Espanha e
França alguns ajustes devem ser feitos, pois a largura de banda e a localização da
faixa ISM diferem. Existem iniciativas para que o espectro de freqüência da faixa
ISM esteja mundialmente disponível. O objetivo é assegurar uma compatibilidade
mundial de comunicações. Na maioria dos países a faixa de freqüência varia de
2400 a 2483.3 MHz.

Transmissão

Devido à falta de coordenação e regulamentação na banda ISM, foi feita a escolha


de um método de múltiplo acesso ao meio. Entre vários métodos o FH-CDMA
(Frequency Hopping Code-Division Multiple Access) foi escolhido. Ele combina um
número de propriedades que fazem dele a melhor escolha para sistemas ad-hoc
de rádio.

Bluetooth está baseado no FH-CDMA. O modo de transmissão é por


espalhamento espectral (spread spectrum) com potência de até 100mW. Em
média, o sinal pode ser espalhado acima de uma grande cadeia de freqüencias,
mas instantaneamente somente uma pequena banda é ocupada, impedindo a
maioria das interferências na banda ISM

A transmissão é proporcionada pela técnica de salto de freqüência (frequency-


hopping). Em países onde a banda passante é no mínimo 80 MHz, Bluetooth usa
79 portadoras (hop carriers) igualmente espaçadas de 1 MHz. As 79 freqüências
estão disponíveis na faixa ISM. No Japão, França, e Espanha, restrições nacionais
permitem somente 23 portadoras. Em média, o salto de freqüência “visita” cada
portadora com igual probabilidade. As freqüências de transmissão são mudadas
de um modo pseudo-aleatório (de acordo com um algoritmo) a uma taxa de 1600
saltos por segundo (“1600 hops/s”).

Se considerarmos os 1600 saltos por segundo, então a duração da transmissão


em cada uma das freqüências selecionadas será de 0,000625s, ou 625us (1
dividido por 1600) . Este intervalo de tempo constitui-se em uma unidade de tempo
para o sistema, chamada de "slot" ou "time slot".

Ou melhor, esse sistema de saltos divide toda a banda disponível (no caso 80
MHZ) em canais de bandas menores (1 MHz), além de fazer uma separação entre
esses canais. Esta separação que existe entre dois saltos é o slot, cujo tempo é
625us. Transmissores e receptores ficam em um desses canais durante um certo
tempo e depois saltam para outro canal que ocupa outra freqüência de maneira
aleatória.

Exemplo de transmissão por salto de frequência

Uma maneira didática de entender esses saltos está aqui. Na figura tentamos
apresentar uma visualização muito simplificada desta técnica, mostrando 6 saltos
de freqüências de transmissão num intervalo 6 de tempo. Suponha que o
algoritmo determinou a seqüência 5 - 2 - 6 - 3 - 1 - 4. A transmissão tem início na
freqüência 5 e é interrompida; prossegue na freqüência 2; ocorre um novo salto
para a freqüência 6, e assim por diante.
Bluetooth opera em modo full-duplex, transmite e recebe ao mesmo tempo. Só
que na realidade é quase simultaneamente. O método usado para tal chama-se
TDD (Time Division Duplex). Uma explicação aproximada seria: ocorre uma
transmissão durante um slot; no próximo slot ocorre uma recepção. Devido ao
esquema de saltos, as transmissões e recepções então ocorrem em tempos
diferentes e também em freqüências diferentes. Na figura seguinte, podemos
tentar visualizar este "fenômeno" atribuindo a cor amarela, por exemplo, para as
transmissões e azul para as recepções. Assim, no slot 1 ocorre uma transmissão
na freqüência 5; no slot 2 ocorre uma recepção na freqüência 2; no slot 3 ocorre
uma nova recepção, agora na freqüência 6; e assim por diante.

Mesmo com esta simplificação, é possível perceber que este esquema é eficiente
para evitar interferências externas e interferências entre transmissões e recepções
(croos-talk).

Exemplo de transmissão por salto de frequência

Um observador da figura acima postado de frente para o eixo das freqüências,


estaria raciocinando no "domínio da freqüência" (frequency domain). Se postado
de frente para o eixo dos tempos (no lado direito da figura), seu raciocínio seria no
domínio do tempo (time domain). As figuras abaixo mostram a faixa de
freqüências e os slots (no domínio do tempo).

Visão no domínio da freqüência


Visão no domínio do tempo

Tipicamente, no intervalo de tempo correspondente a um slot, é enviado um


conjunto de dados chamado de "pacote" (packet). Então, o sistema envia um
pacote e executa um salto para outra freqüência. Em alguns sistemas, um pacote
pode durar mais de um slot, (multi-slot packet): neste caso, o pacote é todo
transmitido antes do salto de freqüência, implicando numa menor taxa de saltos
por segundo. A seqüência de dois pacotes, um transmitido e outro recebido, é
chamada de "frame". Outros esclarecimentos sobre pacotes serão abordados
mais adiante.

Esta técnica ocupa uma faixa maior de operação ou um maior espalhamento no


espectro, pois ao invés de uma única freqüência disponível para transmissão das
informações são utilizadas 79 freqüências (bem entendido: cada transmissão
ocorre numa única freqüência, mas no total é utilizada uma faixa maior).

O alcance de transmissão do Bluetooth é de até 10m ou ainda de até 100m com


transceptores especiais. Os dispositivos Bluetooth não podem estar no modo ativo
de transmissão o tempo todo. E assim, Bluetooth define vários estados de baixa
energia para o dispositivo.

Modos:

Standby: Nesse modo, o dispositivo não se encontra em comunicação efetiva para


troca de dados, mas periodicamente realiza uma espécie de "escuta", na
expectativa de receber alguma mensagem. Este procedimento é chamado de
varredura (“scanning”). Cada vez que o dispositivo “acorda”, ele verifica uma
portadora diferente. A janela de varredura usada é de aproximadamente 10ms. Há
dois tipos de "scanning" de escuta: "page scan" ou somente “page” e "inquiry
scan" ou só “inquiry”.

Page: É o sub-estado dentro do estado de "espera" em que um dispositivo tenta


localizar outros dispositivos que o estejam chamando, ou seja, tenta identificar
seus códigos de acesso (DAC - Device Access Code) emitido por outros
dispositivos. O page é usado pelo dispositivo que deseja estabelecer uma
conexão. Então, são transmitidos dois pedidos de conexão seguidos de diferentes
portadoras, a cada 1.25ms. O dispositivo paging transmite duas vezes um pedido
de conexão e escuta duas vezes para verificar se há alguma resposta.

Inquiry: É o sub-estado dentro do estado de espera em que um dispositivo tenta


localizar outros dispositivos que estejam nas proximidades, preparando-se para
uma eventual conexão, ou seja, tenta identificar quais são seus códigos de acesso
(DAC) e a freqüência de seus relógios internos (Clock), e para isso são enviadas
mensagens de inquiry. Os dispositivos que respondem uma mensagem de inquiry
usam uma temporização aleatória para enviar a resposta. O objetivo é evitar
possíveis colisões quando mais de um dispositivo responder ao pedido.

Hold: É utilizado para uma pequena interrupção durante a transmissão, que ainda
não está concluída. Um timer interno fica pulsando deixando o dispositivo em
condições de conectar-se imediatamente quando solicitado.

Sniff: O dispositivo ainda participa do trafego de dados, mas espera, operando


num ciclo reduzido.

Park: O dispositivo ainda está na piconet, mas já não participa do tráfego de


dados.

As especificações atuais do Bluetooth permitem comunicação "ponto-a ponto"


(comunicação entre dois equipamentos) ou "multiponto" onde um equipamento
principal (master) se comunica com até sete outros secundários (slave) formando
uma piconet.

Modulação

Na banda ISM, a banda passante do sinal do sistema FH é limitada em 1 MHz.


Para maior robustez, um esquema binário de modulação foi escolhido. Com a
restrição da banda, as taxas da dados estão limitadas em 1 Mb/s. Para que o
sistemas FH suportem tráfego de dados em rajada, um esquema não-coerente de
deteção é mais apropriado. Bluetooth usa uma modulação GFSK (Gaussian-
shaped Frequency Shift Keying) com índice de modulação de k = 0.3. "Uns"
lógicos são enviados como desvios positivos de freqüência, "zeros" lógicos como
desvios negativos. A demodulação pode simplesmente ser feita com um limitador
e um discriminador FM. Esse esquema de modulação permite a implementação de
uma unidade de rádio de baixo custo.

Medium Access Control

Vários dispositivos controlam o médio acesso num sistema Bluetooth. Primeiro,


um dispositivo dentro de uma piconet quando atua como master, os demais (no
máximo sete) atuam como slaves. O master determina a seqüência de salto
usando seu único dispositivo identificador bem como a fase da seqüência usando
seu clock interno. Isso previne que duas diferentes piconets tenham a mesma
seqüência de saltos e assim separá-las via CDMA. Dentro de uma piconet, o
master controla o acesso médio usando polling e um esquema reservado.

Todos os dispositivos Bluetooth que tenham as mesmas capacidades de rede, isto


é, eles podem ser master ou slave. Não existe distinção entre terminais e estações
bases, dois quaisquer ou mais dispositivos podem formar uma piconet. Dentro de
uma piconet somente pode existir um master.

Bluetooth foi projetado para permitir um grande número de canais independentes,


cada um servindo somente a um número limitado de participantes. Com o
esquema de modulação considerado, um canal FH simples na banda ISM só
suporta uma taxa de 1 Mb/s. Essa capacidade é dividida por todos os participantes
no canal. Teoricamente, o espectro com 79 portadoras pode suportar 79 Mb/s.
Devido a não ortogonalidade das seqüências de salto, a capacidade teórica de 79
Mb/s não pode ser alcançada, mas é no mínimo muito maior que 1 Mb/s.

Um canal Bluetooth FH está associado com uma piconet. Como mencionado, o


canal da piconet está definido pela identidade (vinda da seqüência de salto) e o
clock do sistema (vindo da fase de salto) de um master. Não existe tempo de
referência, mas quando a piconet é estabelecida, os slaves adicionam offsets em
seus clocks para se sincronizar com o master. Esses offsets são liberados
novamente quando a piconet é cancelada, mas podem ser armazenados para
mais tarde usar. Diferentes canais tem diferentes masters e diferentes seqüências
e fases de salto. O número de participantes num canal comum é oito (um master e
sete slaves), cada unidade pode ser master ou slave e por definição a unidade
que estabelece a piconet torna-se o master.

Services

Bluetooth oferece dois tipos de serviços, um assíncrono e outro síncrono:

• Synchronou connection-oriented link (SCO): Conexões telefônicas


requerem simetria, circuit-switched, conexão ponto a ponto. Para esse tipo
de link, os masters reservam dois slots consecutivos em intervalos fixos.
• Asynchronou connectionless link (ACL): Aplicações de dados requerem
simetria ou assimetria, transferência multiponto. Aqui os masters usam o
esquema polling.

Bluetooth pode também aceitar um ACL, três SCOs, ou um ACL e um SCO ao


mesmo tempo. SCOs sempre aceitam conexões de 64kbit/s síncrona. ACLs
podem ser simétrica ou assimétrica, aceitando diferentes taxas de bit dependendo
do tipo de pacote como explicado a seguir. As taxas de dados são de até 432.6
kbit /s num link simétrico usando cinco slots consecutivos e dados desprotegidos.
Links assimétricos podem carregar até 721kbit/s em uma direção e 57.6kbit/s em
outra direção, também usando cinco slots consecutivos em uma direção e sem
proteção de dados.

Pacotes

O formato geral do pacote transmitido em um slot está ilustrado na figura abaixo.


Cada pacote usa esse formato fixo começando com 72 bits de código de acesso
derivados da identidade do dispositivo master, que é o único para o canal.

Formato de um pacote Bluetooth enviado dentro de um slot

Cada pacote troca no canal esse código de acesso. Cada receptor na piconet e
agora compara o código de um pacote que armazenou o código de acesso; se
eles não coincidirem, o resto do pacote é ignorado. Alem disso, o código de
acesso é de importância para a sincronização. Então, um packet header segue e
finalmente 0 – 2.745 bit payload é enviado.

Formato de um packet header Bluetooth

O packet header começa com três bits MAC address, por isso, uma piconet pode
conter no máximo um master e sete slaves. 4 bits definem o tipo de pacote, logo
dezesseis tipos de links podem ser definidos. Existe um bit de confirmação
(acknowledgement - ACK) e não confirmação (negative acknowledgement -
NACK). Se a confirmação de pacotes é requerida, o Bluetooth envia essa
confirmação num slot seguido do dado (usando time division duplex esquema -
TDD). Assim, é suficiente usar uma simples alternating bit protocol com uma única
seqüência de bits numéricas SEQN e confirmação numérica ARQN. Oito bits
header error check (HEC) asseguram o cabeçalho. Esse é um código CRC (Cyclic
Redundancy Check) para detetar erros no cabeçalho. Adicionalmente, o packet
header é protegido por uma taxa de um terço do código foward error correction
(FEC), pois contém valioso link de informação e deve sobreviver aos erros
binários. Alem disso, 18 bits de informação do cabeçalho requerem 54 bits no
pacote.
Bluetooth define quatro pacotes de controle:

• ID ou indentification packet: Consiste no código de acesso; usado para


sinalização.
• Null packet: Tem um código de acesso e um packet header; usado se o link
de controle de informação carregado pelo packet header tivesse sido
transmitido.
• Poll packet: Similar ao Null; usado pelo master para forçar os slaves
retornarem a responder.
• FHS packet: Um FH-synchronization packet; usados para mudar o tempo
real do clock e a identidade de informação entre as unidades; contém todas
as informações para pegar duas unidades hop synchronized.

Tipicamente, cada pacote preenche um slot. Se maiores taxas são requeridas,


Bluetooth pode enviar pacotes multi-slot, cobrindo cerca de três ou cinco slots
consecutivos. Pacotes multi-slots são sempre enviados no mesmo salto de
freqüência, isto é, nenhum salto ocorre durante a transmissão de três ou cinco
pacotes multi-slots. Depois do envio desse tipo de pacote, o salto não continua
com a próxima freqüência da seqüência, mas com a freqüência que teria sido
escolhida se fosse enviado somente um simples slot, isto é a seqüência não é
interrompida. Esse comportamento é importante para todos os outros dispositivos
permanecerem sincronizados, porque a piconet é unicamente definida por ter a
mesma seqüência de salto com a mesma fase. Deslocando a fase num dispositivo
poderia destruir a piconet.

Usando um link SCO, três diferentes tipos de pacotes com 1-slots podem ser
usados. Cada link SCO carrega 64 kbit/s de voz, adicionalmente nenhum (FEC),
2/3 FEC, ou 1/3 FEC podem ser selecionados. 1/3 FEC é tão forte quanto o FEC
para o packet header e triplica a quantidade de dados. Dependendo da taxa de
erro do canal, diferentes esquemas FEC podem ser aplicados. FEC sempre causa
um overhead, mas evita retransmissões de dados com uma alta probabilidade.
Entretanto, dados de voz acima de SCO nunca são retransmitidos, um robusto
esquema de codificação de voz, continious variable slope delta (CVSD), é
aplicado.

Para ACLs carrying data, pacotes 1-slot, 3-slot ou 5-slot podem ser usados.
Adicionalmente, dados podem ser protegidos usando um esquema 2/3 FEC. Essa
proteção ajuda em ambientes ruidosos com alta taxa de link de erro. Entretanto, o
overhead introduzido pelo FEC deve ser bem alto. Bluetooth também oferece um
rápido automatic repeat request (ARQ) esquema para confiáveis transmissões.
Cada pacote é confirmado num slot seguido ao pacote. Se o pacote é perdido, um
mensageiro pode retransmiti-lo imediatamente no próximo slot depois da
confirmação negativa. Esse esquema exibe qualquer overhead no ambiente com
baixa taxa de erro, ainda que os pacotes que estejam perdidos ou destruídos
tenham que ser retransmitidos.
Correção de Erro

Há três esquemas de correção de erro:

• 1/3 rate FEC – cada bit é repetido três vez (redundância). É utilizado no
cabeçalho dos links SCO e pode ser utilizado nos dados (payload) também.
Obtém-se um ganho extra devido a repetição dos bits na largura de banda
instantênea, com isto há uma redução da interferência entre símbolos (ISI)
introduzida pelo filtro receptor.
• 2/3 rate FEC – o polinômio gerador é utilizado para codificar 15 bits em 10
bits. Pode ser utilizado nos dados (payload) dos links SCO e ACL. O código
utilizado é um Hamming diminuído e o polinômio gerador é:

g(D) = (D + 1) + (D^4 + D + 1)

• ARQ – os pacotes serão retransmitidos após um intervalo de tempo (a ser


definido), enquanto o receptor não acusar o recebimento dos mesmos. A
confirmação do recebimento é enviada no cabeçalho do pacote de retorno.

Esquema ARQ

Tem-se no diagrama acima, uma situação em que o dispositivo A envia um


pacote para B, o qual rejeita o pacote. B informa que o pacote foi rejeitado
com uma mensagem NACK inserida no cabeçalho da sua mensagem. A
reenvia o pacote e desta vez B o aceita, enviando um ACK no cabeçalho do
pacote de sua mensagem.

Networking
Todos os usuários dentro de uma piconet têm a mesma seqüência de saltos e,
assim, dividem o mesmo canal de 1MHz. Quanto mais usuários se juntarem a
piconet, capacidade de processamento por usuário diminui rapidamente. Tendo
somente uma piconet dentro dos 80MHz total esta não é muito eficiente. Isso
conduziu a idéia da formação de grupos de piconets chamadas sctternet (ver
figura abaixo). Somente aquelas unidades que realmente tenham que trocar dados
dividem a mesma piconet, então muitas piconets se sobrepõe e podem existir
simultaneamente. As scatternets formam um sitema de ad-hoc disperso, composto
de múltiplas redes, cada uma contendo um numero limitado de dispositivos.

Na scatternet da figura possui três piconets, com dois dispositivos participantes


em duas piconets diferentes. As três piconets agora usam uma seqüência de salto
diferente, sempre determinada pelo master da piconet. Agora, todas as piconets
podem dividir o total de 80MHz de panda passante. Adicionando mais piconets
verfica-se uma degradação da performance de uma simples piconet porque mais
colisões podem ocorrer. A colisão ocorre se duas ou mais piconets usam a mesma
freqüência portadora para um slot.

Se um dispositivo quer participar em mais de uma piconet, precisa sincronizar a


seqüência de salto da piconet da qual ele quer fazer parte. Se o dispositivo atua
como slave numa piconet, ele simplesmente começa a sincronizar com a
seqüência de salto da piconet que ele quer fazer parte. Após a sincronização, ele
atua como um slave nessa piconet e não participa na sua piconet formadora por
algum tempo. Para habilitar a sincronização, um slave tem que saber a identidade
do master determinando a seqüência de salto da piconet. Antes de partir de uma
piconet, um slave informa ao master corrente que irá se desabilitar por uma certa
quantidade de tempo. Os dispositivos que permanecera na piconet a comunicação
normalmente.
Redes formadas por dispositivos Bluetooth

O master pode também deixar sua piconet e atua como um slave em outra
piconet. É claro que não é possível para o master atuar como master em outra
piconet, isso conduziria ao comportamento idêntico das duas piconets (ambas
teriam a mesma seqüência de salto, que é determinada pelo master por definição).
Tão cedo quanto o master deixe a piconet, todo trafego dentro dessa piconete fica
suspenso até ele retornar.

A comunicação entre diferentes piconets acontece embora os dispositivos pulem


entre essas redes.

Endereçamento

Diversos tipos de endereços estão associados aos dispositivos Bluetooth.

BD_ADDR (Bluetooth Device Address): Endereço de 48 bits associado fisicamente


ao dispositivo Bluetooth. Este endereço é fornecido pelo IEEE e se assemelha ao
endereço MAC das placas de rede Ethernet.

AM_ADDR (Active Mode Address): Endereço de 3 bits destinados aos dispositivos


Bluetooth ativos em uma piconet. Repare que o endereço 000 é destinado à
comunicação de broadcast e as 7 combinações restantes são destinadas aos
dispositivos slave.

PM_ADDR (Park Mode Address): Endereço de 8 bits destinados aos dispositivos


no modo PARK (estacionados). Estes dispositivos mantém o sincronismo como o
master da piconet e apresentam baixo consumo.
AR_ADDR (Acces Request Address): Define em qual das meia-janelas de
requisição de conexão, o dispositivo pode requisitar a sua ativação na piconet.
Este endereço é atribuído quando o slave entra no modo PARK e ele não precisa
ser único para todos os slaves estacionados na piconet.

Segurança

Sinais de rádio podem ser facilmente interceptados, por isso é importante que os
dispositivos Bluetooth disponíveis sejam seguros para prevenir mensagens de
origem não autorizada, acesso a dados importantes ou que suas conversas sejam
ouvidas sem autorização. Os seguintes níveis de segurança fazem com que a
tecnologia Bluetooth alcance esse objetivos básicos. A autenticação, a qual evita o
recebimento de mensagens de origem duvidosa e acesso não desejados a dados,
é função importante. A criptografia, a qual evita escutas não autorizadas, mantém
a privacidade do canal. O fato do alcance de transmissão dos dispositivos
Bluetooth estar limitado a 10 m ajuda na prevenção de escutas. Isso devido ao
fato das aplicações Bluetooth terem diferentes demandas no que se refere à
segurança. Há três modos de segurança que cobre a funcionalidade e aplicação
do dispositivo.

Sem segurança: Este modo é usado com dispositivos que não tenham aplicações
críticas. Isto bypassa as funções do nível de segurança, sendo os dados sem
importância vital são facilmente acessados. A troca automática de cartões de
negócio eletrônico, é um típico exemplo de transferência de dados sem
segurança.

Service level security: Este modo permite procedimento de acesso versátil,


especialmente para acionar aplicações com diferentes níveis de segurança em
paralelo.

Link level security: Neste modo, o nível de segurança é o mesmo para todas as
aplicações, para cada conexão que é iniciada. Embora menos flexível, este modo
é adequado para manter o nível comum de segurança, e é mais fácil de
implementar que o modo anterior.

Autenticação

O processo de autenticação se dá através de um esquema desafio-resposta. O


dispositivo verificador envia uma PDU (Protocol Data Unit) contendo um número
randômico (desafio) para o dispositivo a ser autenticado. Este dispositivo calcula a
resposta em função do desafio, do BD_ADDR (representa o endereço do
dispositivo Bluetooth e contém 48 bits) e de uma chave secreta. O cálculo correto
da resposta se deve aos dois dispositivos possuirem uma chave secreta em
comum.

Um procedimento inicial de autenticação deve ser criado, pois a priori não há


chave secreta. Para tanto, uma chave de inicialização (Kint) baseada no PIN ( é
um número criado pelo usuário do dispositivo Bluetooth a semelhança de uma
senha. Este número acrescenta um nível a mais na aleatoriedade nas chaves
criadas pelos dispositivos), um número randômico e o BD_ADDR é criada. Este
processo tem por objetivo calacular uma chave secreta (chave do link) de forma a
ser utilizada nos processos subsequentes de autenticação.

Encriptação

Se pelo menos um processo de autenticação tenha se completado, pode-se


utilizar a encriptação. Se o master desejar que todos os slaves de uma piconet
utilizem os mesmos parâmetros de encriptação, ele deve lançar uma chave
temporária (Kmaster) e fazer com que ela se torne a chave corrente para todos os
slaves antes de iniciar a encriptação. Isto seria necessário para encriptação de
pacotes de broadcast.

Modos de encriptação:

Primeiramente, o master e os slaves devem definir se utilizarão encriptação em


suas comunicações e se ela se aplicará a comunicações ponto-a-ponto e/ou
comunicações broadcast.

Tamanho da chave de encriptação:

O próximo passo é a determinação do tamanho da chave de encriptação a ser


utilizada. O master envia uma mensagem requisitando o tamanho da chave a ser
utilizado, além de um tamanho sugerido. O slave verificará se é possível utilizar a
chave sugerida. Caso não seja possível, o slave enviará o tamanho máximo
possível que ele suporta (Tamanho máximo > Tamanho sugerido pelo master). O
master verificará se é possível utilizar o tamanho de chave especificado pelo
slave.

Este processo se repete até que haja um acordo no tamanho da chave a ser
utilizada ou até que se verifique a impossibilidade no estabelecimento da mesma.

Deve-se verificar que este processo é crucial na segurança da comunicação entre


os dispositivos. O master possui um tamanho mínimo a ser aceito para uma chave
de encriptação, pois caso isto não acontecesse um dispositivo poderia utilizar uma
chave fraca (poucos bits) e tornaria insegura a comunicação entre os dispositivos.

Isto poderia ser explorado por um terceiro dispositivo que de alguma forma
entraria na comunicação entre os dispositivos iniais e estabeleceria uma chave
fraca para a comunicação. Após isto ele sairia de cena possibilitando que os dois
dispositivos originais iniciacem a comunicação com uma chave fraca, podendo o
dispositivo atacante, ler os pacotes (sniff) e decodificar as informações.

Início da encriptação:
O master gera um número randômico (EN_RAND) e calcula a chave de
encriptação EC = K3 (chave corrente do link, EN_RAND e COF). O número
randômico deve ser o mesmo para todos os slaves, caso se queira suportar
broadcast com encriptação.

O master envia uma mensagem LMP_start_encrypt_req, que inclui EN_RAND. O


slave calcula Kc quando esta mensagem é recebida e confirma o recebimento
através de uma mensagem LMP_ACCEPT.

Gerenciador de conexão

Um sistema Bluetooth é gerenciado por um link manager (LM). Link Manager é a


entidade de software responsável pela organização, autenticação, configuração da
conexão, e outros protocolos. O gerenciador de conexão descobre outro LM
remoto e se comunica com ele pelo protocolo do gerenciador de conexão (Link
Manager Protocol - LMP). Para executar seu papel de provedor de serviço, o LM
usa os serviços do controlador de conexão subjacente - Link Controller (LC).

Conexões

Como é feito o estabelecimento de conexões?

Anteriormente foi descrito os modos dos dispositivos Bluetooth. Sabemos então,


que os modos scan, page e inquiry suportam o estabelecimento de conexões.
Para que estas sejam estabelecidas, os dispositivos ou unidades frequentemente
devem ouvir quais outras unidades querem se conectar. A unidade acorda
periodicamente para ouvir sua identidade. Essa identidade não é explicita, mas um
código de acesso de sua própria identidade. Quando a unidade acorda para o
modo scan seu código de acesso é comparado com a identidade. Toda vez que o
dispositivo acorda, ele varre (scan) uma portadora de salto diferente. Isso é o
requerido por regulações que não permitem uma freqüência fixa para acordar, e
também proporciona imunidade a interferência.

A seqüência de saltos em quando acordado é somente 32 saltos em tamanho e


são cíclicos. Todos os 32 saltos são únicos e eles alcançam no mínimo 64 MHz
dos 80 MHz aceitáveis. Essa seqüência é pseudo-randômica e única para cada
dispositivo. Ela é derivada da identidade de uma unidadee sua fase é determinada
pelo clock natural da unidade. Durante o tempo de repouso(standby) esse clock é
usado para programar as operações do modo ativo (acordado). A unidade que
quer se conectar não sabe quando a unidade em repouso irá acordar e a unidade
paging porque essa irá precisar de consumo de energia.

Mesmo que a unidade de rádio esteja em repouso a maior parte do tempo, a


unidade paging sabe a identidade da unidade que deseja conectar-se. Então ela
sabe a seqüência (wake-up sequence) e pode gerar o código de acesso que serve
como page message. A unidade paging então transmite o código de acesso
repetidamente a diferentes freqüências a cada 1.25ms; a unidade paging transmite
o código de acesso e escuta 2 vezes pela resposta.

Códigos de acesso consecutivos são transmitidos em diferentes saltos


seleciondos numa wake-up sequence. Num período de 10ms 16 diferentes
portadoras de salto são visitadas, elas representam a metade da wake-up
sequence. As unidades paging transmitem o código de acesso em 16 seqüências
ciclicamente durante o período de repouso. A unidade em repouso acorda em
quaisquer das 16 freqüências e receberá o código de acesso e um procedimento
de conexão segue. Entretanto, desde que a unidade paging não saiba a fase que
a unidade em repouso está usando, a unidade em repouso pode igualmente
acordar em quaisquer 16 freqüências restantes nas 32 hop wake-up sequences.
Se a unidade paging não recebe resposta de uma unidade em repouso. Depois de
um tempo correspondente ao tempo de repouso, ela retransmitirá o código de
acesso repetidamente nas portadoras de salto restante da metade da seqüência.

Quando a unidade em repouso recebe uma page message, a unidade paging é


notificada pelo retorno da mensagem que novamente é o códogo de acesso
derivado da identidade da unidade em repouso. As unidades paging transmitem
um pacote FHS que contém todas as informações pager. Essas informações são
então usadas por ambas, a unidade paging e a unidade em repouso, para
estabelecer a piconet; que é a unidade paging tornando-se master usando o canal
FH e a unidade em repouso se tornando slave.

Para o estabelecimento de conexão, a identidade do receptor é requerida para


determinar a page message e a wake-up sequence.
Se essa informação não é conhecida, a unidade que deseja fazer a conexão deve
enviar em bradcast uma inquiry message que induz o receptor a retornar seu
endereço e seu clock. Com esse procedimento, inquiridor pode determinar quais
unidades estão na cadeia e quais são suas características. A inquiry message é
novamente um código de acesso, mas deriva de uma identidade reservada
(inquiry address). A unidade em repouso também ouve a inquiry message de
acordo com as 32 hop inquiry sequences. As unidades que recebem essas
mensagens retornam um pacote FHS que inclui, além de outras coisas, sua
identidade e seu clock. Para o retorno do pacote FHS um mecanismo randômico
de backoff é usado para previnir vários receptores transmitindo simultaneamente.

Durante os modos page e inquiry, as 32 portadoras de salto são usadas. Para um


procedimento de saltos comum 75 portadoras devem ser usadas, mas durante o
esses dois modos somente um código de acesso é usado para sinalização. Esse
código de acesso é usado como um código de seqüência direta. Durante esses
dois modos o sistema Bluetooth atua como um sistema híbrido DS/FH, apesar de
durante a conexão atuar como um puro sistema FH.

Bluetooth aplica um mecanismo de seleção de salto (hop selection mechanism).


Esse mecanismo pode ser considerado uma caixa preta com uma identidade e
clock, e uma portadora de salto fora da caixa, de acordo com a figura.
Hop selection mechanism

O mecanismo satisfaz alguns requerimentos:

• A seqüência é selecionada pela identidade da unidade e a fase pelo clock.


• O ciclo da seqüência cobre cerca de 23horas.
• 32 saltos consecutivos alcançam cerca de 64 MHZ do spectro.
• Em média, todas as freqüências são visitadas com igual probabilidade.
• O número de seqüências de saltos são muito grandes.
• Por mudança do clock e/ou identidade, o salto selecionado muda
intantaneamente.

Hop selection mechanism

Através da ilustração observa-se o mecanismo. No primeiro bloco, a identidade


seleciona 32 saltos subsequentes com pseudo-randômicas propriedades. A parte
menos significativa do salto do clock através da seqüência de acordo com a taxa
de slot (1600 slots/s). O primeiro bloco determina um índice nos 32 segmentos de
salto. Os segmentos são mapeados nas 79 portadoras de salto da lista. Essa lista
é construída em duas partes, portadoras de saltos pares e depois as ímpares. Um
segmento arbitrario de 32 elementos consecutivos da lista alcançam cerca de 64
MHz. Para os modos paging e inquiry, o mapeamento dos 32 sgmentos das
portadoras listadas são fixos. Quando o clock roda, a mesma 32-hop sequence e
32 portadoras serão usadas. Entretanto, identidades diferentes irão mapear
diferentes segmentos e diferentes seqüências, por isso wake-up hop sequences
de diferentes unidades são randomizadas. Durante a conexão, a parte mais
significante do clock afeta ambas as seleções de seqüências e segmentos: depois
de 32 saltos (um segmento) a seqüência é alterada, e o segmento é deslocado
para frente em direção da metade do seu tamanho (16 saltos). Os segmentos,
cada 32 saltos em tamanho, são concatenados, e a seleção aleatória dos índices
muda para cada novo segmento; os segmentos são visitados em média com igual
probabilidade. Mudando o clock e/ou a identidade irá mudar diretamente a
seqüência e o mapeamento do segmento.

Hardware

A placa com Bluetooth inclui um sistema de desenvolvimento de software com a


camada MAC (Medium Access Control Layer). Esta tecnologia permite dígitos
binários de 730kbps, trabalhando a 2.4GHz em 79 canais da banda ISM e taxa de
transferência de 1 Mbps. Bluetooth é incompatível com o padrão para bandas ISM
IEEE 802.11. O Bluetooth suporta os principais protocolos como: TCP/IP, HID e
RFCOMM.

Todo o padrão é implementado em um único microchip de 9 x 9 milímetros.

Qualquer sistema que utiliza a tecnologia Bluetooth pode ser visualizado em


termos de quatro componentes:

• Uma unidade de rádio (“radio unit”);


• Uma unidade de banda básica (“baseband unit”);
• Uma pilha ou camada de software (“Software Stack”) e
• Um programa aplicativo (“Aplication Software”).

De um modo geral, quando identificamos componentes como estes em circuitos


eletrônicos, eles não estão separados fisicamente, apenas funcionalmente. Esses
componentes estão integrados no microchip Bluetooth.

A "Radio Unit" como o nome já vai dizendo, é a parte do radio transceptor


propriamente dito que estabelece a comunicação sem fio entre os equipamentos
dotados de Bluetooth.

A "Baseband Unit" é a parte computacional do chip consistindo basicamente de


uma memória flash e uma CPU ("Central Processing Unit") que interage com o
hardware do dispositivo que aloja o chip.

A "Software Stack" é constituída pelos programas que administram a comunicação


interna entre os componentes “Baseband Unit” e “Aplication Software”.

A "Application Software" proporciona a interface para que o usuário interaja com o


sistema Bluetooth.

Protocolos

No início de 1998, o Bluetooth Special Interest Group (SIG) foi formado para além
de expandir e promover o conceito Bluetooth estabelecer uma indústria padrão. A
versão 1.0 de uma especificação foi publicada em Julho de 1999. Mais de 1000
companhias assinaram como adeptos da tecnologia. Um programa especial de
certificação está sob desenvolvimento para guarantir a interoperabilidade
Bluetooth.

A pilha de protocolo Bluetooth é mostrada na figura.

A camada RF especifica os parâmetros de rádio.

A camada baseband especifica o nível mais baixo de operações com bits e os


níveis dos pacotes (operações FEC, encriptação, cálculos CRC, protocolo ARQ).

A camada link manager (LM) especifica o estabelecimento e liberação de


conexões, autenticações, conexões e liberação de canais SCO e ACL, supervisão
de links e o programa de tráfego.

A camada L2CAP (Logical Link Control and Adaptation Protocol) têm sido
introduzida para formar uma interface entre o padrão de protocolos de transporte
de dados e o protocolo Bluetooth. Esta camada provê serviços de dados
orientados e não-orientados à conexão através de multiplexação de protocolos,
segmentação e remontagem.

L2CAP está definido para os links ACL e não há planos para se prestar suporte
aos links SCO.

Acima do L2CAP residem a RFCOMM, Telephone Control Specification (TCS), e


outros protocolos de redes (por exemplo, TCP/IP, PPP, OBEX, Wireless
Application Protocol). RFCOMM e o TCS estão também especificados no
Bluetooth e proporcionam emulação de cabo serial e um protocolo de telefonia
sem fio, respectiviamente.

SDP (Service Discovery Protocol) habilita uma unidade Bluetooth a achar as


capacidades das outras unidades. Ele descobre quais serviços são acessíves e
suas características. Isso envolve serviços comuns (impressão, fax,...) bem como
avançados (telecomunicações, redes, pontos de acesso, e-commerce,...). SDP
especificamente endereça o ambiente Bluetooth, ele não especifica os métodos de
acesso a serviços, para os quais outros (não-Bluetooth) protocolos podem ser
usados.

Em adição aos protocolos que garantem que duas unidades falem a mesma
linguagem, perfis são definidos. Perfis são associados com as aplicações. Os
perfis especificam que os elementos do protocolo são obrigatórios em certas
aplicaçõoes. Isso previne que dispositivos com menor memória e poder de
processamento implementem a pilha de protocolos Bluetooth inteira quando eles
somentem requerem uma pequena fração dela. Dispositivos simples como um
mouse podem ser implementados com uma forte redução na pilha de protocolos.
Os perfis são dinâmicos, novas aplicações podem ser somados as especificações
Bluetooth.