写点什么

U-Prove: 在保护隐私的情况下提供安全性

2010 年 3 月 19 日

微软最近公开了 U-Prove 的 CTP 版本的源码,它是一种用来实施认证的加密的解决方案,并且不会透露关于用户的个人信息。CTP 版本包括 U-Prove 加密规范 V1.0 、对该规范的 C# Java 实现、对 WIF AD FS2 CardSpace 2 的扩展,此外还有大量用来说明该项技术的白皮书。

当前的安全解决方案是基于透露从相关安全服务获益的人的信息的。此外,很多网站都倾向于尽可能多地发现它们的用户的信息,以便于提高它们的业务模型,从而得到更好的效率和收益。U-Prove 技术想要提供更高级别的安全性,只透露用户想要透露的信息。这与匿名活动是类似的,比方说只需要投币,就可以从公共售卖机购买商品,或者匿名投票等等。

U-Prove 技术最初是由 Stefan Brands 在 Credentica 开发的,在 2007 年发布了第一个 SDK 之后,越来越被人们所熟悉。 2008 年微软收购了该项技术以及相关的专利,并且将其包含在 Windows Identity Foundation 中。最近,微软发布了 Microsoft U-Prove CTP ,这项加密技术包括以下内容:

U-Prove 技术是基于 _U-Prove_ 令牌的想法创建的,这个令牌是包含加密的、被保护的信息的二进制字符串,我们把这种信息叫做属性。在使用 U-Prove 令牌的过程中会涉及到三类组织:发布方——发布令牌的实体组织,验证方——需要令牌的用户,校验方——与认证用户相关的第三方组织。发布方与验证方通过 _ 发布协议(Issuance Protocol)_ 通信,而验证方与校验方通过 _ 表现协议(Presentation Protocol)_ 通信,如下图所示:

当验证方想要得到令牌的时候,它会通过发布协议与发布方联系,以一种秘密的形式来展现他的属性。这与现今使用的标准安全令牌有所不同,因为验证方可以得到令牌,而不需要将他所有的属性都透露给发布方:

为了让验证方从发布方获得 U-Prove 令牌,这两个组织必须位于 U-Prove 发布协议的同一实例中。这是在一部分输入和属性需要编码到令牌中的时候所要采用的加密协议。U-Prove 技术中的创新技术在于对发布协议的加密设计,它基于当代密码学的发展。为了达到概览的目的,它可以知道发布者的签名不是传统的 RSA 或者 DSA 的签名,并且发布方是 3-leg 的交互协议,支持验证方针对发布方隐藏特定的令牌元素。

发布方可能会使用各种方法来对验证方进行认证,包括访问包含在 U-Prove 令牌中由其它发布方生成的信息。发布方会通过对其进行签名并且包含只有验证方才知道的公钥来保护令牌。

  • 每个发布的 U-Prove 令牌都包含了发布方关于所有内容的不可伪造的数字签名,这是通过使用它的私钥由发布方创建的。发布方签名后的 U-Prove 会成为 U-Prove 令牌上的可信赖标记。这使得任何人都能够校验出来 U-Prove 令牌是由发布者所发布的,并且其中的内容没有被篡改过。
  • 重放攻击(Replay attack)防护:每个发布的 U-Prove 令牌中还包含专门针对每个令牌的公钥,这只有验证方才知道。验证方会在发布协议中随机生成公钥,此时会使用针对 U-Prove 令牌的相关私钥。与令牌的公钥不同的是,这个私钥并不是 U-Prove 令牌的一部分;验证方永远不会在使用 U-Prove 令牌的时候透露它。在下一节中,我们会说明这是如何防止校验方重放已经存在的 U-Prove 令牌的。

在获得了令牌之后,验证方会与校验放取得联系并通过表现协议在二者之间确立可信任的关系:

为了向校验方描述 U-Prove 令牌,验证方和校验方会处于 U-Prove 描述协议的同一个实例中。除了提供令牌属性(或者正如我们在 4.3 节中看到的,只是属性的一个子集)、发行方的签名以及验证方为令牌指定的公钥之外,验证方还将对校验方的响应一起发送过来。为了对这个响应进行计算,验证方会把针对 U-Prove 令牌的私钥应用于校验方的表现请求。这个表现请求必须包含一个迄今为止从未用过的唯一数字,一个大的随机数就可以。同样还会向唯一的校验方身份附加时间戳或者计数器。 我们使用验证方计算的响应作为表示的证据。它是拥有私钥的加密的证据,而私钥是与当前的 U-Prove 令牌相关的。它证实私钥已经被应用给表现请求,但私钥本身会保持私密性。即便所有的校验方和发行方联合,检查很多和相同的 U-Prove 令牌一起创建的二进制表现证据,并且从发布和表现协议脱离,这种安全保证也会保持。结果,校验方就无法重放指定给他们的 U-Prove 令牌。

有很多与使用 U-Prove 令牌相关的安全特性:不可跟踪性、不可链接性、可撤销性、可重用性等等、其中最有趣的是选择性地暴露、在令牌中包含加密属性的能力,即便对发布者也不会公开信息,除非验证方想要那样做。

据微软所说,事实上 U-Prove 可以用于任何通信和事务系统,例如:“数字权限管理、电子投票、电子支付设备、电子健康记录、电子邮费、在线拍卖、公共运输售票、道路收费定价、忠实顾客奖励计划以及电子游戏等等。”它还可以被应用于“非人实体,像计算机过程、软件应用程序、硬件设备等等”。U-Prove 帮助我们方便地通过不可信任的组织来共享信息,使得“我们可以不在现实世界模拟就可以设计新的应用程序;与之相关的领域是云计算服务,它可以在来自于不同源头的整合性保护的输入数据上执行有限的操作。”

关于 U-Prove 更多的信息: U-Prove 主页微软的U-Prove 社区技术预览(CTP)的发布以及深入探索U-Prove 加密协议,还有Channel 9 上两次对Stefan Brands 的采访, U-Prove CTP:从开发者的视角

查看英文原文: U-Prove Offers Security while Protecting Privacy

2010 年 3 月 19 日 21:581153
用户头像

发布了 340 篇内容, 共 113.5 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Android入门你值得拥有!史上最通俗计算机网络分层详解,含BATJM大厂

欢喜学安卓

android 程序员 面试 移动开发

超赞!阿里大牛熬夜纯手写的微服务架构笔记,肝完面试犹如开挂

Crud的程序员

架构 微服务

第一章作业

转转

Docker发布开发团队2021年三个首选方向;工信部印发《工业互联网创新发展行动计划(2021-2023 年)》

京东科技开发者

云计算

【并发编程】- 内存模型篇

双木之林

并发编程

第一次作业提交

涅米丶

雪天专注行路思考一则

石君

冥想 28天写作

产品经理训练营第一周作业

Empty

产品经理训练营 极客大学产品经理训练营

Task01-产品类JD对比

遠景

产品 字节跳动 产品经理 JD

Soul网关源码阅读(七)限流插件初探

Java 网关 限流

合约跟单系统APP开发|合约跟单软件开发

开發I852946OIIO

系统开发

初探架构,随笔整理

Arvin

软件架构

量化交易自动炒币软件开发系统

系统开发咨询:I76-883I-5I52 邓森

2021年1月初Java开发从小公司跳槽阿里制胜关键:狂刷17套大厂真题

Java架构追梦

Java 阿里巴巴 架构 面试题 17套大厂面试题含答案

什么是产品经理?——课程总结

大小姐

花了19998买的学习教程!Android跨进程通信导论,技术详细介绍

欢喜学安卓

android 程序员 面试 移动开发

6道tomcat面试题,最后两道难倒我了

田维常

面试

限量!阿里百万级Redis小册开源,原理应用拓展一键搞定

程序员小毕

Java 数据库 redis 缓存 架构

个人选择理财产品有哪些好方法

v16629866266

一种分表平滑扩容方案

非著名架构师

产品经理训练营 学习起点

DB

张红珊——第一节课作业

zzz

开发实战:LocalDateTime转RFC3339格式

worry

IO系列专题分享 - 概览

Geek_896619

io

面对疫情,我们正在行动!

anyRTC开发者

uni-app android 音视频 WebRTC 在线教育

Elasticsearch 横向扩容

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

Nginx 最常用的两个功能:负载均衡和缓存

码农架构

Java nginx 架构 并发

产品实战作业(Job Model)

晓豪

迷茫 产品经理训练营 BTA 邱岳

4K高清视频下载(4K视频素材下载)图文教程

科技猫

下载器 4k高清视频下载 4k视频素材下载 8k视频下载 高清视频下载

干货丨深度迁移学习方法的基本思路

博文视点Broadview

Redis不仅仅是缓存,还是……

码农译站

数据库 redis 缓存 关系型数据库 非关系型数据库

U-Prove:在保护隐私的情况下提供安全性-InfoQ