QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

9 V- Y' F2 K7 s

3 \/ O6 U9 g# r$ n2 q

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

# L& r& W' o6 L3 d" E

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

9 S% H5 t) D3 z& x

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

, {! k5 O5 M& y8 e- w' t( Y% \/ i

是对其的有益补充

7 v. g# f: R0 Z& V4 \' E8 ]

4 n9 n8 M; s8 u% t& l7 o' Q3 i

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

H- z9 Q# v) t. Z! L# K

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

/ M6 a7 G% e5 V2 Y( u8 y/ d, p) h

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

6 _3 q/ m) U- f# W& R0 o3 \

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

% y1 Z8 a8 `( O

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

( P! Q" W- q) }- F* t) u

* G: v* B- Z% w! b, x. Z

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

0 U9 p5 M R2 o

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

- @! o6 H* B. \

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

( m) S% t7 Q- ]8 a+ ]

中途截留者更改

- Q, m5 A9 H' X. z: a/ @7 [' y

; \- O/ a2 ?. |4 B, @

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

( s- ~0 m& P3 I. @

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

. o: `7 `3 q! ~/ R/ D

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

! L$ Z% x& X, z1 q4 e( ?$ t% \

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

) |) M7 o5 t" Z K

* ]& i3 W% F& x) H x& W

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

E. s$ Z- R2 i$ E" |

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

- G: u0 |( I; q

在IAppServer::AS_GetRecords或者

- D% m9 s' u8 ?# p# K- h( U8 {

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

2 S. P/ |9 b: D3 @, B

( y9 r, J0 G9 g: l' z" N5 P

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

$ y! H& y x9 E7 Z' f

IDataIntercept接口

0 Q& N/ N2 }) f- Z- A0 _8 H7 @8 a

! M1 } S8 c. y

__interface IDataIntercept;

2 m* F( {- t \) z( l+ e

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

5 G( l, Q" s6 I* _) |7 }1 U

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

) }0 p/ h" `% n+ c) q5 j4 q

tercept : public IUnknown

3 b& y( s0 F3 @* A6 r( S2 c4 U

{

( ~' z n7 J3 w( [3 ?8 L# U- ~8 p$ [

public:

9 ^; D, q1 R8 d" A& e, o0 j9 ]) }" t

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

/ p, J7 Y: S4 J9 W5 P; M. o, G1 d

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

5 n+ G8 C# K+ N9 c. E. V3 u

};

$ y6 ^7 V/ _! p1 Q# L: t5 \/ W

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

4 }. Q+ d( y3 B0 h' q% d9 a. _. C5 `

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

1 M% Z& S. c- c: J2 s9 I( |) h

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

4 Z) Q/ R. N0 q+ M8 \! P

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

. U+ G3 x1 P3 N& {6 ]8 \' v

$ x/ h+ [+ [2 H* E& j

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

4 J+ T6 O# C) h' K

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

7 W- \. T9 r# C3 n8 |' ]5 m9 O

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

! a; M' Y+ ?# r& E2 J% W7 y

7 i5 G# h$ M& K' a' L/ y

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

: f2 D8 x+ R: {: Q ^( j

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

) Z# i- q0 ^" G) J+ d

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

" d- X, v' ?) d: i- L

7 E# H. w8 g% X# Q

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

5 Q9 j& X: h, y3 F

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

7 Y) K" f7 }* F

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

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 16:32 , Processed in 0.418459 second(s), 52 queries .

回顶部