渗透测试简介

目标

  • 找到基础设施或应用的安全漏洞,防止被利用从而造成损失
  • 评估安全性级别
  • 识别薄弱环节
  • 提出详细的带有建议的应对措施目录

合法性

  • 法律保障:需要书面形式的委托书,在哪一时间段对哪个目标执行哪些测试,明确测试范围和过程等。
  • 定义好的范围(defined scope)
  • 定义好的测试过程(defined test process)
    • 特定的测试点
    • 可复现的结果

范围定义

攻击者模型

描述可能的攻击者、他们的访问方式、权限、前提等。

确定攻击者模型:系统需要防范哪种攻击者?

  • 外部人员,无特权(最常见的攻击者类型,没有任何系统相关的密码,不知道IP对应的系统运行什么)
  • 外部人员,有特权
  • 内部人员,无特权
  • 内部人员,低权限
  • 内部人员,高权限(系统管理员)

测试计划中需要明确一个或多个角度,从而推导出测试覆盖面(test coverage)和测试深度(test depth)。

测试覆盖

确定有多少组件、哪些组件需要被测试,确定测试中被研究的测试对象,例如:

  • 单个组件(Web应用、服务器)
  • 单个接口(API、无线通信接口/Funkschnittstelle/air interface)
  • 端到端测试(从设备、API、到Web应用,检查系统中涉及到的所有组件和接口)

部分系统测试:例如构建新的组件时对不同供应商的产品进行评估。不够全面。

端到端测试:考虑系统整体。但是开销更大、更昂贵。

增量测试(delta test):适合对于经过少量更新的系统进行测试。

继续阅读“渗透测试简介”

接收方匿名性保护

Broadcast

广播是保护接收者匿名性的方法,通过广播所有参与者都能收到消息,即使发送者也不知道接收者的身份。

性能

通常广播相比点到点通信会需要更高的吞吐量。

寻址

  • 显式地址(explicit address):并不总是必要的,例如IP协议的广播地址。用于减小广播的代价,但是难以提供匿名性。

  • 隐式地址(implicit address):接收者(addressee)站的属性,用于进一步处理。

    • 不可见地址(invisible address):即使同一个地址发送两次,也没有观察者能发现,即地址的重用看起来就像使用了另一个地址。

    实现方法:发送方和接收方协商密钥(公钥或私钥),解密后如果消息有意义,则就是发给自己的。

    • 可见地址(visible address):与不可见地址相反,观察者可以发现某些信息的地址相同。

    实现方法:发送方和接受方协商一个随机数添加在明文消息里,其他人就不知道消息是发送给谁的。

一些要注意的问题:

  • 使用不可见的隐式地址,如何判断解密后的消息有意义?

    1. 加tag,使用长度足够的tag就可以抗碰撞(生日悖论)

    2. 使用哈希或消息认证码,计算

      enc(random_num, msg, hash(random_num, msg))

      enc(key, msg, MAC(key, msg))

  • 使用可见的隐式地址,随机数的生成?

    • 需要注意每个随机数只能用一次,否则会导致linkable的问题
    • 因此通信双方可以协商使用同一个seed生成随机数
  • 不可见地址的代价比可见地址高很多,因为前者涉及到对每一条消息的解密,而后者只需要对比随机数。

地址分发(address distribution):根据地址与身份的关联性公开与否,可以将地址分为公开地址(public address)私有地址(private address)

public address private address
implicit invisible address 使用公钥加密,开销非常大。但是可以用于第一次通信时双方交换对称密钥或随机数seed。 私钥加密。开销大(但是当然比公钥加密小一点)。
implicit visible address 地址可见,且地址与身份之间的关联性是公开的,会暴露信息。不应该被使用。 获得对称密钥或随机数生成seed后可以使用。使用后需要更换随机数。

不可见公开地址的最高效的实现方法就是采用公钥加密系统

不可见私有地址的实现方法是私钥加密,因为私钥只有通信双发持有(private),且通信的地址是明文经过私钥加密生成的(invisible)。

可见私有地址的实现方法就是使用同一个seed生成伪随机数,每次通信使用不同的随机数。

继续阅读“接收方匿名性保护”

隐私增强技术基础

安全与密码学II的课程主要关注隐私增强技术,这是课程第一部分,关于基础概念、保护目标和攻击者模型等的介绍。

上学期的SaC I主要介绍了安全与密码学的基础知识,包括保护目标、攻击者模型以及保护机制,根据保护目标把方法分为两类——认证和加密,介绍了不同的密码学方法和实现原理。这学期的SaC II主题为“匿名和不可观测通信(Anonymous & Unobservable Communication)”。

隐私增强技术(Privacy Enhancing Technologies, PETs)

包含两个子领域:

  • 信息抑制工具(information suppression tools):又称为不透明工具(opacity tools),关注匿名化、假名化(pseudonymization)、混淆(obfuscation)。通过移除不重要的数据,防止攻击者学习到重要的信息。
  • 透明性增强工具(transparency-enhancing tools, TETs)
    • 告知用户收集了哪些数据、收集目的等
    • 告知数据收集的影响,需要“informed consent”
    • 检查数据收集是否符合法律规范
    • 各种技术:Secure Logging, Audits, Quality Seals, Policies…

保护目标

SaC II主要学习的是隐私增强技术,隐私是我们的保护目标,但是没有明确的定义。所以我们通过保护匿名性不可观测性来实现保护隐私性。

  • 匿名性(Anonymity):确保用户在使用一个资源或服务时不会暴露他的身份,即使是通信参与者也不能发现对方的身份。
  • 不可观测性(Unobservability):确保用户在使用一个资源或服务时,他人无法观测到正在使用的资源或者服务。未参与通信者既不能观察到消息的发送也不能观察到消息的接收。

还有一个保护目标为隐藏性(Hiding),它与不可观测性的区别在于,前者强调消息的内容是隐藏的,后者强调使用资源这一事实无法被观测到。

继续阅读“隐私增强技术基础”