Samsung Accessory Protocol (SAP) security questions

Hello everyone!

When using the Samsung Accessory Protocol (SAP) there is the opportunity to exchange data between watch and mobile app in a “secured” way. Meaning data is encrypted before sending the payload to the receiver over a Bluetooth channel.

I want more information on how the data is encrypted:

  • What encryption algorithm is used?
  • What keys are used?
  • Is it vulnerable against replay attacks?
  • Is there an official statement/documentation by Samsung?

Thanks,
Heinz

Hello heinz.burgstaller,
Well, so far I know, Samsung will not reveal their encryption method to the 3rd party developers as it’s their proprietary. They’re not even supposed to do that.
However, you can use the methods available within the SDK or Framework to encrypt your data and send that. For example, you may call SASocket.secureSend() instead of SASocket.send(). Indeed, you can authenticate Peer Agent for enhanced security by calling authenticatePeerAgent method.
Meanwhile, you may spend some time visiting the programming guide in this page.

Thank you.

Thank you @ssaha for your reply. I already use secureSend(), I’m just curious why it is secure…

Thanks also for sharing this link.
It mentions very little about authentication.

There is actually one thing in “Appendix F. Creating Gear Author Certificate using Android Keystore”.
There is even a screenshot in it:
image

For me this nice software looks like this:
image

So there is no advanced option, therefore I’m not able to use my Android keystore.

My problem is that in onAuthenticationResponse the authToken it gets is not matching with the Android’s one. Not surprising, as it’s not created from the Android’s application’s keystore as certificate manager don’t give me that option. Tizen Studio and Certificate Manager are both the latest, there is no update for them. OS: Win10. Any help is greatly appreciated.