|
socket连接多层程序安全性简述 - 数据
: |8 ?0 T q( j; e6 S
& ^" A( i# N6 m剩下三种数据包/数据包完整性/数据包保密性 * R% L* p _, a& A* R4 z
其实只是一种安全机制的不同级别实现而已
+ w8 q& Y, N0 {9 L) s% r1 N+ q9 a数据包对发送者的身份加密,完整性和保密性 6 j1 e7 x. m4 V3 z/ f: [+ v, G
是对其的有益补充
1 I. q# [ u4 Y: y % Y6 i) y/ p) h4 m8 @ w6 q
实际上数据包模式对发送者身份加密实现方法任意
5 w ^8 ^* n; c& C比如可以用Windows提供的那套加密库 ' l" \$ j/ Y% @
呵呵,反正只要你在服务器端对其进行检验
, G; G1 X+ Q8 T; \& e' H传送中途数据包被截留不会泄露发送人身份或 + F8 C9 F% |9 ^$ ?- \* C
可以证明发送人身份的数据即可
8 _$ h+ g5 j$ g9 {% f8 n
- N# B$ R) k1 D: e( h( {) s7 P而完整性可以通过各种算法保证,比如crc,md5都是 0 l! o, ]$ W9 ]# i9 i
可行的,甚至简单一点按位and/or也不失一种办法 2 R! H1 K0 s9 k" @
只是比较简陋罢了,呵呵,总之要保证数据不会被 : A/ @1 R9 W7 n0 h% @0 k
中途截留者更改
- }! b5 M+ i6 ?/ {# N ] 7 K, b% G/ ^. Z; e4 [: `# j
至于保密性,找一种对称加密算法对全部数据进行
- m# ?& V5 L5 d# t5 \7 l; q加密,然后将密匙用另外的非对称算法再次加密即可
2 f/ D9 ]/ ?7 |具体这方面的安全考虑问题可以看看《应用密码学》 2 u% b# p' d" c$ }
一书,非常不错的这方面的权威书籍
, x- F$ J& y- f! u' b ' Y* n$ c) F. H& C9 e8 l
这里需要提及的是这三种模式的实现, ( b: B0 ^! \; Z" q2 T9 h8 F+ c6 Y
简单一点的可以类似上一个呼叫模式中
( ?& p+ ~; l6 R# N6 z5 N5 V! P. r, @在IAppServer::AS_GetRecords或者 9 X, n4 H: F8 x
其他类似的事件里面实现,参见上篇文章 5 k" d( j! Z$ o( y( t& e, n/ a' w
/ Z4 N0 |7 k. G6 x- v6 f5 O+ ?4 A! @* M不过很幸运的是borland提供了一种更加简单可行的方案
5 O( x2 O7 Q- mIDataIntercept接口 0 P+ C$ P9 M- f4 q
8 D) j4 a" L: S' e1 R
__interface IDataIntercept; 5 M5 o$ M1 z9 f0 L0 L& ?
typedef System: elphiInterface<IDataIntercept> _di_IDataIntercept; * b \& w* S8 j
__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn
! d0 T4 ?* o V R1 t& m8 Ztercept : public IUnknown " }! ?- u& [5 ]0 J7 }
{
3 y# r2 b9 t$ x# Cpublic:
+ o1 L. Q2 G1 u& f5 { virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ; ; I4 d p1 J8 s* ~# b$ `# z
virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;
' f) ^; \- q8 |" [% ?( l}; * O3 b) q# R% \2 D4 }( T3 N$ d
他在TSocketConnection类传送数据时会自动被使用 2 n( Z. p( O5 N( G% \
呵呵,用它实现数据完整性和保密性都是非常合适的选择 ' V/ l, Q) Y2 p m; m1 G+ R
外加还可以对数据进行压缩,呵呵
# r- M$ d4 O3 e" |6 l! L1 `具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子
) F' o; V6 \8 B
: z* L6 i/ n) c& N' |9 Y, v& E, [MS对这几种安全机制的分类是高级别兼容低级别 9 }: T5 _$ ^- G- B( v
实际上在我们自己使用的时候完全可以根据我们的需要 ! u/ X* | g8 ~$ T& `3 N/ u
自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案
T# V$ ~6 _# d$ |* E u' x ; ], z* o1 g% {/ N$ i0 O! x" p
btw:本来想随便写写,发现好像很多问题都几句话说不清 , H* p, E; L. j: F
等到下个月有时间偶把这些东东好好总结一下写篇 " T, P# i% M& S% A4 O: J9 z
象样一点的文章出来,呵呵
$ h* o" P% e( Q1 t J
: _. k3 q' Q, i Z 其实这些安全模式的实现方式还有很多,偶只是挑出 " ~ ~5 |2 E+ f% ]* ~- U! g
偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵
. r3 E3 g" _8 V1 y7 r4 H V3 K _ 希望能够对大家有帮助,也希望大家积极讨论,批评指正 |