QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

$ A8 U5 C) t w2 ~& r* L

8 h3 s& Q! T! S+ z2 j: S" M' N

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

/ T/ J6 ?4 _+ S4 m5 [+ }

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

; ~/ d7 Q9 c# q. ^9 Q( g

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

I2 r, N! F& S; C s* d% m

是对其的有益补充

9 x- s4 @1 N" X- m% `

8 h8 u' z1 F5 p$ f% j4 c1 N! B4 m

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

e. g; ~; |/ Z u3 A I

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

/ j3 A# x; o, v8 v l

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

! h: Z2 Z0 Y6 E7 L) h

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

7 I5 Q$ S/ _% k8 V

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

. _$ x; e% o; W" }

$ `; J& c$ e* A* {2 v

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

& a# `) a7 C, O$ {

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

' G! }! v9 O4 K- g

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

% Q5 c |2 t+ u& }

中途截留者更改

5 |( M4 @6 s2 ~9 p

( f/ F- l( A! F3 {* F. a

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

3 f+ I5 D8 W% B' t/ m# Q6 C

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

" v! O! X- U _8 k& Z3 b

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

3 P4 V @% m3 R0 g, s

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

. D0 |6 C: p, Z% |) s4 h

" Z- Z& B" B1 U3 n+ \) ?

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

4 N) m3 o- d2 Y' B2 s7 l

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

6 S) Q6 i0 b! i# g/ w3 `

在IAppServer::AS_GetRecords或者

2 M; s! ?$ j! N3 _/ [, l

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

+ o: e3 O% p; K6 t6 V

3 ^* u1 T: T# f& l( q* H

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

& W: X6 ~6 O8 g2 }) P a, u7 d

IDataIntercept接口

! w0 W8 J+ C7 h, Z& e

4 k0 }- e' A( E g% z

__interface IDataIntercept;

1 X( A h! Q! D7 Y/ b' N

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

( V2 e9 k/ h$ f; R, o0 F- e& s

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

! e7 s- K% B+ i& n# H; a4 J1 h

tercept : public IUnknown

4 V' d: K1 J0 P5 e7 b7 j& V' k7 @

{

5 p$ x8 J I9 y: T3 g

public:

9 V3 Q- K! b$ g+ H

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

4 e6 F7 v2 a7 ] J

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

- e- C* i% C1 @5 z7 I3 G: z( {) D

};

" n* J! y4 \+ j# k7 Q& d

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

) `4 K7 M% y+ g% r8 l/ |

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

2 w1 ^* b$ a( @

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

w3 R2 n. E! Y9 ?$ ?

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

& e, v! I0 _, V9 B

4 b# l. v. C. V3 X/ Y: x; B/ l

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

$ K' w0 o; M" K6 i

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

7 N& m# i4 W y# d; u% o- `

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

4 o8 @* s) d- P: c; | m; _

' }6 A) B' {" i) {4 }; c

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

" {" i: H2 Z0 i4 H6 ^+ Q3 w5 C! ]

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

& h% c& z! V' v/ d* M

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

' y5 @( y5 I# `$ V! S

8 G9 R W, p- m

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

! a" J8 D( Q3 L5 }* X

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

3 u6 r' C: l y: S6 Q$ S$ `+ s3 d; \

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

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-8-12 02:09 , Processed in 0.379646 second(s), 51 queries .

回顶部