卫星网络资料
- 模拟软件:https://celestrak.org/software/satellite/sat-trak.php
- 卫星数据(可搜starlink):https://celestrak.org/NORAD/elements/table.php?GROUP=active&FORMAT=tle
- 实时卫星图:https://starlink.sx/
- leolab的实时卫星图:https://platform.leolabs.space/visualization
例子图片
starlink的实时卫星图截图

卫星轨道路线图
talk about different scenario: density
路径验证思路
grid网络链路少
path 补充验证信息 对每一个path,计算它的信息,将其存在末端交换机中,交换机收到数据包后先用自身信息更新验证信息,再用路径补充验证信息更新验证信息;
grid网张链路多
端口补充验证信息,对于多端口接收同一个流的交换机迭代计算前缀路径的验证信息,当接收到信息后,先用自身信息更新包头, 再用端口信息计算包头。
过程(RSA)
准备
参数
质数: \( 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})\)
过程证明:如下图
过程(Elgma)
这个过程还不完善
准备
参数
质数 \(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\)从乘转换为指数乘,实现最后结果可控,并在每一跳的结果都不相同。