在此作业中,您的任务是使用双棘轮算法(一个流行的密码系统,它为真实世界聊天系统(例如Signal)提供动力的流行密码系统,以实现安全且效率有效的端到端加密聊天客户端。作为一个额外的挑战,假设您生活在一个有政府监视的国家。因此,已发送的所有消息都必须包括政府发行的固定公钥加密的会话密钥。在您的实施中,您将利用我们在课堂上讨论的各种加密原语,尤其是密钥交换,公共密钥加密,数字签名和经过认证的加密。由于在密码学中实现自己的原语是不明智的,因此您应该使用已建立的库:在这种情况下,stan- ford javascript加密库(SJCL)。我们将提供包含基本模板的入门代码,您将能够填写以满足下面所述的功能和安全属性。