GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

微软发布.NET 应用知识产权保护计划

2007 年 7 月 11 日

一直以来,.NET 开发团队和开发企业都面临一个很尴尬的问题:一方面,受到客户和市场的压力,倾向于建立基于.NET 这个更有生产率平台的应用;另一方面,工作产品却可以很容易地被反编译成 C#(或其他.NET 语言)代码,即便是通过 Dotfuscator 处理后的代码,其关键算法可读性也相对不错,对于有一定开发经验的.NET 人员而言这些算法没有“隐私”可言。这个现状直接威胁到.NET 应用的知识产权保护,微软表示近期会推出一套称为“软件许可保护”的产品(SLP Service,Software licensing and Protection Service),致力于解决这个问题。

该项技术来自于1 月份微软收购的 Secured Dimensions 公司,该公司有一套许可服务器技术,还提供在线的软件许可认证。收购后,微软从多方面对该产品进行了强化,并准备随 Orcas 发布一个版本。不过在这之前会先发布一个 Coder Protection SDK,其中包括一些直观的 UI 工具和一组开发接口(含 Sample),届时可以从微软站点免费下载。微软 Group 产品经理 Thomas Lindeman 解释了这一技术的实现原理和优点:

该技术的实现原理与以往的加密和混淆原理不同,它与每个公司关联,由 SLP 服务为每个公司成生一个“private permutation”(保密置换码),把该置换码下载后通过调用 SDK,可以把现有代码通过置换算法转换为安全虚拟机(SVM,Secure Virtual Machine)语言,然后代码的入口处就会增加一小段代码,也就是 SVM。代码无论是被浏览还是被执行都要先过这道“门神”,因此这个技术是个单向的“强”转换保护机制。相应地,软件许可的认证过程也就成了“主动保护”方式,因为有前面那个“门神”,因此现在代码实际可以做什么都是根据发布的终端用户软件许可定下来的。 此外,使用该 SDK 的好处还在于能够帮助软件企业不仅仅将 Enterprise、Standard、Express 等这些相对笼统的功能打包,还可以完全按照具体功能销售软件。还有一个很酷的机制,通过嵌入“监控实体”(Monitorable entities),可以统计具体某个功能的使用情况,实现类似上网流量收费的方式根据软件的使用次数收费。

上述机制确实很诱人,不过有一点要注意——用户怎么保护自己的隐私?控制用户按照许可合同的内容使用软件无可厚非,但监控的加入势必会令用户担心他们的信息很可能在使用的时候不知不觉地被泄漏(输入参数、调用的功能点一目了然)。如果一个信用卡系统外包给第三方公司完成,信息外泄的代码完全不需要写在业务逻辑中,通过正交介入的 SLP 代码一样可以获取,而且这些代码到底怎么写的,你一点儿也看不到,因为它们本身可能就由第三方公司用 SLP 自己保护起来。

不仅如此,还有一个最大的“第三方”,如果它在发布“保密置换码”的时候,本身就有些准备或者有所控制,那么用.NET 开发的软件企业也会担心 “黎叔很生气,后果很严重”,导致发布的软件不可用的局面;还有相关关键员工的流失,恐怕也是要认真考虑的问题。


作者简介:王翔,全国海关信息中心高级架构师,从事海关主要广域分布式系统的设计和实施,多次参与各业务系统的优化。此外,作为信息安全工作组副组长,他还一直致力于应用密码技术和公钥基础设施保障海关业务的安全运行。此外,他还是《程序员》杂志的专栏作者。

2007 年 7 月 11 日 03:45358
用户头像

发布了 61 篇内容, 共 54797 次阅读, 收获喜欢 0 次。

关注

评论

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

一个虚拟世界里栽树的公司及其启示

郭华

技术 商业模式 电影

大厂面试必读,JAVA进阶神书《深入理解Java虚拟机》第三版更新内容全曝光!

华章IT

JVM 虚拟机 周志明 Java虚拟机 jvm调优

写代码爬取了某 Hub 资源,只为撸这个鉴黄平台!

程序员生活志

教程 Hub 资源

跨域问题(CORS / Access-Control-Allow-Origin)

xcbeyond

Java CORS 跨域

Python3 for ... else ...陷阱

王坤祥

Python Python PEP

搭载十代酷睿i7处理器,这台ROG冰刃4新锐拥有媲美台式游戏电脑的性能

最新动态

"工科生"的浪漫 百度大脑语言与知识技术峰会在七夕向你发出参会邀请

百度大脑

ST在keil下开发时候文件options配置的一些小技巧

良知犹存

嵌入式

区块链承兑商支付系统开发,usdt支付系统搭建

WX13823153201

错误的存储方案正吞噬你的成本

jinjin

草脸识别,AI泡沫还是皇冠明珠?

郭华

人工智能 AI 商业 解决方案

云原生架构的基石

soolaugust

Docker 架构 Kubernetes 容器 云原生

SpreadJS 纯前端表格控件应用案例:集成 Odoo提升企业ERP表格功能

Geek_Willie

开源 SpreadJS Odoo

“庆俞年”大战,真正受损的不是李国庆

北柯

创业 合伙人 创业者 互联网人 当当网

Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的

程序员生活志

影响音视频延迟的关键因素(一):流媒体系统

ZEGO即构

TCP udp RTC HLS RTMP

我的敏捷历程 —— 兼评《敏捷整洁之道 - 回归本源》

FollowFlow

敏捷开发 Agile 极限编程 XP

一个数据库管理员的自我救赎之路

华为云开发者社区

数据库 华为云 数据库迁移 企业上云 DRS

丐帮,少林,明教,武当!看看你数据分析的技能属于哪一派?

程序员生活志

nginx报错worker_connections are not enough

Java联盟

nginx

为什么一旦自己创业了,很难再回到公司去坐班?

北柯

创业 互联网 创业心态 上班 上班族

系统不可用总结

不在调上

ARTS week 4

锈蠢刀

spring Cloud Eureka Rest接口重写

xcbeyond

Java SpringCloud Eureka

高效程序员的45个习惯:敏捷开发修炼之道(3)

石云升

读书笔记 敏捷开发 无限游戏

学习的深度 & 深度的学习

北风

学习

nginx 报错 accept4 () failed (24:Too many open files)

Java联盟

nginx

为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?

架构精进之路

php 弱类型语言

程序范式的意义

soolaugust

架构 程序设计

云上安全工作乱如麻,等保2.0来一下

华为云开发者社区

安全 华为云 等保 云平台 多云服务

CRM往事丨三件事,所有SaaS的缩影

人称T客

微软发布.NET应用知识产权保护计划-InfoQ