狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

COMP3334代做、代寫Python程序語言
COMP3334代做、代寫Python程序語言

時間:2024-04-03  來源:  作者: 我要糾錯



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 = 90 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:WindowsSystem32driversetchosts
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

標(biāo)簽:

掃一掃在手機打開當(dāng)前頁
  • 上一篇:COMP 330代做、Python設(shè)計程序代寫
  • 下一篇: CISC3025代寫、代做c++,Java程序設(shè)計
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗證碼平臺 幣安官網(wǎng)下載 歐冠直播 WPS下載

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

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

    狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线
  • <dl id="akume"></dl>
  • <noscript id="akume"><object id="akume"></object></noscript>
  • <nav id="akume"><dl id="akume"></dl></nav>
  • <rt id="akume"></rt>
    <dl id="akume"><acronym id="akume"></acronym></dl><dl id="akume"><xmp id="akume"></xmp></dl>
    午夜在线视频免费观看| 成人免费视频久久| 国产肉体ⅹxxx137大胆| 亚洲天堂第一区| 日韩网站在线免费观看| 91成人综合网| 看av免费毛片手机播放| 精品免费国产一区二区| a天堂资源在线观看| 国产aaa一级片| www.精品在线| 三级av免费看| 国产v片免费观看| 中文字幕av不卡在线| 中文 日韩 欧美| 手机看片一级片| 色呦呦网站入口| 国产网站免费在线观看| 性生活免费在线观看| 日本黄xxxxxxxxx100| 国产精品专区在线| www.久久av.com| 久久男人资源站| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 国产资源在线视频| www欧美激情| 青草青青在线视频| 手机版av在线| 无码专区aaaaaa免费视频| 男操女免费网站| 日本手机在线视频| 国内自拍第二页| 国产男女激情视频| 欧美一级片免费播放| 中文字幕12页| 亚洲精品视频导航| 人妻无码久久一区二区三区免费| 国产精品区在线| 男人的天堂99| 国产二区视频在线| 今天免费高清在线观看国语| 欧美黑人又粗又大又爽免费| www.av蜜桃| 国产精品av免费| 欧洲美女亚洲激情| 91香蕉视频污版| 成年人视频网站免费观看| bt天堂新版中文在线地址| 老司机久久精品| 日韩中文字幕a| 91激情视频在线| 免费高清在线观看免费| 人妻少妇精品久久| 午夜精品久久久久久久99热影院| 免费国产黄色网址| 8x8ⅹ国产精品一区二区二区| 9久久婷婷国产综合精品性色| 欧美激情国产精品日韩| 亚洲欧洲日产国码无码久久99| 今天免费高清在线观看国语| 天美一区二区三区| www.久久com| 熟女熟妇伦久久影院毛片一区二区| www.com污| 亚洲一二三av| 免费看污污视频| www.18av.com| 久久观看最新视频| 精品丰满人妻无套内射| 成人在线观看你懂的| 国产白丝袜美女久久久久| 妺妺窝人体色www在线小说| 久久久久久久久久久久久久国产| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产99久久九九精品无码| 女人扒开屁股爽桶30分钟| 动漫av免费观看| 亚洲18在线看污www麻豆 | 中文字幕亚洲影院| 亚洲免费在线播放视频| 2022中文字幕| 九九九九免费视频| 欧美精品性生活| 成年人网站av| 青草视频在线观看视频| 2022亚洲天堂| 一级片黄色免费| 国产二区视频在线| wwwwwxxxx日本| 成人免费在线网| 99视频在线免费| 9999在线观看| 韩国黄色一级大片| 欧美三级午夜理伦三级| 99中文字幕在线| 日韩avxxx| 亚洲国产精品影视| 六月丁香婷婷在线| 国内av免费观看| 成年网站在线免费观看| 潘金莲一级淫片aaaaaa播放1| 欧美激情第四页| 欧美黄色免费网址| 在线免费视频a| 欧美日韩福利在线| 黄色一级片免费的| www.国产在线视频| 国产探花在线看| 少妇高潮喷水久久久久久久久久| 九九九九九九九九| 色综合手机在线| 蜜臀av无码一区二区三区| 亚洲一区二区福利视频| 一本久道综合色婷婷五月| 无码毛片aaa在线| 日本中文字幕二区| 欧美牲交a欧美牲交aⅴ免费真| 免费观看亚洲视频| 黄色一级片免费播放| 免费在线观看的av网站| 亚洲爆乳无码精品aaa片蜜桃| 久热精品在线播放| 欧美视频免费播放| 免费不卡av在线| 成人午夜免费在线视频| 一区二区三区日韩视频| 天堂av8在线| 天天色综合天天色| 日韩一级片播放| 成人午夜激情av| 欧美日韩激情视频在线观看| 国产乱子伦农村叉叉叉| youjizz.com在线观看| 国产aaa免费视频| 日韩 欧美 视频| 91动漫在线看| 日韩少妇内射免费播放18禁裸乳| 日韩中文在线字幕| 欧美xxxx吸乳| 国产精品久久成人免费观看| 特级西西444www| 国产91av视频在线观看| 日韩欧美中文视频| 97人人爽人人| 99999精品| 偷拍盗摄高潮叫床对白清晰| 色香蕉在线观看| 小泽玛利亚av在线| 肉大捧一出免费观看网站在线播放 | 国产一级不卡视频| 嫩草影院中文字幕| 成年人小视频网站| 欧美在线观看视频免费| 91免费黄视频| 日韩免费高清在线| 天堂av在线8| 久久最新免费视频| 久久这里只有精品18| 国产成人无码a区在线观看视频| 欧美丰满熟妇bbbbbb百度| 波多野结衣作品集| 美女在线视频一区二区| 国产精品久久成人免费观看| 高清无码视频直接看| 无码aⅴ精品一区二区三区浪潮| 日韩久久一级片| 久久精品一卡二卡| 97成人在线观看视频| 小泽玛利亚视频在线观看| 麻豆一区二区三区在线观看| 99在线免费视频观看| 在线观看的毛片| 人人妻人人澡人人爽欧美一区| 国产av无码专区亚洲精品| 国内国产精品天干天干| 亚洲高潮无码久久| 污片在线免费看| 女人帮男人橹视频播放| 九九热免费在线观看| 阿v天堂2017| 91高清国产视频| 免费看黄在线看| 亚洲综合123| 国产免费人做人爱午夜视频| 日韩在线视频在线| 中文av一区二区三区| 妞干网在线视频观看| 咪咪色在线视频| 99视频在线免费| 国产精品宾馆在线精品酒店| 久久免费一级片| 天堂av在线8| 色悠悠久久综合网| 无码中文字幕色专区| 亚洲天堂第一区| 三日本三级少妇三级99| 国产精品视频中文字幕| 天堂在线资源视频| 能在线观看的av| 国产一区二区四区|