加密
# u6 N- P8 U# w7 F- X s
( y6 M3 j: y% b1 ^6 o5 I
蓝牙设备中采用加密的方法来保证连接的保密性。但在数据加密之前,需要存在一条经过认证的已建立连接。蓝牙加密采用8位至128位的密钥对蓝牙分组中的数据载荷进行加密,但不对蓝牙接入码和分组头进行加密。载荷加密的具体细节依赖于所需要的加密强度以及产品最终应用国家的地区性法规要求。
$ K% ?1 J9 E* f; \ 6 p4 v# K- _1 T7 T( b
蓝牙系统采用称为E0的序列加密算法对数据进行加密。对每一数据载荷(payload)E0算法都进行重新同步。E0序列加密包含三个部分:
1 V: I0 _9 S& C- I. A( r2 s5 X
+ Y3 D2 o, L0 N! K, Q- Y●初始化部分,生成载荷密钥;
0 p; W/ ^5 p* m3 D
; l3 t' h: a" Q- O7 ?8 q/ T4 {
●密钥流比特生成器; ! x# k0 V2 E% |0 {4 d* Z$ m
# [6 y5 `$ z- C+ s0 ` G- F
●加密与解密硬件电路。
+ [, D2 A3 D8 C) } E0 b, `4 }, b, Y. { _) o m0 r; _
有三种加密模式:
8 k& E5 k9 N: e1 [3 F5 O0 {$ R2 Y9 h6 F9 S
● 加密模式1:不对任何数据进行加密; K! z' n1 T1 y
3 m4 P! r( Z" q% J9 m: ^9 E, W
● 加密模式2:点对多点(广播)数据流不加密,点对点数据流进行加密;
" ~: G) n/ r* m
4 Q0 d: \) r! A: x% t: Z5 f* p
● 加密模式3:所有数据流均进行加密。 + j" M) n5 e' V
0 \) Q% I7 m' w$ P& ^
物理层数据安全性-跳频扩展频谱
& J, X% M/ y& W7 x, B+ K
. F* b6 w" A8 O e1 T- F
除了蓝牙标准所采取的其它安全手段以外,蓝牙通信所采取的跳频通信这一机制也使窃听变得极困难。
) @% T1 A: }# Y9 s" J1 w9 a" Q# c ?/ @3 ^8 k3 M: n4 m8 j. R
如前所述,蓝牙射频工作在2.4GHz频段。在北美和欧洲的大部分,蓝牙设备工作于从2.402至2.480GHz的频带,整个频带被分成 79个1MHz带宽的子信道。在跳频通信中,数据信号被窄带载波信号调制,而这些窄带载波信号则做为时间的函数不断从一个频率跳到另一个频率。蓝牙标准采用的是每秒跳跃1600次的跳频序列。 + w2 y: @: L2 h# Q6 K* ~
; H1 ?% z9 P+ y4 o3 G d
收发双方都知道的跳频码决定了射频载波的频率以及跳频的顺序。为正确地进行信号接收,接收器必须设置成与发送方一样的跳频码,并在恰当的时间和正确的频率点监听载波信号。只有正确同步时,才能维持一个逻辑信道。其它接收器看到的FHSS信号仅是持续时间极短的脉冲噪声。
0 N; [8 ]! V/ r. p( ]$ L$ c8 z& ^ 3 p( ~/ f! N( f& s
FHSS依靠频率的变化来对抗干扰。如果射频单元在某个频率遇到干扰,则会在下一步跳到另一频率点时重传受到干扰的信号。因此总的干扰可变得很低,位错误很少或几乎没有。 & ?! C9 Q0 E& ~3 g! A/ f
4 x. @& {' ]& I. y! V+ b4 t$ S
蓝牙数据完整性
' P( m" _$ J; r" q" @: q, k2 U1 ?0 w9 n2 [
前向纠错(FEC)
0 f7 g e/ k' D* y: p& `' Q* z( D
" N( A0 d) N) b. [. {4 W' A% \) b. @
蓝牙采用的错误校正有三种类型:
8 Y/ h. D5 s$ H- j: Q9 `& |/ [! K/ e& ? E
●1/3编码率FEC
$ Y! b4 v/ o) j9 S/ N
8 u% p) x r6 d
●2/3 编码率 FEC 8 l. M3 _* S& z) @% s
5 v" L6 U6 a9 _4 Q- J
●数据的自动重发请求(ARQ)方案 ! {' K/ I. Z8 n% M( q: K
+ T; f2 C+ Q9 u
FEC(前向纠错)的目的是为了减少数据载荷重发的次数。但是,采用FEC的缺点是会明显地降低可达到的实际数据传输速率。
* t4 Y: P% B d% d0 Y+ j; y$ b) ]/ O0 p2 \9 B
数据白化 " {, s r- |( K" r$ F2 A1 Q
T- `; \5 c; x1 p! h3 X6 g
所有的分组头和载荷信息在发送前都要利用数据白化位进行白化处理。这主要是为了避免在传输过程中出现过长的连续0或1的位流模式。基带处理器需要从接收到的模拟数据信号中判断数据是0还是1,但过长的连续0或1位流会造成问题。因为在接收到的模拟数据信号中并不存在象直流信号中那样的参考点,因此必须依靠接收到的最后几个传输信号进行校正。任何连续的0或1的长序列位流串都可能导致校正失败。因此需要采用数据白化技术对信号进行扰码处理,以大大降低出现长序列0或1位流串的可能性。9 l9 G! p1 X8 K [( x
3 B# V! u, X% b( G
用于高级数据安全可编程解决方案 " R3 L" q% D6 f9 y: a
% y" A4 M: R% \8 S
对于大多数需要将保密放在首位来考虑的应用来说,蓝牙所提供的数据安全性是不够的。总的来说,就蓝牙安全性来说,还存在一些问题需要解决。蓝牙所提供的数据安全性措施对小型应用来说看起来已足够了,但任何敏感数据或会产生问题的数据都不应直接通过蓝牙传输。例如,蓝牙所采用的加密方案本身就有某些弱点。128位密钥长度的E0序列加密在某些情况下可通过O(2^64)方式破解。
S( P' H; O# t$ W2 f! T; \
2 x& [4 {1 Y" I {* D; R 设想一种可能的情况,攻击者设法获取了用来保证两个设备间通信的加密密钥,然后即可窃听这两个设备间互相发送的消息。而且,攻击者还可以冒充其中的某个设备插入错误的信息。朗讯公司认为,避免这一问题的一个方法是用户采用较长的个人识别码(PIN码)而不是用短的PIN码,从而增加攻击者获取加密密钥的难度。而这又意味着要人工输入PIN号码。这实在令人觉得非常不方便,因为每次建立安全连接都需要输入PIN码。 # ?. |5 b, \5 T- H- q( D
# ]* M1 X6 Y. Z: K4 C5 E
克服这种安全性问题的另一个方法是采用更强健的加密算法,如数字加密标准(DES),甚至三次DES来代替E0序列加密算法。DES是一种块加密方法,这意味着加密过程是针对一个数据块一个数据块地进行的。在DES算法中,原始信息被分成64位的固定长度数据块,然后利用56位的加密密钥通过置换和组合方法生成64位的加密信息。图2示出的是DES加密处理的框图。
) y* t% [- {) H& s5 k* X
% k& j! ^* \8 r2 c: } 与蓝牙序列加密算法不同,数学上可以证明块加密算法是完全安全的。DES块密码是高度随机的、非线性的,生成的加密密文与明文和密钥的每一位都相关。DES的可用加密密钥数量多达72 x 1015个。应用于每一 明文信息的密钥都是从这一巨大数量的密钥中随机产生的。DES算法已被广泛采用并被认为是非常可靠的,而且现在出现了一种更为安全的DES算法变种--称为三次DES(TDES),它采用不同的密钥对信息连续进行三次DES加密处理。
7 H" G, U7 F: \2 B" R& m, P. t! m
8 } |( X) P- B& Q 所有这些加密算法都可以采用低成本的可编程逻辑器件和现成可用的用于高级加密处理的智力产权(IP)产品实现。如图2所示的DES功能,仅需要2美元成本的芯片逻辑资源即可实现。目前,大批量时只用10美元即可购买到10万系统门的可编程逻辑器件,而且是现货,立即可以使用。这些器件还允许在设计中增加其它功能,如高级错误纠正。因此可编程逻辑器件可大幅度降低系统级的成本。 . n! [6 R; _, V( |
- c- f3 q6 T! @# y. u8 \ 基于软件的加密解决方案具有极好的灵活性,然而性能较低。另一方面,基于硬件的加密解决方案性能很高,但一旦设计完成后灵活性很差。而基于可编程逻辑的加密解决方案则可同时提供前述两种方案的优点,即具有很高水平的灵活性也具有很高的性能。 1 @5 r% V' O$ i$ E1 T, p3 S* C7 D
% j }8 K4 ]% d 采用一个更强键的加密算法允许蓝牙技术安全地应用到范围广泛的安全性具有最重要地位的应用中去。这些应用包括:金融电子交易:ATM、智能卡;安全电子商务交易;安全办公通信;安全视频监视系统;数字机顶盒;高清晰度电视(HDTV)及其它消费电子设备。
/ G1 b) M6 ?: ]+ ]# c0 I9 L a( N8 U1 w! T6 ]" z; u# w# C* j" \4 c
用于高级数据完整性可编程解决方案 . h/ L$ @# P$ p: T
6 I9 n3 X( h# `
蓝牙标准定义了可有效防止随机错误的方法,即采用数据白化和错误校验方法进行数据传输。然而,从理论上仍然存在这样的特定数据流,它可能会持续地造成蓝牙传输错误,虽然这种情况在通常的蓝牙传输中很难碰到。
5 k' W: v9 r; Q1 P - R3 t F! R* G2 @
而且在更为恶劣的环境,如工业环境、办公大楼、机场和城市公共交通厂所等,仍然存在传输过程中产生差错的危险。在这些地方,来自其它多种蓝牙设备、无线网络、手机系统或其它工作在相同频段的电子设备的噪声和干扰都会导致问题。针对这些情况,可以再次采用可编程逻辑和高级纠错IP来实现无错通信。对恶劣的通信环境,可以采用一种更为强大的前向纠错技术,如Turbo卷积编码。
" o: k$ u) j+ J( P7 S( N
2 p$ g& i: n& P1 Q urbo编码是一种高级前向纠错算法,它是第三代无线通信系统(如WCDMA中实现的)的标准纠错算法。Turbo编码的原理是由编码器生成包含两上独立编码比特序列和一个未编码比特序列的数据流。由于经过交织处理,两组校验比特序列是弱相关的。在Turbo解码器中,两组校验比特序列分别利用称为外部信息的软判决输出进行解码。Turbo解码的效率来自一系列译码循环过程中对外部信息的共享。外部信息从一个校验解码步骤传递到另一个,从一个循环传递到另一个。已经有此类Turbo卷积码的现成IP可用,并且可容易地采用低成本可编程逻辑实现。这一解决方案可以在恶劣和容易出错的环境中保证蓝牙数据完整性。
. S' u. s7 j$ _7 M6 M* \) n9 \- E# V1 ?* q w5 q
蓝牙应用中的可编程逻辑解决方案
; x# ^% E3 A% `: `% @% h
, W8 ]! V" j% p% I# M z* `' o
目前,实现这一美好前景所面临的挑战集中于如何将蓝牙应用到下一代产品中。这可能是一个困难的任务,特别是当面对现有的产品结构时。如何集成蓝牙子系统?如何最小化软件开发开销和对系统的影响?如何创造针对特定应用的设备配置? . S3 ^/ W; P$ y: P* C o4 T' g4 p$ G
7 ]4 v7 ^- [( ~: R2 [ 可编程逻辑的一个巨大优点是可以根据特殊的要求调整系统配置。例如,目前提供的蓝牙器件最大性能仅721Kbps,并且仅能同时支持几个并发的网络(微微网)。对公共厂所的接入点(如机场休息室或企业会议室等),可能需要汇接大量的此类设备,以支持大量用户的高带宽连接。
: R! |" u* R4 ^) r
- ? s, N; o0 V- R' j% x% a' v 可编程逻辑可以许多方式为设计提供灵活性,无论是连接一个不同的射频部分到所选择的基带控制器,还是象上面的例子一样集成更多的用户接口外设,或如图3那样实现数据安全性和完整性等增值功能。在所有情况下,您都会发现硬件设计会更快,并且可以多次进行设计修正,从而保证系统可以在更短的时间内达到正常工作,而所有这一切都没有采用ASIC时的NRE费用。