密钥管理技术是信息安全的核心技术之一。在美国“信息保险技术框架”中定义了深层防御战略的两个支持构架:密钥管理构架/公钥构架(KMI/PKI)和入侵检测/响应技术。当前,密钥管理体制主要有三种:一是适用于封闭网的技术,以传统的密钥管理中心为代表的KMI机制;二是适用于开放网的PKI机制;另一种是适用于规模化专用网的SPK。
一、KMI技术
KMI(密钥管理中心)经历了从静态分发到动态分发的发展历程,目前仍然是密钥管理的主要手段。无论是静态分发或是动态分发,都基于秘密通道(物理通道)进行。
1.静态分发
静态分发是预配置技术,大致有以下几种:
1)对点配置:可用单钥实现,也可用双钥实现。单钥分发是最简单而有效的密钥管理技术,单钥为鉴别提供可靠的参数,但不能提供不可否认性服务。有数字签名要求时则用双钥实现。
2)一对多配置:可用单钥双钥实现,是点对点分发的扩展,只是在中心保留所有各端的密钥,而各端只保留自己的密钥即可。一对多的密钥分配在银行清算、军事指挥、数据库系统中仍为主流技术,也是建立秘密通道的主要方法。
3)格状网配置:可以用单密钥实现,也可以用双钥实现。格状网的密钥配置也称端端密钥。其密钥配置量为全网n个终端用户中选2的组和数;KERBEROS曾排过25万用户的密钥。格状网是网络化的信息交换网,因此一般都要求提供数字签名服务,因此多数用双钥实现,即各端保留自己的私钥和所有终端的公钥。如果用户量为25万个,则每一个终端用户要保留25万个公钥。
2.动态分发
动态分发是“请求、分发”机制,即与物理分发相对应的电子分发,在KMI下在已在秘密通道的基础上进行,一般用于建立实时通信中的会话密钥,在一定意义上缓解了密钥管理规模化的矛盾。
1)基于单钥的单钥分发
设一个中心C和两个交信双方A(发起者)和B(相应者)。在用单密钥实现时,首先用静态分发方式下配置的星状密钥配置,主要解决会话密钥的分发。这种密钥分发方式简单易行。不带鉴别的密钥分发如下:
(1)A→C:申请A和B通信的密钥KA-B;C→A:B分别加密发送双方交信用密钥KA-B;EKC-A(KA-B);EKC-B(KA-B);
(2)双方都具有相同的密钥KA-B,可以进行保密通信。
带鉴别的动态分发主要有两种模式:拉方式和推方式。
(1)拉方式
前提:在KMI和A之间,KMI和B之间已有秘密密钥KA和KB。
a.A→C:request//n1;
b.C→A:EKA(KS//request//n1//EKB(KS,IDA))
c.A→B:EKB(KS,IDA)
d.B→A:EKS(N2)
e.A→B:EKS(fN2),其中f是简单函数,是加1等简单变换。
这样A,B双方都有相同的密钥KS。
(2)推方式
前提:在KMI和A之间,KMI和B之间已有秘密密钥KA和KB。
a.A→B:A,EKA(EMA);
b.B→C:EKA(EMA)
c.C→B:EKB(KS,A,EMB),EKA(KS,B,EMA)
d.B→A:EKA(KS,B,EMA)
2)基于单钥的双钥分发
在双钥体制下,公私钥对度都当作秘密变量,也可以将公、私钥分开,只把私钥当秘密变量,公钥当作公开变量。尽管将公钥当作公开变量,但仍然存在被假冒或篡改的可能,因此需要有一种公钥传递协议,证明其真实性。
(1)公钥分发协议
基于单密钥的公钥分发,其前提是中心和各终端之间已存在单钥的星状配置。分发协议如下:
a.A→C:申请B的公钥,包括A的时间戳。
b.C→A:将B的公钥用单密钥加密发送,包括A的时间戳。
c.A→B:用B的公钥加密数据,A的标识和nonceN1。
d.B→C:申请A的公钥,包括B的时间戳。
e.C→B:将B的公钥用单密钥加密发送,包括B的时间戳。
f.B→A:用A的公钥加密A的N1和B的N2。
g.A→B:用B的公钥加密N2,返回B。
(2)公钥分发途径
公钥的分发方式很多,可归结为以下4种:当众宣布;公众目录;公钥证书交换。Kohnfelder于1978年提出公钥证书(publickeycertificate),以证书形式进行密钥分发或公布,私钥则通过秘密通道分发,分发机构称CA(certificateagency).
二、PKI的兴起
1.PKI发展过程
在密钥管理中不依赖秘密信道的密钥分发技术一直是一个难题。70年代末,Deffie,Hellman第一次提出了不依赖秘密信道的密钥交换体制D-H密钥交换协议,大大促进了这一领域的进程。但是,在双钥体制中只要有了公、私钥对的概念,私钥的分发必定依赖秘密通道。于是PGP第一次提出密钥由个人生产的思路,避开了私钥的传递,进而避开了秘密通道。这是伟大的概念的转变,带动了PEM、509CA、PKI的发展。
PKI密钥管理解决了不依赖秘密信道的重大密钥管理课题,但这只是概念的转变,并没有多少新技术。PKI是在民间密码摆脱政府控制的斗争中发展的,而且这种斗争一度到了白热化程度;PKI以商业运作的形式壮大起来,以国际标准的形式确定,其技术完全开放。甚至连一向持反对态度的美国国防部、联邦政府也不得不开发PKI的策略。
既然PKI只是用概念的转换来解决了不依赖秘密信道的密钥分发,由此可能引发很多新问题,如第三方认证的法律地位、信任关系的转移和扩展以及CRL作废证书的保留等。
2.DoDPKI
美国国防部1999年3月开始酝酿国防PKI之事,并制订了国防部PKI行程图和DoDX509证书策略,于1999年10月和12月分别公布,声称要保持这一领域的领导地位。PKI是美国国防部密钥管理构架KMI(KeyManagementInfrastructure)的重要子集。PKI先在非密系统中试点、测试、选型。
那么,企业界PKI和国防部PKI有哪些不同呢?
1)企业界PKI只提供数字签名服务,而国防部PKI提供数字签名和密钥交换(加密)服务;
2)为此国防部PKI增设了密钥托管功能(由ISSO信息系统安全官托管);
3)国防部PKI除证书CA外还增设了IDCA;
4)CA不是第三方,而是主管方NSA(国防部国家安全局)
美国国防部搞PKI的动机、做法、动向是值得研究的。美国国防部想确立或找回这一领域中的领导地位。实际上近30年,美国官方的密钥管理技术越来越明显落后于民间和企业界。这里有主观原因和客观原因。一般军事网比较整齐,业务比较单一,因此对新技术的需求不很迫切。当民间的公钥密码体制问世时,美国国防部采取了限制措施,不鼓励发展。后来证明公钥体制在密钥交换中和不可否认性证明中起到不可替代的作用,但是却受到了专利权的限制,处于欲用而不能用的尴尬境地。因此美军不得不走另一条路,即购买现成的产品。这一点在国防部PKI行程图和安全策略中以及在信息保险技术框架中明显体现出来。
3.KMI和PKI的关系
《信息保险技术框架》是NSA编写的,但培训对象并不是国防部,而是企业界和政府部门。此书基本上遵从了《国防部PKI行程图》和《国防部PKI策略》,但有意把KMI和PKI、ID卡和CA证书、主管方KDC和第三方CA混淆在一起。在书中简单地将传统的单密钥统统纳入KMI,而把双公钥统统纳入PKI中,但也承认KMI中不少单密钥已被双密钥所替代。为了说明的方便,这样划分是可以理解的。
密钥管理没有一个万能的技术,因为网络不同,业务性质不同,对密钥管理模式提出不同的要求。KMI和PKI也一样,有自己的优点,也有缺点,也有自己适合的环境,也有不适合的环境。能满足业务需求而又最简捷的密钥管理才是最好的密钥管理技术。理论上完美的不一定适用,实用技术都有缺点,因为安全系统是实用系统,是利弊权衡的产物。
下面分析两种密钥管理体制的优缺点和适用范围:
1)从作用特性角度看:KMI具有很好的封闭性,而PKI则具有很好的扩展性。KMI的密钥管理可随时造成各种封闭环境,可作为网络隔离的基本逻辑手段,而PKI适用于各种开放业务,却不适应于封闭的专用业务和保密性业务。
2)从服务功能角度看: KMI提供加密和签名功能,PKI只提供数字签名服务。PKI提供加密服务时应提供秘密恢复功能,否则无法用于公证。PKI提供数字签名服务时,只能提供个人章服务,不能提供专用章服务。
3)从信任逻辑角度看;KMI是集中式的主管方的管理模式,而PKI是靠第三方的管理模式,基于主管方的KMI,为身份鉴别提供直接信任和一级推理信任,但密钥更换不灵活;基于第三方的PKI只能提供一级以下推理信任,,密钥更换非常灵活。
4)从负责性角度看:KMI是单位负责制,而PKI是个人负责的技术体制;KMI适用于保密网、专用网等,PKI则适用于安全责任完全由个人或单方承担,其安全责任不涉及它方利益的场合。
5)从应用角度看:互联网中的专用网,主要处理内部事务,同时要求与外界联系。因此,KMI主内,PKI主外的密钥管理构思是比较合理的。如果一个专用网是与外部没有联系的封闭网,那KMI就足够。如果一个专用网可以与外部联系,那么要同时具备两种密钥管理体制,至少KMI要支持PKI。如果是开放网业务,则可以用PKI处理,也可以人为设定边界的特大虚拟专用网的SPK技术(种子化公钥)处理,如一个国家范围内构成大的专网。
三、SDK技术
根据美国国防部的KMI和PKI发展动向看,这两者的差别越来越小。KMI往PKI方向发展,而PKI越来越带有KMI的性质。PKI解决了密钥的规模化,但仍没有解决不依赖秘密通道的问题,身份认证过程(注册)还是用面对面的物理通道来解决。一旦存在秘密通道和物理通道,本可以减少很多不必要的麻烦,但PKI没有这样做,将很多麻烦留给后面的应用中,这是很大的逻辑上的矛盾。
研究表明任何有信任要求的安全系统都是有边界的(封闭性),而且是有中心的。一旦承认有边界、有中心、存在秘密通道,那么规模化的密钥管理就可以用简化的方法实现,即可以省掉如CRL、运行协议、LDAP等部件。
目前提出来的种子化公钥(SPK=Seededpublic-key)或种子化双钥(SDK=seededdoublekey)体制有三种。公钥和双钥的算法体制相同,在公钥体制中,密钥的一方要保密,而另一方则公布;在双钥体制中则将两个密钥都作为秘密变量。在PKI体制中,只能用前者,不能用后者。在SPK体制中两者都可以实现。
1.多重公钥(双钥)(LPK/LDK)
多重公钥(双钥)(Lappedpublicordoublekey)用RSA公钥算法实现。1990年提出并实现,如:以2K个公钥种子,实现100万用户的公钥分发。
多重公钥(双钥)有两个缺点,一是将种子私钥以原码形式分发给署名用户;二是层次越多,运算时间越长。
2.组合公钥(双钥)(CPK/CDK)
组合公钥(双钥)(Conbinedpublicordoublekey)用离散对数DLP或椭圆曲线密码ECC实现。因为这两个算法非常类似,算法和协议互相可以模拟,所以只以ECC来说明。
ECC组合公钥(双钥)算法:2000年提出,2001年实现demo,以1K个公钥种子,实现1078用户的公钥。1K个公钥种子可以在网上公布(CPK时),让各用户下载使用;也可以记录在简单媒体中,与私钥和ID卡或CA证书一同发给用户,将私钥和“公钥”一同加密(CDK时),分发给用户使用,因此,公钥的分发变得非常简单而方便。
组合公钥克服了多重公钥的两个缺点,私钥是经组合以后的变量,不暴露种子,公钥的运算几乎不占时间。由此可见种子公钥体制,尤其是椭圆曲线组合公钥(双钥)是电子商务和电子政务中比较理想的密钥管理解决方案。
分享到:
相关推荐
U盘量产工具FLASH量产工具SM3280&3281&3282-AvidiaV0209整合版
java课程期末考试
分布式消息中间件,参考kafka,未完成
修木工施工规范及流程.docx
内容概要:本文详细介绍了VECTOR提供的MICROSAR OBD协议栈解决方案,涵盖了OBD模块、ECU支持、监控功能和服务请求等方面的内容。此外,还讨论了OBD在不同国家和地区的技术标准与法规要求,以及MICROSAR OBD解决方案的优势,如适应不同项目的需求和高度集成于AUTOSAR 4平台。 适合人群:汽车电子工程师、软件开发者、汽车制造商及相关行业从业人员。 使用场景及目标:① 适用于车辆诊断系统的开发和维护;②帮助工程师理解和掌握OBD协议的具体实施方法和应用场景;③ 提供了一个成熟、可扩展的解决方案,用于满足OBD相关标准和法规的要求。 其他说明:本文不仅提供了技术层面的详细解析,还探讨了实际操作过程中可能遇到的问题和解决方案。同时强调了屏蔽信息过载的重要性,提醒工程师保持内心平静,专注做好本职工作。
适用于 Python 的 LINE 消息 API SDK适用于 Python 的 LINE Messaging API 的 SDK。介绍适用于 Python 的 LINE Messaging API SDK 可以轻松使用 LINE Messaging API 开发机器人,您可以在几分钟内创建一个示例机器人。文档请参阅官方 API 文档了解更多信息英语https //developers.line.biz/en/docs/messaging-api/overview/日语https://developers.line.biz/ja/docs/messaging-api/overview/要求Python >= 3.9安装$ pip 安装 line-bot-sdk概要用法from flask import Flask, request, abortfrom linebot.v3 import ( WebhookHandler)from linebot.v3.exceptions import ( InvalidSig
Java字节码工程工具包Javassist 版本 3版权所有 (C) 1999-2023 Shigeru Chiba,保留所有权利。Javassist(JAVA 编程助手)使 Java 字节码操作变得简单。它是一个用于编辑 Java 字节码的类库它使 Java 程序能够在运行时定义新类并在 JVM 加载类文件时对其进行修改。与其他类似的字节码编辑器不同,Javassist 提供两个级别的 API源代码级别和字节码级别。如果用户使用源代码级别 API,他们可以编辑类文件而无需了解 Java 字节码的规范。整个 API 仅使用 Java 语言的词汇表进行设计。您甚至可以以源文本的形式指定插入的字节码Javassist 会即时编译它。另一方面,字节码级别 API 允许用户像其他编辑器一样直接编辑类文件。该软件根据 Mozilla 公共许可证版本 1.1、GNU 宽通用公共许可证版本 2.1 或更高版本或 Apache 许可证版本 2.0 分发。文件README.md 此自述文件。Changes.md 发行说明。License.html 许可证文件。tuto
本项目是基于Python语言开发的西西家居全屋定制系统,旨在为家居行业提供一个高效、智能的定制解决方案。项目涵盖了从客户需求分析、设计方案生成、材料选购到最终订单生成的全过程,力求实现家居定制的数字化和智能化。 在主要功能方面,系统具备强大的客户管理模块,能够详细记录和分析客户的定制需求。设计模块则采用先进的三维建模技术,为客户提供直观、真实的家居设计方案预览。此外,系统还整合了丰富的材料数据库,方便客户根据自身喜好和预算进行材料选择。 框架方面,项目采用了B/S架构,确保了系统的稳定性和可扩展性。后端使用Python的Django框架,前端则结合了HTML、CSS和JavaScript等技术,实现了用户界面的友好和响应速度。 开发此项目的目的,不仅是为了满足家居行业对个性化定制的需求,也为计算机相关专业的学生提供了一个实践和学习的平台,有助于提升他们的实际开发能力。
Javascript 是数字化创新的起点,是语言的基础,也是基本概念。Basecamp JavascriptJavascript 是数字化创新的起点,是语言的基础,也是基本概念。嵌套存储库,可作为启动项下待办事项的实践活动。
已弃用 — Coinbase Python APICoinbase Coinbase API V2的官方 Python 库。重要提示此库当前针对的是 API V2,而 OAuth 客户端需要 V2 权限(即wallet:accounts:read)。如果您仍在使用 API V1,请使用此库的旧版本。特征接近 100% 的测试覆盖率。支持API Key + Secret和OAuth 2身份验证。调用 API 的便捷方法 - 为您打包 JSON!自动将 API 响应解析为相关的 Python 对象。使用IPython时,所有对象都具有可制表完成的方法和属性。安装coinbase可以在PYPI上使用。使用以下命令安装pippip install coinbase或者easy_installeasy_install coinbase该库目前针对 Python 版本 2.7 和 3.4+ 进行了测试。注意此软件包名称过去是指George Sibble维护的非官方 coinbase_python 库。George 慷慨地允许我们使用此软件包
基于RBAC权限控制的基础后台
本项目是基于Python爬虫的网络小说数据分析系统的设计与实现,旨在为计算机相关专业的大学生提供一个实践平台,特别是在毕业设计和项目实战练习方面。项目通过Python强大的网络爬虫技术,从流行的网络小说网站自动抓取数据,包括书籍信息、章节内容、用户评论等。 主要功能涵盖数据采集、数据清洗、数据存储和数据分析。数据采集模块利用Scrapy等爬虫框架高效抓取网页内容;数据清洗模块确保数据的准确性和一致性;数据存储则采用MySQL等数据库系统,便于数据管理和查询;数据分析模块通过Pandas、NumPy等工具进行数据处理和分析,生成多维度的统计报告和可视化图表。 此项目不仅帮助学生掌握Python编程和网络爬虫技术,还能让他们深入了解数据分析的全过程,提升解决实际问题的能力。同时,系统的实现和应用也反映了现代信息技术在文学创作和消费领域的应用价值和潜力。
本项目是一个基于Java的在线日语培训平台的设计与实现,采用SSM框架(Spring+SpringMVC+MyBatis)进行开发,旨在为计算机相关专业的学生提供一个实践和学习的平台,同时也为日语学习者提供一个在线学习的空间。项目中主要功能涵盖了用户管理、课程管理、学习资源上传下载、在线测试与反馈等多个方面。通过该平台,教师能够轻松管理课程内容和学生信息,学生则可以随时随地访问学习资源,参与在线课程和测试,从而提高学习效率和兴趣。 在开发此项目的过程中,我们重点关注了系统的可维护性和可扩展性,确保代码结构清晰,便于后续的功能迭代和优化。此外,通过使用SSM框架,实现了前后端的分离,提高了开发效率和系统的响应速度。该项目不仅能够满足毕设的需求,还能作为Java学习者提升编程能力和实践经验的实用工具。
基于java的机票管理系统设计与实现.docx
该项目为《基于Java实现的数据结构设计源码》,共包含51个文件,主要由46个Java源文件构成,辅以2个文本文件、1个Git忽略文件、1个许可证文件以及1个XML文件,全面涵盖了数据结构设计的核心内容。
绿色食品 水稻生产操作规程.docx
他妈的 Fuck是一款出色的应用程序,其灵感来自@liamosaur 的 推文,它可以纠正以前控制台命令中的错误。The Fuck太慢了吗?试试实验性的即时模式!更多示例➜ apt-get install vimE: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?➜ fucksudo apt-get install vim [enter/↑/↓/ctrl+c][sudo] password for nvbn:Reading package lists... Done...➜ git pushfatal: The current branch master has no upstream branch.To push the current branch and set the remote
全国大学生FPGA创新设计竞赛作品 “泡罩包装药品质量在线检测平台“.zip
桃苗木质量基本要求表.docx
使用 Python 漂亮地打印表格数据,这是一个库和一个命令行实用程序。存储库从 bitbucket.org/astanin/python-tabulate 迁移而来。python-tabulate使用 Python、库和命令行实用程序漂亮地打印表格数据。该库的主要用例是轻松打印小表格只需一个函数调用,格式由数据本身引导为轻量级纯文本标记创作表格数据多种输出格式适合进一步编辑或转换混合文本和数字数据的可读表示智能列对齐、可配置数字格式、小数点对齐安装要安装 Python 库和命令行实用程序,请运行pip install tabulate命令行实用程序将在 Linux 上安装为(例如tabulate)或者在 Windows 上的 Python 安装中安装为(例如)。bin/usr/bintabulate.exeScriptsC:\Python39\Scripts\tabulate.exe您可以考虑仅为当前用户安装该库pip install tabulate --user在这种情况下,命令行实用程序将安装到 ~/.local/bin/tabula