首页 > 其他分享 >COMP3334项目端到端加密聊天

COMP3334项目端到端加密聊天

时间:2024-04-03 12:55:06浏览次数:19  
标签:加密 COMP3334 密钥 用户 MAC 聊天 端到 消息

OMP3334项目端到端加密聊天

web应用程序2023/2024年第2学期如今,web服务是最重要的用户的常见应用程序形式暴露于。Web浏览器成为计算机上的流行应用程序使用户能够访问这些web服务。确保web服务的安全是对互联网至关重要。此外,隐私的一个重要特征现代。您的工作是实现端到端加密聊天web应用程序以及保护网站的各个方面。概述目标

1.调整一个基本的聊天网络应用程序,使其成为一个安全的E2EE聊天网络应用

2.符合NIST特别出版物800-63B“数字”中的一些要求身份指南——身份验证和生命周期管理”,适用于美国联邦机构(这也是其他类型系统的参考)

3.实现基于密码和OTP(或FIDO2)的安全MFA机制

4.加密两个用户之间的通信,使服务器不知道消息的内容(E2E加密)5.通过配置现代TLS部署来保护传输中的通信6.打包您的网络应用程序的docker图像要求(身份验证)1.来自NIST特别出版物800-63B:

符合以下各节的所有“应”和“宜”要求2.使用以下验证器:用户选择的记忆密码(即密码/密码短语)和单因素OTP设备(例如Google Authenticator)或单因素加密设备(例如Yubikey)(如果您有)和查找机密(恢复密钥)符合§5.1和§4.2.2中的相关要求

§5.1.1.2:“记忆中的秘密应使用合适的单向密钥进行加盐和散列处理推导函数”有关适当的功能,请参阅我们的密码安全讲座记忆秘密验证器(§5.1.1.2)选择“从以前的违规公司获得的密码”,并参考以供语料库检查自动遵守§5.2.8和§5.2.9要求(身份验证).来自NIST特别出版物800-63B:

3.§5.2.2:实施速率限制机制和基于图像的CAPTCHA4.在上实现新的帐户注册和绑定验证器(OTP/Yubikey和恢复密钥)同时可选:提供一种在帐户注册后更改验证器的方法5.§7.1:实施适当的会话约束要求6.例外情况:OTP验证器——尤其是基于软件的OTP生成器——应该劝阻和不得促进将密钥克隆到多个设备上。谷歌验证器和相关应用程序正常要求(E2EE聊天)2.用户登录后,以某种方式保护两个用户之间的聊天消息,使服务器无法解密消息1.使用ECDH密钥交换协议在两个用户之间建立共享秘密利用WebCrypto API,请参阅演示密钥交换过程中交换的信息可以通过服务器发送信任服务器不会修改密钥交换的消息选择P-384作为基础曲线2.从共享秘密中导出两个256位AES-GCM加密密钥和两个256比特MAC密钥使用HKDF-SHA256一个密钥用于在user1到user2之间加密,另一个密钥从user2到user1再次使用WebCrypto API,请参阅https://developer.mozilla.org/enUS/docs/Web/API/HkdfParams盐应该是唯一的,这样将来的另一个密钥派生会产生不同的密钥,使用例如从1开始的计数器info参数应表示当前上下文(例如,的“CHAT_KEY_USER1to2”用户1的密钥user2,“CHAT_MAC_USER1to2”表示user1的MAC密钥user2)要求(E2EE聊天)2.用户登录后,以某种方式保护两个用户之间的聊天消息,使服务器无法解密消息3.消息将在GCM模式下使用AES加密96位IV是表示使用相同密钥加密的消息数量的计数器注意:GCM不需要不可预测的IVs,而是需要独特的IVs将IV和密文一起发送给收件人作为接受者,验证静脉注射>

四、

1以防止重放攻击使用派生的MAC密钥使用HMAC-SHA256保护IV,以防止攻击者选择IVs相关数据应反映当前上下文(例如,“CHAT_MSG_USER1to2”)身份验证标签应为128位4.将所有关键材料存储在浏览器的HTML5本地存储中,以便在浏览器之后检索重新打开5.显示正在交换的先前消息的历史记录+新消息如果本地存储已被清除,则无法解密以前的消息,显示警告要求(E2EE聊天)

2.用户登录后,以某种方式保护两个用户之间的聊天消息,使服务器无法解密消息6.当用户点击聊天中的“刷新”按钮(而不是浏览器刷新按钮),使用新的盐要求更改的参与者应通过特殊信息通知另一方由已使用的最后一个IV组成,字符串“change”,完全受保护旧MAC密钥与新MAC密钥消息上的两个不同MAC另一方应在处理消息之前验证旧MAC,然后导出新密钥,并在接受新密钥之前再次验证新MAC双方应在聊天记录中显示一条消息“密钥已更改”当浏览器重新打开时,应保留旧密钥以解密旧消息应根据前面的值确定要用于给定消息的密钥集在密钥交换期间发送(即,跟踪用户公钥)超过一分钟的密钥交换消息不应被视为新密钥要参与的交换要求(E2EE聊天)2.用户登录后,以某种方式保护两个用户之间的聊天消息,使服务器无法解代  写COMP3334项目端到端加密聊天密消息7.当本地存储被清除时,或者当给定收件人没有共享机密时发送方应使用特殊消息启动ECDH密钥交换,接收方应即使之前已经建立了共享秘密,也要参与密钥交换8.聊天消息应使用UTF-8编码,用户之间的网络消息应为使用您自己的模式(例如,{“type”:“ECDH”、“key”:“…”}、{“type”:“msg”,“密文”:“…”,“IV”:“.”,“MAC”:“..”})9.使用console.log()记录所有加密操作(包括密钥、IV、明文等)从视觉上看,IVs不可重复使用,按键在需要时会发生变化(见下一页要求)等。10.聊天应用程序应防止跨站点请求伪造(CSRF)、跨站点脚本(XSS)和SQL注入攻击要求(TLS)3.通信应在传输过程中使用TLS进行加密,配置如下:重新使用Mozilla的nginx“现代”配置,并根据需要进行更改:https://ssl-config.mozilla.org/1.仅限TLS版本1.32.x25519仅椭圆曲线组3.仅TLS_CHACHA20_POLY1305_SHA256密码套件4.没有OCSP装订(因为您将使用自签名的CA证书)

5.HSTS为期一周6.TLS证书要求:1.X.509版本32.P-384上的ECDSA公钥3.SHA384作为签名的哈希算法4.CA标志(关键):false5.密钥使用(关键)=数字签名6.扩展密钥使用=服务器身份验证7.包括主题密钥标识符和授权密钥标识符8.有效期=90天要求(TLS)3.通信应在传输过程中使用TLS进行加密,配置如下:7.网站应位于https://group-[您的组号].comp3334.xavier2dc.fr:8443/第10组将在Group-10.comp3334.xavier2dc.fr8.所有子域*.comp3334.xavier2dc.fr将重定向到127.0.0.1您可以有效地使用“group-X.comp3334.xavier2dc.fr”而不是“localhost”如果您没有在localhost上托管docker容器,在主机文件中添加手动条目Linux:/etc/主机Windows:C:\Windows\System32\drivers\etc\hosts9.从给定的CA证书和私钥颁发证书使用与您的组对应的域名域名应同时显示为通用名称和使用者备选名称10.CA证书的域限制为comp3334.xavier2dc.fr的子域,意思是你可以在你的计算机上安全地信任它(没有人可以为其他人生成有效的证书域)简单聊天演示1.在包含dockercompose.yaml文件的文件夹中使用以下行部署docker容器:$sudo docker compose up-d2.到目前为止,聊天应用程序在8080端口上通过纯HTTP工作,访问地址:http://group-0.comp3334.xavier2dc.fr:80803.打开浏览器的新私人窗口,然后再次访问网站1.铬:2.Firefox:

4.在第一个窗口中以Alice(密码:password123)的身份登录5.以Bob(密码:password456)的身份登录第二个(私人)窗口6.从Alice聊天中选择Bob作为联系人,从Bob聊天中选择Alice作为联系人7.互相发送消息!8.当修改服务器端(app.py)或客户端(login.html,chat.html)时,只需重新启动docker容器,则不需要重新构建容器:$sudo docker restart[you container name]-webapp-1评估领域1.对您的解决方案和设计的解释[50%]提供实施的功能/要求列表描述您的解决方案是如何工作的,特别是解释用户密码是如何存储、验证、使用哪些库、如何派生关键材质、如何你存储它们吗,它们的大小,你如何生成域

标签:加密,COMP3334,密钥,用户,MAC,聊天,端到,消息
From: https://www.cnblogs.com/meryo/p/18112453

相关文章

  • 深度学习中的端到端理解
     与传统的机器学习相比,深度学习最大的优点恐怕是“端到端”(End-to-End)。 所谓端到端,是指将数据从模型的输入端灌进去,预测结果从模型的输出端输出来,中间无需任何人工介入进行特征工程。 在深度学习之前,将原始数据加工成模型所能接受的数据,往往需要领域专家的介入,进行特......
  • 文件传输加密
    文件传输加密(原理)文章目录文件传输加密(原理)背景介绍加密算法运用算法(非对称加密算法)算法进阶运用(对称加密+非对称加密算法)背景介绍一般的文件传输都是通过用户将文件上传到服务器,然后服务器传输到数据库中保存,当再次需要查阅该文件时只需要在数据库中查找,就......
  • 【图像加密】基于RSA实现灰色、彩色图像加密解密(含秘钥)附Matlab代码
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • php采用aes算法,字符编码utf8,填充模式ECB,填充:ZeroPadding,编码:base64,实现加密
    原文:https://blog.csdn.net/yinxinyue0621/article/details/129813334一、php:三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)(一)常见的三种填充方式:我们知道某些加密算法要求明文需要按一定长度对齐,叫做块大小(BlockSize),比如16字节,那么对于一段任意的数据,加密前需要......
  • https安全性 带给im 消息加密的启发
    大家好,我是蓝胖子,在之前#MYSQL是如何保证binlog和redolog同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现方式之一。今天来看看我们能够从httpsd设计中得到哪些启发可以用于业务系统开发中。https原理分析首先......
  • SM4加密
    org.bouncycastle.jce.provider.BouncyCastleProvider;org.bouncycastle.pqc.math.linearalgebra.ByteUtils;javax.crypto.Cipher;javax.crypto.spec.SecretKeySpec;java.security.Key;java.security.Security;/*入参:str:EPIDEMIC_KEY*/StringENCODING="UTF-......
  • 抖音X-Bogus加密解析(全网最快)
     前言:    想着偷个懒,还是发现有想学习技术的兄弟,商量着把这个抖音的逆向给干一下,这个我都把要补的环境贴出来了,照着写上去不会嘛。有关xb的教学基本随处可见,苦思冥想后,还是暂时出一期教学,我们搞快点!直接一步写到位。                       ......
  • 加密软件VMProtect教程:使用脚本-功能
    VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、BorlandCBuilder、VisualC/C++、VisualBasic(本机)、VirtualPascal和XCode编译器。同时,VMProtect有一个内置的反汇编程序,可以与Windows和MacOSX可执行文件一起使用,并且还可以链接编译器创建的MAP文件,以快速选择......
  • 常见网络数据加密方式
    常见网络数据加密方式1.0单向散列加密这种加密方式的典型是MD5加密,优点:方便存储,损耗低缺点:存在暴力破解的可能散列加密的特点就是从明文到密文的不可映射性,导致我们无法根据加密算法设计出解密算法这种加密的解密方式就是明文到密文,密文有了,就可解密,复杂一点的密文解密可能......
  • CTF中各类加密密文区别
    收集CTF-MISC中常见的密码种类base16字典中包含0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fbase32打印字符大写字母(A-Z)和数字234567base36使用0–9和拉丁字母A–Z表示数字。base58数字、大写字母、小写字母,去除歧义字符0(零)、O(大写字母O)、I(大写字母i)、l......