|
socket连接多层程序安全性简述 - 数据 # B1 L& K3 z$ e$ i/ z7 [4 m
& w/ R% O1 K1 X) X& q6 O k7 {
剩下三种数据包/数据包完整性/数据包保密性
! K8 o- @' o" u. I其实只是一种安全机制的不同级别实现而已
* k: |& J( Q* P) M7 f$ r$ V6 S: V数据包对发送者的身份加密,完整性和保密性 ( s% q9 v8 K2 B/ a; h0 a$ H1 `
是对其的有益补充
6 Z* g& u, N, x7 C : l' J$ h2 i7 n6 ?2 @$ i: c
实际上数据包模式对发送者身份加密实现方法任意
& t8 p- l1 p% I0 F0 w比如可以用Windows提供的那套加密库 7 A, E. l* r9 j% h
呵呵,反正只要你在服务器端对其进行检验 , _% G! T1 \# X; T# r1 V7 z
传送中途数据包被截留不会泄露发送人身份或 D$ `" E: g% m5 K3 p
可以证明发送人身份的数据即可
7 l* m# Y# l: ~7 c* E: c Y
0 d1 `- Y- F; L! I2 f' I而完整性可以通过各种算法保证,比如crc,md5都是
! B% C' [ M \$ R可行的,甚至简单一点按位and/or也不失一种办法 5 K& L L6 o8 A& ]# q: k& }
只是比较简陋罢了,呵呵,总之要保证数据不会被
" x$ N# B9 w7 d6 H中途截留者更改
8 Z0 W2 a& y+ r7 p! h* J 7 \' p9 L/ l4 X) k* B) R( P
至于保密性,找一种对称加密算法对全部数据进行
4 v/ k6 x/ E0 X! k$ a- V, g" O( f加密,然后将密匙用另外的非对称算法再次加密即可 ( T! J, K) r0 \1 k4 I
具体这方面的安全考虑问题可以看看《应用密码学》
% a" a8 Y/ u+ E, O9 l6 Z, v一书,非常不错的这方面的权威书籍 $ ]+ V3 x' }( V j: M2 k8 x2 Q( k
7 u9 {+ ?! G; i- s# K这里需要提及的是这三种模式的实现, - v$ g9 t. u/ q% B- Z
简单一点的可以类似上一个呼叫模式中
9 J9 [( a, s; J, C9 K在IAppServer::AS_GetRecords或者 ; Y O( F! m$ t" B
其他类似的事件里面实现,参见上篇文章
2 p2 s* e6 l* h4 L# @ |
, X# x! c) J1 a* b不过很幸运的是borland提供了一种更加简单可行的方案 0 X2 n5 |+ h+ i1 J% R2 q
IDataIntercept接口 6 s5 u4 k5 N. o6 H# p6 }2 l
3 P. m: z# ^# G- B" C4 k4 v# Y
__interface IDataIntercept; 8 c, i# k/ y+ P' P- l) _2 [
typedef System: elphiInterface<IDataIntercept> _di_IDataIntercept; 0 F5 z; ~: s0 o
__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn
9 R8 h! x" G* ] n$ m/ t2 Qtercept : public IUnknown
- F1 [0 p1 C/ `8 B+ Y{ 7 P: O' p, o' x4 @- T
public: % Y/ Y+ J2 S0 g; H0 a1 @& X/ r+ f
virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; ; ~; E2 v& M1 k& v$ K6 h! R: T7 c
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ; 3 n0 q+ l( n2 l& W1 r
}; 7 }: s& @" |7 Q3 d, Y. @4 A
他在TSocketConnection类传送数据时会自动被使用
% ~3 ^/ \# E) \) M呵呵,用它实现数据完整性和保密性都是非常合适的选择
) n3 ?. ?! ^; r" m3 r9 X: c外加还可以对数据进行压缩,呵呵
1 I4 j( T6 A- s/ B: G0 l6 U( e, d具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
g! {( U# }2 b9 R4 L
" R8 Y9 C0 s( B7 E' w& OMS对这几种安全机制的分类是高级别兼容低级别 ) \5 ], W' [0 n& G! ]; }
实际上在我们自己使用的时候完全可以根据我们的需要
" O. ?6 j. c% b) o; t* W# }0 r( X D" S自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案
5 g3 i+ ^9 u' M$ p, {& X; |( ^
9 u& m, G/ r( K% y; D9 w7 abtw:本来想随便写写,发现好像很多问题都几句话说不清 ' F* z1 ]7 K6 V3 p' @6 v
等到下个月有时间偶把这些东东好好总结一下写篇 ; E# W4 f& ^9 R( x/ {/ ` ^3 Z- T
象样一点的文章出来,呵呵
3 V. e. K$ R/ t ( J0 O" V+ @2 x! `3 t
其实这些安全模式的实现方式还有很多,偶只是挑出 7 o8 e8 d! R) Y
偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
1 W6 r' r8 x+ i 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |