QQ登录

只需要一步,快速开始

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

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

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

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

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

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

/ J3 v; e4 ^% c i5 ^; u

% f( ]% [: |1 X% `2 \+ g0 X" I+ V

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

% U$ @7 N4 G6 t5 j9 E! q# Q/ ]9 B

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

0 q5 R- n: n8 d2 R. ~2 r

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

/ L% ^: T4 X2 w4 B1 U

是对其的有益补充

$ o+ Q p1 Y& r9 ~1 F; I2 ^5 T

) M" \5 w6 C+ A

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

$ n4 c: Z0 L' S, P+ o

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

2 C0 ^# o6 E+ g0 p" R

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

* ?# E# r7 y; R0 N- n! g

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

/ G; b0 k% f% n/ D

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

, N" R, K+ W7 b1 U) R

7 L) l- q: U# L

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

' |* N1 \& I N, v7 ^

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

7 [, r+ m( o" A: E! O3 f v

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

, X: g8 R; g) \; _+ |

中途截留者更改

, J# i u, K0 ]2 }4 ]: c6 H

9 U. x8 j4 o% Q% O* o

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

3 P: Y+ i! R; q0 {2 l, |) E

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

9 L* d4 A" V& {4 g

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

! h1 l& k# U5 W* ]9 f3 N: d

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

, w4 f5 n) ~) @3 k2 b

5 p# n. e( ~* u- ]( \9 r

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

z2 F5 ^8 k- C0 x& x

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

6 S0 @8 K3 b$ Y4 M

在IAppServer::AS_GetRecords或者

8 f. g9 ?- i# v9 D0 {3 y2 @

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

. n! S$ }$ J5 H. r6 k6 s

5 A4 H. R+ D. z% y7 L! O0 z, Z- _

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

. g# h6 Y: i! [' i$ c: ^/ L

IDataIntercept接口

( O/ O; j0 }5 s- N0 n0 R

7 C3 {) K E" o- Q

__interface IDataIntercept;

* I6 c2 l+ S9 C) K

typedef System:elphiInterface<IDataIntercept> _di_IDataIntercept;

! I0 e/ X0 r4 P6 N8 K1 [ g

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

' M8 e* S4 q: L; F7 X

tercept : public IUnknown

* k% @+ t3 N6 v1 h

{

4 H2 P% f5 [4 h0 E9 C) N

public:

5 n$ J( I9 B( Y" A

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

% v/ i# g' N6 v

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

% \ e# @8 L) T9 Y6 t4 W8 G: O

};

, _8 T" ^$ L9 o# h& k0 w/ [, G

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

, e0 ^/ ?1 R' N* e

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

3 c- c/ a7 o. J0 ]. ]% u7 ]: R

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

2 g @9 _6 P$ w. `) W

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

# C/ z9 F; k. o3 e

O9 b0 y$ s* ]0 O

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

8 k0 Q9 H/ |4 \3 C# @3 K4 A

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

0 D1 }) G( H# C: i1 f2 e

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

8 @# |' N' d8 D% V6 R9 x, i

3 b9 D2 V6 r8 W

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

0 M, P m( `0 u- P3 A ?

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

7 `4 m' v* P. y* l( b

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

5 S v/ l( [* B# m- c7 ^

% Q7 ~9 q. @9 A0 T% S% a. ?

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

! B4 o5 M. N& \1 U/ o+ r3 b5 x; F

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

0 p/ m- f! {* y

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

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 13:50 , Processed in 0.356558 second(s), 52 queries .

回顶部