IP Library Granted Patent US 10,078,125
Granted Patent B2
US 10,078,125 · App. 15/031,862 · Granted Sep 18, 2018

Beacon security

Inventors: Daniel Newman (Denver, CO); Dustin Candland (Centennial, CO); Daniel Pier (Englewood, CO)
Assignee: Verve Wireless, Inc.
G01S1/68H04W4/80H04W12/02H04L63/0435
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,078,125
App. No.
15/031,862
Granted
Sep 18, 2018
Kind
B2
Abstract

The present disclosure is directed to systems and methods that include a beacon that includes an antenna; data storage configured to store a code that is calculated according to an algorithm and based on a first variable, the first variable being defined according to a first interval of time; and a processor configured to cause the code to be emitted by the beacon.

Claims (60)

1. A system, comprising:

a beacon storing a static, unique, beacon identifier, the beacon configured to calculate a secure identifier associated with a time interval, a format of the secure identifier matching a format of the static, unique, beacon identifier, the beacon configured to transmit the secure identifier during the time interval;

a server storing the static unique beacon identifier, the server configured to receive the secure identifier from a mobile device, the server configured to verify the secure identifier based on the time interval and the static, unique, beacon identifier without receiving the static, unique, beacon identifier from the mobile device such that the mobile device can receive content associated with the beacon.

2. The system of claim 1 , wherein the beacon is a first beacon, the static, unique, beacon identifier is a first static, unique, beacon identifier associated with the first beacon, the secure identifier is a first secure identifier, and the mobile device is a first mobile device, the system further comprising:

a second beacon storing a second static, unique, beacon identifier, the second beacon configured to calculate a second secure identifier based on the time interval and the second static, unique, beacon identifier, the second secure identifier different from the first secure identifier,

the server storing the second static, unique, beacon identifier, the server configured to receive the second secure identifier from a second mobile device, the server configured to verify the second secure identifier based on the time interval and the second static, unique, beacon identifier without receiving the second static, unique, beacon identifier from the second mobile device such that the second mobile device can receive content associated with the second beacon.

3. The system of claim 1 , wherein:

the time interval is a first time interval, the secure identifier is a first secure identifier associated with the first time interval, and the mobile device is a first mobile device;

the beacon is configured to calculate a plurality of secure identifiers including the first secure identifier, each secure identifier from the plurality of secure identifiers is calculated based on the static, unique, beacon identifier and a time interval from a plurality of time intervals such that each secure identifier is uniquely associated with that time interval from the plurality of time intervals, a format of each secure identifier from the plurality of secure identifiers matching a format of the static, unique, beacon identifier, the beacon configured to broadcast each secure identifier from the plurality of secure identifiers only during a time interval uniquely associated with that secure identifier; and

the server is configured to calculate the plurality of secure identifiers, each secure identifier from the plurality of secure identifiers calculated based on the static, unique, beacon identifier and a time interval from the plurality of time intervals, the server configured to receive a second secure identifier from a second mobile device during a second time interval, the server configured to verify the second secure identifier without receiving the static, unique, beacon identifier from the second mobile device based on the static, unique, beacon identifier and the second time interval such that the second mobile device can receive content associated with the beacon.

4. The system of claim 1 , wherein a clock of the server is synchronized with a clock of the beacon.

5. The system of claim 1 , wherein:

the time interval is a first time interval from a plurality of time intervals, the secure identifier is a first secure identifier from a plurality of secure identifiers, and the first secure identifier is associated with the first time interval;

the beacon includes a clock and is configured to calculate a plurality of values of a dynamic variables using a beacon random number generator with a seed value, each value of the dynamic variable from the plurality of values of the dynamic variable associated with a time interval from the plurality of time intervals in a sequential fashion, the beacon configured to calculate the plurality of secure identifiers based on the static, unique, beacon identifier and a value of the dynamic variable from the plurality of values of the dynamic variable, each secure identifier from the plurality of secure identifiers having a format matching the static, unique, beacon identifier, each secure identifier from the plurality of secure identifiers being uniquely associated with a time interval from the plurality of time intervals based on that secure identifier being calculated based on a value of the dynamic variable from the plurality of values of the dynamic variable that is sequentially associated with that time interval; and

the server includes a clock synchronized to the clock of the beacon, the server is configured to calculate the plurality of values of the dynamic variable using a server random number generator with the seed value such that the server generates a sequence of values of the dynamic variable matching the values of the dynamic variable calculated by the beacon and corresponding to the plurality time intervals used by the beacon to calculate the plurality of values of the dynamic variable, the server configured to calculate the plurality of secure identifiers based on the static, unique, beacon identifier and the plurality of values of the dynamic variable, the server configured to verify the first secure identifier by matching the first secure identifier received from the mobile device to a secure identifier from the plurality of secure identifiers calculated by the server that is uniquely associated with the first time interval.

6. A non-transitory processor readable medium storing code representing instructions configured to be executed by a processor, the code comprising code to cause the processor to:

receive, during a time interval, at a server, and from a mobile device, a secure identifier associated with a beacon, a format of the secure identifier matching a format of a static, unique, beacon identifier; and

verify the secure identifier based on the time interval and the static, unique, beacon identifier, the static, unique, beacon identifier stored at the server and not received from the mobile device, the mobile device verified such that the mobile device can receive content associated with the beacon.

7. The non-transitory processor readable medium of claim 6 , wherein the code to cause the processor to verify the secure identifier further includes code to cause the processor to:

calculate the secure identifier based on the static, unique, beacon identifier, and a value of a dynamic variable associated with the time interval and synchronized with a clock of the beacon.

8. The non-transitory processor readable medium of claim 6 , the code further comprising code to cause the processor to record the secure identifier received from the mobile device.

9. The non-transitory processor readable medium of claim 6 , the code further comprising code to cause the processor to:

synchronize a first clock maintained by a server with a second clock maintained by the beacon; and

calculate the secure identifier based on the static, unique beacon identifier and a value of the first clock during the time interval.

10. The non-transitory processor readable medium of claim 6 , wherein the secure identifier is a first secure identifier from a plurality of secure identifiers, the time interval is a first time interval, the code to cause the processor to verify the secure identifier further includes code to cause the processor to:

calculate the plurality of secure identifiers, each secure identifier from the plurality of secure identifiers calculated based on the static, unique, beacon identifier and a dynamic variable, the dynamic variable associated time such that the first secure identifier calculated based on a value of the dynamic variable associated with the first time interval.

11. The non-transitory processor readable medium of claim 6 , wherein the secure identifier is a first secure identifier and the time interval is a first time interval, the code further comprising code to cause the processor to:

calculate a plurality of secure identifiers based on the static, unique, beacon identifier, each secure identifier from the plurality of secure identifiers associated with a different time interval from a plurality of time intervals and having the format of the static, unique, beacon identifier.

12. The non-transitory processor readable medium of claim 6 , wherein the secure identifier is a first secure identifier and the time interval is a first time interval, the code further comprising code to cause the processor to:

calculate a plurality of secure identifiers based on the static, unique, beacon identifier, each secure identifier from the plurality of secure identifiers associated with a different time interval from a plurality of time intervals and having the format of the static, unique, beacon identifier; and

send the plurality of secure identifiers to the beacon in a batch such that the beacon broadcasts a different secure identifier for each time interval from the plurality of time intervals.

13. The non-transitory processor readable medium of claim 6 , wherein the mobile device is a first mobile device, the time interval is a first time interval from a plurality of time intervals, the secure identifier is a first secure identifier from a plurality of secure identifiers, and the first secure identifier is associated with the first time interval, the code further comprising code to cause the processor to:

calculate the plurality of secure identifiers, including the first secure identifier and a second secure identifier, each secure identifier from the plurality of secure identifiers calculated based on the static, unique, beacon identifier and a value of a dynamic variable, the dynamic variable associated with time such that each value of the dynamic variable is uniquely associated with a different time interval from the plurality of time intervals, the second secure identifier calculated based on the static, unique, beacon identifier and a value of the dynamic variable associated with a second time interval, the second time interval being after the first time interval;

receive, during the second time interval, at the server, and from a second mobile device, the second secure identifier; and

verify the second mobile device based on the second secure identifier received from the second mobile device matching the second secure identifier calculated with the plurality of secure identifiers and based on the second secure identifier being received during the second time interval.

14. The non-transitory processor readable medium of claim 6 , wherein the mobile device is a first mobile device, the time interval is a first time interval from a plurality of time intervals, a second time interval from the plurality of time intervals is after the first time interval, the secure identifier is a first secure identifier from a plurality of secure identifiers, and the first secure identifier is associated with the first time interval, the code further comprising code to cause the processor to:

calculate a plurality of values of a dynamic variables using a random number generator with a seed value, each value of the of the dynamic variable from the plurality of values of the dynamic variables associated with a time interval from the plurality of time intervals in a sequential fashion;

calculate the plurality of secure identifiers, the plurality of secure identifiers including the first secure identifier and a second secure identifier, each secure identifier from the plurality of secure identifiers calculated based on the static, unique, beacon identifier and a value of the dynamic variable from the plurality of values of the dynamic variables, the second secure identifier calculated based on the static, unique, beacon identifier and a value of the dynamic variable associated with a second time interval after the first time interval, each secure identifier from the first plurality of secure identifiers having the format of the static, unique, beacon identifier;

receive, during the second time interval, at the server, and from a second mobile device, the second secured identifier; and

verify the second mobile device based on the second secure identifier received from the second mobile device matching the second secure identifier calculated with the plurality of secure identifiers and based on the second secure identifier being received during the second time interval.

15. The non-transitory processor readable medium of claim 6 , wherein the secure identifier is a first secure identifier associated with a first time interval, the code further comprising code to cause the processor to:

calculate a plurality of secure identifiers based on the static, unique, beacon identifier, each secure identifier from the plurality of secure identifiers associated with a different time interval from a plurality of time intervals and having the format of the static, unique, beacon identifier, a different secure identifier being serially broadcast by the beacon for each time interval from the plurality of time intervals, each secure identifier from the plurality of secure identifiers calculated based on a pseudorandom value such that an observer receiving a first secure identifier from the plurality of secure identifiers and a second secure identifier from the plurality of secure identifiers would be unable to predict any other secure identifier from the plurality of secure identifiers.

16. The non-transitory processor readable medium of claim 6 , the code further comprising code to cause the processor to calculate a plurality of values of a dynamic variable using a random number generator with a seed value, the secure identifier calculated based on the static, unique, beacon identifier and a first value of the dynamic variable that is associated with the time interval, the first value of the dynamic variable being from the plurality of values of the dynamic variable.

17. The non-transitory processor readable medium of claim 6 , the code further comprising code to cause the processor to calculate the secure identifier based on a value of a dynamic variable associated with the time interval.

18. The non-transitory processor readable medium of claim 6 , wherein, the time interval is a first time interval, and the secure identifier is a first secure identifier, the code further comprising code to cause the processor to

calculate the first secure identifier based on a first value of a dynamic variable associated with the first time interval; and

calculate a second secure identifier based on the static, unique, beacon identifier and a second value of the dynamic variable associated with a second time interval, the second value of the dynamic variable predictable based on the first value of the dynamic variable, the second secure identifier not being predictable based on the first secure identifier.

19. The non-transitory processor readable medium of claim 6 , the code further comprising code to cause the processor to:

synchronize the first time interval with timing information maintained by the beacon based on receiving the secure identifier during the time interval.

20. A non-transitory processor readable medium storing code representing instructions configured to be executed by a processor of a beacon, the code comprising code to cause the processor to:

calculate, a first value of a dynamic variable associated with a first time interval and a static, unique, beacon identifier associated with the beacon;

calculate a first secure identifier based on the first value of the dynamic variable, the first secure identifier having a format matching a format of the static, unique, beacon identifier;

broadcast the first secure identifier and not the static, unique, beacon identifier during the first time interval;

calculate a second value of the dynamic variable associated with a second time interval and the static, unique, beacon identifier;

calculate a second secure identifier based on the second value of the dynamic variable, the second secure identifier having the format matching the format of the static, unique, beacon identifier; and

broadcast the second secure identifier and not the static, unique, beacon identifier during the second time interval.

21. The non-transitory processor readable medium of claim 20 , wherein the code to calculate the second value of the dynamic variable further includes code to cause the processor to calculate the second value of the dynamic variable based, in part, on the first value of the dynamic variable.

22. The non-transitory processor readable medium of claim 20 , wherein a third secure identifier associated with a third time interval is not predictable based only on the first secure identifier and the second secure identifier.

23. The non-transitory processor readable medium of claim 20 , the code further comprising code to cause the processor to:

calculate a third value of the dynamic variable associated with a third time interval and the static, unique, beacon identifier, the third value of the dynamic variable not being predictable based only on the first secure identifier and the second secure identifier.

Assignments (9)
CHANGE OF ASSIGNEE ADDRESS Recorded Dec 1, 2020
From: VERVE GROUP, INC.
To: VERVE GROUP, INC.
Reel/Frame 054559/0239 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 051865 FRAME 0123. ASSIGNOR(S) HEREBY CONFIRMS THE SOLE ASSIGNEE IS VERVE GROUP, INC. Recorded Oct 13, 2020
From: VERVE WIRELESS (ABC), LLC
To: VERVE GROUP, INC.
Reel/Frame 054065/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2020
From: VERVE WIRELESS, INC.
To: VERVE WIRELESS (ABC), LLC
Reel/Frame 051865/0010 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2020
From: VERVE WIRELESS (ABC), LLC
To: VERVE GROUP, INC.; VERVE WIRELESS, INC.
Reel/Frame 051865/0123 →
SECURITY INTEREST - SENIOR LOAN Recorded May 31, 2018
From: VERVE WIRELESS, INC.
To: SILICON VALLEY BANK
Reel/Frame 046285/0087 →
SECURITY INTEREST - MEZZANINE LOAN Recorded May 31, 2018
From: VERVE WIRELESS, INC.
To: SILICON VALLEY BANK
Reel/Frame 046286/0291 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2016
From: ROXIMITY, INC.
To: VERVE WIRELESS, INC.
Reel/Frame 039319/0667 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2016
From: NEWMAN, DANIEL; CANDLAND, DUSTIN; PIER, DANIEL
To: ROXIMITY, INC.
Reel/Frame 038936/0734 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2016
From: NEWMAN, DANIEL; CANDLAND, DUSTIN; PIER, DANIEL
To: ROXIMITY, INC.
Reel/Frame 038937/0104 →
Continuity (2)
Provisional Application 61895458 · Oct 25, 2013
Related Publication 20160266227A1 · Sep 15, 2016