卫星网络路径验证

starlink的实时卫星图截图

卫星轨道路线图

path 补充验证信息 对每一个path,计算它的信息,将其存在末端交换机中,交换机收到数据包后先用自身信息更新验证信息,再用路径补充验证信息更新验证信息;

端口补充验证信息,对于多端口接收同一个流的交换机迭代计算前缀路径的验证信息,当接收到信息后,先用自身信息更新包头, 再用端口信息计算包头。

质数: \( p,q,n=p\cdot q\),计算\(\phi(n)\) 计算: \(e,d\),使满足:\(e \cdot d \% \phi(n) = 1\)。

信息 \(m\), \(c = m^e \% n\)

\[ c^d \% n &= (m^{ed} \% n) \\ &=m^{ed} \% n\\ &=m^{k\cdot \phi(n) + 1} \% n \\ &=m\% n \]

基本过程:对于每一个网络流,控制器给交换机分配s,k,e

验证头部信息更新:

\begin{equation} \begin{aligned} (f_{s_i}, f_{k_i}) & \leftarrow (f_{s_{i-1}}, f_{k_{i-1}}) \vec{\odot} (s_i, k_i) \\ & = (f_{s_{i-1}} \cdot s_i^e \cdot r_i^{\lambda_s}, f_{s_{i-1}} \cdot f_{k_{i-1}} \cdot k_i^e \cdot r_i^{\lambda_s}) \end{aligned} \end{equation}

交换机更新验证头的信息案例:

\begin{equation} \begin{aligned} & f_{s_1} = s_{1}^e,&f_{s_2} = {(s_{1}s_{2})}^e, \ & f_{s_n} = {(\Pi_{i=1}^{n}s_i)}^e \\ & f_{k_1} = k_{1}^e,&f_{s_2} = {(s_{1}k_{1}k_{2})}^e, \ & f_{k_n} = {(\Pi_{i=1}^{n-1}s_i)}^e \cdot {(\Pi_{i=1}^{n}k_i)}^e \\ \end{aligned} \end{equation}

\(PortInfo_1: (s_1^e, k_1^e)\) \(PortInfo_n: \Pi (PortInfo_{n-1}) \vec{\odot} (s_1^e, k_1^e)\)

\(PathInfo = {(\Pi_{i=1}^{n-1}s_i)}^n \cdot {(\Pi_{i=1}^{n}k_i)}^n\)

控制器计算: \(f_k’ = {(\Pi_{i=1}^{n-1}s_i)} \cdot {(\Pi_{i=1}^{n}k_i)}\) 比较:\(f_k’ \overset{\large ?}{=} f_{k_n}^{d}\)

2个质数\(p,q,n=p\cdot q\),计算\(\lambda = lcm (p-1, q-1)\)

对于一个随机数 r, 满足: \(r^{\lambda} \% n = 1\)

证明: 因为 \(\lambda\) 是那个个数的最小公倍数,因此首先可将\(\lambda\)看作\(k \cdot (p-1)\).

\(r^{\lambda} \% p = r^{k \cdot (p-1)} \% p\)

由于p是一个质数,因此 \(r ^{\lambda} \% p = r ^{k \phi (p) \% p = 1}\) 同理,\(r^{\lambda} \% q = 1\)

因此\(r^{\lambda} - 1\)对\(q,p\)取余均为0。

由于\(p,q\)为两个互质的质数,因此\(r^{\lambda} - 1\) 对\(p \cdot q\)取余为0,即:

\((r^{\lambda} - 1) \% n = 0\), 因此\(r^{\lambda} \% n = 1\)

可以生成r乘入每一跳中,这里需要做的是,将\(\lambda\)拆成2部分,一部分放在交换机中用于给r,另一部分放在控制器中用于验证。两部分一乘得到完整的\(\lambda\)在r头上即可保证r被约去。

\(\lambda\), 这里还要将\(\lambda\)因式分解一下,记为:\(\lambda = \lambda_s \cdot \lambda_c\)

\(\lambda_s,\lambda_c\)分别在验证头部更新和控制器验证过程中使用。

\(s_1\) \(s_2\) \(s_n\)
\(s_1^e \cdot r_1^{\lambda_s}\) \(s_1^e \cdot r_1^{\lambda_s} \cdot s_2^e \cdot r_2^{\lambda_s}\) \(\Pi_{i=1}^{n}(s_i^e\cdot r_i^{\lambda_s})\)
\(k_1^e \cdot r_1^{\lambda_s}\) \(s_1^e \cdot r_1^{\lambda_s} \cdot k_1^e \cdot r_1^{\lambda_s} \cdot k_2^e \cdot r_2^{\lambda_s}\) \(\Pi_{i=1}^{n-1}\Pi_{j=1}^{i}(s_j^e\cdot r_j^{\lambda_s}) \cdot \Pi_{i=1}^{n}(k_i^e \cdot r_i^{\lambda_s})\)

\(f_s\),\(f_k\)

对于获得的 \(f_k\),控制器计算:\(f_k^{d\cdot \lambda_c}\), 结果为:\(\Pi_{i=1}^{n-1}\Pi_{j=1}^{i}(s_j^{\lambda_c}) \cdot \Pi_{i=1}^{n}(k_i^{\lambda_c})\)

过程证明:如下图

这个过程还不完善

质数 \(p\),它的一个本原元\(g\),随机数\(\alpha\),计算\(g_1 = g^\alpha \% p\).

\(C_1 = g^r \% p\) \(C_2 = g_1^r \cdot m\% p\)

\(m = C_1^{-\alpha} \cdot C_2 \% p = g^{-\alpha \cdot r} \cdot g_1^r \cdot m \% p\) 因为\(g_1 = g^{\alpha} \% p\),因此代入后可与前一项约掉,因此得证 注意:这里的\(- \alpha\)表示的是模反,而不是负数

交换机1:\(g^{r_1}\), \(g_1^{k_1+r_1}\) 交换机2:\(g^{r_1+r_2}\), \(g_1^{k_1+r_1+k_2+r_2}\)

这种方式,在验证时将左侧的结果做\(\alpha\)次方,再乘入右侧可得一个可控结果\(g_1^{\sum (k_i)}\) 当下的问题:还未实现不可交换性。 该方法的想法出发点:通过将\(k\)从乘转换为指数乘,实现最后结果可控,并在每一跳的结果都不相同。