Secure Chat in C Sharp

  • Posted
  • Proposals 1
  • Remote
  • #12986
  • Expired
Ian Y. has already sent a proposal.
  • 1

Description

Experience Level: Intermediate
I need a Secure C# chat system completed(I have a GUI outline that will be provided to the chosen developer)

I will provide the Security Certificate and the Personal Information Exchange cert file that will allow the user access the secure server.

The system will allow encrypted chat messages to be sent and received via a secure server.


Secure chat client
- Certificates, RSA, AES, SHA1 etc.
- Server will be provided by me

SEE ATTACHED IMAGE for required Program Flow

- Basic project and GUI design provided
- Protocol and cryptographics implementation required
- Error handling required
- Chat message send/receive and display required
2 threads will be necessary: one handling theGUI and user input (also sending chat messages to the server) and the other has to
listen for incoming packets from the server and display
the messages in the chat log.

Server will generate random AES session key
and encrypt it with the clients public key
- Only the client will be able to decrypt it
- Afterwards, the server and client have a
shared secret they will use to encrypt/decrypt
chat messages

Signature creation
When signing the certificates for transport, use the following procedure:
1) Retrieve the RAW bytes of the certificate using the property X509 Certificate 2.RawData
2) Create the signature using the SHA1 algorithm (signature should be 128 bytes long)
3) Create one large byte array: First 128 bytes for the signature and the rest for the RAW certificate

Signature/Certificate verification:
Key exchange
When encrypting decrypting the session key using RSA use the following padding configuration:
rsaCsp.Encrypt(data, false);
rsaCsp.Decrypt(data, false);

Message encryption
When encrypting/decrypting chat messages using AES use the following settings:
aes.Key = sessionKey;
aes.GenerateIV();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;

String encoding
All strings (error messages, chat messages, etc.) have to be ASCII encoded, have a look the class
Encoding.ASCII for details on how to do this!


Signature creation
When signing the certificates for transport, use the following procedure:
1) Retrieve the RAW bytes of the certificate using the property X509Certificate2.RawData
2) Create the signature using the SHA1 algorithm (signature should be 128 bytes long)
3) Create one large byte array: First 128 bytes for the signature and the rest for the RAW
certificate


Signature/Certificate verification:
Key exchange
When encrypting decrypting the session key using RSA use the following padding configuration:
rsaCsp.Encrypt(data, false);
rsaCsp.Decrypt(data, false);


Message encryption
When encrypting/decrypting chat messages using AES use the following settings:
aes.Key = sessionKey;
aes.GenerateIV();
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;


String encoding
All strings (error messages, chat messages, etc.) have to be ASCII encoded, have a look the class
Encoding.ASCII for details on how to do this!

Clarification Board

    There are no clarification messages.