惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
月光博客
月光博客
腾讯CDC
Engineering at Meta
Engineering at Meta
博客园 - Franky
Vercel News
Vercel News
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Martin Fowler
Martin Fowler
GbyAI
GbyAI
B
Blog
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog

Signal Blog

Label yourself Put a pin in it Signal Polls: Yes, no, maybe (yes!) Signal Protocol and Post-Quantum Ratchets Introducing Signal Secure Backups By Default, Signal Doesn't Recall A Synchronized Start for Linked Devices Improving Private Signal Calls: Call Links & More Proxy Please: Help People Connect to Signal Keep your phone number private with Signal usernames Trend report: Use Signal Privacy is Priceless, but Signal is Expensive New Features Roll Call: Fall 2023 Quantum Resistance and the Signal Protocol Standing firm against threats to private and safe communication Signal is for everyone, and everyone is different Story Time Removing SMS support from Signal Android (soon) Help people in Iran reconnect to Signal – a request to our community A Message from Signal's New President Technology Deep Dive: Building a Faster ORAM Layer for Enclaves Signal Your Support You Can Change Your Number New year, new CEO How to build large-scale end-to-end encrypted group video calls Become a Signal Sustainer Improving first impressions on Signal Embrace ephemerality with default disappearing messages The Instagram ads Facebook won't show you Exploiting vulnerabilities in Cellebrite UFED and Physical Analyzer from an app's perspective
Signal and GIPHY
2016-11-01 · via Signal Blog

The latest Signal release for Android includes support for GIF search and browsing. Signal has long supported sending and receiving GIFs, but this is an experiment that allows users to browse, search, and select popular GIFs from within Signal.

GIFs and privacy

GIF search engines like GIPHY, Tenor, and Guggy have made this type of functionality increasingly popular. They provide network APIs that allow an app to easily expose trending and search functionality for GIFs.

For instance, if someone messages you with an invitation, you might want to write back with a message that says “I’m excited.” With integrated GIF search, you could instead do a GIF search for “I’m excited” and send one of the results instead.

Of course, as you type your search, it’s transmitted over the network to the GIF search engine:

http://api.giphy.com/v1/gifs/search?q=I&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+e&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+ex&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+exc&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+exci&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+excit&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+excite&api_key=dc6zaTOxFJmzC
http://api.giphy.com/v1/gifs/search?q=Im+excited&api_key=dc6zaTOxFJmzC

This is of some concern. While it might seem silly to worry about GIF search confidentiality, what you search for is in some sense the “content” of your message. Instead of sending “I’m excited,” you searched “I’m excited.” Message content (or anything like it) is always something we want to think carefully about.

An experimental approach

Any practical approach requires that the search term be transmitted to the GIF search engine. Ideally, however, it would be done in a way that doesn’t provide the GIF search engine’s operator with the knowledge of who issued the search.

Some messaging services act as a plaintext proxy for the GIF searches. The app transmits the plaintext search term to the messaging service, which queries the GIF search engine server-side and transmits the results back to the client. While that does hide from the GIF search engine the identity of the user who issued the search, it is actually worse than issuing an unproxied search directly, since the messaging service itself is given plaintext access to both the search term and the GIF the user selects. Obviously, a privacy-preserving messaging service should not have access to that kind of plaintext.

The GIPHY API has an HTTPS endpoint which Signal uses to provide a different kind of proxy. When querying GIPHY:

  1. The Signal app opens a TCP connection to the Signal service.
  2. The Signal service opens a TCP connection to the GIPHY HTTPS API endpoint and relays bytes between the app and GIPHY.
  3. The Signal app negotiates TLS through the proxied TCP connection all the way to the GIPHY HTTPS API endpoint.

Since communication is done via TLS all the way to GIPHY, the Signal service never sees the plaintext contents of what is transmitted or received. Since the TCP connection is proxied through the Signal service, GIPHY doesn’t know who issued the request.

The Signal service essentially acts as a VPN for GIPHY traffic: the Signal service knows who you are, but not what you’re searching for or selecting. The GIPHY API service sees the search term, but not who you are.

Caveats

While this does hide your IP address from GIPHY and your search terms from Signal, there are some caveats. The GIPHY service could use subtleties like TLS session resume or cache hits to try to correlate multiple requests as having come from the same client, even if they don’t know the origin.

Similarly, the Signal service that’s proxying traffic could attempt to measure the amount of data transmitted in order to discern something about the GIFs being retrieved from GIPHY.

We’ll continue to look at things like adding padding or disabling TLS session resume for these requests in order to push things further. We’re evaluating how this works in the Android app, and will extend it to iOS and the Desktop shortly. Try it out!

Get it on Google Play