|
socket连接多层程序安全性简述 - 数据 # @3 g. Y4 ?! n8 |2 e; ~- b
% M2 C$ ]5 T- W剩下三种数据包/数据包完整性/数据包保密性 5 l2 x$ Y9 Y1 r: A! M
其实只是一种安全机制的不同级别实现而已
$ v) @. f. }# R数据包对发送者的身份加密,完整性和保密性
; A2 E# b+ W0 M1 ^% ~+ j是对其的有益补充 : ]) F1 Z, y6 R2 C5 K. A4 a
5 z/ S0 b% V4 u5 ?! R, C# j( t4 F
实际上数据包模式对发送者身份加密实现方法任意 ) S H- ]1 @' n- y- c8 [2 R
比如可以用Windows提供的那套加密库 9 a0 o/ S% L5 _: i9 X
呵呵,反正只要你在服务器端对其进行检验 , l X2 Q$ ? j5 ]
传送中途数据包被截留不会泄露发送人身份或 b: p7 Q! R+ Y; I; ^) W
可以证明发送人身份的数据即可 $ m3 o0 ?/ i7 l# ?
5 }5 i5 Z- J0 V1 P' I6 f
而完整性可以通过各种算法保证,比如crc,md5都是 2 e$ p1 T; q `( Y" O/ Q
可行的,甚至简单一点按位and/or也不失一种办法
9 @/ [, g$ M2 s( W% Y* S只是比较简陋罢了,呵呵,总之要保证数据不会被 " d" `. t$ z1 ^# H" X1 V* S5 E
中途截留者更改
' K. R5 s7 A3 e' x3 w3 A 5 c8 M+ l. P4 ?
至于保密性,找一种对称加密算法对全部数据进行
3 n; v5 |9 V2 l: }$ p加密,然后将密匙用另外的非对称算法再次加密即可 * K! V/ j- Q8 d! S7 }
具体这方面的安全考虑问题可以看看《应用密码学》
5 X% n+ ?+ p- b. T一书,非常不错的这方面的权威书籍
! Y' D& i$ P3 ]6 @) h
( n2 Z8 R' E+ u% ~这里需要提及的是这三种模式的实现,
3 c! W2 j8 K% g7 u简单一点的可以类似上一个呼叫模式中 % j- `7 S: e& n. H
在IAppServer::AS_GetRecords或者
+ c/ X7 z8 H0 i! C( t" G, Q B3 \- {其他类似的事件里面实现,参见上篇文章 9 f3 k4 F6 v7 K; m2 r7 J# W' H
: ~# u/ _. Q! {0 ?) j: V8 H: r
不过很幸运的是borland提供了一种更加简单可行的方案 4 L( x: D, W) L6 T, O
IDataIntercept接口
/ e+ U3 v& T; S# R
0 u$ ~* {% O- f6 V- e1 V. \% X2 |/ ___interface IDataIntercept;
5 \- H8 ]1 s% T+ |7 x8 S7 R9 ytypedef System: elphiInterface<IDataIntercept> _di_IDataIntercept;
- y0 ^% }. d$ @" g. l" `! |9 g__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn
: g+ J; E; {% a3 r5 m% j( m: b! Itercept : public IUnknown 7 Y" v% A0 p: P, Y& I" B% O4 ~- D
{
" r! G/ O J! N+ Y O& }( L' a# Ppublic:
1 X) l k* s: } virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; 1 A0 j7 ~" R. P! c) U* d
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ; 4 V O+ x% p5 m/ `! B1 d
}; 5 H# _8 @& {, @5 [% H
他在TSocketConnection类传送数据时会自动被使用
5 G% B( Q; U( z& |. |. g呵呵,用它实现数据完整性和保密性都是非常合适的选择 4 j& @0 D; a5 l c% I6 y
外加还可以对数据进行压缩,呵呵
" M4 ^" Y. h3 W: J具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
U* {$ I4 x+ A5 K + R; s3 V1 }! j* O; F- y6 U- l, s
MS对这几种安全机制的分类是高级别兼容低级别 3 V- Q, ~8 b( p; U+ R0 P; c( ]
实际上在我们自己使用的时候完全可以根据我们的需要
: `6 m6 _% k! \自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案 . @! `: T* D" H" D" R
$ T' b, z5 I2 K# E* w; Z; Ybtw:本来想随便写写,发现好像很多问题都几句话说不清
0 g7 K0 N- |' ^; F 等到下个月有时间偶把这些东东好好总结一下写篇
2 j) M+ ~# j+ `2 v' o* _% | 象样一点的文章出来,呵呵 1 u, z+ U2 G8 v
p* G- g! x" c
其实这些安全模式的实现方式还有很多,偶只是挑出 # I% C" P& X& N2 L) ?% s
偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵 & r; X; g m, K8 p N) w0 e
希望能够对大家有帮助,也希望大家积极讨论,批评指正 |