加勒比久久综合,国产精品伦一区二区,66精品视频在线观看,一区二区电影

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

COMP3334代做、SQL設(shè)計編程代寫

時間:2024-04-09  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯



COMP3334 Project
End-to-end encrypted chat web application
Semester 2, 2023/2024
Nowadays, web services are the most
common form of applications that users are
exposed to. Web browsers become the most
popular application on a computer that
enables users to access those web services.
Ensuring the security of web services is
essential for the Internet. Moreover, privacy
of communications is an important feature of
modern times. Your job is to implement an
end-to-end encrypted chat web application
and secure various aspects of the website.
Overview
Objectives
1. Adapt a basic chat web application to become a secure E2EE chat web app
2. Comply with some of the requirements in NIST Special Publication 800-63B “Digital
Identity Guidelines – Authentication and Lifecycle Management” for US federal
agencies (which is also a reference for other types of systems)
3. Implement a secure MFA mechanism based on passwords and OTP (or FIDO2)
4. Encrypt communications between two users so that the server does not know the
content of the messages (E2E encryption)
5. Protect communications in transit by configuring a modern TLS deployment
6. Package a docker image of your web app
Requirements (authentication)
1. From NIST Special Publication 800-63B:
1. Comply with all SHALL and SHOULD requirements from sections listed below
2. Use the following authenticators:
• User-chosen Memorized Secret (i.e., password/passphrase)
• and Single-Factor OTP Device (e.g., Google Authenticator)
• or Single-Factor Cryptographic Device (e.g., Yubikey) if you have one
• and Look-Up Secrets (recovery keys)
• Comply with related requirements in §5.1 and §4.2.2
• §5.1.1.2: “Memorized secrets SHALL be salted and hashed using a suitable one-way key
derivation function”
• See our Password Security lecture for an appropriate function
• Memorized Secret Verifiers (§5.1.1.2)
• Choose “Passwords obtained from previous breach corpuses” and refer to
https://haveibeenpwned.com/API/v3#PwnedPasswords for the corpus to check against
• §5.2.8 and §5.2.9 are automatically complied
Requirements (authentication)
1. From NIST Special Publication 800-63B:
3. §5.2.2: Implement rate-limiting mechanisms AND image-based CAPTCHAs
4. Implement new account registration and bind authenticators (OTP/Yubikey and recovery keys) at
the same time
• Optional: provide a way to change authenticators after account registration
5. §7.1: Implement proper session binding requirements
6. Exceptions:
• OTP authenticators — particularly software-based OTP generators — SHOULD discourage and
SHALL NOT facilitate the cloning of the secret key onto multiple devices.
• Google Authenticator and related apps are OK
Requirements (E2EE chat)
2. Once users are logged in, secure chat messages between two users in a way so that the server cannot
decrypt the messages
1. Use the ECDH key exchange protocol to establish a shared secret between two users
• Leverage the WebCrypto API, see demo https://webkit.org/demos/webcrypto/ecdh.html
• Exchanged information during the key exchange can be sent through the server
• The server is trusted not to modify messages of the key exchange
• Choose P-384 as the underlying curve
2. Derive two 256-bit AES-GCM encryption keys and two 256-bit MAC keys from the shared secret
using HKDF-SHA256
• One key for encryption between user1 to user2, and another one from user2 to user1
• Using WebCrypto API again, see https://developer.mozilla.org/enUS/docs/Web/API/HkdfParams
• The salt should be unique so another key derivation in the future produces different keys, use
for instance a counter starting at 1
• The info parameter should represent the current context (e.g., “CHAT_KEY_USER1to2” for the
key for user1user2, and “CHAT_MAC_USER1to2” for the MAC key for user1user2)
Requirements (E2EE chat)
2. Once users are logged in, secure chat messages between two users in a way so that the server cannot
decrypt the messages
3. Messages will be encrypted using AES in GCM mode
• 96-bit IVs are counters representing the number of messages encrypted with the same key
• Note: GCM does not require unpredictable IVs, but unique IVs
• Send the IV together with the ciphertext to the recipient
• As a recipient, verify that IV𝑖𝑖 > IV𝑖𝑖−1 to prevent replay attacks
• Protect the IV with HMAC-SHA256 using the derived MAC key to prevent the attacker from
choosing IVs
• Associated data should reflect the current context (e.g., “CHAT_MSG_USER1to2”)
• Authentication tags should be 128 bits
4. Store all key material in the HTML5 Local Storage of the browser to be retrieved after the browser
is reopened
5. Display the history of previous messages being exchanged + new messages
• If Local Storage has been cleared, previous messages cannot be decrypted, show warning
Requirements (E2EE chat)
2. Once users are logged in, secure chat messages between two users in a way so that the server cannot
decrypt the messages
6. All symmetric keys and IVs should be re-derived from the shared secret when user clicks on a
“Refresh” button in the chat (not the browser refresh button), using a new salt
• The participant that requests a change should inform the other party with a special message
composed of the last IV that has been used, the string “change”, altogether protected with
the old MAC key AND the new MAC key
• Two different MACs over the message
• The other party should verify the old MAC before processing the message, then derive
new keys and verify again the new MAC before accepting the new keys
• Both parties should show a message “Keys changed” in the chat history
• Old keys should be kept to decrypt older messages when the browser is reopened, you
should identify which set of keys to use for a given message based on the preceding values
sent during the key exchange (i.e., keep track of user public keys)
• Key exchange messages older than a minute should not be considered as a fresh key
exchange to engaged into
Requirements (E2EE chat)
2. Once users are logged in, secure chat messages between two users in a way so that the server cannot
decrypt the messages
7. When the Local Storage is cleared, or when there is no shared secret for a given recipient, the
sender should initiate the ECDH key exchange using a special message and the recipient should
engage in the key exchange even when there had been a shared secret previously established
8. Chat messages should be encoded using UTF-8, and network messages between users should be
formatted in JSON using your own schema (e.g., {“type”:”ECDH”, “key”:”…”}, {“type”:”msg”,
“ciphertext”:”…”, “IV”:”…”, “MAC”:”…”})
9. Use console.log() to log all crypto operations (including key, IV, plaintext, etc.)
• It should be visually obvious that IVs are not reused, keys change when needed (see next
requirements), etc.
10. The chat app should be protected against cross-site request forgery (CSRF), cross-site scripting
(XSS), and SQL injection attacks
Requirements (TLS)
3. Communications should be encrypted in transit using TLS with the following configuration:
• Reuse Mozilla’s “modern” configuration for nginx, and change it as needed:
• https://ssl-config.mozilla.org/
1. TLS version 1.3 only
2. x25519 Elliptic Curve Group only
3. TLS_CHACHA20_POLY1305_SHA256 cipher suite only
4. No OCSP stappling (since you will use a self-signed CA certificate)
5. HSTS for one week
6. TLS certificate requirements:
1. X.509 version 3
2. ECDSA public key over P-384
3. SHA384 as hashing algorithm for signature
4. CA flag (critical): false
5. Key Usage (critical) = Digital Signature
6. Extended Key Usage = Server Authentication
7. Include both Subject Key Identifier and Authority Key Identifier
8. Validity period = ** days
Requirements (TLS)
3. Communications should be encrypted in transit using TLS with the following configuration:
7. The website should be hosted at
https://group-[your-group-number].comp3334.xavier2dc.fr:8443/
• Group #10 will be at group-10.comp3334.xavier2dc.fr
8. All subdomains *.comp3334.xavier2dc.fr will redirect to 127.0.0.1
• You can effectively use “group-X.comp3334.xavier2dc.fr” instead of “localhost”
• If you do not host the docker container on localhost,
add a manual entry in your hosts file
• Linux: /etc/hosts
• Windows: C:\Windows\System**\drivers\etc\hosts
9. Issue the certificate from the given CA certificate and private key
• Use the domain name corresponding to your group
• Domain should appear as both Common Name and Subject Alternative Name
10. The CA certificate is domain-constrained to subdomains of comp3334.xavier2dc.fr, meaning
you can safely trust it on your computer (nobody can generate valid certificates for other
domains)

Simple Chat Demo
1. Deploy the docker container using the following line within the folder that contains the dockercompose.yaml file:
$ sudo docker-compose up -d
2. So far, the chat app works over plain HTTP on port 8080, access it at:
http://group-0.comp3334.xavier2dc.fr:8080
3. Open a new private window of your browser and access the website again
1. Chrome:
2. Firefox:
4. Login as Alice (password: password123) on the first window
5. Login as Bob (password: password456) on the second (private) window
6. Select Bob as contact from Alice’s chat, select Alice as contact from Bob’s chat
7. Send messages each other!
8. When modifying the server-side (app.py) or client-side (login.html, chat.html), simply restart the
docker container, you do not need to rebuild the container:
$ sudo docker restart [you-container-name]-webapp-1
Areas of assessments
1. Explanations of your solution and design [50%]
• Provide list of features/requirements implemented
• Describe how your solution works, especially explain how user passwords are
stored, verified, which libraries do you use, how key materials are derived, how
do you store them, their size, how do you generate the domain certificate, etc.
• Show autonomy and creativity when requirements allow
2. Implementation of your solution & demo [50%]
• Follow proper coding style, write informative comments, give concise and
relevant variable names, respect indentation, stay consistent in style
• Make things work!
Submission
• Submit a ZIP’d file containing:
1. Modified chat app docker-compose stack
• “sudo docker-compose up -d” should work!
• Accessing https://group-X.comp3334.xavier2dc.fr:8443/ should work with
a valid certificate issued by the given CA
• Group number is the one you registered on Blackboard
2. PDF report
3. 8-minute video with a demonstration of your solution
• User registration + new chat with existing user + refresh website & reload chat
4. Statement of individual contributions
• Who did what, how much % of the work does that represent?
• Format will be given to you later
• Deadline for submission is Sunday, April 14 @ 23:59 (hard deadline)
Questions?
Technical questions:
• CUI Bowen bowen.cui@connect.polyu.hk
Administrative questions:
• LYU Xinqi xinqi.lyu@connect.polyu.hk
FAQ
1. Can I use a library?
• Depends, does it replace the whole chat protocol with a better and secure chat?
Then, no. You still need to implement a secure chat protocol.
• Does the library implement part of the requirements (e.g., proper session
management, OTP, hashing algorithm, etc.)? Then, yes.
2. How can I rebuild the docker container if I need to modify, say, the nginx config?
1. docker-compose down -v
2. docker-compose build --no-cache
3. docker-compose up -d
3. How can I debug errors?
• docker logs [your-container]
FAQ
4. How does the web chat application work?
1. It is written in Python using Flask
2. It is running behind the WSGI server Gunicorn
3. Which is running behind the reverse proxy nginx (which should provide TLS)
4. The front-end is written in HTML and Javascript
5. The server app writes messages into a MySQL database
請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp













 

掃一掃在手機打開當前頁
  • 上一篇:Ac.F633代做、Python程序語言代寫
  • 下一篇:菲律賓簽證13c(申請13C簽證的條件)
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務(wù)-企業(yè)/產(chǎn)品研發(fā)/客戶要求/設(shè)計優(yōu)化
    有限元分析 CAE仿真分析服務(wù)-企業(yè)/產(chǎn)品研發(fā)
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計優(yōu)化
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計優(yōu)化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發(fā)動機性能
    挖掘機濾芯提升發(fā)動機性能
    海信羅馬假日洗衣機亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
    海信羅馬假日洗衣機亮相AWE 復(fù)古美學(xué)與現(xiàn)代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 目錄網(wǎng) 排行網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號-3 公安備 42010502001045

    精品国产一区探花在线观看| 精品国产一区二区三区不卡蜜臂| 日韩一级电影| 欧美理论电影大全| 成人看片网站| 日本综合精品一区| 亚洲综合伊人| 久久精品国产精品亚洲精品| 国产精品午夜一区二区三区| 久久激情电影| 日韩欧美精品综合| 日韩不卡免费视频| 97成人超碰| 久久久成人网| 国产精品免费不| 日韩三级成人| 久久青草久久| 久久久久黄色| 热久久免费视频| 精品一区二区三区四区五区| 91久久中文| 亚洲欧洲美洲一区二区三区| sdde在线播放一区二区| 亚洲天堂中文字幕在线观看| 在线成人av观看| 最新日韩在线| 久久精品国产亚洲夜色av网站| 久久久久久亚洲精品美女| 日本欧美一区二区| 狠狠88综合久久久久综合网| 国产精品午夜av| 91成人在线| 国产一二在线播放| 国产精品高潮呻吟久久久久| 国产成人免费视频网站视频社区| 国产一区二区色噜噜| 鲁鲁在线中文| 久久精品亚洲人成影院 | 国产精品一区二区三区av麻 | 日日嗨av一区二区三区四区| 天天躁日日躁狠狠躁欧美| 日韩电影一区二区三区四区| 2019中文亚洲字幕| 欧美日本三区| 国内精品久久久久久久影视蜜臀| 国产日韩欧美一区在线| 久久精品国产99国产精品| 日韩午夜视频在线| 国产91欧美| 欧美在线精品一区| 久久精品一区二区国产| 欧美在线高清| 亚洲国产清纯| 97精品资源在线观看| 国内精品视频| 日韩电影不卡一区| 日本免费一区二区三区视频| 日本在线成人| 国产成人精品福利| 久久九九免费| 自拍视频亚洲| 我要色综合中文字幕| 欧美日韩国产网站| 午夜精品久久久久久久久久蜜桃| 欧美日韩hd| 亚洲激情五月| aa亚洲婷婷| 国产精品videossex| 亚洲精品一区国产| 九色丨蝌蚪丨成人| 激情五月色综合国产精品| 999在线观看精品免费不卡网站| 亚洲一区区二区| 99久久人爽人人添人人澡| 国偷自产av一区二区三区| 精品三级av| 国内成人在线| 色88888久久久久久影院| 91精品国产自产在线观看永久∴| re久久精品视频| 免费成人在线影院| 婷婷综合六月| 欧美区亚洲区| 日韩大胆成人| 久久久久网站| 嫩草成人www欧美| 亚洲最新无码中文字幕久久| 国产精品蜜月aⅴ在线| 综合在线视频| 亚洲1区在线观看| 黑人操亚洲人| 中文字幕在线高清| 麻豆免费精品视频| se01亚洲视频| 日韩国产在线观看| 日韩超碰人人爽人人做人人添| 国产精品黄网站| 狠狠噜噜久久| 肉色欧美久久久久久久免费看| 亚洲人成免费| 精品中文在线| 欧美日韩国产在线一区| 日韩高清欧美| 综合激情一区| 精品香蕉视频| 日本一区二区免费高清| 亚洲主播在线| 亚洲ww精品| 亚洲资源网站| 波多野结衣在线观看一区二区三区| 免费av成人在线| 日韩高清在线观看| av日韩在线播放| 国产亚洲毛片| 美日韩一区二区| 99re热精品视频| 男人的天堂亚洲在线| 另类小说综合欧美亚洲| 欧美成年网站| 久久久久久久欧美精品 | 久久99久久99精品免观看软件| 伊人亚洲精品| 久久精品官网| 天堂av中文在线观看| 亚洲图片小说区| 欧美高清日韩| 久久精品免费看| 国产精品对白久久久久粗| 日本精品黄色| 亚洲品质自拍| 日韩av在线播放中文字幕| 牛夜精品久久久久久久99黑人| 亚洲www啪成人一区二区| 日韩免费成人| 国产精品久久久久久麻豆一区软件 | 999久久久亚洲| 天天综合av| 亚洲深夜福利在线观看| 99成人在线| 亚洲欧洲日韩| 日韩视频中文| 亚洲精品在线二区| 亚洲大全视频| 亚洲日本欧美| 婷婷丁香综合| 国产精品扒开腿做爽爽爽软件| 免费精品国产的网站免费观看| 日韩一区精品| 久久裸体视频| 欧美91在线|欧美| 久久久久国产| 欧美在线1区| 激情丁香综合| 欧美片第1页综合| 欧美日韩精品一本二本三本| 久久精品男女| 欧美日韩国产色综合一二三四| 亚洲精品社区| 午夜亚洲性色福利视频| 国产伦一区二区三区| 99在线精品免费视频九九视| 99精品女人在线观看免费视频| 99国内精品| 国产成人影院| 超碰高清在线| 91嫩草精品| 四虎在线精品| 欧美日韩一区二区三区视频播放| 日韩精品成人一区二区三区| 五月天综合网站| 欧美黄色免费| 日韩影院在线观看| 精品一级视频| 欧美美女被草| 最新精品国产| 亚洲欧洲色图| 日韩av首页| 天天超碰亚洲| 日韩伦理一区二区三区| 女海盗2成人h版中文字幕| 成人婷婷网色偷偷亚洲男人的天堂| 日韩综合久久| 国产美女诱惑一区二区| 久久久久九九精品影院| 成人黄色在线| 亚洲免费播放| 日本在线视频一区二区三区| 成人交换视频| 午夜在线视频观看日韩17c| 久久在线观看| 久久一区激情| 岛国av在线网站| 久久婷婷亚洲| 国产欧美高清| 欧美伊人亚洲伊人色综合动图| 欧美裸体在线版观看完整版| 国产传媒欧美日韩成人精品大片| 亚洲电影有码| 蜜桃av一区| 在线国产欧美|