140 likes | 283 Views
Jason Cody Hamilton Turner. Sysecure: A Pidgin plug-in for symmetric encryption. Outline. Introduction System Design General API Security Features SySecure 1.0 Challenges Conclusions. Introduction.
E N D
Jason Cody Hamilton Turner Sysecure:A Pidgin plug-in forsymmetricencryption
Outline • Introduction • System Design • General • API • Security Features • SySecure 1.0 • Challenges • Conclusions
Introduction • Implement a symmetric key encryption plugin for use with Pidgin, a universal chat client. • Phase I: Enable symmetric encryption • Phase II: Enable symmetric encryption for sessions and distribute session keys using public key encryption • SySecure 1.0 : Currently does both* • *SySecure 1.1: full security features
Unencrypted Msg Encrypted Msg
System Design: General Pidgin Signals GTK_UI SySecure Rcv Msg User Interface Send Msg Encrypt Msg_Handler Decrypt Public_Key Session_Key Manages pub keys Generation Encryption Decryption
System Components: API • libpurple • Core IM library • Pidgin • Pidgin interface • GTK+ • User interface • Mozilla NSS • Network Security Suite
System Design: Security Sender ID --Acquired from conversation window --Session Key: 128bit key --MSG is plaintext --Digital Signature is a hash of the message encrypted with the sender’s public key E(PK, Session Key) MSG E(PR, H(MSG)) Public Key --RSA Public Key, created on initialization of first conversation and stored. *Note: This is a connectionless, application protocol similar in function to PGP (except there is no data compression—yet)
System Design: Security Sender ID E(PK, Session Key) MSG --MSG and Hash are encrypted using AES in CBC mode then converted to ASCII code for transmission E(PR, H(MSG)) Public Key *Note: This is a connectionless, application protocol similar in function to PGP (except there is no data compression—yet)
System Design: Security Sender ID On receipt, the receiver gets the sender’s ID from the Pidgin The receiver decrypts the session key using their private key Session Key E(PK, Session Key) MSG MSG Use the session key to decrypt the MSG and retrieve the encrypted hash E(PR, H(MSG)) E(PR, H(MSG)) Public Key *Note: This is a connectionless, application protocol similar in function to PGP (except there is no data compression—yet)
System Design: Security Sender ID Session Key Take a hash and compare it to the received hash. If equal, accept message MSG Use the sender public key to decrypt the hash H(MSG) E(PR, H(MSG)) Use the Sender ID to retrieve the public key of the sender Public Key *Note: This is a connectionless, application protocol similar in function to PGP (except there is no data compression—yet)
Plugins for Pidgin • Once compiled Plugins are just dlls • “Install” Sysecure by dropping the dll in the plugin directory • It will then appear in the plugin selection window
Challenges • Requires direct interface with: • Pidgin • Libpurple • GTK+ • Mozilla NSS • Debugging and IM – Lockout • (i.e. Yahoo! will lock you out if you log in/out to frequently) • Memory leak detection • Debugging plugin code • Only way to debug is to run it
Way Ahead… • Hashing and Public Key File I/O still in development • Update user interface to easily distinguish between encryption/decryption mode • Extend support to file transfer
Questions? Download Pidgin at: http://www.pidgin.im