通信,有時候為了保證截獲方即使得到了數據包,也不知道內容,所以加密傳輸即可;但有時候不需要知道數據包的內容,只要知道知道數據包能干嘛即可,比如發指令,此種情況單單對數據包進行加密就不夠了。
基礎知識:
1、單片機適用的數據加密算法有TEA,經過TEA加密的數據字節數和加密前的一樣,只是數據不一樣了
2、CRC:一個數據包,根據CRC算法的不同,可以得到不同長度的CRC值;CRC一方面保證數據不會被篡改,另一方面能檢測傳輸過程是否出現錯誤
假定A為發送方,B為接收方
加密模型1:
A:發送:請求臨時許可號+臨時唯一編號(編號的目的:使第一次發送的請求臨時許可號和第二次發送的數據為一組,只有接收到B返回的臨時許可號,才進行第二次發送,編號可以使A知道所發送的請求臨時許可號得到返回,而不是其他指令的許可號)
B:返回許可號(此許可號在A的有效期是30S)+臨時唯一編號
A:發送:許可號(TEA加密過)+數據(TEA加密過)
B:根據和A進行協商的TEA加密算法進行解密,如果加密過的許可號有效則此數據包有效,否則無效;執行結果TEA加密返回
優點:在通信過程中,即使數據被截獲,並且知道此數據的用途,當再次發送同樣數據B,也是無效的,此時許可號已過期。截獲方雖然也可以申請許可號,由於許可號位數很多,幾乎不可能再申請到相同的許可號,截獲的數據不能再次使用
缺點:A每執行一個數據包,需要發送兩次數據包
注:數據包發送過程中可以沒有CRC值,因為即使截獲方修改了數據,但是得不到有效的許可號;雖然CRC值還檢測數據傳輸過程中是否出現錯誤,暫時不考慮。
加密模型2:
A:發送:CRC值+數據(TEA加密過)
B:根據數據算出CRC值,和A發送來的CRC值是否一致,一致則表示數據包有效,否則無效;執行結果TEA加密返回
缺點:如果數據包被截獲,即使截獲方不知道CRC規則,只要原樣把數據發送給B,B也認為數據包有效
優點:代碼復雜度低,每執行一個數據包,只需要發送一次數據包;數據包修改后無效因為CRC值不對