QUIC包頭保護

2021-10-13 23:15:49 字數 1652 閱讀 7132

quic使用秘鑰(過段時間更換一次)對應用資料加密後,需要單獨對包頭加密。

長報頭加密字段:

±±±±±±±±+

|1|1|t t|e e e e|

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

| version -> length fields …

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

短報頭加密字段:

±±±±±±±±+

|0|1|s|e e e e e|

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

| destination connection id (0/32…144) …

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

普通字段:

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

|e e e e e e e e epacket number (8/16/24/32)e e e e e e e e

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

| [protected payload (8/16/24)] …

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

| sampled part of protected payload (128) …

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

| protected payload remainder (*) …

±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±+

報文示例:

initial packet

1-rtt packet

因為接收端收到報文解密時,提取抽樣需要跟傳送端一致才能正確解密,而包編號的長度不是固定值,所以解密假設包編號長度為4位元組,那麼傳送端抽樣需要從4位元組後開始,所以會出現跳過部分(即protected payload (0…24), # skipped part),用於補足4位元組。

使用秘鑰+抽樣進行加密,個人猜測是因為應對側通道攻擊,因為包頭保護的秘鑰在連線期間不能改變,需要加入抽樣擾亂每個資料報的加密能量規律。

先根據秘鑰和抽樣由特定的加密演算法(建鏈協商決定)得到mask,mask使用異或保護報頭字段。分組的第一位元組的最低有效位被mask第乙個位元組的最低有效位加密,包編號用剩餘位元組加密:

mask = aes-ecb(hp_key, sample)

pn_length = (packet[0] & 0x03) + 1

if (packet[0] & 0x80) == 0x80:

#長報頭: 4 bits masked

packet[0] ^= mask[0] & 0x0f

else:

# 短報頭: 5 bits masked

packet[0] ^= mask[0] & 0x1f

# pn_offset是包編號欄位的起始位置.

packet[pn_offset:pn_offset+pn_length] ^= mask[1:1+pn_length]

QUIC協議文件翻譯 什麼是QUIC

quic是乙個谷歌提出的新的網際網路協議。quic解決出現在現在網路協議的一些傳輸層和應用層的問題,而且幾乎不需要應用更改。quic和tcp tls http2十分相似,但是基於udp實現。使用quic作為乙個獨立的協議可以做到一些別的協議做不到的創新,因為它們受到傳統客戶端和中介軟體的阻礙。和tc...

QUIC簡單介紹

quic 即quick udp internet connection,類似於spdy 相同也是由google公司在現有已存協議之上進行了擴充套件設計,而旨在降低網路延遲。之前我曾介紹過spdy的相關資訊,spdy工作在應用層,而這裡的quic工作在傳輸層。儘管quic的名字暗示著它類似於乙個被改動...

QUIC簡單介紹

quic 即quick udp internet connection,類似於spdy 相同也是由google公司在現有已存協議之上進行了擴充套件設計,而旨在降低網路延遲。之前我曾介紹過spdy的相關資訊,spdy工作在應用層,而這裡的quic工作在傳輸層。儘管quic的名字暗示著它類似於乙個被改動...