首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端加密软件的开发过程

客户端加密软件的开发过程
EN

Cryptography用户
提问于 2016-12-06 08:05:31
回答 1查看 298关注 0票数 -1

我希望研究开发加密软件背后的过程。我特别感兴趣的是从系统分析( Systems,SA)的角度来看待软件过程。经过一些广泛而详尽的搜索后,我一直无法找到讨论加密软件设计策略、方法、用户启发等问题的来源。我尝试了我能想到的、至今仍能想到的谷歌搜索词的每一种可能组合,但并不完全是我想要的。也许这是寻找这些信息的错误方法,但我认为这可能会提供一些急需的洞察力。

具体问题包括:

  • 哪一种方法与加密软件设计的效果很好?瀑布还是敏捷?
  • 开发过程的不同阶段是什么?
  • 是否有任何与加密算法设计有关的行业标准?

任何正确方向的帮助或指导都将不胜感激。

EN

回答 1

Cryptography用户

发布于 2016-12-06 13:20:44

这个问题本身没有很好的表述:密码算法设计和大多数科学过程一样,是一个从理论问题(一组所需的安全保证)中寻找理论解(算法)的过程,然后必须证明它是该问题的适当解决方案(安全证明),只有在代码中才能实现。做这种研究的方法已经尝试过很多次,但是我不知道有什么好的结果。就像大多数硬科学一样,它是思考,写公式,尝试和重新尝试,渐进地改进不是一些外在的对象,而是作者对这个主题的理解,最后,在第N次尝试之后,它转化为加密的声音算法。或作者似乎是一个,但还没有被其他人证明错误(见施耐尔定律)。

但是,如果您离细节足够远,它将与传统的瀑布过程有一些相似之处,因为:

  • 一开始。对算法实现和算法本身有很强的形式化要求,提出一种解决方案/算法/算法叠加(密码系统)可以被认为是“编写技术规范”。然而,虽然在软件规范和现实中可能有一点不匹配,规范被认为是一种“通用的指导文件”,但在密码学规范的重要性方面,实际上是90%的工作。当你有正确的算法、正确的要求和正确的证明时,编写正确的密码代码就不那么困难了,而如果你没有正确的算法和证明,则是毫无意义的。
  • 实现。当正确地描述算法时,它就会以一种典型的瀑布方式实现:没有空间将事情分解为迭代改进(这是成功的敏捷过程的先决条件)。
  • 整合。然而,围绕核心密码编写集成层可能是迭代过程,尽管形式接受标准比软件开发中的更难接受(您无法“几乎”完成,您要么通过测试/校对,要么不通过),过程本身很容易被分解为sprint,等等。

认为这是一个人的私人意见,他参与了大量的应用密码研究,设计和开发,但从来没有提出一个基本的算法自己(因为见Schneier定律)。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/42098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档