论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
1.2.2 密钥生成与初始化
每一对要实现认证与加密的蓝牙单元都要执行初始化过程,其过程由以下几部分组成:
(1)生成初始化密钥Kinit:为初始化过程中临时使用的链路密钥。该密钥由E22算法及相关参数生成,其生成原理图见图1。E22输出的128位初始化密钥Kinit用于链路密钥的交换分配过程。如果申请者与证实者没有交换过链路密钥,则Kinit用于认证过程,否则不再使用。该过程必须保证能够抵御一定的攻击,例如攻击者使用大量的假蓝牙地址BD_ADDR来测试大量PIN等,如果设备地址固定则每次测试PIN码等待间隔应按指数增加。
(2)认证:如果两个单元没有发生过通信联系,则使用初始化密钥作为链路密钥。每次执行认证规程,均发布新随机参数AU_RANDA。在相互认证中,首先在一个方向执行认证规程,成功后再反向执行认证。认证成功将得到一个辅助参数ACO,即认证加密偏移量。它将用于生成加密密钥。
(3)生成单元密钥:单元密钥在蓝牙单元首次运行时生成,根据E21算法生成并几乎不改变。初始化时,通信双方通常选用一个内存容量较少的单元中的密钥作为链路密钥。
图3
(4)生成联合密钥:联合密钥是分别在A单元与B单元中生成的两个数字的组合。生成过程是:每个单元生成随机数LK_RANDA与Lk_RANDB,采用E21算法与各自的随机数、蓝牙地址分别生成另一个随机数LK_KA与LK_KB,并通过其他操作后两个单元得出联合密钥。然后开始互相认证过程以确认交互过程成功。联合密钥交换分配成功后将放弃使用原链路密钥。
(5)生成加密密钥:加密密钥Kc根据E3算法,由当前链