坏设计的例子:挑战认证
一个合作公司,给出了一个挑战认证的设计,需要我在客户端实现。这个设计真是太烂了。给他们提建议了他们也不理,很不爽。这里写下这种设计,算是一个反面教材吧。
图1
这就是协议本身,正确的设计应该是这样的
图2
或者
图3
为什么图1中连Passphrase都没有?在该设计的上下文环境中,Passhprase用于计算Serialnum,而不参与协议交互!如果是这样的话,Server能够用相同的算法计算Serialnum也还说得过去,但是事实上是没有,并且这个Serialnum还同时充当了今后的授权ticket! 该设计真的让我恶心到极点!