QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2061|回复: 0
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 01:11 |只看该作者 |正序浏览
|招呼Ta 关注Ta

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

: X b( |* E$ [/ n# l8 A: p Z

6 ?2 e: ]3 V' [

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

6 q3 K$ L1 H3 b7 `% h0 H* J. l

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

- S$ B# f. l7 m; Y, J4 p g; O

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

) ~/ R, s3 q2 |$ C

是对其的有益补充

* d; h2 d" Y2 S

3 Q- L# P$ p7 j: t6 m5 z0 {

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

$ Y& B7 P, y1 C2 e

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

. o7 \1 u+ m; p* s: l0 K

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

% i2 |" A: ?$ @$ B: ]

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

! J( L. D& z$ a: V% Z( d5 u

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

6 y& A1 l6 s) d' v/ q) A. S

]& Y) [+ S1 G/ n

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

~0 s8 _: Y$ }8 q

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

! ^4 e$ Z8 g9 L# w* ]8 s/ w

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

9 H9 i1 R% C+ @: e a% Y7 ]. U/ n4 f

中途截留者更改

9 [( Z2 X+ U9 x9 h: A

2 c- _# e6 R9 U

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

% J) j# v9 E( D% x. E

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

) [8 x% C5 j% p' K" m0 e# Y X8 W

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

6 m0 q6 Y2 n/ p( n3 f5 d

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

% }, e6 |& k, G2 M. Y

4 w& W$ B2 a& J$ F- y3 D Y5 T

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

0 l& A5 c1 P) H# ~! x

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

9 [+ Q. ~# Q4 p: n

在IAppServer::AS_GetRecords或者

/ B6 T2 v, X' `

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

; M: c2 m, x) Y1 \0 c

; ~9 B. ~+ E; Y+ ?8 k( b. L2 V X

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

, W+ ~+ k K" H8 \

IDataIntercept接口

/ r: z* J6 ^, G& ]1 N8 r

: a' V( F; }' K2 {. E9 f0 q

__interface IDataIntercept;

* R& X( U& ]& D! p

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

7 v6 w+ _8 e- e

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

* x) d, a7 M* j

tercept : public IUnknown

+ }+ b* G2 o4 O; R" Y& [

{

; T- H1 C, Q# V b; [

public:

( l: j2 u, b3 Y4 |6 a

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

5 K( X' k& j& I' W- W6 _' k5 n

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

( ?! `" O1 ^# \2 i6 H3 b

};

" |+ p( i( k1 |- s

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

& O P! `$ C: j9 l4 u, o% m2 C

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

7 c' w+ I0 @; f7 v4 x+ E

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

3 D( r+ E; T. e3 `

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

1 N) N8 {. W- W9 k2 X# z

& Q6 e. q+ s5 n+ U

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

- ^: w% k# V& ?! `0 z/ X; n# ]

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

' R3 R. E$ I& Q* b3 b+ R

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

7 b: g. M2 ], O% i

, k* I2 Z9 O( M/ M1 D& l6 X# h7 {+ S% V

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

N0 a% @; g* y6 @% M9 N7 v

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

9 U- I, @4 N8 t

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

6 R1 o3 ~" _+ e: u

. |2 D5 I" o& D) O( C8 Y! y

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

6 R$ g/ P3 ]% C* ]% Y, b

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

8 N5 I& H* }& M; {8 z6 {

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

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-18 14:13 , Processed in 0.397343 second(s), 52 queries .

回顶部