{"id":15021106,"url":"https://github.com/connectim/android","last_synced_at":"2025-10-27T13:31:01.773Z","repository":{"id":144236069,"uuid":"90132832","full_name":"connectim/Android","owner":"connectim","description":"Connect IM Android Project","archived":false,"fork":false,"pushed_at":"2020-10-01T03:34:55.000Z","size":29870,"stargazers_count":21,"open_issues_count":4,"forks_count":15,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-02-01T05:51:11.062Z","etag":null,"topics":["bitcoin-wallet","connect","encrypted","im","instant-messaging"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/connectim.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-03T09:39:18.000Z","updated_at":"2022-03-21T17:02:17.000Z","dependencies_parsed_at":"2023-07-08T09:35:28.301Z","dependency_job_id":null,"html_url":"https://github.com/connectim/Android","commit_stats":{"total_commits":90,"total_committers":5,"mean_commits":18.0,"dds":0.4111111111111111,"last_synced_commit":"ea5cf66f04b58c33732c04814e1cb3635031f892"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connectim%2FAndroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connectim%2FAndroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connectim%2FAndroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/connectim%2FAndroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/connectim","download_url":"https://codeload.github.com/connectim/Android/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238497711,"owners_count":19482302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin-wallet","connect","encrypted","im","instant-messaging"],"created_at":"2024-09-24T19:56:08.607Z","updated_at":"2025-10-27T13:30:56.692Z","avatar_url":"https://github.com/connectim.png","language":"Java","readme":"\u003cp align=\"center\" \u003e\n  \u003cimg src=\"https://avatars0.githubusercontent.com/u/21214996?v=3\" alt=\"Connect\" title=\"Connect\"\u003e\n\u003c/p\u003e\n\n![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.png?v=103)\n![MIT Licence](https://badges.frapsoft.com/os/mit/mit.png?v=103)\n![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)\n\n[![Appstore](https://camo.githubusercontent.com/3e3f8a72477f8cc617e3e1bcd105a4598ad04706/68747470733a2f2f6d727061746977692e6769746875622e696f2f6170702d6261646765732f61707073746f72652e706e67)](https://itunes.apple.com/app/connect-p2p-encrypted-instant/id1181365735)\n[![Google play](https://camo.githubusercontent.com/878bb7c41c81ec4528a0a6f4cfd6ec470da14f22/68747470733a2f2f6d727061746977692e6769746875622e696f2f6170702d6261646765732f706c617973746f72652e706e67)](https://play.google.com/store/apps/details?id=connect.im)\n\n## Introduction\n\n[Connect](https://www.connect.im/) is an open source point-to-point encryption instant messaging APP.\nYou can use [Connect](https://www.connect.im/) to send texts, voices, pictures, videos and even Bitcoin.\nIn both one-on-one chat and group chat, all the messages including text, picture, voices, video, etc. are sent via the shared key encryption negotiated by both sides of the chat.\nAny third party other than the both sides including the server can't decrypt the messages.\nDifferent from other instant messaging tools provided by other Internet giants, [Connect](https://www.connect.im/) offers a higher level of security and privacy. protection.\nIt protects your chatting contents from being eavesdropped by any third party such as employers and government.\nIt protects your personal data such as telephone numbers and friends from being utilized by any third party such as marketing personnel and advertisers.\nConsidering \"PRISM\" scandal as well as multiple network fraud cases caused by information leakage, each of us should defending \"freedom of speech\" and \"personal privacy”.\nSo [Connect](https://www.connect.im/) is suitable for everyone.\n[Connect](https://www.connect.im/) is available for [android](https://github.com/connectim/Android)\n[Connect](https://www.connect.im/) is available for [Google play](https://play.google.com/store/apps/details?id=connect.im)\n\n## Encryption\n[Connect](https://www.connect.im/) uses advanced and open-source symmetric encryption algorithms to secure both parties' information and the communication between the client and the server, and anyone can authenticate.\nThe end-to-end encrypted communication between both sides of the session as well as the encrypted communication between client-side and server uses the key negotiation method to make double layer encryption, with the steps as below:\n1. Session initiator_A use the agreed ECC (elliptic curve cryptography) locally to generate a pair of key(Public_key_A,Private_key_A) and a 512-bit random number salt, and send the random number “saltA” and “Public_key_A” to receiver_B after AES256-GCM encrypted.\n2. The receiver_B receives “PublicKey_A” and “saltA” after decrypt. then use the same ECC (elliptic curve cryptography) generate a pair of key(Public_Key_B,Private_Key_b) and a 512-bit random number salt, and send the random number “saltB” and “Public_key_B” to initiator_A after AES256-GCM encrypted.\n3. Initiator_A get “saltB” and “Public_key_B”. Then both initiator_A and receiver_B get ECDH_Key\nECDH_Key = ECDH(PrivateKey_A, PublicKey_B) = ECDH(PrivateKey_B, PublicKey_A)\n4. Then the PBKDF2key expansion algorithm to obtain the negotiated key \"K\" by ECDH_KEY and random number salts of both sides.\nShared_key = PBKDF2(HMAC-SHA512, ecdhKey, saltA^saltB, pow(2, n), 256) ，（n=12)\n5. The key agreement is completed, and both sides of the AB erase their session key pairs from their respective memory. (ECDH_Key,PublicKey_A,PublicKey_B)\n6. Sessions following, both sides of the AB encrypt and decrypt messages using 256bit Shared_key and AES-256-GCM algorithm.\n7. The negotiated key is updated when a new session is created each time.\nThe encrypted communication channel established by the above process ensures that communication contents are not leaked under the condition that the network flow is completely monitored. Even if the private key of server-side is mastered by the monitor, the monitor can't decrypt the actual communication contents () according to the private key of server and all network flows, and even can't know the person who is logged in or the side to whom the messages are sent. So this solution has the nature of forward secrecy because the session key pair will be erased by both sides from their respective memories after completion of negotiation.\n\n\n## Document\n* Connnect API  [Ducument](https://www.connect.im/developer)\n* Connnect  [protocol](https://www.connect.im/developer)\n* Connnect  [ptotobuf](https://github.com/connectim/protos)\n\n\n## How to use?\n\n## Referencing\n* [Protobuf](https://github.com/google/protobuf)\n* [Butterknife](https://github.com/JakeWharton/butterknife)\n* [EventBus](https://github.com/greenrobot/EventBus)\n* [GreenDAO](https://github.com/greenrobot/greenDAO)\n* [Gson](https://github.com/google/gson)\n* [Android-Database-Sqlcipher](https://github.com/sqlcipher/android-database-sqlcipher) \n* [LibPhoneNumber](https://github.com/googlei18n/libphonenumber)\n* [Junit4](https://github.com/junit-team/junit4) \n* [Glide](https://github.com/bumptech/glide)\n* [Okhttp](https://github.com/square/okhttp)\n\n## License\n\nMIT License\n\nCopyright (c) 2017 Connect IM\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconnectim%2Fandroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconnectim%2Fandroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconnectim%2Fandroid/lists"}