2015-10-23 2 views
1

Так что в основном то, что я хочу сделать, пусть мое приложение продолжает отправлять пакет/принимающий пакет, поэтому я знаю, с кем я встречался раньше. передача данных проста: мне просто нужно uuid, чтобы определить, что это мое приложение, и число или строка для представления того, какой пользователь он представляет. Теперь вопрос в том, как я могу сделать его безопасным? Скажем, если кто-нибудь может его обнаружить, тогда он может высмеять точно такой же пакет и отправить его, а затем, если он окажется рядом со мной, мое приложение будет считать, что он является пользователем, даже если нет (он насмехался).Как я могу защитить передаваемый маяк данных?

iBeacon абсолютно не подходит для этого требования, потому что его uuid/major/minor может быть легко обнаружен. Один из способов, о котором я могу думать, - использовать BLE вместо iBeacon для записи шифрованных данных в службу, тогда возникает вопрос, может ли кто-либо еще легко издеваться над сервисом с данными, которые он обнаружил?

+0

Это скорее вопрос шифрования, чем вопрос маяка. Вам нужно будет зашифровать реальный идентификатор в сочетании с меткой времени, используя секретный ключ, общий – davidgyoung

ответ

0

Типичным решением является объединение реального идентификатора с отметкой времени и шифрование пары с использованием секретного ключа. Это создает зашифрованный идентификатор, который постоянно изменяется и бесполезен, если вы не можете его декодировать. После декодирования метка времени защищает от повторных атак - она ​​должна находиться в пределах небольшого интервала от текущего времени для того, чтобы дешифрованный идентификатор считался действительным.

Очевидно, что для этого решения требуются синхронизированные часы на передатчике и приемнике.

Детали реализации - это скорее вопрос шифрования, чем вопрос маяка. И дьявол в деталях.

+0

Да, вы правы. И похоже, что обмен данными требует, чтобы ваше устройство подключалось к приложению, и получил сигнал, и его можно было подключить только как 7. И я только что видел, что кто-то отправил ответ, что ваше приложение не должно соединяться с другим устройством, если вы хотите, чтобы ваше приложение одновременно было периферийным и центральным? Мое дело, мне нужно продолжать отправлять и получать данные, когда я выхожу на улицу и постоянно встречаюсь с людьми, что невозможно подключить к каждому устройству правильно (давайте предположим, что у всех это приложение установлено). – lemondeer

+0

Есть ли решение, которое я могу позволить этому приложению отправлять/получать пакет одновременно, а не требует подключения, когда я их обнаруживаю? Все, что я хочу, это фильтр, сохраняйте данные и сохраняйте идентификатор пользователя, сохраняя идентификатор/user_id безопасным. Спасибо, Дэвид! – lemondeer

+0

Вам не нужно устанавливать соединение для этого. Зашифрованный идентификатор может быть отправлен маяковым устройством в режиме только передачи. Вы также можете отправить метку времени в виде открытого текста (в дополнение к тому, чтобы использоваться для создания зашифрованного идентификатора), поэтому маяку не нужно иметь часы реального времени. Таким образом, принимающие устройства (например, телефоны) просто расшифровывают зашифрованный идентификатор и проверяют временную метку внутри этой зашифрованной полезной нагрузки в течение соответствующего периода времени, отправленного в ясном тексте. Если это так, вы можете доверять фактическому идентификатору внутри зашифрованной полезной нагрузки. – davidgyoung

Смежные вопросы