Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

voice calls are not working #10

Open
pravi opened this issue Mar 14, 2016 · 85 comments
Open

voice calls are not working #10

pravi opened this issue Mar 14, 2016 · 85 comments
Labels

Comments

@pravi
Copy link

pravi commented Mar 14, 2016

I get 'login failed'. I use 3.12 websockets version. Is it expected to work on websockets version? ie, does signal server support websockets for voice too?

@mimi89999
Copy link

JavaJens#54

@mimi89999
Copy link

Somebody needs to convince OWS to release RedPhone server source code...

@mimi89999
Copy link

@SecUpwN @xmikos @JavaJens

@xmikos
Copy link
Member

xmikos commented Mar 14, 2016

@mimi89999 I am afraid that our only hope is that Open Whisper Systems would want to add support for voice calls into their browser-based Signal desktop client. Then they will be forced to add WebSocket support to their closed RedPhone server.

I am not the right person to try to convince OWS (after upsetting Moxie by providing public builds of LibreSignal) and I am afraid he will not listen to anyone of us...

@SecUpwN
Copy link
Member

SecUpwN commented Mar 15, 2016

Somebody needs to convince OWS to release RedPhone server source code...

Would like so too, but I guess @moxie0 doesn't really like to support Google-Free forks of Signal...

@pravi
Copy link
Author

pravi commented Mar 15, 2016

They don't support running independent voice + text servers.

 Masha Kolenkina (Open Whisper Systems)

Mar 15, 12:10
This is not supported.

Praveen

Mar 14, 02:23

Hi,

Any plans for releasing the Signal Voice (RedPhone) Server as Free Software/Open Source?

I'd like to setup a Signal server for both text and voice.

Thanks
Praveen

@pravi
Copy link
Author

pravi commented Mar 15, 2016

From a federated communications point of view, I think its better to spent our efforts on kontalk. Their community is very open to community participation and its pure xmpp (plus some customizations, but still interoperable with larger xmpp network). Currently the main drawback of kontalk is lack of group chat, but it is already in alpha. They run on tigase at server side, so extending it for voice should be straight forward.

@SecUpwN
Copy link
Member

SecUpwN commented Mar 15, 2016

From a federated communications point of view, I think its better to spent our efforts on kontalk.

Is that a hint that we should better ditch this project and move on to this other app?

@pravi
Copy link
Author

pravi commented Mar 15, 2016

@SecUpwN that is up to the contributors to decide. I prefer kontalk for the following reasons.

  1. Good community and open development.
  2. Official build for fdroid
  3. No lock-in to google.
  4. Interoperable with plain xmpp. Anyone can run their own server and talk to kontalk users.

Now the reason for using Signal is mainly the group feature (kontalk/androidclient#179), but once kontalk build it, I will have no reason to be on LibreSignal.

@pravi
Copy link
Author

pravi commented Mar 15, 2016

@SecUpwN for adding voice support to kontalk, all we'd ever need will be a pull request. No begging, no fear of banning, no need of depending on a single person for federation. Same for group feature, it just needs more contributors.

@mimi89999
Copy link

"3. No lock-in to google."
Could you please explain?

@mimi89999
Copy link

The big diff is that LibreSignal is using OTR like encryption....

@pravi
Copy link
Author

pravi commented Mar 15, 2016

@mimi89999 Fdroid version of kontalk does not use gcm. I learned about LibreSignal only a few weeks back. If it gets voice support, that too will not need gcm.

Now the same protocol is already available for xmpp, its called omemo (http://conversations.im/omemo). It just need a pull request to implement the same in kontalk (conversations already have it implemented). kontalk/androidclient#538

@SecUpwN
Copy link
Member

SecUpwN commented Mar 15, 2016

Interesting stuff, @pravi! Too bad Kontalk seems to not have a partner-app for iPhones.

@pravi
Copy link
Author

pravi commented Mar 15, 2016

@SecUpwN since kontalk is xmpp based, it could be added to xmpp apps like ChatSecure (just add key based authentication and phone number to xmpp id conversion logic). If we are spending efforts for truly federated Free Software app that is easy to use, then I feel focusing on kontalk is better, as federation is guaranteed. There is no guarantee LibreSignal will always work with Signal and the federation is really namesake when there is only a single server at the center and any new server has to be manually approved by Open Whisper Systems.

@pravi
Copy link
Author

pravi commented Mar 15, 2016

I feel the problem is scattering of resources, communities that are isolated now should come together. There is already a good sign as ChatSecure joining hands with Conversations. Now LibreSignal joining hands with kontalk would be super cool! If we make a good effort, I think we can crowd fund Kontalk support in ChatSecure.

@pravi
Copy link
Author

pravi commented Mar 15, 2016

@SecUpwN kontalk support is planned for ChatSecure ChatSecure/ChatSecure-iOS#370

@mimi89999
Copy link

@pravi LibreSignal is using Axolotl for encryption. (AFAIK) Kontalk isn't. That's why I prefer LibreSignal.

@mimi89999
Copy link

Also: For voice calls you can use a SIP client with ZRTP support.

@pravi
Copy link
Author

pravi commented Mar 18, 2016

@mimi89999 Signal has axolotl but no real fedeartion (its hard coded which servers are federated and its centrally controlled).

Kontalk does not have axolotl, but true federation with any xmpp server out there.

if you want axolotl and true federation you can start from kontalk and signal. Kontalk's axolotl/omemo support is a pull request away, its in the roadmap, if anyone is impatient, they can send a pull request today.

Now if you want true federation in Signal. You can just request and wait. There is no guarantee a new server will be accepted to Signal federarion or a server's acceptance is revoked.

@xmikos
Copy link
Member

xmikos commented Mar 20, 2016

@pravi Kontalk is insecure as hell. Basic XMPP + OMEMO (Axolotl implementation) is much better option. But it is also much less convenient than Signal for common users.

@pravi
Copy link
Author

pravi commented Mar 20, 2016

@xmikos why is it insecure? Can you explain? It uses gpg for encryption. The only drawback is lack of forward secrecy, which can be fixed by implementing omemo.

@mimi89999
Copy link

Basic XMPP + OMEMO (Axolotl implementation) is much better option. But it is also much less convenient than Signal for common users.

Conversations is a quite good option. You only need to find a good XMPP server (or host one). There should be also an OMEMO plugin for Gajim (Desktop).

@pravi
Copy link
Author

pravi commented Mar 20, 2016

@mimi89999 finding a server and finding contacts is an extra step compared to both kontalk and signal. Finding a server is still okay, having to manually find xmpp ids of all your contacts is not an easy step for most people. Kontalk is the right compromise for simplicity and privacy. Those who care can have basic xmpp while you can recommend kontalk to any non technical crowd comfortable with WhatsApp style messaging, a cheaper extention of sms/text messages with easy to use groups. Once diaspora gets xmpp in stable (we already run it on poddery.com and diasp.in), and it becomes popular, contact discovery can be solved to a large extend.

@mimi89999
Copy link

But Kontalk doesn't have such a strong encryption....

@pravi
Copy link
Author

pravi commented Mar 20, 2016

@mimi8999 its true kontalk does not have forward secrecy, but claiming it does not have strong encryption is not true. Substantiate your claim. It uses well proven gpg encryption. If some one gets hold of your key, they can decrypt your past conversation, if they have stored them in hope of getting your key. That is all the weakness kontalk has. As mentioned earlier, its an easy code fix by adopting omemo and kontalk already accepted it in their roadmap. The issue with Signal is social with zero hope of fixing judging their past responses. Also using a new client for ZRTP+SIP means more steps and apps and social challenge of getting your contalks on it.

@xmikos
Copy link
Member

xmikos commented Mar 20, 2016

@pravi In wake of Snowden revelations, no communication protocol should be called secure if it doesn't implement forward secrecy. It is a must and should be used by default (so e.g. something like Telegram with non-default secure chats is not enough, same as non-default OMEMO in XMPP).

But I agree that another ZRTP+SIP client for secure voice/video calls is bad solution. We need to make it work in LibreSignal, the problem is how to make it. Somebody said that PhoneLibre (originally RedPhone) still works for them, if it is true then RedPhone servers still implement old SMS-based signalling (not only Google Cloud Messaging). We can port it from RedPhone back to LibreSignal (but of course there is still risk that Open Whisper Systems will remove it in the future).

@mimi89999
Copy link

I don't think that using a proprietary server is a good idea... Somebody should convince OWS to make it FOSS...

@mimi89999
Copy link

@DroidFire

@Zepmann
Copy link

Zepmann commented Apr 7, 2016

I think we are getting sidetracked for this issue. "Voice calls are not working" through WebSocket and they will continue to not work unless Open Whisper Systems offers a server-side alternative to the now exclusively Google Cloud Messaging, or LibreSignal implements open-source components necessary to connect with Google Cloud Messaging. In the meantime, smartphones without Google Play Services can implement the earlier mentioned workaround.

The discussion on whether LibreSignal should or should not implement GCM through open-software software should perhaps be done somewhere else (maybe by opening a new issue...?). My perspective is that there is already a version of LibreSignal which relies on Google Play Services, so a certain commitment to Google is already accepted. Implementing internal GCM support would reduce the threshold to use LibreSignal on smartphones without Google Play Services without sacrificing functionality, unlike with the WebSocket version. It would also not force people to use proprietary software or follow a lengthy installation procedure of microG if they want to make secure audio calls.

[edit]
Now that I reread what I wrote, it likely still can be placed under this issue. My opinion stands, though: if LibreSignal offers a version without WebSocket support, relying on Google server- and client-side is already accepted. Is it interesting enough to remove the client-side dependency of proprietary code in the non-WebSocket version?

[edit2]
An overview, from most to least 'libre'. The discussion is about a potential microG-based version that would enable voice calls.

LibreSignal version Google server-side dependency Google client-side dependency Ability to make audio calls Available
WebSocket
microG-based X X
Non-WebSocket X X X

¹ The version from this GitHub repository. Also offered by the 'experimental' F-Droid repository at: https://fdroid.eutopia.cz
² Not available in this GitHub repository. Offered by the non-experimental F-Droid repository at: https://fdroid.eutopia.cz

@anarcat
Copy link

anarcat commented Apr 7, 2016

If the current libresignal implementation works with the microg or proprietary GCM, then I'm actually fine with it and this issue can be closed, IMHO. Unfortunately, the current situation is that i do have proprietary GCM working on this phone and phone calls are not working with LibreSignal.

I haven't tested with microg, but if that works, then maybe the resolution to that issue is simply to document how to setup microg better.

Then another issue should be open for websocket voice calls, which is, in my opinion pie-in-the-sky stuff because we don't control what OWS will do and would just have to wait and see.

This issue is about fixing phone calls. It can be done with free software, and, with appropriate warnings, should be done, imho.

@xmikos
Copy link
Member

xmikos commented Apr 7, 2016

@anarcat If you do have proprietary GApps or opensource microG installed on your phone, then you don't need to use this WebSocket fork and can install builds from original sources which I provide in main repo on https://fdroid.eutopia.cz.

They are also named LibreSignal, which can be maybe confusing (this name predated LibreSignal project on GitHub).

@anarcat
Copy link

anarcat commented Apr 7, 2016

Well, yes, this is totally confusing. Especially since it's unclear what will end up in F-Droid officially in the end - it would be great to have something that just Generally Works in F-Droid.

Let's see if i get this right:

Software Proprietary Push Text Voice
Signal Partly Yes Yes Yes, proprietary GCM
LS (Eutopia) No Yes Yes Yes, GCM
LS (GH) No Yes, Websocket Yes No

In the above:

  • GCM is Google Cloud Messaging, a proprietary service of google with a proprietary or open source client, unless otherwise noted.
  • LS (Eutopia) is the LibreSignal fork distributed by Eutopia.cz
  • LS (GH) is the LibreSignal fork on github with Websocket support
  • LS (GH) is missing voice support because redphone doesn't support Websockets

Is that about right?

I think it would really help in removing this confusion if the two LibreSignal builds would merge somehow, or at least have one change his name to alleviate this confusion. As things are now, as a user, I ended up installing the official Signal client from Google Play (by downloading it out of band with gplaycli) instead of using the Eutopia repository -- which I should probably have done instead because I would get updates...

But yeah, this is getting totally off-topic here.

@Zepmann
Copy link

Zepmann commented Apr 7, 2016

@xmikos I did not yet thank you for offering those F-Droid repositories. Thanks! And yes, it might be a bit confusing with names. I updated the table in my previous comment to clarify this.

@anarcat

This issue is about fixing phone calls. It can be done with free software, and, with appropriate warnings, should be done, imho.

I understand your opinion. However, it does not really support the slogan of this repository:

LibreSignal is the Google-Free fork of the original Signal messaging app for simple private communication with friends.

The wrong impression would be given if this text was still used to describe a version that implements microG's GCM support, due to that a connection to Google is required. If a microG-based version is ever offered, this description has to change. It depends on how 'stubborn' the members of this repository are. @mimi89999 has already indicated that he prefers not to use GCM at all, and I also understand this opinion.

Therefore, maybe another fork of Signal has to be made, if there is any interest in a voice call-enabled version.

@anarcat

Is that about right?

I tested the official Signal client from the Play Store with microG a while ago. It did not work at the time. However, it does work with LibreSignal (Eutopia). So yes, it should be correct.

@anarcat
Copy link

anarcat commented Apr 7, 2016

@Zepmann that wasn't clear to me at all here.

There's clearly a namespace problem because we now have two applications named LibreSignal that clash with each other (and this one came last, it seems). So that is one issue that I think we can adress separately, and I opened #28 to clear that up.

I understand the purpose of this fork, but it was also not clear to me that this project was ready to completely drop the voice calling functionality to get away from Google's infrastructure. I do not find the project useful if I cannot make phone calls: to talk to my contacts, I can use other means (like XMPP) for text messaging. The killer feature here is voice, and I think it would be preferable for the client to still talk to GCM, even if that is an option disabled by default, rather than to kill the voice feature completely.

Finally, if that is not an option, I think this issue should just be marked as closed and move the discussion to a more clearly framed issue, called (say) "Implement WebSocket support in Redphone", because otherwise you're going to get zillions of confused people coming here like me looking for voice support that might never come.

As a last work, I must say I really appreciate the work everyone is doing here, and I cannot encourage you enough to keep pushing forward.

Thanks for everything.

@Zepmann
Copy link

Zepmann commented Apr 7, 2016

@anarcat

I understand the purpose of this fork, but it was also not clear to me that this project was ready to completely drop the voice calling functionality to get away from Google's infrastructure.

Me neither, until the clarification that @mimi89999 made today.

I do not find the project useful if I cannot make phone calls

I agree, and hope @xmikos will keep offering the LS (Eutopia) version for a long while. There will be many people who install Signal through the Play Store, who do have call functionality. I'd rather be able to voice call with a large audience, rather than limiting myself.

The killer feature here is voice, and I think it would be preferable for the client to still talk to GCM, even if that is an option disabled by default, rather than to kill the voice feature completely.

Again, I agree. Just put a big first-time warning on it, and then do not bother the user again.

Finally, if that is not an option, I think this issue should just be marked as closed and move the discussion to a more clearly framed issue, called (say) "Implement WebSocket support in Redphone", because otherwise you're going to get zillions of confused people coming here like me looking for voice support that might never come.

Also agree. I think the discussion here is done if it remains a 'wontfix'.

And also thanks for your contribution and insight.

@mimi89999
Copy link

@LibreSignal Do you think that microg should be added in LibreSignal?

@mimi89999
Copy link

I hope that WS will open source the RedPhone server...

@mimi89999
Copy link

@Zepmann

@mimi89999 The microG project hosts its own open-source (FOSS) implementations of GMS and GCM. The open-source code for GMS can be found here. The open-source code for GCM can be found here.

[edit]
Most of the GCM code is in the GmsCore project. GsfProxy is basically a wrapper that forwards older GCM calls (such as those of LibreSignal) to GmsCore. Perhaps you only need to look at GmsCore. Some documentation is available in the Wiki of GmsCore.

The links, that you gave me are links to the apps that you install on your device. In LibreSignal GMS libs should be added to support GCM

@mimi89999
Copy link

This is the microg GMS lib that can be included in apps: https://github.com/microg/android_external_GmsLib
I look at the code and I think it doesn't support GCM

@mimi89999
Copy link

I think there is no FOSS replacement for the GCM lib.

@Zepmann
Copy link

Zepmann commented Apr 8, 2016

Is it not possible to grab and adjust the relevant code from GmsCore and extend LibreSignal/libtextsecure-java? There is not a ready to use library. Is that necessary?

@mimi89999
Copy link

There is not a ready-to-use library

AFAIK there is only the proprietary one and the microg one, but AFAIK it doesn't support GCM

And yes, it's necessary.

@mimi89999
Copy link

Is it not possible to grab and adjust the relevant code from GmsCore and extend LibreSignal/libtextsecure-java?

I think it should be possible. @LibreSignal could you please check that?

@anarcat
Copy link

anarcat commented Apr 8, 2016

I was under the impression that microg did feature a freed GCM implementation. This is clearly stated here:

http://zepman.tweakblogs.net/blog/12999/signal-on-android-without-google-play-services

Quote:

Step 4: Install and configure microG and necessary components

[...]

After that, enable the option 'Enable Google Cloud Messaging'.

The microg website also explicitely states that Signal is one of the goals of the project:

https://microg.org/

Quote:

By now, several popular open-source applications like the secure messenger Signal already require some of Google’s proprietary libraries to be installed. Increasing demand in the free software community in addition to severe problems in Google’s proprietary software discovered by the Android modding community led to the development of a free software clone of Google’s proprietary core libraries and applications - the microG Project was born.

Why are we rehashing all this?

The only decision that needs to be reached here is if this specific fork of LibreSignal (LibreSignal GH or LibreSignal Websocket or whatever it's called) will implement GCM support or not. That implementation can be totally independent of GCM, ie. to let the user choose if they use the builtin proprietary GCM libraries or go with the microg hack.

@Zepmann
Copy link

Zepmann commented Apr 8, 2016

I was under the impression that microg did feature a freed GCM implementation.

Yes, microG has a free GCM client-side implementation. No, microG does not provide a ready to use library to use GCM directly in your own applications, which would make your application work without the installation of Google Play Services or microG.

The only decision that needs to be reached here is if this specific fork of LibreSignal (LibreSignal GH or LibreSignal Websocket or whatever it's called) will implement GCM support or not.

I think there are two questions. First of all, there is yours (will this fork implement GCM support, so that GCM will be used if either Google Play Service or microG is available?). The second one is mine (will this fork implement open-source GCM code so that the installation of Play Store Services or microG is not necessary anymore?).

Based on mimi89999's comments, the answer to both questions is most likely 'no'. Feel free to correct me.

@anarcat
Copy link

anarcat commented Apr 8, 2016

Okay well then I'll split this off in different issues because i'm going crazy here.

@anarcat
Copy link

anarcat commented Apr 8, 2016

So. Phone calls are not working. There are two solutions, either #29 or #30. Can we move the discussions there so that we have a better structure and start seeing actual solutions instead of chasing our tails like this?

Maybe new possible solutions can be spun off in different issues as well.

@mimi89999
Copy link

@xmikos What do you think?

@xmikos
Copy link
Member

xmikos commented Apr 8, 2016

@mimi89999 I am not sure what to do, maybe there could be experimental microG branch of LibreSignal.

But I am not going to implement it myself, it will be really a lot of work... if someone is interested in it, they can start by creating their own FOSS GCM library project for inclusion into apps without being dependent on microG framework (it will be useful for a lot of projects, not just LibreSignal)...

@mimi89999
Copy link

(I moved my comment here: #30 (comment))

@pravi
Copy link
Author

pravi commented Apr 9, 2016

Just found this https://github.com/skal1ozz/RedPhoneServer

@SecUpwN
Copy link
Member

SecUpwN commented Apr 9, 2016

Just found this https://github.com/skal1ozz/RedPhoneServer

Looks good! Mentioning its maintainer @skal1ozz so that he may helps us on this here.

@ghost
Copy link

ghost commented Mar 16, 2017

@pravi @mimi89999 Perhaps it's time to close this issue as obsolete?

@silberzwiebel
Copy link

There is some discussion in the German open source messenger scene about this. Could someone clarify: Is the voice-calling part of the server source code for the official Signal free and open source? If so, where can I find the sources? Thanks in advance!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants