l Encrypted messaging app Signal uses Google to bypass censorship
itMYti.com < New IT WebNews
Category: news    |    Added: 2016-12-23 05:55:05    |    View: 117

The app routes requests through Google's servers to make it harder for governments to block them

The Signal app uses domain fronting to evade censorship attempts.
Credit: Peter Sayer
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } placementDiff = applyInsert($(this), adDivString); if (DEBUG) { console.log("Just placed an ad and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + AD_HEIGHT_BUFFER; } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); placementDiff = applyInsert($(this), moduleDivString); if (DEBUG) { console.log("Just placed a module and the placementDiff is: " + placementDiff); } placementTarget = cumulativeHeight + placementDiff + INTERMODULE_HEIGHT + MODULE_HEIGHT_BUFFER; moduleCounter++; } loopCounter++; } // Avoid placing elements too soon due to non-large figures inflating the cumulative height if ($(this).is("figure") && !$(this).is("figure.large")) { cumulativeHeight += GRAF_HEIGHT; } else { cumulativeHeight += $(this).height() + GRAF_HEIGHT; } } }); // end $("#drr-container").children().each() // clone Related Stories module to come in after eighth para in article body for mobile breakpoint display var $relatedStories = $('.related-promo-wrapper'); if ($relatedStories.length) { var $relatedStoriesClone = $relatedStories.clone(); $relatedStoriesClone.insertAfter( "#drr-container > p:eq(7)"); } // For mobile only, place ad after second paragraph. if (firstMobileAdHtml) { $(firstMobileAdHtml).insertAfter("#drr-container > p:eq(1)"); } var $insiderPromo = $('.insider-promo-wrapper'); if ($insiderPromo.length) { var $insiderPromoClone = $insiderPromo.clone(); $insiderPromoClone.insertAfter( "#drr-container > p:eq(1)"); } IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } /** * @param jqo Original jquery object target * @param divString The div to be inserted. * @return Difference in height between original placement target and final target. * Checks first 6 elements for an allowable placement (600 pixel window). * If none, place element in first location that does not follow a reject element. */ function applyInsert(jqo, divString) { if (DEBUG) { console.log("applyInsert at top and jqo index is: " + jqo.index()); } for (var i=0; i<=6; i++) { $thisElement = jqo.nextAll().andSelf().slice(i, i+1); if (DEBUG) { console.log("Checking first six and i is: " + i + " and this element index is " + $thisElement.index() ); } if ($thisElement.index() < 0) { break; } if (allowPlacement($thisElement)) { return addElement(jqo, $thisElement, divString); } } if (DEBUG) { console.log("No nearby allows so just place in first spot that is not after reject."); } var numElements = jqo.nextAll().length; var startIndex = jqo.index(); for (var i=startIndex; i<=numElements; i++) { var $element = $("#drr-container").children().eq(i); // This element is eligible when not null, not in placement index, and previous element is not reject if ($element != null && (placementIndex == null || placementIndex.indexOf(i) == -1) && !isReject($element.prev())) { return addElement(jqo, $element, divString); } } if (DEBUG) { console.log("Not going to place element: return 0."); } return 0; } /** * @param jqo Original jquery object * @param allowElement Element that is good placement for module/ad * @param divString The div to be inserted before the good element * @return placementHeightDiff Diff in height between original placement target and current target. * * If element is not too close to the end the insert the div before allowable element. * Add element index to placementIndex to keep track of which elements already have placements */ function addElement(jqo, allowElement, divString) { var offset = allowElement.index() - jqo.index(); if (DEBUG) { console.log("addElement: jqo index is " + jqo.index() + " allowElement index is " + allowElement.index()); } if (elementNotNearEnd(allowElement, RIGHT_PIXEL_WINDOW)) { allowElement.before(divString); if (DEBUG) { console.log("addElement: Adding " + allowElement.index() + " to placementIndex."); } placementIndex.push(allowElement.index()); if (offset == 0) { return 0; } else { return getHeightDifference(jqo,allowElement); } } else { if (DEBUG) { console.log("addElement: Near the end so do NOT add."); } return 0; } } function getHeightDifference(jqo,allowElement) { var offset = allowElement.index() - jqo.index(), height = 0, children = null; if (offset > 0) { children = $("#drr-container").children().slice(jqo.index(), allowElement.index()); } else { children = $("#drr-container").children().slice(allowElement.index(), jqo.index()); } if (children != null) { children.each(function(i) { if (DEBUG) { console.log("About to add this element's height to heigh diff offset"); console.log($(this)); } height += $(this).height() + GRAF_HEIGHT; }); } if (offset < 0) { height *= -1; } if (DEBUG) { console.log("getHeightDifference: offset was " + offset + " and height diff is : " + height); } return height; } function allowPlacement(jqo) { if (jqo.prev() != null && isReject(jqo.prev())) { return false; } return true; } function isReject(jqo) { if (jqo != null) { if (jqo.is('h2') || jqo.is('h3') || jqo.is('h4') || jqo.is('h5')) { if (DEBUG) { console.log("isReject: found header"); } return true; } } return false; } // Returns true if height of all elements after this one is more than 500; false otherwise function elementNotNearEnd(element, pixelWindow) { if (pixelWindow === null) { pixelWindow = 500; } if (element === null) { return false; } var remainingHeight = 0, children = $("#drr-container").children().slice(element.index()); if (children === null) { return false; } children.each(function(i){ remainingHeight += $(this).height(); }); if ( remainingHeight > pixelWindow) { return true; } else { if (DEBUG) { console.log("Element too close to end. Remaining height is: " + remainingHeight + " and window is " + pixelWindow); } return false; } } } // end function executeDRRMobile() function executeDRRDesktop() { var heroImgHeight = $('figure.hero-img').outerHeight(true); if (heroImgHeight === null) { heroImgHeight = 0; } var galleryItemHeight = $('figure.thm-gallery').outerHeight(true); if (galleryItemHeight === null) { galleryItemHeight = 0; } var atAglanceTop = $('.at-a-glance.top').height(); if (atAglanceTop === null) { atAglanceTop = 0; } var drrContainerHeight = $('div#drr-container').outerHeight(true); var topIMUheight = $('#topimu').height(); if (topIMUheight === 0) { topIMUheight = 600; } var relatedPromoHeight = $('div.related-promo-wrapper').outerHeight(true); if (relatedPromoHeight === null) { relatedPromoHeight = 0; } var videoHowtoHeight = $('div#video-howto-wrapper').outerHeight(true); if (videoHowtoHeight === null) { videoHowtoHeight = 0; } var teadsInreadHeight = $('div.teads-inread').height(); if (teadsInreadHeight === null) { teadsInreadHeight = 0; } var unrulyAdHeight = $('.unruly_in_article_placement').height(); if (unrulyAdHeight === null) { unrulyAdHeight = 0; } //just in case the in article ads are picked up... var collapsibleAdHeight = unrulyAdHeight + teadsInreadHeight; var workingRRheight = ( (heroImgHeight + galleryItemHeight + atAglanceTop + drrContainerHeight) - (topIMUheight + relatedPromoHeight + videoHowtoHeight) ); workingRRheight = workingRRheight - collapsibleAdHeight; var DEBUG = false; if (DEBUG) { console.log('-----working RR height = ' + workingRRheight); } var articleDRRModuleList = ["dealposts","products.latest-reviews"], moduleUrls = [], modules = [], moduleCounter = 0, loopCounter = 0; var adPositions = new Array(0,1,3); // IMU, IMU, module, IMU, module if (false) { var dealpostsIdx = articleDRRModuleList.indexOf("dealposts"); if (dealpostsIdx > -1) { articleDRRModuleList.splice(dealpostsIdx, 1); adPositions = [0, 1, 2]; } } for (var i=0; i 650) { numItems = 1; } if (workingRRheight > 1350) { numItems = 2; } if (workingRRheight > 2300) { numItems = 3; } if (workingRRheight > 2950) { numItems = 4; } if (workingRRheight > 3650) { numItems = 5; } for (var currIndex=0;currIndex
"; adDivString = "
" + adString + "
"; IDG.GPT.defineGoogleTagSlot(slotName ,[[320,50],[300,250],[300,50]]); } //$('#drr-container > p').first().before(adDivString); //$('#drr-top-ad').append(adDivString); $(adDivString).appendTo('#drr-top-ad'); if (DEBUG) { console.log("-----Just placed an AD currIndex = " + currIndex); } } else if (moduleCounter < articleDRRModuleList.length){ var elementId = "drr-mod-"+moduleCounter; var moduleDivString = "
"; modules.push(elementId); //$('#drr-container > p').first().before(moduleDivString); $('#drr-top-ad').append(moduleDivString); if (DEBUG) { console.log("-----Just placed a MODULE and currIndex = " + currIndex); } moduleCounter++; } } //end for loop IDG.GPT.trackOmniture(); // Add Right rail module content var placeModule = function( data ) { var placementId = $(data).attr("data-placement-id"); $( "#"+placementId ).html( data ); }; for (i=0; i" + adString + "
"; } } // end function executeDRRDesktop()

Developers of the popular Signal secure messaging app have started to use Google’s domain as a front to hide traffic to their service and to sidestep blocking attempts.

Bypassing online censorship in countries where internet access is controlled by the government can be very hard for users. It typically requires the use of virtual private networking (VPN) services or complex solutions like Tor, which can be banned too.

Open Whisper Systems, the company that develops Signal—a free, open-source app—faced this problem recently when access to its service started being censored in Egypt and the United Arab Emirates. Some users reported that VPNs, Apple’s FaceTime and other voice-over-IP apps were also being blocked.

The solution from Signal’s developers was to implement a censorship circumvention technique known as domain fronting that was described in a 2015 paper by researchers from University of California, Berkeley, the Brave New Software project and Psiphon.

The technique involves sending requests to a “front domain” and using the HTTP Host header to trigger a redirect to a different domain. If done over HTTPS, such redirection would be invisible to someone monitoring the traffic, because the HTTP Host header is sent after the HTTPS connection is negotiated and is therefore part of the encrypted traffic.

“In an HTTPS request, the destination domain name appears in three relevant places: in the DNS query, in the TLS Server Name Indication (SNI) extension and in the HTTP Host header,” the researchers said in their paper. “Ordinarily, the same domain name appears in all three places. In a domain-fronted request, however, the DNS query and SNI carry one name (the “front domain”), while the HTTP Host header, hidden from the censor by HTTPS encryption, carries another (the covert, forbidden destination).”

Their research revealed that many cloud service providers and content delivery networks allow HTTP host header redirection, including Google, Amazon Cloudfront, Amazon S3, Azure, CloudFlare, Fastly and Akamai. However, most of them only allow it for domains that belong to their customers, so one must become a customer in order to use this technique.

Google, for example, allows redirection through the HTTP host header from google.com to appspot.com. This domain is used by Google App Engine, a service that allows users to create and host web applications on Google’s cloud platform.

This means that someone can create a simple reflector script, host it on Google App Engine and then use the HTTP host header trick to hide its location from censors. Someone monitoring user traffic will only see HTTPS requests going to www.google.com, but those requests will reach the reflector script on Google App Engine and will be forwarded to a hidden destination.

“With today’s release, domain fronting is enabled for Signal users who have a phone number with a country code from Egypt or the UAE,” Open Whisper Systems founder Moxie Marlinspike said Wednesday in a blog post. “When those users send a Signal message, it will look like a normal HTTPS request to www.google.com. To block Signal messages, these countries would also have to block all of google.com.”

Even if the censors decide to ban Google, the domain fronting implementation can be expanded to use other large-scale services as domain fronts. If this happens, enforcing a ban on Signal would be the equivalent of blocking a very large portion of the internet.

The anti-censorship feature is currently present in the latest version of Signal for Android. It’s also included in a beta version of the app for iOS that will be released in production soon.

The developers also plan future improvements that will allow the app to detect censorship automatically and switch to domain fronting even if the user has a phone number from a country where censorship is not normally present. This is intended to cover those cases where users travel to other countries where the app is blocked.

Signal is considered by security experts as one of the most secure messaging services around. It’s open-source end-to-end encryption protocol has also been adopted by other popular chat apps like Facebook Messenger and WhatsApp.

While the communication between users is encrypted end-to-end, the Signal app uses servers for contact discovery and these can be blocked by censors to prevent users from using the app.

To comment on this article and other PCWorld content, visit our Facebook page or our Twitter feed.
Shop Tech Products at Amazon
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.
source: Pcworld
Category: review    |    10 hours ago    |    View: 336

With Samsung's Galaxy S10 launching soon, here's a closer look at how the new phone should differ from last year's models.

Category: news    |    10 hours ago    |    View: 0

In theory, this tech would pave the way for faster data transfer speeds than traditional radio signals, while also boasting some major security improvements (it's much harder to hack a laser, after all).

Category: news    |    11 hours ago    |    View: 32

Memory from Kingston’s gaming division, HyperX, was recently used to set a new overclocking world record.

Category: news    |    11 hours ago    |    View: 0

Category: news    |    12 hours ago    |    View: 11

Netflix is in late-stage talks with the Motion Picture Association of America (MPAA) with regard to joining the 97-year-old trade association according to two sources familiar with the matter as reported by Politico.

Category: news    |    12 hours ago    |    View: 0

If you're a TechSpot regular, the chances are good that you've seen dozens (if not hundreds) of scammy emails over the years.

Category: news    |    13 hours ago    |    View: 17

Although the company has made a few controversial decisions in the past, one thing Microsoft can't be accused of is ignoring the needs of those with physical or mental disabilities.

Category: news    |    14 hours ago    |    View: 50

Samsung on Tuesday launched its latest NVMe-based solid state drive, the Samsung 970 EVO Plus. It’s built on the M.2 (2280) form factor and uses the latest fifth-generation V-NAND technology with optimized firmware to push performance to new heights.

Category: review    |    15 hours ago    |    View: 12

The HP Omen Sequencer's optical-mechanical switches are cool, but the peripheral is not inventive enough to justify its high price.

Category: news    |    15 hours ago    |    View: 0

It’s easy to become jaded when a hobby becomes your livelihood. You just kind of expect the next best thing to show up without much consideration or appreciation for what goes into the R&amp;D and manufacturing process.




Download Latest PC Softwares

Category: audio-processing    |    Added: 20 hours ago    |    View: 0
Download RC-20 Retro Color VST for Mac - downloadwise.com

Download RC-20 Retro Color VST for Mac Free. it is full Latest Version setup of RC-20 Retro Color VST Premium Pro DMG for Apple Macbook OS X.

Brief Overview of RC-20 Retro Color VST for Mac OS X

Category: sharp-world-clock-free-download    |    Added: 21 hours ago    |    View: 0
Sharp World Clock Free Download - downloadwise.com

Sharp World Clock Free Download Latest Version for Windows. It is full offline installer standalone setup of Sharp World Clock 8.4.4.

Sharp World Clock is an impressive application which displays unlimited number of clocks for various different cities and information about the local weather, sunrise and sunset times. This advanced desktop clock shows the time for unlimited number of locations all around the world.

Category: carrier-hap-free-download    |    Added: 1 day ago    |    View: 0
Carrier HAP Free Download - downloadwise.com

Carrier HAP Free Download Latest Version for Windows. It is full offline installer standalone setup of Carrier HAP.

Carrier HAP is an impressive application designed for the consulting engineers, design contractors, HVAC contractors and various other professionals which are involved in the design and analysis of the commercial building HVAC systems.

Category: audio-processing    |    Added: 1 day ago    |    View: 0
iZotope Ozone Advanced 8 VST Free Download - downloadwise.com

iZotope Ozone Advanced 8 VST Free Download Latest Version. It is full offline installer standalone setup of iZotope Ozone Advanced 8.2.

iZotope Ozone Advanced 8 VST is an imposing and professional sound mixing as well as editing application that provides several separate modules and support for the 3rd party audio plug-ins. This complete audio mastering tool provides loads of features as well as options for creating tunes. You can also download iZotope RX 6 Audio Editor AdvancediZotope Ozone Advanced 8 VST Free Download-GetintoPC.com It h

Category: audio-processing    |    Added: 1 day ago    |    View: 0
Spinnin Records BASE VST Free Download - downloadwise.com

Spinnin Records BASE VST Free Download Latest Version. It is full offline installer standalone setup of Spinnin Records BASE VST 1.1.4.

Spinnin Records BASE VST is an impressive synthesizer that generates both kick and bass sound. Both of them are linked in terms of volume, spectrum and timing so they work together perfectly in your mix. You can also download Native Instruments Absynth VSTi.

Category: audio-processing    |    Added: 1 day ago    |    View: 0
Regroover Pro VST Free Download - downloadwise.com

Regroover Pro VST Free Download Latest Version for Windows. It is full offline installer standalone setup of Regroover Pro VST 1.7.7.

Regroover Pro VST is an imposing application which can be used for extracting stems from your audio loops and enable new beat making workflows. You can use the Artificial Intelligence engine and then get previously unreachable sounds from inside your audio samples. You can also download Scaler VST for Mac.

Category: operating-systems    |    Added: 2 days ago    |    View: 0
Windows Server 2019 Jan 2019 Edition Download - downloadwise.com

Windows Server 2019 Jan 2019 Edition Download Latest OEM RTM version. It is Full Bootable ISO Image of Windows Server 2019 Jan 2019.

Windows Server 2019 Jan 2019 Edition is the latest edition of the server operating system from Microsoft which is the part of Windows NT family of the operating systems. This operating system has been built on the strong foundation of the Windows Server 2016 and it has brought various different innovations on four different themes which are Application Platform, Hybrid Cloud, Security and Hyper-Converged Infrastructure (HCI). You can also download Windows Server 2008 R2 Incl Nov 2018 Updates.