99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

COMP3334代做、SQL設計編程代寫

時間:2024-04-09  來源:合肥網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簽證的條件)
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
    合肥機場巴士2號線
    合肥機場巴士2號線
    合肥機場巴士1號線
    合肥機場巴士1號線
  • 短信驗證碼 豆包 幣安下載 AI生圖 目錄網

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

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          亚洲欧美日韩一区二区| 亚洲一区二区三区精品在线观看| 精品成人在线| 狠狠色狠狠色综合日日小说| 韩国视频理论视频久久| 国产一级一区二区| 亚洲激情欧美| 国产精品99久久久久久久女警 | 欧美日韩色综合| 国产精品高潮呻吟久久av无限| 国产精品久久福利| 国产午夜精品一区二区三区欧美 | 亚洲日本成人网| 99视频国产精品免费观看| 亚洲一区二区三区在线观看视频| 欧美一区二区视频网站| 欧美一区二区三区四区在线观看| 久久久精品五月天| 欧美视频不卡中文| 国产日韩一区二区三区| 亚洲精品日韩在线观看| 亚洲欧美日韩精品久久久久| 久久国产婷婷国产香蕉| 欧美fxxxxxx另类| 国产精品久久久久久亚洲调教 | 欧美日韩国产在线看| 国产精品一区免费视频| 亚洲国产精品一区二区www在线| 99国产精品国产精品久久| 亚洲色诱最新| 欧美www在线| 国产欧美精品日韩区二区麻豆天美| 精品成人在线视频| 亚洲欧美日韩在线播放| 欧美成人精精品一区二区频| 国产精品永久免费视频| 99精品黄色片免费大全| 久久综合久久综合久久综合| 国产精品日日做人人爱| 9l视频自拍蝌蚪9l视频成人| 久久久噜噜噜久久中文字免| 欧美日韩精品欧美日韩精品一 | 免费在线观看精品| 国产日韩精品一区二区浪潮av| 91久久夜色精品国产九色| 羞羞漫画18久久大片| 欧美巨乳在线观看| 亚洲高清久久| 久久久亚洲影院你懂的| 国产欧美日韩亚洲一区二区三区| 妖精成人www高清在线观看| 久久蜜臀精品av| 黄色成人在线网址| 欧美在线观看你懂的| 国产精品激情电影| 亚洲专区欧美专区| 国产精品日韩电影| 午夜精品福利在线观看| 国产乱码精品一区二区三区av| 亚洲无限av看| 国产精品美女久久久| 亚洲一区二区在线播放| 欧美色另类天堂2015| 亚洲视频在线一区观看| 欧美日韩www| 亚洲一区自拍| 国产欧美精品日韩精品| 欧美在线观看视频一区二区三区| 国产三级欧美三级日产三级99| 性色av一区二区三区在线观看 | 欧美视频日韩视频| 亚洲一区二区精品| 国产日韩欧美在线一区| 久久精品一区四区| 亚洲第一区中文99精品| 欧美经典一区二区三区| 国产精品99久久99久久久二8| 欧美日本免费| 亚洲宅男天堂在线观看无病毒| 国产精品亚洲一区| 久久久夜精品| 日韩亚洲欧美成人| 国产精品久久福利| 久久精品视频一| 亚洲国产精品激情在线观看| 欧美了一区在线观看| 亚洲女爱视频在线| 国产亚洲激情在线| 女人色偷偷aa久久天堂| 亚洲天堂第二页| 国内精品久久久久久影视8| 美女主播一区| 99精品热6080yy久久 | 欧美精品国产精品| 亚洲一区二区在线免费观看| 国产自产女人91一区在线观看| 牛牛精品成人免费视频| 中文网丁香综合网| 国产综合av| 欧美日韩视频一区二区三区| 欧美一级淫片播放口| 91久久夜色精品国产九色| 国产欧美日本| 欧美精品在线观看播放| 久久av红桃一区二区小说| 亚洲精品乱码久久久久| 国内精品久久国产| 国产精品va在线播放我和闺蜜| 久久免费视频在线| 亚洲欧美电影院| 亚洲精品一区二区三区蜜桃久| 国产亚洲欧洲997久久综合| 欧美日韩一卡二卡| 欧美日韩直播| 久久国产精品久久久| 99国产精品99久久久久久| 国产一区再线| 国产日韩精品入口| 国产精品第一区| 欧美精品一区二区三区视频| 亚洲欧美不卡| 日韩网站在线| 亚洲成色www8888| 国产精品久久网| 欧美成人一品| 久久精品女人的天堂av| 亚洲一区区二区| 一区二区三区国产精品| 亚洲欧洲日韩女同| 亚洲国产导航| 在线观看日韩专区| 国产日韩在线看片| 国产香蕉久久精品综合网| 国产精品色婷婷| 国产精品国产馆在线真实露脸| 欧美国产1区2区| 欧美大片免费观看| 欧美成人在线网站| 欧美成人a∨高清免费观看| 麻豆视频一区二区| 欧美第一黄色网| 欧美二区在线观看| 麻豆精品在线观看| 欧美激情免费观看| 欧美日韩国产色站一区二区三区| 美女脱光内衣内裤视频久久影院 | 久久精品国产久精国产一老狼| 午夜精品久久久久久久男人的天堂 | 亚洲欧美资源在线| 亚洲综合视频1区| 欧美亚洲网站| 欧美在线视频观看| 久久久久久久999精品视频| 久久久精品五月天| 欧美国产综合一区二区| 欧美激情精品久久久六区热门| 欧美日韩国产高清视频| 欧美午夜一区| 国产日韩一区| 亚洲国产视频直播| 亚洲视频一区二区| 久久爱www| 免费观看日韩av| 国产精品狠色婷| 狠狠色狠狠色综合| 亚洲免费观看高清完整版在线观看熊 | 欧美日韩1区2区| 国产视频欧美视频| 最新亚洲电影| 欧美一区国产一区| 欧美日本精品| 国产亚洲成av人片在线观看桃 | 欧美日韩亚洲一区二区三区在线观看 | 米奇777在线欧美播放| 欧美视频精品一区| 在线看国产一区| 亚洲欧美国产日韩天堂区| 蜜桃av一区二区三区| 国产精品久久久久影院亚瑟| 在线看视频不卡| 午夜精品久久久久影视| 欧美精品国产| 激情一区二区三区| 亚洲欧美日韩中文在线制服| 牛夜精品久久久久久久99黑人| 国产精品一区免费视频| 99在线精品视频在线观看| 久久久久免费| 国产精品亚洲片夜色在线| 亚洲精品欧美激情| 久久综合狠狠| 国产精品制服诱惑| 中文亚洲免费| 欧美日韩成人一区二区| 亚洲国产成人porn| 久久亚洲电影| 伊人精品久久久久7777| 欧美在线观看一区二区| 国产精品美女在线| 亚洲一区二区三区在线看|