JSB Sync

AS JS Blocker 5.2.0, you can now synchronize your settings and rules across multiple computers. You'll have to make sure your router/firewall allows connections to https://imac.toggleable.com:8443

Maintains Your Privacy

JSB Sync maintains your privacy in 3 ways:
  • HTTPS - This encrypts the communication channel between you and the server. It effectively prevents anyone from snooping on your data.
  • SRP - Secure Remote Password is a method of logging into a remote server without actually transmitting your password. When you register/login to JSB Sync, a unique key is generated every time. This is what is transmitted and how the server verifies that you know the password to the account. Once a successful SRP negotiation occurs, another unique key can be created. This is known to both you and the server without having to transmit it to each other. Using this key, all further communication between you and the server is encrypted. This double layer of encryption ensures your data cannot be read by anyone but you, even if HTTPS is ever compromised.
  • Local encryption - Your settings and rules are encrypted locally with a key derived from your password and a salt (a long, random string of letters and numbers) that was generated by SRP when you registered. Settings are encrypted individually and unique every time. What this means is that, for example, if there is a setting called "myPrivateEmail" with a value of "hello@example.com":
      • myPrivateEmail turns into "U2FsdGVkX19pgHipVFiIfpOYPE5EOiNoTfDrPBvQsuF4AMNxuH+hH5rzi1+boc8KSI0eR/QLIz2uTusVpvjEkg=="
      • hello@example.com turns into "U2FsdGVkX1/DQGTyb0VDGRTWFNiTaqJKStpnoDSiPzDFbZgGZl/i+ZReVS/qCVEpVTZWCr8yHMCLKcC8PmuViw=="
      • Encrypt it again at a different time:
      • myPrivateEmail turns into "U2FsdGVkX186eMwn06/MkDSCZ1f/nAUZmCkFJL9rS86RapHfuqNyXxRKO7GMDO1HxxKsTXvjhcdCTPLUiJ+UXw=="
      • hello@example.com turns into "U2FsdGVkX19IOektQyguM3WYea+5W8BI7S6uoDd+dA+B57nL2BRJ9uqiWrVLnGaxvavDcWvMh2TpCzAVUm7Ztw=="
    • This ensures that your settings are unpredictable. Because they are encrypted locally and your password is never transmitted to the server, it is impossible for your data to be decrypted on the server. Because of this, if you forget your password, you will have to start fresh with a new full synchronization encrypted with the new password.

Testers

You've chosen to try out JSB Sync before it's general release, great! Here are the first steps you need to take to get started:
  • As a tester, it would be helpful if you enabled debug mode from Menu > Console.
  • I suggest you create a full backup first by opening the Settings menu and clicking Backup.
  • You'll have to create an account. To do this, open JSB and go to Settings > Sync. Now click Register. Make sure you use a valid email address because it is used to verify you're a real person and for account recovery.
    • Your email address is hashed on the server and not stored in plain text. I cannot associate an account's data with a person because of this.
  • After registering, an email will be sent to you with a verification key. It should arrive pretty quickly; don't forget to check your spam. Once you get it, enter that key into the poppy that should already be open in JSB. If you closed it, you can reopen it from Settings > Sync > Verify.
    • You have 24 hours to verify your account before it gets deleted.
  • Once verified, you can now login. A full sync will be performed immediately after logging in, i.e, all your settings and rules are uploaded. This can take a up to a minute.
Now that you're going, watch out for the Menu button turning red.
  • It could mean there is maintenance going on. When you open the console, you may see the message "Service temporarily down for maintenance." If so, the server is offline while I perform updates.
  • It could also mean a critical error occurred. Be sure to report it by clicking Menu > Console > Report.

When JSB is syncing, you'll see a progress bar just under the main switcher items. When visible, the Menu button will turn blue, too. Click it to see what's going on and how much time is left:

Your settings will be synced automatically every minute. In the future I might adjust the interval or implement a setting for a custom time. You can sync manually at anytime by opening the Settings menu and clicking Sync Now.

Please be sure to submit any bugs you encounter. Periodically check that your settings are correctly in sync with other computers. Make sure none of your user scripts go missing, if applicable. If there is missing data, you can recover it by importing the backup you made earlier. Once you re-login to JSB Sync, your backup will be synced with other computers automatically.

Change Log

Beta 2
  • This update is required in order for syncing to continue to function.
  • Settings would not be synced at all. I fixed that. 
  • You can now change your password.

Open Source

The source code for the JSB Sync server is hosted on GitHub: https://github.com/infernoboy/jsb-sync
Comments