数学建模社区-数学中国

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

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

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

4 F4 V- K2 i7 c- v! u" B' I: R

: V9 I& c- [; _8 {7 `

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

0 Y# j; r+ f$ y& a5 E3 G

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

4 A. o2 I, ~( g$ {

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

# |" T$ s4 x& W1 W N2 b- S# W' ?! t

是对其的有益补充

3 X8 a9 `) z# u u5 c/ w8 A" G; c- A

0 _* W2 ?5 |/ K) h" |

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

% F3 V. n- [* ^( s) w

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

: {, W* G6 G2 U) @

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

' X9 `( Y6 b" A" Z5 p- a0 H! x

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

. [$ o5 N5 v7 M9 B _

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

+ i o# P4 c: x6 J- D

% O( a- O, b7 h0 E. A0 j9 v

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

7 J3 L$ o; s) Z- Y& t

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

. [9 z' v t7 g' e

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

( V) v$ ^- L2 i

中途截留者更改

( g! j9 E/ N2 v5 o

4 }7 [1 X& ^3 E \. `

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

& ^3 k8 j, t$ M) y) [' b/ a

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

1 h. W' j9 M# Y0 X5 t3 b

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

( W$ W; @& O$ d% h/ T; J p

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

. p3 ]; [& ]! W; e3 P( j6 t7 K

7 v/ t, ?8 l1 s+ K |, ~

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

- k( M6 ]; A5 Q# j2 N

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

) e% a: d+ I. C) c# N, i. U3 L

在IAppServer::AS_GetRecords或者

0 e9 `+ ~& A) E. W

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

' [0 V& E* E+ h/ J# q4 T3 @* p) W7 S% |

}6 `/ f3 Q* t( y$ b+ a

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

% J" b+ c! b. D

IDataIntercept接口

0 {; Z h. A) {2 ^ M* |3 V

9 d- o- m: U- [

__interface IDataIntercept;

Q* Z8 @2 a6 ~

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

% ^0 i: L$ ?: }1 A! x! Q

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

8 T9 E% R; u8 H

tercept : public IUnknown

: J* A1 z, {8 K& n

{

9 i c1 `& V, S* r/ n$ L1 o

public:

7 }' [; ^5 [* W

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

% E: m' V2 v% q3 l: Z# e

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

6 D7 O8 N4 a' c, R6 Y( ~

};

3 e4 e |3 e: a+ ]! s, E% I

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

7 Y, q% D% y B

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

. ?' T' I0 L# b% O

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

2 j" k! z8 p: a; U

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

* A6 X9 U- m- v2 B% J; Q7 K

0 O5 T( `1 n4 h4 h8 [4 o4 z% P

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

, g, S/ k# ]3 O% H! p4 M" K

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

8 `) M' Y, s2 }5 s" Z

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

8 Z1 J, j8 l _

1 a h) F; Z# g. z

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

3 q! v/ k5 H( N8 a9 J( z

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

- d" g I5 \8 ]7 H) [& p

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

1 |* U8 ~+ q9 K* w3 [

3 F p1 _' S; R% G6 y

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

! c6 w& Z! Y, B/ V' y9 ]7 S8 |2 v- V! i/ @

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

+ ?9 @- P- C: J8 b* ?

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






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