WebApp Sec mailing list archives
Cryptography and Site Security: Please critique my security idea
From: Robert Paris <rpjava () hotmail com>
Date: 27 Mar 2003 15:05:15 -0000
My company is going to have an application that houses and shares internal documents through an extranet. There has been a concern by the network administrators that even with a firewall, someone might get direct access to the server (housing these documents) whether through hacking or otherwise. If they did, they'd have access to all the documents. So I came up with the following solution, which I'd like some critique on: 1. A symmetric (secret) key ( Key "A" ) is created 2. All files to be managed are encrypted with key "A" 3. Each user is assigned an asymmetric (public-private key pair) key ( Key "B" ) a. The user is assigned this key pair, but NOT given the key. We house the key internally. 4. Key "A" is encrypted separately for each key "B" ( called file "1" ) 5. User is given file "1" 6. The public key for each user's private key is stored on an internal server that is inaccessible from the server and vice versa 7. When the app/web server is started up, the application is in a "turned off" state. This is because no public keys have loaded. There is one page only that is accessible and it is locked to two IPs (both internal). This page allows an authenticated user to upload the public keys in to applciation memory. This must happen after every restart or the site is unusable. 8. The first time a user ever logs in to the site, they must give username, password and upload file "1". This file "1" (after being verified through message digest) is then stored in the user's cookie. After this, they log in with username and password. 9. After user log-in, file "1" is sent to the server, and opened with the proper public key (in memory) and stored in session memory only. During this session, if this user wishes to download a document, this now decrypted key "A" will be used to decrypt the file and send the decrypted stream to the user. The file remains encrypted on the server. As well, the in-memory key "A" is used for encryption when they upload a file. 10. All communication is HTTPS, 128. As well, I am considering putting a lifespan on the private/public key pair that is used to encrypt the symmetric key that is stored (encrypted) in the user's cookie. What I would do (and I don't have this 100% down) is, if the lifespan is past, create a new key once (for that old key) and use that new key to encrypt the symmetric key and save that to their cookie. So even if they gave the original file to someone (along with username and pass), it'd no longer be useful. I'm not 100% sure how to make this work correctly or even if it's a good idea. Please let me know: 1. What are the weaknesses of this architecture? 2. What performance hits will this cause? 3. What are some alternative/better ways to achieve this? Some major concerns/limitations: 1. We must use the browser as the thin client and it may be IE/Netscape or even something else (as long as cookeis and HTTPS 128 are enabled) on windows, linux, unix, mac/osX. 2. Our users will not be willing to do anything more inconvenient than that one time uploading of the encrypted key. And if possible to do less, they'd prefer this. Especially since they'd prefer a way to have it accessible from any computer not just one with the key (although I'm not sure I think that's the best idea)
Current thread:
- Cryptography and Site Security: Please critique my security idea Robert Paris (Mar 27)
- Re: Cryptography and Site Security: Please critique my security idea Jim McGarvey (Mar 27)
- <Possible follow-ups>
- Re: Cryptography and Site Security: Please critique my security idea Mark Reardon (Mar 27)
- RE: Cryptography and Site Security: Please critique my security idea Brass, Phil (ISS Atlanta) (Mar 27)