<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <link>https://chatsecure.org</link>
    <atom:link href="https://chatsecure.org/feed.xml" rel="self" type="application/rss+xml" />
    <description></description>
    <language>en-us</language>
    <pubDate>Tue, 11 Dec 2018 20:15:21 -0800</pubDate>
    <lastBuildDate>Tue, 11 Dec 2018 20:15:21 -0800</lastBuildDate>

    
    
    <item>
      <title>ChatSecure v4.3.6</title>
      <link>https://chatsecure.org/blog/chatsecure-v436/</link>
      <pubDate>Tue, 11 Dec 2018 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v436</guid>
      <description>&lt;h1 id=&quot;chatsecure-v436&quot;&gt;ChatSecure v4.3.6&lt;/h1&gt;

&lt;p&gt;This maintenance release contains an important update to the certificate pinning alert dialog. After updating to v4.3.6 you may see an alert asking you to re-verify your server’s SSL/TLS certificate.&lt;/p&gt;

&lt;p&gt;Previously, the dialog would display &lt;code class=&quot;highlighter-rouge&quot;&gt;✅ Valid&lt;/code&gt; if the certificate was valid for &lt;em&gt;any&lt;/em&gt; domain. Additionally, it was then pinning the certificate to the connected domain (e.g. &lt;code class=&quot;highlighter-rouge&quot;&gt;xmpp.example.com&lt;/code&gt; from the SRV records), and not to the JID domain (e.g. &lt;code class=&quot;highlighter-rouge&quot;&gt;example.com&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;If you are not automatically prompted to re-verify, you should manually re-verify your server’s certificates by going into Settings -&amp;gt; Pinned Certificates, delete the existing entries, and then reconnect.&lt;/p&gt;

&lt;p&gt;Special thanks to Michel Le Bihan, for uncovering the flaw and quickly proposing a fix.&lt;/p&gt;

&lt;h3 id=&quot;release-notes&quot;&gt;Release Notes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Fix security issue in certificate pinning alert dialog, where any valid certificate would show as valid&lt;/li&gt;
  &lt;li&gt;Fix crash when rapidly scrolling through chat history&lt;/li&gt;
  &lt;li&gt;Fix issue where chat history is temporarily blank after sending a message&lt;/li&gt;
  &lt;li&gt;Swift 4.2 / Xcode 10.1&lt;/li&gt;
  &lt;li&gt;Updated 3rd party dependencies&lt;/li&gt;
  &lt;li&gt;Other minor bug fixes&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-iOS/releases/tag/v4.3.6&quot;&gt;Full release notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chatsecure/chatsecure-ios/compare/v4.3.5...v4.3.6&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5 id=&quot;download-the-latest-chatsecure-version-here&quot;&gt;Download the latest ChatSecure version here:&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;https://chatsecure.org/images/appstore.svg&quot; alt=&quot;download chatsecure on the app store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v4.3.0 - OMEMO Group Chat Preview</title>
      <link>https://chatsecure.org/blog/chatsecure-v43-omemo-group-chat-preview/</link>
      <pubDate>Mon, 09 Apr 2018 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v43-omemo-group-chat-preview</guid>
      <description>&lt;h1 id=&quot;chatsecure-v430---omemo-group-chat-preview&quot;&gt;ChatSecure v4.3.0 - OMEMO Group Chat Preview&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/california-sunset.jpg&quot; alt=&quot;California Sunset&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Chat history now automatically synchronizes between your devices - including OMEMO chats! This includes any device using a modern XMPP client that supports Message Archive Management (aka MAM or &lt;a href=&quot;https://xmpp.org/extensions/xep-0313.html&quot;&gt;XEP-0313&lt;/a&gt;). There still may be some rough edges with some configurations (like duplicate messages), but if your server supports MAM, you should be good to go. You’ll also notice that your active group chats are synchronized between devices via support for Group Chat Bookmarks (&lt;a href=&quot;https://xmpp.org/extensions/xep-0048.html&quot;&gt;XEP-0048&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Another big change is preliminary support for OMEMO Group Chats. This still needs some testing and isn’t yet recommended for general use. If you’d like to try it, you must first enable it via the Advanced section of the Settings screen, and then also enable it individually for each group chat in the Members screen. Regardless of the settings you will still be able to receive incoming group OMEMO messages.&lt;/p&gt;

&lt;p&gt;Up next will be a performance and stability release focusing on MAM and OMEMO groups.&lt;/p&gt;

&lt;h3 id=&quot;contributing&quot;&gt;Contributing&lt;/h3&gt;

&lt;p&gt;Thank you to all of the monthly supporters!&lt;/p&gt;

&lt;p&gt;Not a supporter yet? It’s easy! You can start supporting development directly in the app.  &lt;a href=&quot;https://chatsecure.org/blog/sustainable-open-source-starts-with-you/&quot;&gt;Sustainable open source starts with you&lt;/a&gt;! ❤️&lt;/p&gt;

&lt;h5 id=&quot;download-the-latest-chatsecure-version-here&quot;&gt;Download the latest ChatSecure version here:&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;https://chatsecure.org/images/appstore.svg&quot; alt=&quot;download chatsecure on the app store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;release-notes&quot;&gt;Release Notes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Message Archive Management (XEP-0313) - one-to-one and group chat history is now synchronized between multiple devices, if supported by your server.&lt;/li&gt;
  &lt;li&gt;Group Chat Bookmarks (XEP-0048) - Group chats are now bookmarked on your server to allow persistence between devices / installs.&lt;/li&gt;
  &lt;li&gt;OMEMO Group Chat Encryption Preview - This is not yet recommended for general use and is for advanced users only. Must be globally enabled in Advanced Settings as well as individually for each group chat.&lt;/li&gt;
  &lt;li&gt;Improvements to general group chat user experience&lt;/li&gt;
  &lt;li&gt;Bug fixes and performance improvements&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-iOS/releases/tag/v4.3.0&quot;&gt;Full release notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chatsecure/chatsecure-ios/compare/v4.2.1...v4.3.0&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v4.2.0 - Group Chat</title>
      <link>https://chatsecure.org/blog/chatsecure-v42-group-chat/</link>
      <pubDate>Tue, 24 Oct 2017 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v42-group-chat</guid>
      <description>&lt;h1 id=&quot;chatsecure-v420---group-chat&quot;&gt;ChatSecure v4.2.0 - Group Chat&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/california-coast.jpg&quot; alt=&quot;California Coastline&quot; /&gt;&lt;/p&gt;

&lt;p&gt;First of all, thank you to all of the monthly supporters! Your contributions have been a great motivator to keep the release cycle moving along at a regular pace, from master branch, to TestFlight, to App Store. Not a supporter yet? It’s easy! You can start supporting development directly in the app. Remember, &lt;a href=&quot;https://chatsecure.org/blog/sustainable-open-source-starts-with-you/&quot;&gt;sustainable open source starts with you&lt;/a&gt;! ❤️&lt;/p&gt;

&lt;p&gt;This version contains numerous improvements to the existing group chat functionality: unencrypted media transfers (XEP-0363), brand new participant list, and enhanced stability and reliability. There is still a lot of work to be done, but it has stabilized enough for a general release. It was designed with small, private groups in mind, so it hasn’t been tested with very large groups, and “anonymous” groups are currently unsupported.&lt;/p&gt;

&lt;p&gt;Up next is support for &lt;a href=&quot;https://xmpp.org/extensions/xep-0313.html&quot;&gt;XEP-0313: Message Archive Management&lt;/a&gt;, which will allow you to use the same account on multiple devices, and is a prerequisite for OMEMO group chats.&lt;/p&gt;

&lt;h5 id=&quot;download-the-latest-chatsecure-version-here&quot;&gt;Download the latest ChatSecure version here:&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;https://chatsecure.org/images/appstore.svg&quot; alt=&quot;download chatsecure on the app store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;release-notes&quot;&gt;Release Notes&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Improved group chat reliability&lt;/li&gt;
  &lt;li&gt;Media sharing in group chats (unencrypted only)&lt;/li&gt;
  &lt;li&gt;Redesigned group participants view&lt;/li&gt;
  &lt;li&gt;Improve performance of chat view. Thanks @stigger!&lt;/li&gt;
  &lt;li&gt;Bug fixes and refactoring&lt;/li&gt;
  &lt;li&gt;Tor 0.3.0.11&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-iOS/releases/tag/v4.2.0&quot;&gt;Full release notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chatsecure/chatsecure-ios/compare/v4.1.0...v4.2.0&quot;&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v4.1.0 - Media Messaging</title>
      <link>https://chatsecure.org/blog/chatsecure-v41-media-messaging/</link>
      <pubDate>Fri, 30 Jun 2017 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v41-media-messaging</guid>
      <description>&lt;h1 id=&quot;chatsecure-v410---media-messaging&quot;&gt;ChatSecure v4.1.0 - Media Messaging&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/omemo-file-transfer.png&quot; alt=&quot;OMEMO file transfer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This release contains major improvements to how media messages are handled. We’ve added support for both &lt;a href=&quot;https://xmpp.org/extensions/xep-0363.html&quot;&gt;XEP-0363: HTTP Upload&lt;/a&gt; and the &lt;a href=&quot;https://github.com/iNPUTmice/ImageDownloader&quot;&gt;aesgcm:// scheme&lt;/a&gt;, allowing for mobile-friendly asynchronous end-to-end encrypted file transfers.&lt;/p&gt;

&lt;p&gt;Previously we used a rather obscure protocol called &lt;a href=&quot;https://dev.guardianproject.info/projects/gibberbot/wiki/OTRDATA_Specifications&quot;&gt;OTRDATA&lt;/a&gt; that utilized &lt;a href=&quot;https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html&quot;&gt;OTR TLVs&lt;/a&gt; to send arbitrary data through existing OTR sessions. It worked reasonably well… sometimes. It was subject to throttling by XMPP servers, had a lot of encoding overhead, and wouldn’t work unless both parties were online and were in an active OTR session.&lt;/p&gt;

&lt;p&gt;This new file transfer mechanism was designed to work well with OMEMO, and should handle multiple devices and group chats once that work is completed. To see if your server supports XEP-0363, check the “Server Information” section of your account details. If not, contact your server administrator or in the meantime test it out on a server &lt;a href=&quot;https://gultsch.de/compliance_ranked.html&quot;&gt;from this list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Up next will be improvements to group chat, multi-device conversation history, and better reliability of push notifications. If you like what we’re doing, don’t forget that &lt;a href=&quot;https://chatsecure.org/blog/sustainable-open-source-starts-with-you/&quot;&gt;sustainable open source starts with you&lt;/a&gt;! Thank you so much to everyone who has pledged their support! ❤️&lt;/p&gt;

&lt;h5 id=&quot;download-the-latest-chatsecure-version-here&quot;&gt;Download the latest ChatSecure version here:&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;https://chatsecure.org/images/appstore.svg&quot; alt=&quot;download chatsecure on the app store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;whats-new-in-410&quot;&gt;What’s new in 4.1.0&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://xmpp.org/extensions/xep-0363.html&quot;&gt;XEP-0363&lt;/a&gt;: HTTP Upload support for much faster and reliable media messaging. [1]&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://xmpp.org/extensions/xep-0352.html&quot;&gt;XEP-0352&lt;/a&gt;: Client State Indication. Helps reduce network usage when running in the background.&lt;/li&gt;
  &lt;li&gt;End-to-end encryption for file transfers in OMEMO or OTR sessions [2].&lt;/li&gt;
  &lt;li&gt;Inline media previews for incoming URLs. (Optional)&lt;/li&gt;
  &lt;li&gt;Bug fixes and refactoring.&lt;/li&gt;
  &lt;li&gt;Tor 0.3.0.9&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;caveats&quot;&gt;Caveats&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;Your server administrator must enable support for XEP-0363. See mod_http_upload for Prosody [3] and ejabberd [4] for more details.&lt;/li&gt;
  &lt;li&gt;Encrypted file transfer is required in OMEMO/OTR, but has limited compatibility for receiving clients. Users on the other end will receive &lt;code class=&quot;highlighter-rouge&quot;&gt;aesgcm://&lt;/code&gt; links [2].&lt;/li&gt;
  &lt;li&gt;Inline media previews are enabled by default, but can be disabled on a per-account basis. This feature should be disabled if you have extreme privacy concerns or do not trust your contacts. This setting is always disabled for Tor accounts.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Known bug&lt;/strong&gt; related to adding friends and setting up the first OMEMO session. These will be addressed in a future release.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5 id=&quot;references&quot;&gt;References&lt;/h5&gt;

&lt;ol&gt;
  &lt;li&gt;https://xmpp.org/extensions/xep-0363.html&lt;/li&gt;
  &lt;li&gt;https://github.com/iNPUTmice/ImageDownloader&lt;/li&gt;
  &lt;li&gt;https://modules.prosody.im/mod_http_upload.html&lt;/li&gt;
  &lt;li&gt;https://docs.ejabberd.im/admin/configuration/#mod-http-upload&lt;/li&gt;
  &lt;li&gt;https://xmpp.org/extensions/xep-0352.html&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.9…v4.1.0&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v4.0.9 - Sustainable Open Source Starts With You</title>
      <link>https://chatsecure.org/blog/sustainable-open-source-starts-with-you/</link>
      <pubDate>Tue, 23 May 2017 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/sustainable-open-source-starts-with-you</guid>
      <description>&lt;h1 id=&quot;chatsecure-v409---sustainable-open-source-starts-with-you&quot;&gt;ChatSecure v4.0.9 - Sustainable Open Source Starts With You&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/emojis.png&quot; alt=&quot;Coffee Beer Gift Heart Emojis&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The v4.0.9 release marks the beginning of a fundraising experiment to measure the long term viability of user-driven open source privacy software development. ChatSecure has been around for over five(!) years now, and grown from a small hobby project to a full time mission to prevent the centralization of communication.&lt;/p&gt;

&lt;p&gt;This growth wouldn’t have been possible without the generous funding and support of organizations like &lt;a href=&quot;https://guardianproject.info&quot;&gt;The Guardian Project&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/openitp&quot;&gt;OpenITP&lt;/a&gt;, and the &lt;a href=&quot;https://www.opentech.fund&quot;&gt;Open Technology Fund&lt;/a&gt; along the way. The open source privacy software scene would not be nearly as vibrant without grant funding, and &lt;a href=&quot;https://whispersystems.org&quot;&gt;many projects&lt;/a&gt; you’ve &lt;a href=&quot;https://www.torproject.org&quot;&gt;heard of&lt;/a&gt; receive large amounts of funding from similar sources.&lt;/p&gt;

&lt;p&gt;Unfortunately there are large risks with this funding model:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Funders generally do not support ongoing software maintenance. Grants require specific milestones and deliverables.&lt;/li&gt;
  &lt;li&gt;The grant cycle can be very long. It can take over a year and multiple iterations between a concept and secured funding.&lt;/li&gt;
  &lt;li&gt;Even after multiple rounds of negotiation, funders may ultimately decide not to fund your vision.&lt;/li&gt;
  &lt;li&gt;Fundraising is a full time job. For a small team, that means less time can be spent on improving the product.&lt;/li&gt;
  &lt;li&gt;There’s also the &lt;a href=&quot;https://www.opentech.fund/article/update-congress-otfs-fy17-funding&quot;&gt;elephant in the room&lt;/a&gt;. Although “Internet freedom” appropriations may be safe for now, a large chunk of this funding pool could also quickly dry up, leaving many projects scrambling to keep the lights on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other funding models don’t work well either for tools in this space. Venture capital is incapable of funding “privacy software” products without eventually introducing something to monetize you by violating your privacy. The upfront cost of paid App Store builds prevents vulnerable users without reliable access to payment services from downloading the app. Services like Patreon may work for some projects, but most rarely receive enough funds to actually pay anyone for development. Offering white labels and consulting services can also work to fund core development, but it doesn’t scale well and can take a considerable amount of time.&lt;/p&gt;

&lt;h3 id=&quot;️-this-is-for-you&quot;&gt;❤️ This Is For You&lt;/h3&gt;

&lt;p&gt;You, the user, are the reason this project exists. We’ve now put the power of direct funding in your hands.  There are quite a few of you now, and if a relatively small fraction of you can contribute a few bucks a month, you will prove that open source privacy software development can be sustainable.&lt;/p&gt;

&lt;p&gt;You can now show your continued support directly within the app. The current options are ☕️ $2.99/mo, 🍺 $5.99/mo, and 🎁 $19.99/mo. Hopefully these are enough choices for now, and we’re welcome to any feedback or suggestions. If you’re already a supporter, or don’t have the spare cash right now, you can help in other ways like improving a &lt;a href=&quot;http://transifex.com/projects/p/chatsecure/&quot;&gt;translation&lt;/a&gt;, submitting a &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-iOS/issues&quot;&gt;bug report&lt;/a&gt;, or simply spreading the word.&lt;/p&gt;

&lt;p&gt;Thank you so much for your support!&lt;/p&gt;

&lt;h5 id=&quot;download-the-latest-chatsecure-version-here&quot;&gt;Download the latest ChatSecure version here:&lt;/h5&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;https://chatsecure.org/images/appstore.svg&quot; alt=&quot;download chatsecure on the app store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v4.0 - OMEMO and Signal Protocol</title>
      <link>https://chatsecure.org/blog/chatsecure-v4-released/</link>
      <pubDate>Tue, 17 Jan 2017 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v4-released</guid>
      <description>&lt;h1 id=&quot;chatsecure-v40---omemo-and-signal-protocol&quot;&gt;ChatSecure v4.0 - OMEMO and Signal Protocol&lt;/h1&gt;

&lt;p&gt;We’re excited to announce the release of ChatSecure v4.0, our largest step forward in usability since the addition of push messaging six months ago. The most significant new feature is &lt;a href=&quot;https://en.wikipedia.org/wiki/OMEMO&quot;&gt;OMEMO Encryption&lt;/a&gt;, a mobile-friendly encryption scheme pioneered by &lt;a href=&quot;https://conversations.im&quot;&gt;Conversations&lt;/a&gt; that adapts &lt;a href=&quot;https://en.wikipedia.org/wiki/Signal_Protocol&quot;&gt;Signal Protocol&lt;/a&gt; to the XMPP world.&lt;/p&gt;

&lt;p&gt;Using &lt;a href=&quot;https://en.wikipedia.org/wiki/Off-the-Record_Messaging&quot;&gt;OTR&lt;/a&gt; on mobile has always been problematic because it was designed for desktop computers and synchronous conversations. For example, if you don’t have an active OTR session, you can’t start a new secure session if your contact is offline. Even if you do have an OTR session, it can go stale if one of the sides is purged from RAM due to low memory. This can lead to messages that disappear into the ether with no standardized way for the recipient to indicate which message they couldn’t decrypt.&lt;/p&gt;

&lt;p&gt;OMEMO fixes all of these problems, and opens doors to new features that were impossible with OTR, like multi-client support, encrypted group chat, and more reliable file transfers. Multi-client conversations would work particularly well with our planned Desktop client, so we’re excited to add support for these features in  future releases.&lt;/p&gt;

&lt;p&gt;There are some other major changes in this release that improve the user experience, such as the outgoing message queue and enhanced identity management. The message queue automatically negotiates OMEMO and OTR sessions and allows you to resend messages in case of failure.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/v4-profile.png&quot; alt=&quot;Image of Profile View&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The new profile view allows you to view a contact’s OMEMO and OTR fingerprints, change each fingerprint’s trust settings, and modify the default encryption method. We’ve made important changes to the way trust is handled for new contacts by adopting the &lt;a href=&quot;https://en.wikipedia.org/wiki/Trust_on_first_use&quot;&gt;TOFU&lt;/a&gt; or “trust on first use” model. The first time you see OMEMO or OTR fingerprints for a contact, they will appear as trusted and marked with “TOFU” in the user interface. Any subsequent fingerprints will be untrusted and need to be manually verified. In this release you can compare fingerprints out-of-band by pressing on the cell and bringing up the system share dialog, but we plan to streamline the fingerprint comparison process in the future.&lt;/p&gt;

&lt;p&gt;There are &lt;a href=&quot;https://github.com/chatsecure/chatsecure-ios/compare/v3.2.3...v4.0&quot;&gt;hundreds of other changes&lt;/a&gt; under the hood that fix bugs, improve performance, and enhance reliability. On the roadmap for v4.1 and beyond are improvements to group chat, including OMEMO encryption, multi-device chat history synchronization (&lt;a href=&quot;http://xmpp.org/extensions/xep-0313.html&quot;&gt;XEP-0313 MAM&lt;/a&gt;), read receipts (aka chat markers &lt;a href=&quot;http://xmpp.org/extensions/xep-0333.html&quot;&gt;XEP-0333&lt;/a&gt;), improved file transfer, and more.&lt;/p&gt;

&lt;p&gt;We’re excited to see people experience this new frontier for XMPP usability. We will be working with the Zom project to bring OMEMO support to their suite of apps, and we expect other apps will start adopting OMEMO as well.&lt;/p&gt;

&lt;p&gt;Thank you to everyone who helped make this release a reality!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;&lt;img src=&quot;/images/appstore.svg&quot; alt=&quot;Download on the App Store&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;Download ChatSecure on the App Store&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The End of ChatSecure Android</title>
      <link>https://chatsecure.org/blog/chatsecure-android-deprecated/</link>
      <pubDate>Fri, 16 Dec 2016 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-android-deprecated</guid>
      <description>&lt;h1 id=&quot;the-end-of-chatsecure-android&quot;&gt;The End of ChatSecure Android&lt;/h1&gt;

&lt;p&gt;The developers of the Android version have &lt;a href=&quot;https://github.com/zom/Zom-Android&quot;&gt;hard forked the code&lt;/a&gt; and are no longer maintaining the upstream version. If you still use ChatSecure Android you should migrate to another app immediately. For a similar user experience and the best compatibility with the latest features of ChatSecure iOS, we recommend downloading &lt;a href=&quot;https://conversations.im&quot;&gt;Conversations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The development of ChatSecure iOS is unaffected by this change and we will continue to release new features and updates.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure iOS v3.2.3 - XMPP Push</title>
      <link>https://chatsecure.org/blog/chatsecure-v323-xmpp-push/</link>
      <pubDate>Mon, 25 Jul 2016 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v323-xmpp-push</guid>
      <description>&lt;h1 id=&quot;chatsecure-ios-v323---xmpp-push&quot;&gt;ChatSecure iOS v3.2.3 - XMPP Push&lt;/h1&gt;

&lt;p&gt;We’re excited to announce that XMPP push (&lt;a href=&quot;http://xmpp.org/extensions/xep-0357.html&quot;&gt;XEP-0357&lt;/a&gt;) is now available, finally allowing users to receive push messages from any contact. This feature is only available when used with compatible XMPP servers, and requires special modules to be enabled for Prosody (&lt;a href=&quot;https://modules.prosody.im/mod_cloud_notify.html&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;mod_cloud_notify&lt;/code&gt;&lt;/a&gt;) or ejabberd (&lt;a href=&quot;https://github.com/royneary/mod_push&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;mod_push&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Our next release will focus on &lt;a href=&quot;https://conversations.im/omemo/&quot;&gt;OMEMO&lt;/a&gt; support for multi-device asynchronous end-to-end encryption, which will provide huge usability gains over OTR on mobile devices. Thankfully the GPL + App Store licensing issues concerning SignalProtocol have been &lt;a href=&quot;https://whispersystems.org/blog/license-update/&quot;&gt;resolved&lt;/a&gt;. You can try OMEMO today in other apps such as Conversations, Gajim, and Cryptocat.&lt;/p&gt;

&lt;p&gt;v3.2.3 changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;XMPP push for supported servers (XEP-0357)&lt;/li&gt;
  &lt;li&gt;Improved subscription requests UI&lt;/li&gt;
  &lt;li&gt;Basic vCard nickname support&lt;/li&gt;
  &lt;li&gt;Fix issues with missing messages during stale OTR sessions&lt;/li&gt;
  &lt;li&gt;Improved IPv6 support for NAT64/DNS64&lt;/li&gt;
  &lt;li&gt;Fix some issues with presence/availability&lt;/li&gt;
  &lt;li&gt;Added button to view your password&lt;/li&gt;
  &lt;li&gt;Fix issue where message view would appear multiple times&lt;/li&gt;
  &lt;li&gt;Automatically start OTR sessions when contact is online&lt;/li&gt;
  &lt;li&gt;Send error messages back to contact when messages cannot be decrypted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;Download&lt;/a&gt; on the App Store.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure iOS v3.2 - Decentralized Interoperable Push Support</title>
      <link>https://chatsecure.org/blog/chatsecure-v32-push/</link>
      <pubDate>Thu, 14 Apr 2016 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v32-push</guid>
      <description>&lt;h1 id=&quot;chatsecure-ios-v32---decentralized-interoperable-push-support&quot;&gt;ChatSecure iOS v3.2 - Decentralized Interoperable Push Support&lt;/h1&gt;

&lt;p&gt;With the release of &lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure-encrypted-messenger/id464200063&quot;&gt;ChatSecure iOS v3.2&lt;/a&gt;, we have enabled the first phase of a new form of push messaging that is decentralized, interoperable, and reduces identifiable metadata. Users of any app compatible with the &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server/tree/master/docs/v3&quot;&gt;ChatSecure Push protocol&lt;/a&gt; can send push messages across app boundaries, starting with the latest release of ChatSecure iOS and the next version of &lt;a href=&quot;https://zom.im&quot;&gt;Zom Messenger&lt;/a&gt;. These push messages currently contain no content and are simply a way to wake up the receiving client for ~20 seconds.&lt;/p&gt;

&lt;p&gt;Unlike centralized messaging applications like WhatsApp, Signal or Telegram, a core part of our mission is to allow users to connect any XMPP server of their choice and to encourge users to run their own servers. This privacy win also comes with a major drawback for iOS users, because Apple prevents the application from running in the background. The only way push messages can be sent are through servers run by app developers themselves, which presents a problem when trying to support push for any arbitrary XMPP server.&lt;/p&gt;

&lt;h3 id=&quot;example-flow&quot;&gt;Example Flow&lt;/h3&gt;

&lt;p&gt;Alice (&lt;code class=&quot;highlighter-rouge&quot;&gt;alice@example.com&lt;/code&gt;) and Bob (&lt;code class=&quot;highlighter-rouge&quot;&gt;bob@example.com&lt;/code&gt;) are both using the ChatSecure iOS app to communicate via their private XMPP server &lt;code class=&quot;highlighter-rouge&quot;&gt;example.com&lt;/code&gt;. After each OTR session is established, they each send a payload inside the OTR channel that contains a fresh token and their push API endpoint. The token is used by the API endpoint to lookup your device APNS token, and the endpoint parameter is what allows this to work between apps from different developers. Because all of this data is exchanged by the clients themselves, our push server has no idea about the JIDs of Alice or Bob, or where any of the tokens ended up.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/contact-offline.png&quot; alt=&quot;Contact Offline&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The next time Alice opens the app and she wants to talk to Bob, she sees that Bob is offline.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/knock-sent.png&quot; alt=&quot;Knock Sent&quot; /&gt;&lt;/p&gt;

&lt;p&gt;On the chat screen there is now a new button called Knock that has replaced the Send button when the contact is offline (and no text is entered). By pressing Knock, it looks up the token and endpoint that Bob gave her earlier, and sends a HTTP POST to that endpoint with the token.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/contact-online.png&quot; alt=&quot;Contact Online&quot; /&gt;&lt;/p&gt;

&lt;p&gt;About 5 seconds later Bob’s client will wake up in the background and automatically login to his XMPP account.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/knock-received.jpg&quot; alt=&quot;Knock Received&quot; /&gt;&lt;/p&gt;

&lt;p&gt;His device will also receive back the token he gave to Alice, do a local lookup to see that the incoming push is coming from Alice, and show a local notification visibile on the lock screen. We are able to keep the app open for about 20 seconds in the background, which is enough time for Alice to establish a new OTR session and send a few messages.&lt;/p&gt;

&lt;h3 id=&quot;improving-the-ux&quot;&gt;Improving the UX&lt;/h3&gt;

&lt;p&gt;Having a Knock button is not the ideal user experience because it’s a foreign UI concept and not immediately clear how it works. Originally we tried to automatically trigger knock messages, but hit issues with missing messages caused by sending messages to offline contacts, or when in a stale OTR session. Our message pipeline needs to be reworked to handle these cases and ensure that no message ever enters a black hole.&lt;/p&gt;

&lt;p&gt;There is a relatively new way for XMPP servers to interact with app push gateways called &lt;a href=&quot;http://xmpp.org/extensions/xep-0357.html&quot;&gt;XEP-0357&lt;/a&gt; but not very many servers support this extension right now. Our current solution works immediately with any XMPP server as long as you’re both running a ChatSecure Push compatible client. In the future we will roll out client support for XEP-0357 to allow you to receive pushes from any contact, as long as you’re connected to a compatible XMPP server.&lt;/p&gt;

&lt;h3 id=&quot;the-road-ahead&quot;&gt;The Road Ahead&lt;/h3&gt;

&lt;p&gt;Although OTR has proven to be trustworthy over the years, it is showing its age in the face of more modern protocols like &lt;a href=&quot;https://whispersystems.org/blog/signal-inside-and-out/&quot;&gt;SignalProtocol&lt;/a&gt; (formerly known as Axolotl). Originally we wanted to integrate Axolotl/&lt;a href=&quot;https://conversations.im/omemo/&quot;&gt;OMEMO&lt;/a&gt; but we haven’t been able to acquire a license from Open Whisper Systems. The next post will be about our plans, in collaboration with the Conversations team, to implement a revision of OMEMO that supports &lt;a href=&quot;https://matrix.org/git/olm/about/&quot;&gt;Olm&lt;/a&gt; instead of SignalProtocol.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Better XMPP Identifiers - Ed25519 Public Keys and .onions</title>
      <link>https://chatsecure.org/blog/using-ed25519-public-keys-as-identifiers/</link>
      <pubDate>Tue, 08 Dec 2015 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/using-ed25519-public-keys-as-identifiers</guid>
      <description>&lt;h1 id=&quot;better-xmpp-identifiers---ed25519-public-keys-and-onions&quot;&gt;Better XMPP Identifiers - Ed25519 Public Keys and .onions&lt;/h1&gt;

&lt;p&gt;In a future version of ChatSecure I’d like to introduce a human-usable implementation of using entire public keys as identifiers. We are already experimenting with appending a portion of your &lt;a href=&quot;https://en.wikipedia.org/wiki/Off-the-Record_Messaging&quot;&gt;OTR&lt;/a&gt; fingerprint to your &lt;a href=&quot;https://en.wikipedia.org/wiki/XMPP&quot;&gt;XMPP&lt;/a&gt; username, but I’d like to take it a step further using some of the latest advances in &lt;a href=&quot;https://en.wikipedia.org/wiki/Elliptic_curve_cryptography&quot;&gt;ECC&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;the-current-state-of-xmpp-identifiers&quot;&gt;The Current State of XMPP Identifiers&lt;/h3&gt;

&lt;p&gt;Right now identifiers for XMPP-based apps (&lt;a href=&quot;http://xmpp.org/extensions/xep-0029.html&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;JID&lt;/code&gt;&lt;/a&gt;) are currently in the form:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;username@domain.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Where whichever person who first registered &lt;code class=&quot;highlighter-rouge&quot;&gt;username&lt;/code&gt; on &lt;code class=&quot;highlighter-rouge&quot;&gt;domain.com&lt;/code&gt; owns that identifier, similar to an email address. Even this basic level of complexity can be confounding for most non-technical people I’ve come across, so we’ve been doing what we can in our UX to relieve this complexity.&lt;/p&gt;

&lt;p&gt;One of the main ways we’ve been simplifying things has been to implement QR-code and URL-based invite links of the form:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://chatsecure.org/i/#&amp;lt;base64 encoded JID + OTR fingerprint&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Which shows invited contacts links to download the apps if they don’t have them, or directly opens ChatSecure to the add contact screen (with a somewhat-verified OTR key!).&lt;/p&gt;

&lt;h3 id=&quot;ed25519-public-key-cryptography&quot;&gt;Ed25519 Public Key Cryptography&lt;/h3&gt;

&lt;p&gt;The great thing about &lt;a href=&quot;https://en.wikipedia.org/wiki/EdDSA&quot;&gt;Ed25519&lt;/a&gt; signing keys, is that that the whole public key can fit into 32-bytes. That’s equivalent to 32 ASCII characters (between 0-255). To allow for a more seamless representation (non-alphanumeric ASCII characters can be a bummer), you can use hex, for example:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;7388a1238a0865a74d721861356d3f7869c598494ff906a52e15338585a02c00
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This is 32-bytes of random data from &lt;a href=&quot;https://www.random.org&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;random.org&lt;/code&gt;&lt;/a&gt;, which in theory could represent an entire Ed25519 public key. Using other encodings such as &lt;a href=&quot;https://en.wikipedia.org/wiki/Base64&quot;&gt;Base64&lt;/a&gt; can result in an event shorter output:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;c4ihI4oIZadNchhhNW0/eGnFmElP+QalLhUzhYWgLAA
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;But unfortunately XMPP JIDs don’t play well with Base64 because JIDs are case-insensitive. We can, however, use &lt;a href=&quot;https://en.wikipedia.org/wiki/Base32&quot;&gt;Base32&lt;/a&gt; to shrink the size while still maintaining compatibility with XMPP JIDs:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ooekci4kbbs2otlsdbqtk3j7pbu4lgcjj74qnjjocuzylbnafqaa
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now that we have our username portion, let’s solve the other big problem with XMPP JIDs… the server.&lt;/p&gt;

&lt;h3 id=&quot;lets-get-rid-of-xmpp-servers&quot;&gt;Let’s Get Rid of XMPP Servers&lt;/h3&gt;

&lt;p&gt;Although there are some trustworthy XMPP servers out there, you can never be more secure than hosting your server yourself on hardware you own. Traditionally this has been a problem for non-technical users. Asking them to SSH into their headless Raspberry Pi to &lt;code class=&quot;highlighter-rouge&quot;&gt;apt-get install prosody&lt;/code&gt; won’t get you the results you’d want.&lt;/p&gt;

&lt;p&gt;For technical users, on the other hand, one of the main problems has often been the lack of a &lt;a href=&quot;https://en.wikipedia.org/wiki/IP_address#Public_addresses&quot;&gt;publicly reachable&lt;/a&gt; IP address. Fortunately by utilizing Tor &lt;a href=&quot;https://en.wikipedia.org/wiki/.onion&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt;&lt;/a&gt; services, you can have a reachable address from &lt;em&gt;anywhere&lt;/em&gt;, even behind carrier-grade NAT (like on a cellphone)!&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; addresses are an 80-bit number represented in base32 and look like this:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;wlcpmruglhxp6quz.onion
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The above example is the &lt;code class=&quot;highlighter-rouge&quot;&gt;dukgo.com&lt;/code&gt; XMPP server’s &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; address.&lt;/p&gt;

&lt;h3 id=&quot;similar-work&quot;&gt;Similar Work&lt;/h3&gt;

&lt;p&gt;A similar approach to the &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; endpoints has been taken by the &lt;a href=&quot;https://en.wikipedia.org/wiki/Ricochet_(software)&quot;&gt;Ricochet&lt;/a&gt; project.&lt;/p&gt;

&lt;p&gt;They replace both the username and server with the &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; address itself. The main drawback (or feature, depending on your viewpoint) is that it’s a ground-up rewrite of a full stack chat client, which means no interoperability for existing XMPP clients.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://pond.imperialviolet.org&quot;&gt;Pond&lt;/a&gt; also operates in a similar way as far as &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; addresses, but as far as I know there’s still only a rudimentary GUI and command line client, which limits its usefulness to very technical users.&lt;/p&gt;

&lt;p&gt;My approach would be completely backwards compatible with existing XMPP clients, where you could use the same Ed25519 identifier on multiple servers (including your own &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt;) to ensure reachability by all of your contacts, regardless of their client of choice.&lt;/p&gt;

&lt;h3 id=&quot;a-glorious-dawn&quot;&gt;A Glorious Dawn&lt;/h3&gt;

&lt;p&gt;Using this new public key identifier, you can sign your other cryptographic identities and identifiers, and upload the results to &lt;a href=&quot;https://keybase.io&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;keybase.io&lt;/code&gt;&lt;/a&gt;, or wherever. New contacts can automatically verify your identity, and can use our new QR-code invites and links to avoid typing these long strings.&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ooekci4kbbs2otlsdbqtk3j7pbu4lgcjj74qnjjocuzylbnafqaa@wlcpmruglhxp6quz.onion
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This above example could be your fully valid JID containing your public key and personal &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; address. Because no human would ever type that in, we can share it in link form:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://chatsecure.org/i/#b29la2NpNGtiYnMyb3Rsc2RicXRrM2o3cGJ1NGxnY2pqNzRxbmpqb2N1enlsYm5hZnFhYUB3bGNwbXJ1Z2xoeHA2cXV6Lm9uaW9u&quot;&gt;Invite Link URL&lt;/a&gt; (Link will 404, server/client support still in progress)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;ooekci4kbbs2otlsdbqtk3j7pbu4lgcjj74qnjjocuzylbnafqaa@wlcpmruglhxp6quz.onion&quot;&gt;XMPP URI&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;QR Code &lt;img src=&quot;/images/invite_qrcode_sample.jpg&quot; alt=&quot;QR Code Example&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can still have a human-readable username in your &lt;a href=&quot;http://xmpp.org/extensions/xep-0054.html&quot;&gt;XMPP vCard&lt;/a&gt;, so you can choose whatever ‘username’ you’d like without creating a collision. You can also upload signatures of your &lt;a href=&quot;https://en.wikipedia.org/wiki/Off-the-Record_Messaging&quot;&gt;OTR&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Pretty_Good_Privacy#Design&quot;&gt;PGP&lt;/a&gt;, or &lt;a href=&quot;https://github.com/WhisperSystems/Signal-Android/wiki/ProtocolV2&quot;&gt;Axolotl&lt;/a&gt; identities (using this same Ed25519 key) to your vCard to help contacts auto-verify your cryptographic identity.&lt;/p&gt;

&lt;h3 id=&quot;contrived-example&quot;&gt;Contrived Example&lt;/h3&gt;

&lt;p&gt;Bob serendipitously meets Alice in a crowded bar and they instantly hit it off by talking about obscure cryptographic protocols. A loud band starts playing and they have difficulty maintaining conversation, so they decide to move their communication to a secure channel.&lt;/p&gt;

&lt;p&gt;Bob opens up the latest version of ChatSecure, and tries to share his Invite URL to Alice’s phone via a secure &lt;a href=&quot;https://en.wikipedia.org/wiki/Bluetooth_low_energy&quot;&gt;Bluetooth LE&lt;/a&gt; channel. Due to the crowding of the 2.4 GHz channel, they have trouble establishing a connection, and decide to switch to QR codes, which should work well in the dim lighting.&lt;/p&gt;

&lt;p&gt;Alice successfully scans Bob’s QR code Invite URL, which opens up her browser to &lt;code class=&quot;highlighter-rouge&quot;&gt;chatsecure.org/i/#...&lt;/code&gt;, where she sees how to download the latest version of ChatSecure. Once the app finishes downloading, she clicks the same link again, but this time instead of opening her browser, it opens ChatSecure to the Add Contact screen. Bob’s account details are shown on the screen, and she can see his other cryptographic identities being pulled down in realtime from Keybase.&lt;/p&gt;

&lt;p&gt;Now that they have established a secure channel, they decide that this music is too loud anyway, and it would be a good point to leave the bar and drink some coffee at one of their apartments. An encryption success story!&lt;/p&gt;

&lt;h3 id=&quot;roadmap&quot;&gt;Roadmap&lt;/h3&gt;

&lt;p&gt;This is just one of many exciting changes I want to bring in the months ahead. Coming very soon will be a new iOS release with group chat, slick onboarding, and… &lt;strong&gt;push notifications&lt;/strong&gt;. 🚀&lt;/p&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure, Conversations and Zom</title>
      <link>https://chatsecure.org/blog/chatsecure-conversations-zom/</link>
      <pubDate>Fri, 02 Oct 2015 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-conversations-zom</guid>
      <description>&lt;h1 id=&quot;chatsecure-conversations-and-zom&quot;&gt;ChatSecure, Conversations and Zom&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/images/chatsecure-conversations-zom.png&quot; alt=&quot;ChatSecure, Conversations and Zom Logos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We are excited to announce that major changes are planned for the underlying architecture of ChatSecure Android, and that there is a new UX-focused fork of the existing iOS and Android code bases called &lt;a href=&quot;http://zom.im&quot;&gt;Zom&lt;/a&gt;. In the upcoming months, we will be releasing a new version of ChatSecure Android that will be powered by the core of &lt;a href=&quot;http://conversations.im&quot;&gt;Conversations&lt;/a&gt;, as well as the first releases of Zom for iOS and Android. Both will have a new package name and signing key, so the &lt;a href=&quot;https://play.google.com/store/apps/details?id=info.guardianproject.otr.app.im&amp;amp;hl=en&quot;&gt;existing ChatSecure Android app&lt;/a&gt; will prompt you on every launch to either download the new version of ChatSecure or Zom.&lt;/p&gt;

&lt;h2 id=&quot;chatsecure--conversations&quot;&gt;ChatSecure &amp;amp; Conversations&lt;/h2&gt;

&lt;h3 id=&quot;android&quot;&gt;Android&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://conversations.im&quot;&gt;Conversations&lt;/a&gt; is currently (in my opinion) the best modern open source Android XMPP client. It was originally founded, and still primarily maintained, by &lt;a href=&quot;https://github.com/iNPUTmice&quot;&gt;Daniel Gultsch&lt;/a&gt;. This summer he mentored &lt;a href=&quot;https://github.com/strb&quot;&gt;Andreas Straub’s&lt;/a&gt; GSoC 2015 project to develop and implement a new XEP for asynchronous encryption based on Axolotl. They are calling it &lt;a href=&quot;http://conversations.im/omemo/&quot;&gt;OMEMO&lt;/a&gt; (OMEMO Multi-End Message and Object Encryption), and it’s a genius way to adapt &lt;a href=&quot;https://whispersystems.org&quot;&gt;TextSecure&lt;/a&gt;’s fantastic &lt;a href=&quot;https://github.com/trevp/axolotl/wiki&quot;&gt;Axolotl&lt;/a&gt; protocol in a way that’s compatible with almost every existing XMPP server (anything that supports &lt;a href=&quot;http://xmpp.org/extensions/xep-0163.html&quot;&gt;PEP&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The source code to the current version of &lt;a href=&quot;https://github.com/guardianproject/chatsecureandroid&quot;&gt;ChatSecure Android&lt;/a&gt; will soon be reaching end-of-life, and all new features and maintenance of that code will be happening in the &lt;a href=&quot;https://github.com/zom/zom-android&quot;&gt;Zom Android&lt;/a&gt; fork. The Zom fork is focused on a simplified and streamlined user experience, targeted toward a less tech-savvy crowd, but still powered by strong cryptography under the hood.&lt;/p&gt;

&lt;p&gt;To keep the ChatSecure™ brand consistent across platforms, we are partnering with Daniel Gultsch to create a whitelabeled version of Conversations to become the new ChatSecure Android. ChatSecure Android will continue to be offered for free on Google Play and &lt;a href=&quot;https://f-droid.org&quot;&gt;F-Droid&lt;/a&gt;, but will be signed by a new key, so keep an eye out for that. We’ll do our best to ease the transition.&lt;/p&gt;

&lt;p&gt;Daniel and I discovered that we both have been working on methods to make it easier to whitelabel ChatSecure and Conversations. The primary purpose of these whitelabeling methods is to allow for downstream forks to more quickly and easily merge security updates and new features. As a nice side effect of this work, we will also soon be offering both automated and bespoke professional whitelabeling services to finally satisfy the (nearly constant) demand.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For more information about ChatSecure for Business, see below.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;ios&quot;&gt;iOS&lt;/h3&gt;

&lt;p&gt;Soon we will be implementing &lt;a href=&quot;http://conversations.im/xeps/multi-end.html&quot;&gt;OMEMO Encryption&lt;/a&gt; in ChatSecure iOS, and immediately contributing our OMEMO XEP code upstream to &lt;a href=&quot;https://github.com/robbiehanson/XMPPFramework&quot;&gt;XMPPFramework&lt;/a&gt; so that other apps can benefit. We plan to utilize the pre-existing Objective-C library &lt;a href=&quot;https://github.com/WhisperSystems/AxolotlKit&quot;&gt;AxolotlKit&lt;/a&gt;, written by &lt;a href=&quot;https://github.com/FredericJacobs&quot;&gt;Frederic Jacobs&lt;/a&gt;, that has been used in production since the release of Open Whisper System’s &lt;a href=&quot;https://itunes.apple.com/us/app/signal-private-messenger/id874139669?mt=8&quot;&gt;Signal&lt;/a&gt; v2.0 for iOS. Unfortunately AxolotlKit is still currently GPL (and therefore &lt;a href=&quot;http://arstechnica.com/apple/2010/11/the-vlc-ios-license-dispute-and-how-it-could-spread-to-android/&quot;&gt;not redistributable to the App Store&lt;/a&gt;) so this work is on hold until we can negotiate a change to an App Store-comptible copyleft license like &lt;a href=&quot;http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html&quot;&gt;LGPLv2&lt;/a&gt; or &lt;a href=&quot;https://www.mozilla.org/en-US/MPL/2.0/&quot;&gt;MPL 2.0&lt;/a&gt; from &lt;a href=&quot;https://twitter.com/fredericjacobs&quot;&gt;Fred&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/moxie&quot;&gt;Moxie&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;chatsecure--zom&quot;&gt;ChatSecure &amp;amp; Zom&lt;/h2&gt;

&lt;p&gt;As I mentioned earlier, the &lt;a href=&quot;https://github.com/zom&quot;&gt;Zom fork&lt;/a&gt; is focused on a simplified and streamlined user experience, targeted toward a less tech-savvy crowd. Our goal is to produce a messenging product that is fun and easy to use, while also being secure by default, and as decentralized as possible. Users shouldn’t have to know or care that this is built for security under the hood, all they need to care about is being able to send cat pictures and emojis to their friends without fear of censorship or retaliation. This is a &lt;a href=&quot;https://en.wikipedia.org/wiki/Zooko%27s_triangle&quot;&gt;notoriously hard problem to solve&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;android-1&quot;&gt;Android&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/zom/zom-android&quot;&gt;Zom Android&lt;/a&gt; will have a radically different UI than the current version of ChatSecure Android, is a hard fork of the current code. Many advanced features will be hidden or removed for the sake of simplicity (with sane secure defaults of course!), which we feel is the right move when targeting the mass market. It will also only support a single account at a time, have a bigger focus on media sharing, and sport silly stuff like sticker packs.&lt;/p&gt;

&lt;p&gt;Under the hood, it will still support OTR, XMPP, Tor, SQLCipher, certificate pinning, and all that crypto goodness that you expect, all bundled up behind a shiny new interface designed to hide or minimize the vast majority of the complexity. No use in having a secure messenger if it’s as hard to setup and use securely as PGP, right?&lt;/p&gt;

&lt;h3 id=&quot;ios-1&quot;&gt;iOS&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/zom/Zom-iOS&quot;&gt;Zom iOS&lt;/a&gt; is a soft fork of ChatSecure iOS, meaning it was designed to track upstream as closely as possible. We will continue to develop new features first in ChatSecure iOS, and push them to the downstream forks, such as Zom, as soon as they are stable. We will also ensure that security updates are available to every downstream fork as soon as possible.&lt;/p&gt;

&lt;p&gt;Our &lt;a href=&quot;https://chatsecure.org/blog/chatsecure-core/&quot;&gt;ChatSecure Core&lt;/a&gt; whitelabeling system is made possible by the newly supported iOS 8.0+ dynamic frameworks. &lt;code class=&quot;highlighter-rouge&quot;&gt;ChatSecureCore.framework&lt;/code&gt; contains the entirety of the upstream ChatSecure source code and resources, and allows for every string, image asset, and resource file to be customized via the &lt;a href=&quot;Ohttps://github.com/zom/Zom-iOS/tree/master/Zom/OTRResources&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;OTRResources&lt;/code&gt; bundle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another nice bonus is that this work will open the door for ChatSecure for Mac, which will be the first open source, modern, native, sandboxed XMPP client for OS X. The lack of maintenance of &lt;a href=&quot;https://en.wikipedia.org/wiki/Adium&quot;&gt;Adium&lt;/a&gt; has made this issue especially urgent so, if you’d like to help, please be in contact!&lt;/p&gt;

&lt;h2 id=&quot;chatsecure-for-business&quot;&gt;ChatSecure for Business™&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://flic.kr/p/55FLSR&quot;&gt;&lt;img src=&quot;/images/business.jpg&quot; alt=&quot;Doing Business&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since early 2012 ChatSecure development has been financially supported by the following (outstanding) organizations: &lt;a href=&quot;https://guardianproject.info&quot;&gt;The Guardian Project&lt;/a&gt;, &lt;a href=&quot;https://openitp.org&quot;&gt;OpenITP&lt;/a&gt;, &lt;a href=&quot;http://rightsactionlab.org&quot;&gt;Rights Action Lab&lt;/a&gt;, and the &lt;a href=&quot;https://www.opentechfund.org&quot;&gt;Open Technology Fund&lt;/a&gt;. There have also been many smaller individual donations over the years (thank you)! Although open source grants and donations can be a great way to fund certain kinds of software development, the process can be glacial, arduous, and unforgiving at times. Even though I intend to continue funding ChatSecure development with grants for the immediate future, I still think it would be wise to begin diversifying our funding portfolio.&lt;/p&gt;

&lt;p&gt;Despite living in Berkeley, with a close physical and social proximity to the frothy tech scene of San Francisco and Silicon Valley, I still have no desire to seek VC funding for ChatSecure. I was part of the first class to the awesome &lt;a href=&quot;http://matter.vc&quot;&gt;Matter startup accelerator&lt;/a&gt; as a co-founder to &lt;a href=&quot;https://web.archive.org/web/20140908092952/https://openwatch.net/&quot;&gt;OpenWatch&lt;/a&gt;, an anti-authoritarian citizen journalism app. That whole concept didn’t really fly in the VC world, so eventually we pivoted our core technology to become &lt;a href=&quot;https://kickflip.io&quot;&gt;Kickflip.io&lt;/a&gt;, an open source mobile live broadcasting SDK + SaaS platform. My experience with the VC scene, although mostly pleasant, has made it very clear that traditional VC is a tough fit for open source privacy / security software.&lt;/p&gt;

&lt;h3 id=&quot;whitelabel-chatsecure-ios-and-android-apps&quot;&gt;Whitelabel ChatSecure iOS and Android apps&lt;/h3&gt;

&lt;p&gt;I get emailed approximately once a week from some organization or individual who is seeking to produce a whitelabeled version of ChatSecure. In the past we haven’t really had the resources to help to anyone, and even had to tell people to abandon their efforts due to the legal complexity of offering GPL license exemptions for the iOS client.&lt;/p&gt;

&lt;p&gt;This has been the equivalent of leaving money on the table for years, especially considering I know for a fact there at least a few “illegal” forks of ChatSecure on the iOS App Store. I believe that ChatSecure should remain under a copyleft license for the benefit of the public good, but I never intended to prevent the free binary redistribution of our code on the App Store (an unfortunate side effect of the GPL) as long as the source code to your modifications remains available.&lt;/p&gt;

&lt;p&gt;As I mentioned in a &lt;a href=&quot;https://chatsecure.org/blog/chatsecure-core/&quot;&gt;previous blog post&lt;/a&gt;, future releases of ChatSecure iOS will be available under the &lt;a href=&quot;https://www.mozilla.org/en-US/MPL/2.0/&quot;&gt;MPL 2.0&lt;/a&gt;, which is a fully App Store-compatible copyleft license (also used by Firefox and &lt;a href=&quot;http://www.videolan.org/vlc/download-ios.html&quot;&gt;VLC for iOS&lt;/a&gt;). It’s most similar to the LGPL, so you only have to distribute the source to modified ChatSecure files, and you only have to seek a license exemption if you plan to modify upstream code.&lt;/p&gt;

&lt;p&gt;This solution has extra benefits because it encourages downstream forks to minimize their modifications to upstream code, allowing them to more easily pull in security updates and new features. Most students, individuals, and small organizations won’t need to pay for a license if they follow the requirements of the MPL.&lt;/p&gt;

&lt;p&gt;Larger organizations and customers seeking bespoke solutions will desire the freedom to release deeper proprietary modifications, so we will be developing a fair pricing model to support these kinds of applications as well. This new revenue model can also help offset our reliance on grants, and allows for a greater diveristy of messaging products all built upon a solid ChatSecure foundation.&lt;/p&gt;

&lt;h3 id=&quot;chatsecure-saas&quot;&gt;ChatSecure SaaS&lt;/h3&gt;

&lt;p&gt;An XMPP client without a server is rather useless, so we will also be offering paid XMPP server and &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server&quot;&gt;ChatSecure Push&lt;/a&gt; hosting. Since we believe in the power of open source software, both the client and server implementations will be completely free (as in source), and designed to be easily deployed by a moderately technical end user. Running your own secure XMPP server continues to be extremely difficult for the average person, so we intend to solve that:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Paid SaaS hosting&lt;/strong&gt; for XMPP and Push infrastructure.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Secure Server Hardware&lt;/strong&gt; solution for Enterprise networks that lives behind your corporate firewall.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Health_Insurance_Portability_and_Accountability_Act#HITECH_Act:_Privacy_Requirements&quot;&gt;HIPAA&lt;/a&gt;&lt;/strong&gt; and other data security regulation compliance.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ChatSecure Server for Android&lt;/strong&gt;. Quick to setup, easily provision new devices, secure by default (end-to-end and at-rest), and user friendly.. even for novices! This open source Android XMPP server app will be based on &lt;a href=&quot;https://prosody.im&quot;&gt;Prosody&lt;/a&gt; and will use &lt;a href=&quot;https://www.torproject.org/docs/android.html.en&quot;&gt;Orbot’s&lt;/a&gt; &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; services to provide universal &lt;a href=&quot;https://en.wikipedia.org/wiki/NAT_traversal&quot;&gt;NAT traversal&lt;/a&gt; (even over cell networks).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’re interested in &lt;em&gt;ChatSecure for Business&lt;/em&gt; please &lt;a href=&quot;mailto:chris@chatsecure.org?subject=ChatSecure%20For%20Business&quot;&gt;send me an email&lt;/a&gt; as soon as possible so we shape our product offerings to better match your needs in the upcoming months.&lt;/p&gt;

&lt;h2 id=&quot;roadmap&quot;&gt;Roadmap&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://flic.kr/p/9UViMr&quot;&gt;&lt;img src=&quot;/images/roadmap.jpg&quot; alt=&quot;It's a road&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;push&quot;&gt;Push&lt;/h3&gt;

&lt;p&gt;We’re on track to release the first beta version of ChatSecure Push in both Zom for iOS and Android, as well as ChatSecure for iOS. We’ll be using separate federated instances to demonstrate decentralized push between multiple native mobile applications. We plan on integrating some components of ChatSecure Push into Conversations as well. It’s by far the #1 most requested iOS feature, so I hope you’ll like it.&lt;/p&gt;

&lt;h3 id=&quot;axolotl--omemo&quot;&gt;Axolotl / OMEMO&lt;/h3&gt;

&lt;p&gt;Work on implementing Axolotl / OMEMO into ChatSecure iOS will begin as soon as we can negotiate a license change to AxolotlKit. Hopefully we can sort that out quickly and get to work.&lt;/p&gt;

&lt;h3 id=&quot;group-chat&quot;&gt;Group Chat&lt;/h3&gt;

&lt;p&gt;We plan to support unencrypted group chat in ChatSecure iOS v3.2 this fall. Work on &lt;a href=&quot;https://github.com/equalitie/np1sec&quot;&gt;np1sec&lt;/a&gt; (aka &lt;a href=&quot;https://github.com/cryptocat/cryptocat/wiki/mpOTR-Project-Plan&quot;&gt;mpOTR&lt;/a&gt;) for multi-party OTR has been slow, but appears to be progressing. OMEMO works for small group chats as well, so we may adopt that in the meantime.&lt;/p&gt;

&lt;h3 id=&quot;chatsecure-for-mac&quot;&gt;ChatSecure for Mac&lt;/h3&gt;

&lt;p&gt;The ongoing &lt;code class=&quot;highlighter-rouge&quot;&gt;ChatSecureCore.framework&lt;/code&gt; effort will soon make it possible to create a sandboxed desktop version of ChatSecure for Mac. Want to help? &lt;a href=&quot;mailto:chris@chatsecure.org?subject=ChatSecure%20For%20Mac&quot;&gt;Drop me a line.&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;chatsecure-server-for-android&quot;&gt;ChatSecure Server for Android&lt;/h3&gt;

&lt;p&gt;It’s still too hard to host your own secure XMPP server. We are going to change that… some time next year.&lt;/p&gt;

&lt;h3 id=&quot;business&quot;&gt;Business&lt;/h3&gt;

&lt;p&gt;We will be putting more effort toward providing secure communications tools to individuals, small teams, and larger businesses alike. Feel free to &lt;a href=&quot;mailto:chris@chatsecure.org?subject=ChatSecure%20for%20Business&quot;&gt;reach out&lt;/a&gt; if you’d like to discuss business applications for ChatSecure or have ideas about opportunities for growth.&lt;/p&gt;

&lt;h3 id=&quot;ios-9-tor-vpn&quot;&gt;iOS 9 Tor VPN&lt;/h3&gt;

&lt;p&gt;As a quick side note, iOS 9 added a neat new API for full device VPN, which opens the door for a better way to implement Tor on iOS. &lt;a href=&quot;https://github.com/icepa&quot;&gt;We are working on it!&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;keybase-integration&quot;&gt;Keybase Integration?&lt;/h3&gt;

&lt;p&gt;I had sort of a wild idea the other day to integrate ChatSecure with the &lt;a href=&quot;https://keybase.io&quot;&gt;Keybase&lt;/a&gt; API, which is basically a cryptographic identity provider and aggregator of your semi-decentralized signatures scattered around on Twitter, GitHub, etc. You can think of it as a successful mashup of a social network and a GPG keyserver. There’s a lot of cool UX stuff we could do there, so I’d &lt;a href=&quot;mailto:chris@chatsecure.org?subject=ChatSecure%20+%20Keybase&quot;&gt;like to hear&lt;/a&gt; any ideas! Also, &lt;a href=&quot;https://keybase.io/chris&quot;&gt;Chris&lt;/a&gt;, we should chat!&lt;/p&gt;

&lt;h3 id=&quot;jobs&quot;&gt;Jobs&lt;/h3&gt;

&lt;p&gt;We will soon be hiring mobile, frontend, and backend developers with some or all of the following qualifications.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;iOS&lt;/strong&gt;: Objective-C, Swift, C, AutoLayout, Storyboards, CocoaPods, iPad, Cocoa, Mac UI, XCTest, an app in the App Store&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Android&lt;/strong&gt;: Android 4.0 SDK and higher, Android NDK, Java, C, Android Studio, Gradle, JUnit, an app in the Play Store&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Frontend&lt;/strong&gt;: HTML5, CSS, JavaScript, Bootstrap, Jekyll, Angular, React, Ember, your own website&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Backend&lt;/strong&gt;: Python, Django, Ubuntu, Go, Rust, Docker, your own API&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;General Programming&lt;/strong&gt;: data structures, flow control, POSIX, standard stuff. Experience with Test Driven Development would be nice.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;: Some basic knowledge of cryptography is a must, but don’t stress about the advanced stuff. You must have experience with modern secure / defensive coding practices, familiar with common vulnerabilites in native code, identifying potential areas of concern, surface area analysis, etc.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Open Source&lt;/strong&gt; contributions are highly recommended: individual projects, larger projects, pull requests, bug reports, QA, documentation, modular coding practices, semantic versioning, Travis-CI, GitHub, git. Know how to find the best existing open source libraries that solve a need. Be able to quickly assess a library’s code quality and general maintenance health compared to similar projects. Know when to just rewrite it from scratch instead. Know how to properly publish your new open source library.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Freelance Contrators Only:&lt;/strong&gt; Sorry, there are currently no full time or permanent positions. Interns are OK though! If you’re looking for that steady 9-5 you really should be looking somewhere else, because this ain’t it. Fortunately Obamacare has made buying individual health insurance a lot better for us freelancers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Equal Opportunity&lt;/strong&gt;: We do not discriminate based on race, color, sex, religion, national origin, age, disability, sexual orientation, genetic information, reprisal, socioeconomic class, radical political beliefs, tattoos, hair color, clothing style, or otherwise.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Berkeley, CA&lt;/strong&gt;: East Bay or SF preferred. Remote may be negotiable though!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to stand out by sending your application early? &lt;a href=&quot;mailto:chris@chatsecure.org?subject=ChatSecure%20Jobs&quot;&gt;Email me&lt;/a&gt; with a link to your GitHub profile and a short introduction.&lt;/p&gt;

&lt;h3 id=&quot;thats-all-folks&quot;&gt;That’s All Folks&lt;/h3&gt;

&lt;p&gt;Until next time. Thank you!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure Core</title>
      <link>https://chatsecure.org/blog/chatsecure-core/</link>
      <pubDate>Tue, 11 Aug 2015 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-core</guid>
      <description>&lt;h1 id=&quot;chatsecure-core&quot;&gt;ChatSecure Core&lt;/h1&gt;

&lt;h4 id=&quot;motivation&quot;&gt;Motivation&lt;/h4&gt;

&lt;p&gt;I’ve noticed that many apps have been appropriating &lt;a href=&quot;https://github.com/chatsecure/chatsecure-ios&quot;&gt;ChatSecure iOS&lt;/a&gt; code for their whitelabeled products, even though the code is not currently suitable for this purpose. There are a lot of cross-dependencies, assumptions about the ChatSecure brand, and some unfortunate spaghetti code that has accumulated over the last few years of development. The GPL license also currently prevents people from legally shipping forks or devirative works that include our code to the App Store (without an exemption). Although many people and organizations have requested license exemptions since our move to the GPL, we haven’t had the time or legal resources to grant any.&lt;/p&gt;

&lt;p&gt;Now that we are also working on a whitelabeled version of ChatSecure ourselves, the pain of keeping the two versions in sync has made it apparent that a major refactor needs to happen as soon as possible. This will be done in two phases:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Creating a monolithic framework containing almost all of the existing ChatSecure iOS code.&lt;/li&gt;
  &lt;li&gt;Splitting that framework into multiple sub-frameworks each concerned with a single domain: UI, network, database, encryption.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;new-license&quot;&gt;New License&lt;/h4&gt;

&lt;p&gt;Additionally, to accomodate forks and other open source projects that wish to reuse our code, we will be relicensing these reusable components under the copyleft &lt;a href=&quot;https://www.mozilla.org/MPL/2.0/&quot;&gt;MPL 2.0&lt;/a&gt; license. This is the license used by Firefox and &lt;a href=&quot;http://www.videolan.org/vlc/download-ios.html&quot;&gt;VLC for iOS&lt;/a&gt;. It is most similar to the LGPL in that binary distributions require attribution and that modifications to the code need to be publicly available. It doesn’t virally spread its terms to the rest of your program like the GPL, there’s no issue with static linking like the LGPL, and it is fully compatible with the App Store.&lt;/p&gt;

&lt;p&gt;Organizations that wish to release closed source / commerical / proprietary apps will also be able to use the code as long as they follow the terms of the MPL 2.0. In short, just give us proper attribution, and publicly distribute any source code changes you’ve made to our framework.&lt;/p&gt;

&lt;h2 id=&quot;refactor&quot;&gt;Refactor&lt;/h2&gt;

&lt;p&gt;This will require a very large refactor of the existing ChatSecure code into reusable components. Right now there is a tight coupling (aka spaghetti code) between the UI, XMPP network stack, database, and encryption layer. Each of these components will need to be split into reusable components with no cross-dependencies.&lt;/p&gt;

&lt;p&gt;For the first step, we will create a monolithic ChatSecure framework that includes the entirety of the ChatSecure iOS code as a reusable library. This will allow improvements and security updates to the core ChatSecure code to be more readily available to whitelabeled apps.&lt;/p&gt;

&lt;p&gt;After that is complete, we will begin splitting up the monolithic framework into smaller and more manageable frameworks: UI, network stack, database, and encryption layer. When that is complete, it will become much more feasible to create novel UI experiences that diverge from the upstream ChatSecure iOS UI code, without sacrificing the ability to easily merge in security updates and new backend features.&lt;/p&gt;

&lt;h3 id=&quot;bonus-chatsecure-for-mac&quot;&gt;Bonus: ChatSecure for Mac&lt;/h3&gt;

&lt;p&gt;As an unintended bonus of this work, it will then be possible to eventually create a native OS X desktop client for ChatSecure. The current standard for OTR+XMPP on OS X, &lt;a href=&quot;https://adium.im&quot;&gt;Adium&lt;/a&gt;, hasn’t been updated since last year but depends on Pidgin’s libpurple, which is known for containing many &lt;a href=&quot;http://www.pidgin.im/news/security/&quot;&gt;security holes&lt;/a&gt;. The lack of Adium updates puts users at risk, and it looks like new development is almost completely stalled. It also doesn’t use OS X sandboxing so any Adium vulnerability allows an attacker to read and write (almost) any file on your computer, including past conversations, passwords, etc. We can fix that.&lt;/p&gt;

&lt;h2 id=&quot;on-the-roadmap&quot;&gt;On the Roadmap&lt;/h2&gt;

&lt;h4 id=&quot;push&quot;&gt;Push&lt;/h4&gt;

&lt;p&gt;We are now well on our way to implementing our design for &lt;a href=&quot;https://github.com/chatsecure/chatsecure-push-server&quot;&gt;decentralized push support&lt;/a&gt;, courtesy of a new grant from the &lt;a href=&quot;https://www.opentechfund.org&quot;&gt;Open Technology Fund&lt;/a&gt;. Yes, we are finally fixing the &lt;a href=&quot;https://chatsecure.org/blog/fixing-the-xmpp-push-problem/&quot;&gt;XMPP push problem&lt;/a&gt;! We are very excited to ship beta versions of ChatSecure that will include this functionality in early Q4 2015. This is a feature that can be included in ANY app (we have SDKs for &lt;a href=&quot;https://github.com/chatsecure/chatsecure-push-ios&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://github.com/chatsecure/chatsecure-push-android&quot;&gt;Android&lt;/a&gt;), that allows your users to communicate with users of other apps. No more walled gardens!&lt;/p&gt;

&lt;p&gt;This work is compatible with and compliments the existing effort to add &lt;a href=&quot;http://xmpp.org/extensions/xep-0357.html&quot;&gt;push support to XMPP&lt;/a&gt; itself.&lt;/p&gt;

&lt;h4 id=&quot;axolotl&quot;&gt;Axolotl&lt;/h4&gt;

&lt;p&gt;We will also be integrating the mobile friendly Axolotl end-to-end encryption protocol into ChatSecure iOS, following the lead of the &lt;a href=&quot;http://conversationsgsoc2015.blogspot.de&quot;&gt;Conversations team&lt;/a&gt;. This is the same protocol used by TextSecure/Signal, developed over at the amazing &lt;a href=&quot;https://whispersystems.org/blog/advanced-ratcheting/&quot;&gt;Open Whisper Systems&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;new-onboarding&quot;&gt;New Onboarding&lt;/h4&gt;

&lt;p&gt;We are also working on a streamlined onboarding process to help new users who are unfamiliar with the intricacies of XMPP. Stay tuned for more updates regarding that exciting new feature!&lt;/p&gt;

&lt;h2 id=&quot;a-bright-future-for-secure-messaging&quot;&gt;A Bright Future for Secure Messaging&lt;/h2&gt;

&lt;p&gt;With all of these changes in place, we will be able to deliver a more seamless user experience that can rival that of other popular mobile messaging apps. We are committed to open source, open standards, decentralized protocols, and delivering the most secure and user-friendly product possible.&lt;/p&gt;

&lt;p&gt;Thank you for your support!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure iOS Security Audit</title>
      <link>https://chatsecure.org/blog/chatsecure-security-audit/</link>
      <pubDate>Fri, 26 Jun 2015 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-security-audit</guid>
      <description>&lt;h1 id=&quot;chatsecure-ios-security-audit&quot;&gt;ChatSecure iOS Security Audit&lt;/h1&gt;

&lt;p&gt;Last year &lt;a href=&quot;https://openitp.org&quot;&gt;OpenITP&lt;/a&gt; generously funded a &lt;a href=&quot;http://blog.quarkslab.com/security-assessment-of-instant-messaging-app-chatsecure-when-privacy-matters.html&quot;&gt;security audit&lt;/a&gt; of the ChatSecure iOS client, performed by &lt;a href=&quot;http://www.quarkslab.com&quot;&gt;QuarksLab&lt;/a&gt; in Q1 2014. It was the first professional security audit of the code and it revealed a few critical issues that we were able to quickly address.&lt;/p&gt;

&lt;p&gt;Originally ChatSecure was designed to be a multiprotocol IM client that supported OTR over AIM, Google Talk, Facebook, and generic XMPP. Because &lt;a href=&quot;https://developer.pidgin.im/wiki/WhatIsLibpurple&quot;&gt;libpurple&lt;/a&gt;, used in Pidgin and Adium for chat network support, is licensed under GPL we could not distribute it on the App Store. Additionally libpurple has had &lt;a href=&quot;http://www.cvedetails.com/vulnerability-list/vendor_id-6938/product_id-11666/Pidgin-Pidgin.html&quot;&gt;quite a few vulnerabilities&lt;/a&gt; itself,  so instead we chose to use two Objective-C libraries: &lt;a href=&quot;https://github.com/robbiehanson/XMPPFramework&quot;&gt;XMPPFramework&lt;/a&gt; for GTalk, Facebook and XMPP, and a lesser-known library called &lt;a href=&quot;https://github.com/unixpickle/LibOrange&quot;&gt;LibOrange&lt;/a&gt; for AIM support.&lt;/p&gt;

&lt;h2 id=&quot;xmpp-and-starttls&quot;&gt;XMPP and STARTTLS&lt;/h2&gt;

&lt;p&gt;One of the issues they found was the ability for an attacker with a privileged network position to potentially block the &lt;a href=&quot;https://en.wikipedia.org/wiki/STARTTLS&quot;&gt;STARTTLS&lt;/a&gt; functionality of XMPP, which is used to initiate TLS connections. Although we support TLS with certificate pinning, XMPPFramework directly followed the XMPP specification which states the server is to specify (in plaintext) whether or not TLS is supported or required. This is a &lt;a href=&quot;https://www.agwa.name/blog/post/starttls_considered_harmful&quot;&gt;problem for all protocols utilizing STARTTLS&lt;/a&gt; (including email), and no server should ever allow plaintext connections in 2015. We &lt;a href=&quot;https://github.com/robbiehanson/XMPPFramework/commit/db291a40e2135d82f07ca4350259e7225a3db7b4&quot;&gt;worked with the XMPPFramework maintainers&lt;/a&gt; to add the ability to require TLS connections regardless of what the server reports. This way if an attacker tries to force a downgrade attack, the connection simply fails.&lt;/p&gt;

&lt;p&gt;Many XMPP server operators have &lt;a href=&quot;https://raw.githubusercontent.com/stpeter/manifesto/master/manifesto.txt&quot;&gt;pledged to require STARTTLS&lt;/a&gt; for all client-to-server and server-to-server connections. Due to this change, many servers no longer federate with Google’s XMPP gateway because &lt;a href=&quot;https://rachelbythebay.com/w/2012/05/22/s2s/&quot;&gt;Google still doesn’t support server-to-server STARTTLS&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;liborange-and-aim&quot;&gt;LibOrange and AIM&lt;/h2&gt;

&lt;p&gt;LibOrange (for AIM/Oscar) was originally included back in 2011 when ChatSecure (then called “Off the Record”) was a proof of concept pre-release hobby project to demonstrate libotr on iOS. The LibOrange code originally was not carefully audited and turned out to contain serious flaws in both its memory handling, and the &lt;a href=&quot;https://github.com/unixpickle/LibOrange/blob/master/LibOrange/MyTest.m&quot;&gt;example implementation&lt;/a&gt;, which included debugging commands that were not documented or fully understood.&lt;/p&gt;

&lt;p&gt;Although we had been planning to remove AIM support for other reasons, thanks to Quarkslab we immediately removed LibOrange and AIM support and pushed a new release as soon as these flaws were uncovered on 2/21/2014. Fortunately there were no complaints from our users after its removal.&lt;/p&gt;

&lt;p&gt;If you still use AIM on other chat clients, you should disable it immediately and migrate to other networks. AIM is a centralized messaging service &lt;a href=&quot;https://eff.com/ar/document/aol-law-enforcement-guide&quot;&gt;hosted in the US&lt;/a&gt;, and has a complete view of your message content, history, contacts, and metadata (IP address, connection/disconnection times, etc). Using OTR over AIM only helps protect message content.&lt;/p&gt;

&lt;h2 id=&quot;improving-security&quot;&gt;Improving Security&lt;/h2&gt;

&lt;p&gt;Since the audit last year, &lt;a href=&quot;https://chatsecure.org/blog/chatsecure-ios-v3-released/&quot;&gt;we have implemented a number of features&lt;/a&gt; to improve security. For example, all content is locally encrypted in a SQLCipher database, and it is possible to connect to XMPP servers over Tor.&lt;/p&gt;

&lt;p&gt;XMPP servers with a Tor &lt;code class=&quot;highlighter-rouge&quot;&gt;.onion&lt;/code&gt; address that force OTR, such as &lt;a href=&quot;https://www.calyxinstitute.org/projects/public_jabber_xmpp_server&quot;&gt;Caylx&lt;/a&gt; or &lt;a href=&quot;https://otr.im/chat.html&quot;&gt;otr.im&lt;/a&gt;, currently offer the one of the easiest ways to protect both message content and identifiable metadata.&lt;/p&gt;

&lt;p&gt;Even better is to physically host an XMPP server for yourself and your friends, but unfortunately this is still very difficult to get right, even for tech savvy users.&lt;/p&gt;

&lt;p&gt;The combination of XMPP+OTR+Tor still offers the best and easiest way to provide decentralization, content/metadata protection, and censorship resistance. Unfortunately this combination is difficult to make user-friendly, especially on mobile devices. Both XMPP and OTR were originally designed for desktop computers and are definitely showing their age in the age of mobile.&lt;/p&gt;

&lt;p&gt;There are efforts to replace this combination, such as &lt;a href=&quot;https://pond.imperialviolet.org&quot;&gt;Pond&lt;/a&gt;, but it’s almost impossible for a non-technical person to understand or setup.&lt;/p&gt;

&lt;p&gt;If you don’t need decentralization or metadata protection, &lt;a href=&quot;https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&quot;&gt;TextSecure&lt;/a&gt;/&lt;a href=&quot;https://itunes.apple.com/us/app/signal-private-messenger/id874139669&quot;&gt;Signal&lt;/a&gt; is a very good choice because it is easy to setup for non-technical users and works very well on mobile. Its main downside is that you still need to use a real phone number to register, and to communicate with other people you need to share your phone number with them, which is not always desirable. It also makes open federation impossible.&lt;/p&gt;

&lt;h2 id=&quot;moving-forward&quot;&gt;Moving Forward&lt;/h2&gt;

&lt;p&gt;We are still committed to supporting the XMPP+OTR+Tor combination in ChatSecure for now, but are monitoring the maturity of new technologies that solve usability headaches without sacrificing decentralization, content/metadata protection, and censorship resistance. We are working on a solution for interoperable push messaging in ChatSecure, XMPP will also soon finally have a way to provide mobile push notifications, and Axolotl (which underlies Signal/TextSecure) has proven to be a great replacement for OTR on mobile devices.&lt;/p&gt;

&lt;p&gt;Although open source software with deterministic builds remains a best practice for security software, careful coding techniques cannot always protect against all flaws, especially when linking against 3rd party libraries. We will be commissioning a new professional security audit of the ChatSecure iOS and Android code to be completed by the end of the year.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure iOS v3.0 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-ios-v3-released/</link>
      <pubDate>Mon, 05 Jan 2015 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-ios-v3-released</guid>
      <description>&lt;h2 id=&quot;chatsecure-ios-v30-released&quot;&gt;ChatSecure iOS v3.0 Released&lt;/h2&gt;

&lt;p&gt;Over the last year, &lt;a href=&quot;https://github.com/davidchiles&quot;&gt;David Chiles&lt;/a&gt; and I have been working on a major overhaul of the iOS app to modernize the user experience and incorporate additional security features. The most significant user-facing changes are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The buddy list has been replaced by a list of your most recent conversations, bringing it in line with modern messaging clients.&lt;/li&gt;
  &lt;li&gt;Conversation archives are encrypted using &lt;a href=&quot;https://www.zetetic.net/sqlcipher/&quot;&gt;SQLCipher&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Experimental &lt;a href=&quot;https://en.wikipedia.org/wiki/Tor_(anonymity_network)&quot;&gt;Tor&lt;/a&gt; support for custom XMPP accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;Download ChatSecure&lt;/a&gt; for free from the App Store. If you’re a developer you can also &lt;a href=&quot;https://github.com/chrisballinger/ChatSecure-iOS&quot;&gt;compile it yourself from the source code on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;tor-support&quot;&gt;Tor Support&lt;/h3&gt;

&lt;p&gt;Right now (to my knowledge) we are the only messaging app on the App Store that supports Tor. Although the current implementation appears to be functional, please only use it for testing purposes until it has been studied further by security professionals. In other words, &lt;strong&gt;do not rely on it for strong anonymity&lt;/strong&gt;, and use something like &lt;a href=&quot;https://en.wikipedia.org/wiki/Tails_(operating_system)&quot;&gt;TAILS&lt;/a&gt; instead.&lt;/p&gt;

&lt;p&gt;During our journey to add Tor support, we first tried to extract the Tor management code from &lt;a href=&quot;https://twitter.com/mtigas&quot;&gt;Mike Tigas&lt;/a&gt;’s &lt;a href=&quot;https://github.com/OnionBrowser/iOS-OnionBrowser&quot;&gt;Onion Browser&lt;/a&gt;, but discovered it was too tightly coupled with the rest of the app. We also investigated &lt;a href=&quot;https://github.com/hivewallet/Tor.framework&quot;&gt;Tor.framework&lt;/a&gt; by &lt;a href=&quot;https://www.hivewallet.com&quot;&gt;Hive Wallet&lt;/a&gt; but it required some awkward patching of the Tor source code, and has since been deprecated by the original developers. Eventually we discovered &lt;a href=&quot;https://twitter.com/ursachec&quot;&gt;Claudiu-Vlad Ursache&lt;/a&gt;’s &lt;a href=&quot;https://github.com/ursachec/CPAProxy&quot;&gt;CPAProxy&lt;/a&gt;, a more modern attempt at a thin Objective-C wrapper around Tor’s control port. Although it is currently missing a few features like customizable bridges and pluggable transports (and a security audit), I would encourage other developers who are interested in adding Tor support to their iOS apps to help us improve CPAProxy.&lt;/p&gt;

&lt;h3 id=&quot;encrypted-storage&quot;&gt;Encrypted Storage&lt;/h3&gt;

&lt;p&gt;When ChatSecure iOS v2.0 was released over a year ago, it contained a major overhaul of the internal data model to support &lt;a href=&quot;https://en.wikipedia.org/wiki/Core_Data&quot;&gt;Core Data&lt;/a&gt;, Apple’s solution for data persistence. We originally planned on utilizing the MITRE Corporation’s &lt;a href=&quot;https://github.com/project-imas/encrypted-core-data&quot;&gt;encrypted-core-data&lt;/a&gt; project, which adds a customized &lt;code class=&quot;highlighter-rouge&quot;&gt;NSPersistentStoreCoordinator&lt;/code&gt; backed by Zetetic’s &lt;a href=&quot;https://www.zetetic.net/sqlcipher/&quot;&gt;SQLCipher&lt;/a&gt;. Unfortunately working with Core Data can be terribly frustrating, especially when you cannot debug its closed-source internals.&lt;/p&gt;

&lt;p&gt;Fortunately we discovered &lt;a href=&quot;https://github.com/yapstudios/YapDatabase&quot;&gt;YapDatabase&lt;/a&gt; by &lt;a href=&quot;https://github.com/robbiehanson&quot;&gt;Robbie Hanson&lt;/a&gt;, an Objective-C key-value-collection store built on top of &lt;a href=&quot;http://www.sqlite.org&quot;&gt;sqlite&lt;/a&gt;. It has all sorts of nice features like a coherent concurrency model, fast full text search, easy binding to &lt;code class=&quot;highlighter-rouge&quot;&gt;UITableView&lt;/code&gt;, and more. If you develop iOS apps, I strongly encourage you to check it out, especially in conjunction with something like &lt;a href=&quot;https://github.com/mantle/mantle&quot;&gt;Mantle&lt;/a&gt;. Because it is built on top of sqlite, it was relatively straightforward for us to add SQLCipher support (use the &lt;code class=&quot;highlighter-rouge&quot;&gt;YapDatabase/SQLCipher&lt;/code&gt; &lt;a href=&quot;http://cocoapods.org&quot;&gt;Cocoapods&lt;/a&gt; subspec).&lt;/p&gt;

&lt;h3 id=&quot;new-user-interface&quot;&gt;New User Interface&lt;/h3&gt;

&lt;p&gt;Our overhaul of the UI started at the &lt;a href=&quot;https://openitp.org/openitp/ux-sprint-for-security-privacy-tools.html&quot;&gt;OpenITP UX Sprint&lt;/a&gt;, which brought together developers and designers to help improve the usability of crypto tools. One of the biggest challenges when creating security software is ensuring it’s usable by normal humans. During this event we decided to finally move away from the “buddy list” because it no longer reflects how people use messaging apps, especially on mobile. In its place, we added the “Conversations” view, which simply lists your most recent conversations and is designed to feel similar to the built-in iOS Messages app.&lt;/p&gt;

&lt;p&gt;We also decided to use &lt;a href=&quot;http://www.jessesquires.com&quot;&gt;Jesse Squires’&lt;/a&gt; totally awesome &lt;a href=&quot;https://github.com/jessesquires/JSQMessagesViewController&quot;&gt;JSQMessagesViewController&lt;/a&gt; for the messaging UI. We were previously using a custom solution designed to imitate the iOS 6 Messages.app, but this new approach should allow us to more easily add in-line media messaging in the future.&lt;/p&gt;

&lt;h3 id=&quot;on-the-roadmap&quot;&gt;On the Roadmap&lt;/h3&gt;

&lt;p&gt;This release has a large amount of internal refactoring that should (hopefully) make it easier to maintain and add new features. Here are some features we are planning on adding over the next year:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Inline multimedia messaging via &lt;a href=&quot;https://dev.guardianproject.info/projects/gibberbot/wiki/OTRDATA_Specifications&quot;&gt;OTRDATA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;A modern onboarding experience that makes it easier for new users to get started&lt;/li&gt;
  &lt;li&gt;More options for users behind restrictive firewalls (&lt;a href=&quot;https://www.torproject.org/docs/pluggable-transports.html.en&quot;&gt;Tor pluggable transports&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;An interoperable &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server/blob/master/docs/v3/README.md&quot;&gt;privacy-conscious solution for push messaging&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://whispersystems.org/blog/advanced-ratcheting/&quot;&gt;Axolotl&lt;/a&gt;, the mobile-friendly asynchronous encryption protocol used by TextSecure&lt;/li&gt;
  &lt;li&gt;Internet-free hyperlocal &lt;a href=&quot;https://github.com/chrisballinger/BLEMeshChat&quot;&gt;chat network over Bluetooth LE&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Sandboxed Mac OS X port&lt;/li&gt;
  &lt;li&gt;An easy way for users to set up their own XMPP server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unfortunately, despite the recent proliferation of “secure messaging” apps, we are still a long way from ubiquitous, easy to use, decentralized, verifiable end-to-end encryption.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Fixing the XMPP Push Problem</title>
      <link>https://chatsecure.org/blog/fixing-the-xmpp-push-problem/</link>
      <pubDate>Tue, 08 Apr 2014 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/fixing-the-xmpp-push-problem</guid>
      <description>&lt;h2 id=&quot;fixing-the-xmpp-push-problem&quot;&gt;Fixing the XMPP Push Problem&lt;/h2&gt;

&lt;p&gt;XMPP is at serious risk of being permanently replaced by proprietary alternatives that have already solved the mobile push messaging problem. Remember in the 90s how many closed IM networks there were? Today it is much worse.&lt;/p&gt;

&lt;h2 id=&quot;current-approaches&quot;&gt;Current Approaches&lt;/h2&gt;

&lt;h3 id=&quot;thin-client&quot;&gt;Thin Client&lt;/h3&gt;

&lt;p&gt;Run a thin XMPP client on a ‘man-in-the-middle’ server that can relay messages to clients via push message when mobile clients aren’t actively connected. Many iOS messenger apps use this method without clearly informing the user.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Can add push support for any arbitrary XMPP server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Very obvious, centralized point of failure&lt;/li&gt;
  &lt;li&gt;Allows for easy eavesdropping or even active MITM attacks&lt;/li&gt;
  &lt;li&gt;Requires plaintext storage of remote login credentials (e.g. Gmail passwords)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://verbs.im&quot;&gt;Verbs Pro&lt;/a&gt; (iOS)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://plus.im&quot;&gt;IM+&lt;/a&gt; (iOS, Android, Web)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;persistent-socket&quot;&gt;Persistent Socket&lt;/h3&gt;

&lt;p&gt;Persistent sockets is how XMPP was originally designed to work. Acquire a long-lived socket and keep it open… forever. Android apps are able to use this method, as well as iOS apps that declare VoIP functionality. On iOS this socket is supposed to be for VoIP signaling only, so you can be terminated by the OS for too much activity while in the background (e.g. presence updates).&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;XMPP works as designed, most of the time&lt;/li&gt;
  &lt;li&gt;No modification to existing infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Battery drain because the antenna cannot be powered down&lt;/li&gt;
  &lt;li&gt;Disconnection can still occur from wireless network problems&lt;/li&gt;
  &lt;li&gt;iOS apps can still be terminated by the OS under memory pressure or too much socket activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://chatsecure.org&quot;&gt;ChatSecure&lt;/a&gt; (Android version only)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://monal.im&quot;&gt;Monal&lt;/a&gt; (iOS)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;abandon-xmpp-compatibility&quot;&gt;Abandon XMPP Compatibility&lt;/h3&gt;

&lt;p&gt;Many apps have abandoned traditional XMPP in favor of proprietary modifications that lack federation and interoperability. WhatsApp took &lt;a href=&quot;http://www.ejabberd.im&quot;&gt;ejabberd&lt;/a&gt;, an open source XMPP server written in Erlang, and modified it to send native push messages, but of course it only works with their official apps.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Relatively easy to implement&lt;/li&gt;
  &lt;li&gt;Lock in users to your proprietary ecosystem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Locks you in to their proprietary ecosystem&lt;/li&gt;
  &lt;li&gt;No federation between domains&lt;/li&gt;
  &lt;li&gt;No federation between apps: each app developer taking this approach is their own silo, unable to communicate with any others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.whatsapp.com&quot;&gt;WhatsApp&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/TextSecure&quot;&gt;TextSecure&lt;/a&gt; (however, email identifiers and a limited form of federation are coming soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;how-push-messages-work&quot;&gt;How Push Messages Work&lt;/h2&gt;

&lt;p&gt;If you’re not familiar with Apple’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Apple_Push_Notification_Service&quot;&gt;APNs&lt;/a&gt; or Google’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Google_Cloud_Messaging&quot;&gt;GCM&lt;/a&gt;, these services are the officially sanctioned way of sending push messages to mobile apps. However, there are certain limitations that prevent easy XMPP-style federation:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You cannot (easily) send push messages to someone else’s app&lt;/li&gt;
  &lt;li&gt;Push messages on iOS are not guaranteed to be delivered (although they usually are)&lt;/li&gt;
  &lt;li&gt;Push message payloads on iOS cannot be processed by the app in the background before iOS 7&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest problem is that there is no easy way to send push messages between my app and your app. For me to send a push to one of your app’s users on iOS, I must first obtain an APNs SSL certificate/key pair from you, and one of your user’s ‘push token’ that uniquely identifies their device to Apple. These push tokens are potentially sensitive information because they allow Apple to locate your device (in order to send it a push).&lt;/p&gt;

&lt;h2 id=&quot;solving-inter-app-push&quot;&gt;Solving Inter-app Push&lt;/h2&gt;

&lt;p&gt;To solve the XMPP push problem, we need multiple pieces of new infrastructure:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Solve the problem of how to send raw push messages between two arbitrary apps.&lt;/li&gt;
  &lt;li&gt;Define spec for where clients (apps) should send messages when contact is “offline”&lt;/li&gt;
  &lt;li&gt;Define spec for where servers should send messages when contact is “offline”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of having each app developer manually provide every other app developer an SSL push certificate and push tokens, an intermediary server can be built to automate this process and obscure the actual push tokens, as well as control potential spam.&lt;/p&gt;

&lt;p&gt;However, this approach will require cooperation between XMPP clients and XMPP servers in order for federation to work properly.&lt;/p&gt;

&lt;p&gt;ChatSecure iOS can connect to almost any XMPP server, so it can be a client for multiple JIDs. A user could have the accounts “alice@example.com” and “alice@jabber.org” and expect to receive background notifications for both accounts. This means the operators of the XMPP servers for example.com and jabber.org will need to understand and implement our spec to send pushes to our client.&lt;/p&gt;

&lt;h3 id=&quot;push-relay-server&quot;&gt;Push Relay Server&lt;/h3&gt;

&lt;p&gt;This is the server that sends the final push to the app user. It will need to accept POSTs from authorized pushers, which can include XMPP server operators, individual app developers with other relay servers, or even other end users. For ChatSecure iOS we can do this by having users register a unique username/password with our instance of the push relay server, tied to an optional email address identifier for password resets.&lt;/p&gt;

&lt;p&gt;After registering a “ChatSecure Push” account, you must add a device to receive pushes, which includes the required information for delivering the final push message (the APNs token) and probably a user friendly identifier / basic device info.&lt;/p&gt;

&lt;p&gt;To receive push messages to your account (which are then forwarded to all your registered devices), you must request a whitelist token from the server to give to your friends and authorized XMPP servers. Anyone with a whitelist token will be able to send you messages directly to all of your devices by crafting a POST message to our relay server.&lt;/p&gt;

&lt;p&gt;An old draft of how this server might work is &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server/blob/master/docs/v3/README.md&quot;&gt;available here&lt;/a&gt; but it needs to be updated because we identified serious problems with this spec a long time ago. However, we never updated the draft online from our notes, so we lost all of that work. Great.&lt;/p&gt;

&lt;h3 id=&quot;xmpp-clients&quot;&gt;XMPP Clients&lt;/h3&gt;

&lt;p&gt;XMPP clients will need a way to ask another clients if they support receiving pushes via a relay. Since pushes can be sent from anywhere, clients will also be able to send pushes directly to other clients through the relay as long as they have their friend’s whitelist token. They will also need to respond to XMPP server inquiries for whitelist tokens to allow pushes to be sent by the server if a message is sent by a client not supporting direct push.&lt;/p&gt;

&lt;h3 id=&quot;xmpp-servers&quot;&gt;XMPP Servers&lt;/h3&gt;

&lt;p&gt;XMPP servers can ask their connected clients if they support push relays and, if so, forward messages they receive to the push relay server when the client is offline. This will require the XMPP server to obtain a whitelist token from the user as well.&lt;/p&gt;

&lt;h3 id=&quot;non-xmpp-clients&quot;&gt;Non-XMPP Clients&lt;/h3&gt;

&lt;p&gt;Because this method can bypass the XMPP server entirely, it allows for non-XMPP protocols to participate.&lt;/p&gt;

&lt;h2 id=&quot;what-still-needs-to-be-done&quot;&gt;What Still Needs to be Done&lt;/h2&gt;

&lt;p&gt;We need to fix/finish our server &lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server/blob/master/docs/v3/README.md&quot;&gt;draft spec&lt;/a&gt; and deploy a proof of concept XMPP server and push relay for the chatsecure.org domain. Additional work will also need to be done to integrate this for the ChatSecure clients.&lt;/p&gt;

&lt;p&gt;There are many issues to be overcome, and there are very few developers who care about developing an interoperable standard because there is absolutely no financial incentive… and it is very difficult to do correctly. Proprietary messaging apps can get hundreds of millions in financing and large teams of engineers. We have to make do with much, much less.&lt;/p&gt;

&lt;p&gt;Another big problem is that OTR is incompatible with this approach unless we use hacks to wake up clients to establish new sessions but, even if we do that, the messages won’t be able to be decrypted by multiple devices. The TextSecure protocol may provide some answers here, but they also haven’t solved the inter-app federation problem in a way that allows users to run their own backend or custom TextSecure clients.&lt;/p&gt;

&lt;p&gt;Perhaps work should be directed toward extending the TextSecure infrastructure to support inter-app communication and federation instead of extending the aging OTR and XMPP protocols beyond their meaningful lifetime.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The Importance of SSL Pinning</title>
      <link>https://chatsecure.org/blog/importance-of-ssl-pinning/</link>
      <pubDate>Sat, 22 Feb 2014 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/importance-of-ssl-pinning</guid>
      <description>&lt;p&gt;&lt;img src=&quot;/images/ssl_pinning.jpg&quot; alt=&quot;SSL Pinning Support&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You may have noticed there was a &lt;a href=&quot;http://support.apple.com/kb/HT6147?viewlocale=en_US&amp;amp;locale=en_US&quot;&gt;very important security update&lt;/a&gt; for iOS devices lately that patches a flaw allowing the complete bypass of certificate checks for any apps that use the default system-wide TLS library, Security.framework. There is a pretty good description of the vulnerability &lt;a href=&quot;https://www.imperialviolet.org/2014/02/22/applebug.html&quot;&gt;here&lt;/a&gt;, if you’re interested.&lt;/p&gt;

&lt;p&gt;If you use the latest versions of ChatSecure you are now using a feature called SSL pinning that allows for you to manually inspect and remember the SSL certificates of the servers you connect to, bypassing the CA system entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However&lt;/strong&gt;, if you do not update to iOS 7.0.6 or higher and you are being actively &lt;a href=&quot;https://en.wikipedia.org/wiki/Man-in-the-middle_attack&quot;&gt;MitMed&lt;/a&gt;, the alert dialog (&lt;a href=&quot;/images/ssl_pinning.jpg&quot;&gt;pictured above&lt;/a&gt;) may provide misleading information in the form of a green ✓ instead of a red ✗ with the appropriate certificate error. This is because XMPPFramework’s socket library, GCDAsyncSocket, relies on Apple’s faulty SSL verification routine. Fortunately the displayed SHA-1 hash will still not match, so it is especially important to check the double-check the fingerprint of any new certificate before you store it.&lt;/p&gt;

&lt;p&gt;It is especially important to update all of your devices as soon as possible because apps that don’t implement certificate pinning will not display any warning at all when your connection is compromised. Unfortunately most apps do not implement this functionality, &lt;a href=&quot;http://blog.ioactive.com/2014/01/personal-banking-apps-leak-info-through.html&quot;&gt;including many banking apps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additionally, if you are using OS 10.9.1, please avoid using Safari (or other programs that use Security.framework) until this vulnerability is patched on OS X as well.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v2.2 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v22-released/</link>
      <pubDate>Wed, 22 Jan 2014 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v22-released</guid>
      <description>&lt;p&gt;ChatSecure v2.2 for iOS was &lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;approved by Apple today&lt;/a&gt;. One of the main new features is support for &lt;a href=&quot;https://en.wikipedia.org/wiki/Transport_Layer_Security#Certificate_pinning&quot;&gt;SSL certificate pinning&lt;/a&gt;, to help prevent man-in-the-middle attacks. A nice side effect of implementing this feature is that we now support alternative root CAs like &lt;a href=&quot;http://www.cacert.org&quot;&gt;CACert.org&lt;/a&gt;, which now means &lt;a href=&quot;http://web.jabber.ccc.de&quot;&gt;jabber.ccc.de&lt;/a&gt; accounts should work properly. This also means that if you run your own XMPP server with a self-signed certificate, you should have less problems connecting and can now verify and pin the &lt;a href=&quot;https://en.wikipedia.org/wiki/SHA-1&quot;&gt;SHA1 hash&lt;/a&gt; of your certificate before connecting. &lt;a href=&quot;https://github.com/davidchiles&quot;&gt;@davidchiles&lt;/a&gt; crafted a beautiful and simple interface that appears for each new certificate, including information about whether or not the certificate would pass the built-in iOS certificate checks:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/ssl_pinning.jpg&quot; alt=&quot;SSL Pinning Support&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We also implemented another highly requested feature: you can now enable automatic login for your accounts. Coming soon is support for &lt;a href=&quot;https://www.torproject.org&quot;&gt;Tor&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/SOCKS#SOCKS5&quot;&gt;SOCKS5&lt;/a&gt;, and XMPP account creation (&lt;a href=&quot;http://xmpp.org/extensions/xep-0077.html&quot;&gt;XEP-0077&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id=&quot;notable-changes&quot;&gt;Notable Changes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;XMPP: SSL Certificate Pinning&lt;/li&gt;
  &lt;li&gt;XMPP: Support for non-standard root CAs like CACert to support jabber.ccc.de&lt;/li&gt;
  &lt;li&gt;XMPP: Better support for self-signed SSL certificates via certificate pinning&lt;/li&gt;
  &lt;li&gt;Support auto-login for accounts&lt;/li&gt;
  &lt;li&gt;User interface improvements&lt;/li&gt;
  &lt;li&gt;Security improvements&lt;/li&gt;
  &lt;li&gt;Internal refactoring and code cleanup&lt;/li&gt;
  &lt;li&gt;Fix many crashes&lt;/li&gt;
  &lt;li&gt;Update 3rd party libraries&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v2.1.2...v2.2&quot;&gt;Full Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Special thanks to &lt;a href=&quot;https://github.com/vitalyster&quot;&gt;@vitalyster&lt;/a&gt; for the UI patches included in this version.&lt;/p&gt;

&lt;h3 id=&quot;download&quot;&gt;Download&lt;/h3&gt;

&lt;p&gt;Download it for free on the &lt;a href=&quot;https://itunes.apple.com/us/app/chatsecure/id464200063&quot;&gt;App Store&lt;/a&gt; and check out the &lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/releases/tag/v2.2&quot;&gt;source code&lt;/a&gt; on GitHub.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Website Redesign</title>
      <link>https://chatsecure.org/blog/website-redesign/</link>
      <pubDate>Thu, 09 Jan 2014 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/website-redesign</guid>
      <description>&lt;p&gt;I decided to redesign &lt;a href=&quot;http://chatsecure.org&quot;&gt;chatsecure.org&lt;/a&gt; with &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll&lt;/a&gt;, a static blogging framework, combined with the very pretty &lt;a href=&quot;http://incorporated.sendtoinc.com&quot;&gt;Incorporated&lt;/a&gt; theme. If you find any mistakes, or would like to help improve the site, feel free to &lt;a href=&quot;https://github.com/chatsecure/chatsecure.github.io&quot;&gt;submit a pull request&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;One major issue is that GitHub Pages doesn’t support SSL and, even worse, if you have a custom domain it will appear to be completely broken because their servers &lt;a href=&quot;https://chatsecure.org&quot;&gt;don’t respond at all&lt;/a&gt; on port 443 for custom domains.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>New Servers!</title>
      <link>https://chatsecure.org/blog/new-servers/</link>
      <pubDate>Thu, 12 Dec 2013 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/new-servers</guid>
      <description>&lt;p&gt;It only took a year, but we have finally migrated to a new server and a super simple Django blogging engine instead of a giant template file rendered with Flask. Sorry about the lack of updates in the meantime! Next step will be to rewrite chatsecure.org to include information about the Android version as well.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v2.1.2 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v212-released/</link>
      <pubDate>Thu, 14 Nov 2013 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v212-released</guid>
      <description>&lt;ul&gt;
  &lt;li&gt;Fix Facebook login issues&lt;/li&gt;
  &lt;li&gt;Fix non-Gmail Google Apps for Domain login issues&lt;/li&gt;
  &lt;li&gt;Fix issue with erroneous SSL validation error&lt;/li&gt;
  &lt;li&gt;Fix missing keyboard / chat input area&lt;/li&gt;
  &lt;li&gt;Fix crash when quickly switching between buddies&lt;/li&gt;
  &lt;li&gt;Fix 100% CPU usage bug&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v2.1.1...v2.1.2&quot;&gt;Full changelog&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v2.1.1 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v211-released/</link>
      <pubDate>Mon, 11 Nov 2013 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v211-released</guid>
      <description>&lt;ul&gt;
  &lt;li&gt;Localization updates&lt;/li&gt;
  &lt;li&gt;Fixes for delivery receipts&lt;/li&gt;
  &lt;li&gt;Fix OTR negotiation with ChatSecure-Android&lt;/li&gt;
  &lt;li&gt;Opportunistic OTR support&lt;/li&gt;
  &lt;li&gt;iOS 6 Sharing Sheet&lt;/li&gt;
  &lt;li&gt;Fix Facebook account disconnection crash&lt;/li&gt;
  &lt;li&gt;Fix QR code sharing&lt;/li&gt;
  &lt;li&gt;Fix XMPP SSL hostname mismatch and self-signed cert switches&lt;/li&gt;
  &lt;li&gt;Fix various UI bugs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v2.1...v2.1.1&quot;&gt;Full changelog&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v2.1 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v21-released/</link>
      <pubDate>Wed, 30 Oct 2013 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v21-released</guid>
      <description>&lt;ul&gt;
  &lt;li&gt;Bug Fixes&lt;/li&gt;
  &lt;li&gt;Security improvements&lt;/li&gt;
  &lt;li&gt;iOS 7 UI improvements&lt;/li&gt;
  &lt;li&gt;Added OAuth Support for Google &amp;amp; Facebook&lt;/li&gt;
  &lt;li&gt;Fixes Facebook login&lt;/li&gt;
  &lt;li&gt;Updated localization&lt;/li&gt;
  &lt;li&gt;Fixed Core Data database migration from v2.0.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note: For Google and Facebook accounts you’ll need to reauthorize using OAuth instead of username &amp;amp; password&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v2.0.1...v2.1&quot;&gt;Full changelog&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v2.0 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v20-released/</link>
      <pubDate>Thu, 20 Jun 2013 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v20-released</guid>
      <description>&lt;p&gt;We are excited to announce the release of v2.0 of ChatSecure! There has been a major overhaul of the internals to use Core Data, which will allow us to make major improvements much more quickly in the future. Users have reported some instability with the current release, but it should be fixed in v2.0.1. You can help us track down bugs by opting in to automated crash reporting. You can also submit feedback directly to our &lt;a href=&quot;http://chatsecure.uservoice.com/&quot;&gt;UserVoice&lt;/a&gt; page, or if you’re feeling adventurous submit them directly to our &lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/issues&quot;&gt;Github Issues&lt;/a&gt; tracker.&lt;/p&gt;

&lt;h3 id=&quot;whats-new-in-version-20&quot;&gt;What’s New in Version 2.0&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;New UI design&lt;/li&gt;
  &lt;li&gt;Updated translations&lt;/li&gt;
  &lt;li&gt;Major internal changes that will make the app easier to improve in the future&lt;/li&gt;
  &lt;li&gt;Add buddies&lt;/li&gt;
  &lt;li&gt;Search buddy list&lt;/li&gt;
  &lt;li&gt;Groups&lt;/li&gt;
  &lt;li&gt;View buddy info on long press&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/chatsecure/id464200063?mt=8&quot;&gt;Free Download&lt;/a&gt; (&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v1.5.1...v2.0&quot;&gt;changelog&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v1.5 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v15-released/</link>
      <pubDate>Thu, 13 Dec 2012 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v15-released</guid>
      <description>&lt;p&gt;In November we added Tibetan translations, better fingerprint verification UI, and added an in-app language switcher. We also introduced a crash-on-launch bug that affected certain locales. This should be fixed in v1.5.1.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;More/updated localizations merged into the app&lt;/li&gt;
  &lt;li&gt;Tibetan translation now works&lt;/li&gt;
  &lt;li&gt;Improved fingerprint verification user interface&lt;/li&gt;
  &lt;li&gt;In-app language switcher for changing to languages not supported by the OS (e.g. Tibetan)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;v1.5.1&lt;/strong&gt; Fix crash on launch bug and localization switcher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/chatsecure/id464200063?mt=8&quot;&gt;Free Download&lt;/a&gt; (&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v1.4...v1.5.1&quot;&gt;changelog&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v1.4 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v14-released/</link>
      <pubDate>Mon, 05 Nov 2012 00:00:00 -0800</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v14-released</guid>
      <description>&lt;p&gt;In October we finished up v1.4 which includes XEP-0184 (delivery receipts), XEP-0085 (chat state) and a redesigned login screen. We have also been working on privacy-minded solutions to the lack of push messaging support (ChatSecure Push Server) as well as additional avenues for backgrounded sockets.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;XEP-0184: Delivery receipts. This feature is in Gibberbot as well, which allows for clients to be notified when their messages are received by the other chat participant.&lt;/li&gt;
  &lt;li&gt;XEP-0085: Chat State. This feature allows users to see when other people are typing a message, and gives them the option to send those notifications as well.&lt;/li&gt;
  &lt;li&gt;Redesigned login screen: Completely refactored the login screen to be more extensible in the future. We also added a port field for custom XMPP servers.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ChatSecure/ChatSecure-Push-Server&quot;&gt;ChatSecure Push Server&lt;/a&gt;: A working proof-of-concept server has been built, and we are now working on client integration, as well as other options to allow for long running background sockets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/chatsecure/id464200063?mt=8&quot;&gt;Free Download&lt;/a&gt; (&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v1.3...v1.4&quot;&gt;changelog&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v1.3 Released</title>
      <link>https://chatsecure.org/blog/chatsecure-v13-released/</link>
      <pubDate>Mon, 24 Sep 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v13-released</guid>
      <description>&lt;p&gt;What’s New in Version 1.3&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Multiple simultaneous account support! (Facebook, GTalk, AIM, XMPP)&lt;/li&gt;
  &lt;li&gt;Option to remember account passwords in iOS keychain&lt;/li&gt;
  &lt;li&gt;User interface improvements&lt;/li&gt;
  &lt;li&gt;Many, many bug fixes&lt;/li&gt;
  &lt;li&gt;Upgrade to libotr 4.0.0&lt;/li&gt;
  &lt;li&gt;iOS 6 and iPhone 5 support&lt;/li&gt;
  &lt;li&gt;Removes support for armv6 devices and now has a minimum requirement of iOS 4.3. Sorry!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/chatsecure/id464200063?mt=8&quot;&gt;Free Download&lt;/a&gt; (&lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/compare/v1.2...v1.3&quot;&gt;changelog&lt;/a&gt;)&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>v1.3 Status Update</title>
      <link>https://chatsecure.org/blog/v13-status-update/</link>
      <pubDate>Fri, 10 Aug 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/v13-status-update</guid>
      <description>&lt;p&gt;A number of changes have been committed to the master branch since the last status update:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The refactoring required for multiple account support is almost complete.&lt;/li&gt;
  &lt;li&gt;Global XMPP SSL certificate verification preferences have been removed and have been replaced with per-account settings. (Thanks to Chris Gahan for mentioning it before it was ever a problem)&lt;/li&gt;
  &lt;li&gt;Currently there is no UI for relaxing the cert checks anymore, but the underlying code is in place. This will need to be hooked up toOTRLoginViewController and tested thoroughly before v1.3 submission.&lt;/li&gt;
  &lt;li&gt;Some UI elements have been simplified or merged into other views.&lt;/li&gt;
  &lt;li&gt;The Conversations view (only available on iPhone) has been eliminated and has been replaced by an editable “Recents” list at the top of your Buddy List on both iPhone and iPad.&lt;/li&gt;
  &lt;li&gt;Adding accounts is now done directly from the Settings screen.&lt;/li&gt;
  &lt;li&gt;Fixes have been made to the logic for when to show message notifications&lt;/li&gt;
  &lt;li&gt;It also doesn’t crash anymore when trying to reply under certain scenarios&lt;/li&gt;
  &lt;li&gt;Support for sharing a link to the App via Twitter on iOS 5 and higher.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are still some issues related to not properly downgrading back to plaintext aftercancelinga secure conversation that need to be fixed before the next update as well. Once that is figured out, we should be on track for submission to the App Store very soon!&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>ChatSecure v1.3 Progress</title>
      <link>https://chatsecure.org/blog/chatsecure-v13-progress/</link>
      <pubDate>Tue, 31 Jul 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/chatsecure-v13-progress</guid>
      <description>&lt;p&gt;I have been mainly working on UI / usability improvements and trying to iron out some persistent bugs. Here are the things that still need to be done before the 1.3 release:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Figure out how to properly downgrade conversation to plaintext (Ian’s explanation on the otr-dev mailing list wasn’t clear to me, so maybe Miron could be of help)&lt;/li&gt;
  &lt;li&gt;Hopefully this will fix the “missing messages” bug.&lt;/li&gt;
  &lt;li&gt;Rigorously test the security of the new password storage mechanism (uses iOS keychain)&lt;/li&gt;
  &lt;li&gt;Make the XMPP SSL certificate-checking options (hostname mismatch, or allowing self-signing) per-account, rather than global, and only for custom XMPP accounts.&lt;/li&gt;
  &lt;li&gt;Implement SSL cert verification if possible.&lt;/li&gt;
  &lt;li&gt;Fix the “multiple conversations with the same buddy” bug.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    <item>
      <title>We have a Mailing List</title>
      <link>https://chatsecure.org/blog/we-have-a-mailing-list/</link>
      <pubDate>Tue, 10 Jul 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/we-have-a-mailing-list</guid>
      <description>&lt;p&gt;We now have a &lt;a href=&quot;https://groups.google.com/forum/#!forum/chatsecure&quot;&gt;Google Group&lt;/a&gt; for public discussion about the app. Feel free to join!&lt;/p&gt;

&lt;p&gt;In other news, we are moving ahead with multiple account support and better UI integration with other XMPP services like Facebook, Jabber, Google Apps, and custom servers. Expect v1.3 to be on the App Store in the next few weeks. We are considering dropping AIM support in a future release because the &lt;a href=&quot;https://github.com/unixpickle/LibOrange&quot;&gt;LibOrange&lt;/a&gt; library seems to be dead. If you still use AIM and would like to see it kept in the app, please make your voice heard!&lt;/p&gt;

&lt;p&gt;Also, if have a paid iOS developer account and are looking for longer-running background support, check out the &lt;a href=&quot;https://github.com/chrisballinger/Off-the-Record-iOS/tree/background&quot;&gt;background&lt;/a&gt; branch on Github.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Version 1.2 Approved</title>
      <link>https://chatsecure.org/blog/version-12-approved/</link>
      <pubDate>Thu, 07 Jun 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/version-12-approved</guid>
      <description>&lt;p&gt;&lt;a href=&quot;https://guardianproject.info/&quot;&gt;&lt;img src=&quot;/images/guardian_banner.png&quot; alt=&quot;guardian project logo&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would like to announce a partnership with &lt;a href=&quot;https://guardianproject.info/&quot;&gt;The Guardian Project&lt;/a&gt;, who develops the Android equivalent of ChatSecure called &lt;a href=&quot;https://guardianproject.info/apps/gibber/&quot;&gt;Gibberbot&lt;/a&gt;, along with a whole suite of mobile security applications. It’s an exciting time for open-source secure mobile communications!&lt;/p&gt;

&lt;p&gt;Version 1.2 has been approved! This new version includes support for limited &lt;strong&gt;background messaging&lt;/strong&gt;, the #1 most requested feature. Yay!&lt;/p&gt;

&lt;h3 id=&quot;background-messaging&quot;&gt;Background Messaging&lt;/h3&gt;

&lt;p&gt;Unfortunately, Apple’s policies prevent the creation of secure chat applications that run in the background indefinitely. The only way to get backgrounded sockets on iOS is to register your app as “VoIP”, but unless you actually implement VoIP services, you will get rejected from the App Store. A common workaround used by other chat programs is to run the real chat client server-side and run a “push service” that sends the messages to your phone. That approach is unacceptable for this app because it would require me to build my own push server, which comes with quite a few drawbacks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Centralized storage of login credentials&lt;/li&gt;
  &lt;li&gt;Single point of failure&lt;/li&gt;
  &lt;li&gt;Vulnerable to eavesdropping&lt;/li&gt;
  &lt;li&gt;Expensive to build and maintain&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html&quot;&gt;Maximum size allowed for a notification payload is 256 bytes&lt;/a&gt;, and is “best effort” and not guaranteed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only other option is to ‘trick’ the OS into continuing to run the application in the background by starting a “long running task” during the &lt;code class=&quot;highlighter-rouge&quot;&gt;applicationDidEnterBackground:&lt;/code&gt; in your app delegate, which in this case is an &lt;code class=&quot;highlighter-rouge&quot;&gt;NSTimer&lt;/code&gt; set to fire every 10 seconds or so. The main limitation to this approach is that unless you manually restart the app every 10 minutes, it will be force-closed by the OS. This is similar to the technique used by the awesome &lt;a href=&quot;http://verbs.im/&quot;&gt;Verbs&lt;/a&gt; app, who graciously helped me tackle this problem.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Version 1.2 Submitted</title>
      <link>https://chatsecure.org/blog/firstpost/</link>
      <pubDate>Tue, 08 May 2012 00:00:00 -0700</pubDate>
      <author></author>
      <guid>https://chatsecure.org/blog/firstpost</guid>
      <description>&lt;p&gt;First post!&lt;/p&gt;
</description>
    </item>
    
    

  </channel> 
</rss>