数学建模社区-数学中国

标题: socket连接多层程序安全性简述 - 数据 [打印本页]

作者: 韩冰    时间: 2005-1-26 01:11
标题: socket连接多层程序安全性简述 - 数据

socket连接多层程序安全性简述 - 数据

. i0 w0 l. ]0 z) |1 R/ H- f

# T8 V9 j/ x& g A

剩下三种数据包/数据包完整性/数据包保密性

' U" [/ i7 N8 r! n

其实只是一种安全机制的不同级别实现而已

& g* Z" z7 D) A; r+ Y7 G

数据包对发送者的身份加密,完整性和保密性

8 i& n6 |9 Y2 n7 \2 [

是对其的有益补充

' n! B) E3 u2 h8 D" A+ ^+ s/ i

$ D. ^$ W$ I4 H# x7 C" g+ P

实际上数据包模式对发送者身份加密实现方法任意

% O9 J* x* l! m+ U- C' f

比如可以用Windows提供的那套加密库

0 F2 M3 |- J4 ~. H) e1 s

呵呵,反正只要你在服务器端对其进行检验

4 h a( C6 u% g- f3 r+ h) z* _

传送中途数据包被截留不会泄露发送人身份或

8 J+ w2 C" r$ S6 t1 ]9 I

可以证明发送人身份的数据即可

4 a: D" l3 G0 Y' n5 }0 u/ g: |

- X" ^& `: a* L( Z

而完整性可以通过各种算法保证,比如crc,md5都是

2 ?4 b- H {& R4 d- K' R+ T. }. A

可行的,甚至简单一点按位and/or也不失一种办法

0 c4 P- v2 q2 a: m2 u& [# l! s

只是比较简陋罢了,呵呵,总之要保证数据不会被

. q/ ]9 l9 d* o4 o6 T" N, X

中途截留者更改

4 e) m1 S: k. i* f* j( {+ Q

" u: D% _% k1 j" p: F/ ^3 [

至于保密性,找一种对称加密算法对全部数据进行

h8 |% A( X# Y* f' y/ d8 Z

加密,然后将密匙用另外的非对称算法再次加密即可

7 U( } j/ C7 }" C! h5 R

具体这方面的安全考虑问题可以看看《应用密码学》

2 Z3 t Q% y5 u' }* G$ Q

一书,非常不错的这方面的权威书籍

5 I9 G- g* a% ]( q9 |) R: b- ^

% r. e- O# p4 D6 t7 ~5 ]( o

这里需要提及的是这三种模式的实现,

: i: ~" Y& T3 H

简单一点的可以类似上一个呼叫模式中

) |4 j' f4 v0 R3 ^

在IAppServer::AS_GetRecords或者

% ]6 v: f( s, p, w

其他类似的事件里面实现,参见上篇文章

: L( c+ P' \/ D, U: K

: j1 B; A! C5 P+ N5 j) }3 P3 [

不过很幸运的是borland提供了一种更加简单可行的方案

& O' ~) Z) z, A: g

IDataIntercept接口

- S+ f1 H0 z3 ~# X4 a2 x" L: ]

, W: \" X8 ^2 v3 r, E: g' w

__interface IDataIntercept;

0 S3 ?2 s; U' r0 c/ v% m2 T# i/ g

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

2 b' y0 N" _ Q# }$ M6 L! C1 Z0 `" ]

__interface INTERFACE_UUID("{B249776B-E429-11D1-AAA4-00C04FA35CFA}") IDataIn

0 @3 }( y- |; L0 x5 r& K! f1 v

tercept : public IUnknown

" x* r+ h, B( `/ ] E

{

$ Q6 C0 ?" J8 t

public:

$ L* \8 _! D; G4 {9 d

virtual void __stdcall DataIn(const _di_IDataBlock Data) = 0 ;

# h% @+ r0 {7 }. U

virtual void __stdcall DataOut(const _di_IDataBlock Data) = 0 ;

$ P: j7 t' d+ U6 D

};

- O/ l z: w' |

他在TSocketConnection类传送数据时会自动被使用

: ~. k# F! H3 m! Y* S8 _; v* \8 y

呵呵,用它实现数据完整性和保密性都是非常合适的选择

4 n d+ q; m/ v

外加还可以对数据进行压缩,呵呵

! g& s+ G7 Z* h! Q0 ^$ ]

具体使用可以看看Delphi5\Demos\Midas\Intrcpt\目录的例子

4 s# x2 F; d& p' i9 Y& J2 o

6 `8 j/ ~/ k: z

MS对这几种安全机制的分类是高级别兼容低级别

0 g8 ~$ X9 A0 ~6 M, \

实际上在我们自己使用的时候完全可以根据我们的需要

& |2 y: V7 \4 F, o/ K. B- C

自己灵活混合几种机制进行处理,选择最适合自己项目的解决方案

9 X' M, I" o- ?( y

/ I+ _ O9 i* m1 ^! T( L

btw:本来想随便写写,发现好像很多问题都几句话说不清

2 B- F1 `" d" d7 ]2 O0 }1 z6 W

等到下个月有时间偶把这些东东好好总结一下写篇

2 M9 F& c) o! } D- e, j1 `

象样一点的文章出来,呵呵

8 _# ]: `0 b/ G! Y' T& ~# V

% }1 X, R2 C ?! C0 p

其实这些安全模式的实现方式还有很多,偶只是挑出

5 |9 H! ?+ G7 e7 p# z' b1 _

偶比较熟悉的比较容易说清楚的介绍,简介嘛,呵呵

' Q! t. Y8 d8 t Z

希望能够对大家有帮助,也希望大家积极讨论,批评指正






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5