QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

0 E5 V1 o4 q/ N( k

( B% H# m2 W7 {% q8 i

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

; ~9 @% f- s% x& i% T1 k% w8 `5 h v

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

$ |* [7 H) j/ ~, A

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

+ q0 C+ i7 H& n, R' H m

是对其的有益补充

) t! C$ A1 l4 M8 ~; u0 k z6 q% D

1 P! W4 z i; e3 N4 ~

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

$ K: m4 c. ]4 Q; U! t* _

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

' r( Y* O; \. H4 O

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

& X; Y$ {+ G/ Q/ b* t& a) i

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

- }& j4 z" i9 {7 w1 R6 L

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

0 m* }* T7 w* x1 S

# v; B, `$ Z# {. S4 H- _

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

* f1 V( B/ v4 W3 R2 e& |

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

% X9 ^+ a. r/ }0 U7 B& q7 }# w

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

9 T2 p/ X4 C# Q9 L

中途截留者更改

% x, n# C5 U7 X7 J" Y8 s

! ?3 |: y9 B* B5 g. ~

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

" \& p0 T0 \( f& N3 E6 a

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

. P3 E5 H! J6 l) ^! ^

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

: @* p0 O* j% D. t* t* p j9 i

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

5 r H0 f/ G! [$ `9 k, U- F( F

9 }9 M* L9 x1 S" g. Z v

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

$ e% u# l" J8 K

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

1 z% ^" H+ b/ R, w

在IAppServer::AS_GetRecords或者

& |- n Z$ ]# I7 g

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

3 K+ S) p% x4 g0 k

& r2 V% q4 A+ x: H! g5 U( V% ~0 l

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

' N0 a+ C$ W4 A1 i

IDataIntercept接口

: g% B. x5 f# C. d7 w+ B

x2 O! t/ `+ r1 L

__interface IDataIntercept;

, R+ u: w$ h0 j: Y% K" p" o

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

8 P- a. B# c( D5 ]. R1 ~) a

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

8 u/ R' Y" R! T) S& i# ?( f

tercept : public IUnknown

8 @* V9 T& x$ e5 G, g/ R5 `

{

8 {$ c6 x: d- k- T; ^0 P1 A

public:

3 ^, v$ ]& C* i" o' g: o

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

* w7 @$ o4 I1 n5 j1 M* ]

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

0 {4 G0 l0 ^* G: [$ b" M8 T

};

+ K! n% B/ g; ]+ w, S( z0 z

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

. m9 |# Z) M% J2 J' v

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

+ w2 L" x7 j9 W

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

5 f0 p. U) F( d' Y

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

- J0 P! I2 f5 T g4 t) V

; j: a' I8 G- _7 g9 F0 _4 [+ w0 b

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

1 X/ y! |8 h) e3 u' m

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

/ P. L( h' z( c0 m! I. e

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

5 f6 @" L9 B) \' B5 [' q

$ V& m+ x' X; w9 [& A

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

* ], E4 R7 t6 a4 _

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

7 M/ u9 W" q) G3 s1 W% F/ j6 `: P( G

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

g; f5 h3 Y$ e+ Z

9 g. d1 c( B" \ V1 c" g

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

, `: z% w& F! S3 Q5 s+ x

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

8 T/ B, `7 i X5 q( v' s6 C) H

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

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-6-11 17:56 , Processed in 0.347460 second(s), 51 queries .

回顶部