亚洲十八**毛片_亚洲综合影院_五月天精品一区二区三区_久久久噜噜噜久久中文字幕色伊伊 _欧美岛国在线观看_久久国产精品毛片_欧美va在线观看_成人黄网大全在线观看_日韩精品一区二区三区中文_亚洲一二三四区不卡

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

標簽:

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

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區
    昆明西山國家級風景名勝區
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗證碼平臺 理財 WPS下載

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    热色播在线视频| 欧美综合影院| 18av.com视频| 视频在线观看一区| 爽死777影院| 日本va欧美va精品| 国产不卡123| 色狠狠av一区二区三区| 国产精品短视频| 国产精品中文欧美| 激情欧美丁香| 欧美另类69xxxxx| 亚洲精品菠萝久久久久久久| 777精品伊人久久久久大香线蕉| 中文字幕在线播放网址| 亚洲宅男一区| 久久久精品免费观看| 欧美亚洲一区三区| 色偷偷777| 欧美成人精品二区三区99精品| 亚洲免费观看高清完整| 成人国产精品免费| 久久国产精品第一页| 国产精品外国| 日本中文在线一区| 欧美久久精品一级c片| 人人在线97| 亚洲午夜在线电影| 蜜臀av一级做a爰片久久| 国产精品亚洲四区在线观看| 欧美裸体视频| 日韩一区二区三区免费视频| 久久国产精品免费一区二区三区| 999av小视频在线| 欧美视频免费看| 日韩高清电影一区| 日本高清不卡在线观看| 国产激情视频在线观看| 图片小说视频色综合| 成人午夜激情片| 日韩欧美一区二区免费| 黄色小网站在线观看| 未满十八勿进黄网站一区不卡| 中文字幕资源网在线观看免费 | 色系网站成人免费| 极品少妇xxxx偷拍精品少妇| 91丨porny丨国产入口| 亚洲自拍电影| 亚洲天堂黄色| 青青青爽久久午夜综合久久午夜| 久久男人中文字幕资源站| 午夜精品福利一区二区三区蜜桃| 久久午夜羞羞影院免费观看| 亚洲婷婷在线| 综合久久给合久久狠狠狠97色 | 国产91在线视频蝌蚪| 亚洲一区国产一区| 欧美日韩一级视频| 国偷自产视频一区二区久| 久久久久久久久97黄色工厂| 天天射狠狠干| 欧美18hd| 99久久伊人| 免费精品国产的网站免费观看| 欧美xxxx中国| 成人免费看黄yyy456| av大片免费看| 男男gay免费网站| 日韩欧美国产一区二区三区| 欧美电影影音先锋| 欧美刺激脚交jootjob| 日韩精品一区二区三区在线观看| 91精品一区二区三区久久久久久 | 97久久精品一区二区三区的观看方式| 九一国产精品| 国产欧美日韩在线视频| 97涩在线观看视频| 午夜欧美巨大性欧美巨大 | 在线精品小视频| 日韩精品亚洲专区| 亚洲精品网站在线观看| 99精品视频一区| 欧美色图12p| v片在线观看| 国产99久久久国产精品免费看| 欧美日韩精品一区二区三区蜜桃 | 欧美午夜三级| 久久在线视频| 日本丰满少妇一区二区三区| 福利影院在线看| 国产精品久久网站| 99久久婷婷国产综合精品首页| 中文字幕欧美三区| 国内精品久久久久久野外| 亚洲瘦老头同性70tv| 国精产品一区一区三区mba视频| 欧美三区在线视频| 电影91久久久| 一区二区三区四区精品在线视频| 成人亚洲一区二区三区| 岛国精品在线| 欧美福利视频| 激情久久五月天| 在线视频国内自拍亚洲视频| 不卡在线一区二区| 亚洲男人资源| 色老板在线视频一区二区| 亚洲欧洲精品天堂一级| 超鹏97在线| 中文字幕成人在线观看| 日本高清免费不卡视频| 国产毛片av在线| 麻豆国产精品视频| 国产主播福利在线| 成人在线一区| 色综合咪咪久久网| 五月激情综合网| 日韩av首页| 国产婷婷色一区二区三区在线| 国产大学生校花援交在线播放| 欧美久久99| 日韩午夜激情av| 亚洲动漫精品| 色婷婷av一区二区三区大白胸| 日本欧美在线| 亚洲欧洲制服丝袜| 久久r热视频| 久久综合丝袜日本网| caoporn免费在线视频| 精品亚洲免费视频| 男女视频在线观看免费| 奇米色一区二区| 四虎国产精品永远| 日本色综合中文字幕| 完全免费av在线播放| 日韩激情中文字幕| 你懂的好爽在线观看| 裸体在线国模精品偷拍| 色综合成人av| 国产一区二区三区免费看| 91在线看片| 成人av手机在线观看| 成人黄色网址| 国产网红主播福利一区二区| 小草在线视频免费播放| 中文字幕一区二区三区不卡| 台湾佬中文娱乐久久久| 亚洲视频综合在线| 榴莲视频成人app| 日本韩国欧美一区二区三区| 亚洲欧洲av| 欧美一区二区不卡视频| 亚洲精彩视频| 一级黄色在线| 国产河南妇女毛片精品久久久| 日本在线免费看| 国产喂奶挤奶一区二区三区| 欧美电影在线观看网站| 欧美视频在线观看 亚洲欧| 九九免费精品视频在线观看| 精品av久久707| 丝瓜av网站精品一区二区| av小片在线| 国产精品入口麻豆原神| 欧美一区一区| 日韩色视频在线观看| 国产亚洲精品自拍| 免费看a在线观看| 久久久国际精品| 亚洲视频一起| 先锋影院av| 国产一区999| 韩国精品主播一区二区在线观看| 黄色精品一区二区| 欧美暴力喷水在线| 国产三区四区在线观看| 国产精品三级视频| 国产欧美亚洲精品a| 天海翼一区二区三区四区在线观看| 九一九一国产精品| 欧美一区国产| 91精品国产综合久久蜜臀| 亚洲视频大全| 国产一线二线在线观看 | 欧洲亚洲精品久久久久| 91麻豆精品91久久久久久清纯| 丝袜美腿亚洲一区二区图片| 亚洲女同志freevdieo| 欧美视频在线观看一区二区| 99av国产精品欲麻豆| 激情成人四房播| 天天色综合成人网| 99视频在线精品国自产拍免费观看| 麻豆影视国产在线观看| 亚洲va韩国va欧美va精品| 欧美特黄一级| 中文一区一区三区高中清不卡免费| 色成人在线视频| 久久aⅴ国产欧美74aaa| 国产精品久久久久久久久久辛辛 |