以 AES 算法为例,其加密过程可以用以下数学模子表现:
设明文为 P P P,密钥为 K K K,密文为 C C C,加密函数为 E E E,则加密过程可以表现为:
C = E ( P , K ) C = E(P, K) C=E(P,K)
解密过程可以表现为:
P = D ( C , K ) P = D(C, K) P=D(C,K)
此中 D D D 为解密函数,且满足 D ( E ( P , K ) , K ) = P D(E(P, K), K) = P D(E(P,K),K)=P。
4.1.2 非对称加密算法的数学模子
以 RSA 算法为例,其加密过程可以用以下数学模子表现:
设明文为 m m m,公钥为 ( n , e ) (n, e) (n,e),密文为 c c c,则加密过程可以表现为:
c = m e m o d n c = m^e \mod n c=memodn
解密过程可以用以下数学模子表现:
m = c d m o d n m = c^d \mod n m=cdmodn
此中 d d d 为私钥指数,且满足 e ⋅ d ≡ 1 ( m o d φ ( n ) ) e \cdot d \equiv 1 \pmod{\varphi(n)} e⋅d≡1(modφ(n)), φ ( n ) = ( p − 1 ) ⋅ ( q − 1 ) \varphi(n) = (p - 1) \cdot (q - 1) φ(n)=(p−1)⋅(q−1), p p p 和 q q q 为两个大素数。
4.2 访问控制算法的数学模子
4.2.1 基于脚色的访问控制(RBAC)的数学模子
设用户集合为 U U U,脚色集合为 R R R,权限集合为 P P P,用户 - 脚色分配关系为 U A ⊆ U × R UA \subseteq U \times R UA⊆U×R,脚色 - 权限分配关系为 P A ⊆ R × P PA \subseteq R \times P PA⊆R×P,则用户 u ∈ U u \in U u∈U 对权限 p ∈ P p \in P p∈P 的访问权限可以表现为:
∃ r ∈ R , ( u , r ) ∈ U A ∧ ( r , p ) ∈ P A \exists r \in R, (u, r) \in UA \land (r, p) \in PA ∃r∈R,(u,r)∈UA∧(r,p)∈PA
4.2.2 基于属性的访问控制(ABAC)的数学模子
设主体属性集合为 S S S,客体属性集合为 O O O,情况属性集合为 E E E,规则集合为 R R R,规则 r ∈ R r \in R r∈R 可以表现为一个三元组 ( s , o , e ) (s, o, e) (s,o,e),此中 s ⊆ S s \subseteq S s⊆S, o ⊆ O o \subseteq O o⊆O, e ⊆ E e \subseteq E e⊆E,则用户对资源的访问权限可以表现为:
∃ r ∈ R , s ⊆ S u s e r ∧ o ⊆ O r e s o u r c e ∧ e ⊆ E e n v \exists r \in R, s \subseteq S_{user} \land o \subseteq O_{resource} \land e \subseteq E_{env} ∃r∈R,s⊆Suser∧o⊆Oresource∧e⊆Eenv
此中 S u s e r S_{user} Suser 为用户的主体属性集合, O r e s o u r c e O_{resource} Oresource 为资源的客体属性集合, E e n v E_{env} Eenv 为情况的属性集合。
4.3 安全审计算法的数学模子
4.3.1 日记审计的数学模子
设日记集合为 L L L,审计规则集合为 R R R,审计规则 r ∈ R r \in R r∈R 可以表现为一个谓词函数 f r : L → { T r u e , F a l s e } f_r: L \to \{True, False\} fr→{True,False},则日记审计的结果可以表现为:
∃ l ∈ L , f r ( l ) = T r u e \exists l \in L, f_r(l) = True ∃l∈L,fr(l)=True
4.3.2 行为审计的数学模子
设行为数据集合为 B B B,异常行为规则集合为 R R R,异常行为规则 r ∈ R r \in R r∈R 可以表现为一个谓词函数 g r : B → { T r u e , F a l s e } g_r: B \to \{True, False\} gr:B→{True,False},则行为审计的结果可以表现为:
∃ b ∈ B , g r ( b ) = T r u e \exists b \in B, g_r(b) = True ∃b∈B,gr(b)=True
4.4 举例说明
4.4.1 加密算法的举例说明
假设我们使用 RSA 算法进行加密,选择两个大素数 p = 11 p = 11 p=11 和 q = 13 q = 13 q=13,则 n = p ⋅ q = 143 n = p \cdot q = 143 n=p⋅q=143, φ ( n ) = ( p − 1 ) ⋅ ( q − 1 ) = 120 \varphi(n) = (p - 1) \cdot (q - 1) = 120 φ(n)=(p−1)⋅(q−1)=120。选择公钥指数 e = 7 e = 7 e=7,则私钥指数 d d d 满足 e ⋅ d ≡ 1 ( m o d φ ( n ) ) e \cdot d \equiv 1 \pmod{\varphi(n)} e⋅d≡1(modφ(n)),通过扩展欧几里得算法可以计算出 d = 103 d = 103 d=103。
设明文 m = 10 m = 10 m=10,则加密后的密文 c = m e m o d n = 1 0 7 m o d 143 = 48 c = m^e \mod n = 10^7 \mod 143 = 48 c=memodn=107mod143=48。
解密时, m = c d m o d n = 4 8 103 m o d 143 = 10 m = c^d \mod n = 48^{103} \mod 143 = 10 m=cdmodn=48103mod143=10,乐成恢复出明文。
4.4.2 访问控制算法的举例说明
假设我们使用 RBAC 模子,用户集合 U = { u 1 , u 2 } U = \{u_1, u_2\} U={u1,u2},脚色集合 R = { r 1 , r 2 } R = \{r_1, r_2\} R={r1,r2},权限集合 P = { p 1 , p 2 } P = \{p_1, p_2\} P={p1,p2},用户 - 脚色分配关系 U A = { ( u 1 , r 1 ) , ( u 2 , r 2 ) } UA = \{(u_1, r_1), (u_2, r_2)\} UA={(u1,r1),(u2,r2)},脚色 - 权限分配关系 P A = { ( r 1 , p 1 ) , ( r 2 , p 2 ) } PA = \{(r_1, p_1), (r_2, p_2)\} PA={(r1,p1),(r2,p2)}。
则用户 u 1 u_1 u1 对权限 p 1 p_1 p1 的访问权限为 T r u e True True,因为存在脚色 r 1 r_1 r1,使得 ( u 1 , r 1 ) ∈ U A (u_1, r_1) \in UA (u1,r1)∈UA 且 ( r 1 , p 1 ) ∈ P A (r_1, p_1) \in PA (r1,p1)∈PA;用户 u 1 u_1 u1 对权限 p 2 p_2 p2 的访问权限为 F a l s e False False,因为不存在脚色 r r r,使得 ( u 1 , r ) ∈ U A (u_1, r) \in UA (u1,r)∈UA 且 ( r , p 2 ) ∈ P A (r, p_2) \in PA (r,p2)∈PA。
4.4.3 安全审计算法的举例说明
假设我们使用日记审计,日记集合 L = { l 1 , l 2 , l 3 } L = \{l_1, l_2, l_3\} L={l1,l2,l3},审计规则集合 R = { r 1 } R = \{r_1\} R={r1},审计规则 r 1 r_1 r1 为检查日记中是否包罗 “ERROR” 关键字。
设 l 1 = " I N F O : S y s t e m s t a r t e d " l_1 = "INFO: System started" l1="INFO:Systemstarted", l 2 = " E R R O R : D a t a b a s e c o n n e c t i o n f a i l e d " l_2 = "ERROR: Database connection failed" l2="ERRORatabaseconnectionfailed", l 3 = " I N F O : U s e r l o g g e d i n " l_3 = "INFO: User logged in" l3="INFO:Userloggedin",则审计规则 r 1 r_1 r1 对日记 l 2 l_2 l2 的审计结果为 T r u e True True,因为 l 2 l_2 l2 中包罗 “ERROR” 关键字;对日记 l 1 l_1 l1 和 l 3 l_3 l3 的审计结果为 F a l s e False False。
5. 项目实战:代码实际案例和详细表明说明