第十一讲 Web安全网络与信息安全教程段云所段云 副教授北京大学计算机系
2001/5/11 北京大学
Web的结构(b/s模式浏览器中间动态生成器应用数据库
browser
server
CGI
ASP
Java
Web开发环境非正常的表单数据上传表单数据可能不是预期的选项错误 大于最大长度 字段不符路径数据错误利用PATH_INFO变量,例如在以下源代码中提交不同路径将导致不同结果
echo,<HTML><HEADER><TITLE>File</TITLE><HEADER><BODY>”
echo,Here is the requested file<PRE>\n”
cat $PATH_INFO”
echo,</PRE></BODY><HTML>”
URL,http:/www.server.com/chi-bin/fool.sh/public/faq.txt 打印faq.txt
URL,http:/www.server.com/chi-bin/fool.sh/etc/passwd 打印passwd文件
CGI安全威胁
0字节
Parse $user_input
$database=“user_input.db”;
Open(FILE”<$database”>);
提交/etc /passwd\0 可能打开passwd
文件
/
./
../ 上
HTML


CGI的安全威胁
ASP的安全威胁
源代码
http://www.somehost.com/some.asp::$DATA
http://www.somehost.com/some.asp&2e
http://www.somehost.com/some.asp
http://www.somehost.com/some%2e@41sp
http://www.somehost.com/some%2e%asp

ASP的安全威胁
FileSystemObiect
文件 可 VB的FileSystemObiect
例?文件的ASP源码(¢用£式 http://xxxx/cat.asp?file=文件
<%
Response.ContextType=“text/plain”
file=Request.QueryString(“file”)
set fsFilesys=CreateeObiect(“Scripting.FileSystemObject”)
set tsCoffee=fsFilesys.OpenTextFile(file)
Response.Write tsCoffee.Readall
tsCoffee.Close
set fsFilesys=Nothing
set fsFilesys=Nothing
%>
ASP的安全威胁数据库?码¥?
sql=“select * from user where username=“”&username&””and pass=“”& pass&””
sql=“select * from user where username=“”hacker” or ‘1’=1 &,and pass=“”& pass&””
§currency1文件.inc
Cookies的安全'
Cookies的 用 浏览“态
fi fl下 –
ActiveX的安全'
用· 可 2?代码 用于 发?件
fi”? …‰ 可能?
威胁 `果 ′?
ˉ'?˙用¨的数据
浏览器
˙?
˙传ˇ的数据—
信息
机器
所 威胁的

' 网上
器 信息
¨ 信息
a于网络 的信息
a于?¨ 的信息
信息

Web 代
o -中 用¨
-用 的威胁? 器

DNS? 器中

用¨?成正常
以防范认?鉴别 冒充合法用¨
数据
以假乱真误信错误信息
技术
Web安全'威胁与′?
基于主机的入侵检测文件I/O监测上载请求的合法'¥?
信息—认
Web安全防护技术网络层——IP 安全'(IPSec)
传ˇ层—— SSL / TLS
应用层——S/MIME,PGP,SET,Kerberos
基于Web信息—的安全方法
IP/IPSec
HTTP FTP SMTP
TCP
(a) Network Level
基于Web信息—的安全方法
——网络层
IP
HTTP FTP SMTP
TCP
(b) Transport Level
SSL or TLS
基于Web信息—的安全方法
—— 传ˇ层
(c) Application Level
IP
S/MIME PGP SET
TCP
SMTP
UDP
Kerberos HTTP
基于Web信息—的安全方法
—— 应用层在互联网上访 某些网站 也许你会注意到在浏览器窗口的下方会显示一个锁的小图标 这个小锁表示什么意思呢 表示该网页被SSL 护着 SSL全称为“Secure Sockets Layer”
安全套 层 是一种用于网站安全 的协议 技术所谓的安全 两个 用首先是SSL可以提供信息交互双方认?′方的身份标识显而易见? 这′ 你开始与′方交换机?信息 确切了解′
方身份是非常重要的 SSL 数字?书的技术实现?得这一需求得以 足另一个是 能够?数据以不可读的£式传ˇ 以利于在不可信网络 例如互联网 上的安全传ˇ需要 这种不可读£式
常由?技术实现源于Netscape开发 V3首先 为RFC发 `IETF 一个
TLS 小 为Internet Standard TLS的 一个?可以? 是SSLv3.1
SSL -Secure Socket Layer
要 SSL 首先了解数字?书 Digital Certificates 的
数字?书是一种能在?全开 系 例如互联网 所以 互联网是一个开 系 是 为 法? 中的用¨是
中 确标识某些主 如一个 一个网站 的机?
一个数字?书§currency1的信息 能鉴 用¨身份 确 用¨ 是
所?书中 的用¨ 数字?书由CA Certificate
Authorities 机构 认 CA是被?¢机构认可用于标识?书所 £的?方机构 ¥了?一的标识信息
数字?书§§currency1了?书所 £的?¢?currency1
数字?书
SSL被'计用?用TCP提供一个可“的
到 安全
! SSL Record Protocol为层提供基?安全
别是HTTP 提供了Web的client/server
交互的传ˇ 可以构 在SSL 上
! SSL Handshake Protocol,SSLChange Cipher
Spec Protocol,SSL Alert Protocol是SSL的?层协议 用于? SSL交换
SSL 系结构
IP
SSL Change
Cipher Spec
Protocol
SSL Alert
Protocol
HTTP
TCP
SSL Record Protocol
SSL
Handshake
Protocol
SSL Protocol Stack
SSL 系结构(fi)
SSL connection)
! 一个 是一个提供一种合fl – 的传ˇ OSI
层的?
! SSL的 是 ′ 的a系
! 是? 的 ·一个 一个会 a联
SSL会 session
! 一个SSL会 是在?¨与 器 间的一个a联 会
由Handshake Protocol? 会?了一 可供?个
¢?的?安全?数
! 会 用以”?为·一个 提供…的安全?数所需‰
的? 代`
SSL的两个重要
Session identifier,器选′的一个?意字节?ˉ 用以标识一个?动的 可˙?的会,态
Peer Certificate,一个X.509.v3?书 可为¨
Compression method,? 数据?的算法
Cipher spec,? 数据?的算法 DES 以ˉ
算法 如MD5 SHA-1 用以计算MAC §§ˇ?数 如?
ˉ长度
Master secret,48—? 在client与server 间¢?
Is resumable:一个标? 该会 是o能用于 生一个…
会,态
Server and client random,server client 为·一个 所选′的字节?ˉ
Server write MAC secret,一个?currency1 用 ′server 的数据
MAC
Client write MAC secret,一个?currency1 用 ′client 的数据
MAC
Server write key,用于server 数据? client 数据解?的′
称currency1
Client wite key:用于client 数据? server 数据解?的′称
currency1
Initialization vectors,数据? 用CBC方式 ·一个?currency1
一个IV 该字段首先由SSL Handshake Protocol 以` fl· 最`
的?文数据 为IV
Sequence number,·一方为·一个 的数据发 与 护单
的? 一方发 一个˙变的cipher spec message
为0,最大2
64
-1
,态
SSL Record Protocol为SSL 提供两种
!?' Handshake Protocol?一个¢?的
currency1用于′SSL 载?
! 息?ˉ' Handshake Protocol?一个¢?
的currency1用于 成MAC
SSL Record Protocol
Application data
Fragment
Compress
Add MAC
Encryption
Append SSL
record header
SSL Record Protocol?
可选
MAC 计算 程如下 非常 HMAC
hash(MAC_write_seret||pad_2||
hash(MAC_write_secret||pad_1||seq_num||SSLCompressed.type||
SSLCompressed.length||SSLCompressed.fragment))

MAC_write_secret,¢?的currency1
hash,?码?ˉ 数 MD5 SHA-1
pad_1,0x36重a48 (MD5) 40 (SHA-1)
pad_2,0x5C重a48 (MD5) 40 (SHA-1)
seq_num,该 息的?ˉ
SSLCompressed.type,层协议用于? 段
SSLCompressed.length,? 段的长度
SSLCompressed.fragment,?的 段(? 为 文段)
Add MAC
Block Cipher Stream Cipher
IDEA 128 RC-40 40
RC2-40 40 RC4-128 128
DES-40 40
DES 56
3DES 168
Fortezza 80
可供选′的?算法 ′基于数据 数据
—的?种标?方法 能够
Encryption
Content
Type
Major
Version
Miner
Version
Compressed
Type
Plaintext
(optionally compressed)
MAC(0,16(MD5),20(SHA-1) bytes)
Encrypted
SSL 的? £式
change_cipher_spec
alert
handshake
application data
a Change Cipher Spec Protocol
1 1 byte
一字节?为1 用以将“态o,态 导致?
§用于该
b Alert Protocol
2字节
Level = 1(warning),
2(fatal),SSL将?a会 的
可以 fi 不能? …
Alert =·码 如
unexpected_message
bad_record_mac
Level Alert
SSL的 载 一
c Handshake Protocol
Type Length Content
1 byte
3 bytes >=0 bytes
10 种 –的 息
SSL的 载
Message Type Parameters
hello_request null
client_hello version,random,session id,cipher suite,compression method
server_hello version,random,session id,cipher suite,compression method
certificate chain of X.509v3 certificates
server_key_exchange parameters,signature
certificate_request type,authorities
server_done null
certificate_verify signature
client_key_exchange parameters,signature
finished hash value
SSL 协议的 息种
SSL 协议的 息传?
SSL应用中的安全
a71 Client系 Server系 Keys
Applications 要安全
a71 的?开?currency1currency1以 器需?

a71 ′?书 CA要选′
a71 SSL的实现不 安全错误 在实现上 最可能
是sanity check?currency1?
书的
应该提 的是 Verisign的?¢CA机构 不 是可
“的 系?,常犯的错误是 于信?Verisign 的
¢CA机构 例如 如果Verisign发 一个?书 是
“某某某” 系? 很可能 会相信,是某某某” 不幸的是 ′于用¨的?书?¢CA机构可能不象′网站数字?书那样重视 a心 确'
例如 Verisign发 了一个'hackers' 织的?书 而 是 中一
'Administrator' 一个网站要求认?用¨身份 提交了
'Administrator'的?书 你可能会′ 返回的结果大吃一惊的?为严重的是 由于微司的IIS 器提供了“?¨?书映射” Client
Certificate Mapping 功能 用于将?¨ 提交?书中的 字映射到
NT系 的用¨帐 在这种情况下 能够获得该主机的系?

SSL应用中的安全 (fi一)
力书如果?£不能利用非法的?书突? 器 他 可以尝试 力? brute-force attack 虽‰ 力
书比 力?口?为困 …‰是一种?方法 要
力¨ 认£·辑一个可能的用¨ 字ˉ
表 ‰`为·一个 字向CA机构申请?书 ·一个?书
用于尝试获取访 权限 用¨ 的选′越好 中一个
书被认可的可能' 越? 力书的方便 在于 仅需要猜测一个 的用¨ 而不是猜测用¨

SSL应用中的安全 (fi )
利用窃取 的?书
£可能试图窃取 的?书?相应的currency1
最简单的方法是利用
这种?几乎可¨?书 同虚'?的是
书的一个根?'currency1 ˉ个安全系 的核心
”常?在不安全的?方 ′付这些?的?一 方法
许是将?书?到智能卡 牌 的'备中 这
不是?文要 的范围
SSL应用中的安全 (fi?)
IDS?Intrusion Detection System 是一种用于监测?
器企图的技术 方法 典–的IDS监视网络 讯
将 与?在数据库中的已知,? 征” 方法比较 如果发现? IDS可以提 系? 截 甚
实施反? 在于如果网络 讯是?的 IDS将
法监视 这反而可能会为轻松假'在一个典–的被防火墙 IDS防护的网络环境中
£能轻松?探测被SSL 护的网站 为SSL′数据的
得IDS 法正常监测? 常一台单一的网站
器会同?用SSL 普 的TCP协议 由于?£?
的 器而不是网络 他 可以选′?意一种途径
SSL途径?£知道SSL?为他 带 的好
这样?容易”开IDS系 的监测
SSL应用中的安全 (fi四)
排¥上述所描述的 SSL…‰不 为一套全面?善的安全?略中 的 成元素
′SSL的?评` 可能带 安全风险 SSL 不是什么万能武器 仅是网络安全?的一种 网络安全?紧?结合 方能构 全面?善 安全可“的网络
′SSL的评`
SSL的实现
a71商? 品
– Windows 2k IE IIS etc
a71 由?件
– openssl
– mod_ssl
– apache_ssl
– stunel
SET协议(Secure Electronic Transaction 安全 交易)是由
VISA MasterCard两大信用卡?司于1997 5 联合 的 范
SET主要是为了解 用¨ 商 间 信用卡 付的交易而'计的 以? 付信息的机? 付 程的?ˉ 商¨? 卡
的合法身份 以?可 ' SET中的核心技术主要?开?currency1
数字? 信 安全?书 SET能在 交易环节上提供?大的信?度ˉ的交易信息的安全'?
的可能' SET协议用以 B to C Business to
Consumer 这种 –的 商 模式? £ 卡在网上 与交易的模式
SET协议 述
SET实现 构
SET交易?个 段,
" 在 请求 段 用¨与商 确 所用 付方式的 节
" 在 付确认 段 商 会与 核实,着交易的 他
将得到付
" 在 段 商 向 示所 交易的 节 ‰` 以
fl 方式o
如果不是?用?卡 而 付现 商 在 段?成以
`的? 间?可以供 付? 段将紧 着 段
用¨ 一 段交易 a 与? 段 a 而商
与?个 段 要发生a系 ·个 段?到RSA′数据?
以?RSA数字?
SET交易 程
Dual Signature技术
PI
付信息
H
单信息
H
H E
KR
c
双? (DS)
PIMD
OIMD
OI
1,商 到PIMD OI DS
计算H(PIMD||H(OI)) DKUc(DS)
2,到OIMD PI DS
计算H(H(PI)||OIMD) DKUc(DS)
3,?将PI OI 在一到? 用
实上 SET SSL¥了 用RSA?currency1算法以 £
在 他技术方面? ¢?相 而RSA在 £中也被用 实现不同的安全 标
SET协议比SSL协议a£ (97?页 vs 63/7?页)
为SET不仅?两个 间的单个会 §非常¥
而 确?反映了卡交易?方 间?在的?种a系 SET§
了?信息的£式?成一§卡 付交易 程中?方传ˇ信息的 currency1?实上 SET''不 是一个技术方面的协议 § 了·一方所 的数字?书的合法currency1?
“?得到数字?书以应信息的?方应 的动 与一
§交易紧?相a的 fi SET实现非常a£ 商
需要˙ 系 以实现互 另 SET协议需要认
中心的
SSL与SET协议的比较
SET是一个?方的fl文协议?了 商 卡
间的 的fl文 范 与 同 SSL 是简单?在两方 间 了一–安全 SSL是面向 的 而SET
许?方 间的fl文交换不是实 的 SETfl文能够在
网 £ 他网络上传ˇ 而SSL 上的卡 付系
能与Web浏览器?·在一?
SSL相′不安全 实 上? 不是为 商 而
'计的 很? 商 解 方?提供商…‰在?用
SSL 构的安全 付系 是如果?,的
¨方?件的 基于SSL的系 是不能到”SET这种?
用 卡 付协议所能…到的安全'的
SSL与SET协议的比较(fi一)
‰?
SSL协议与SET协议 于IP与ATM
IP协议的应用非常 实现简单成
`量 QoS ATM实现a£ 需要′现 的
'备 应用 ˙ 成‰ ′ `量?
结果是ATM′′不能 成?的 范 IP'备?ˉ?˙¨
着应用需求的 ′ `量要求的
也ˇ 这 CISCO —商也提 IP上的QoS
IP协议实现′QoS的
所以评`一种技术的 ‰ 最重要的 是这种技术能不能在现 的–件下˙ ¨ 于这种技术是不是先
是不是 好的? ' 相′ 于 要?— 已
的应用份 实现成? 技术?¨ ˙ 的最重要的 素? SSL协议已”˙据了 利的
SSL与SET协议的比较(fi )
一?ˉ的SSL 的全 程