This is an old revision of the document!
A moving outline of what the existing key system does, its deficiencies, and additions needed for the new system.
Internet keys are a copy protection method that allows software to be loaded on many devices but run simultaneously only up to the number of keys purchased. A company might have 10 users but only 4 keys so only 4 users could run the software at once. This is very similar to a seat license arrangement.
The more unique part of this comes from the mobility needs of the construction industry. We need to be able to check out a seat license(key) and allow the user to keep it for a designated period of time without being connected to the internet. A typical checkout period is 3 days but this configurable by the customer representative designated as “Admin”.
Another feature that is somewhat unique to the seat license model is that we also need timers that disable the keys for non-payment. Timeout keys are those under some sort of payment plan and for initial shipment. As the end of the timeout period approaches (10 days), the software being used warns of the impending timeout on startup. Permanent keys are for situations where the user have paid in full. At that point, a designated AGTEK employee changes the key status from timeout to permanent.
One last feature that may not be unique is the capability that a key contain program enabling codes for more than one AGTEK program. This is often done to sell a program at a discount. This means that if a user checks out a key for Earthwork 3D that also contains the Materials program, no other user may use that key's Materials capability at the same time.
TBC
These are descriptions of the keys. They may in fact be identical in the server software but have some specialized need or interface that makes them a slight variation.
These are the USB dongles, keys, etc. used by the majority of customers. They have nothing to do with the Server being defined here but are mentioned for reference.
This is sort of an all inclusive key type. The other keys are variations of this. The chief characteristic of an internet key is that it connects to our internet server for an authorization. This is true for all key types illustrated below.
A timed key is foremost used for payment collection. In fact, all orders are shipped as timed keys initially. Upon receiving payment (or a part returned), we either make the key permanent (for a final payment) or extend the timer to the next payment required. Typically the maximum timed key is set for 12 payments max but it's not to say there haven't been longer payment cycles.
From the user's perspective, he receives a message showing the time remaining on the key starting with 10 days remaining. This is triggered by the desktop software when it sees a time less than 10 days and requires user acknowledgment. Our days remaining have always been communicated through the desktop software only. We may want the option to email the admin at 10, 5, 2, and 1 days remaining. I don't think this would be desirable for training keys.
Permanent keys are keys that all one-time bills have been paid on. A user would never be prompted that this key would timeout in XX days. They can be disabled in the event a user stops paying the yearly subscription fee. In that case we would disable the key and send the user a usb version of his key.
Software keys were the first implementation of the Solo server. They're a hybrid one-time authorization in that they are locked to the initial computer that is authorized but need to check in with the server once per year to continue their authorization. Their intended use is for field computers that a USB dongle hanging off would be a problem but they rarely get on to the internet. Note: if the program using a software key is started and an internet connection is found, the one year period is restarted from that date.
This is a new concept for us with the intended use being low cost, more mass market products like AGTrack. Essentially it's a one time authorization on a single computer, a single time.
These are very similar to timed (one year timeout period)Internet keys. Their chief difference is that we need to be able to flag transactions on these keys for billing and they will never become permanent.
Training keys are something we use when a customer first buys a system. The idea is that a new customer wants to bring as many people up to speed and trained as possible. We might issue eight training keys on the order which would time out in 10 days. The only difference between them and timed keys is that it would be preferable if we did not have to assign users but instead made the keys available to the entire user list. We may also want to put a max time limit on them that's less than normal timed keys as a safeguard.
Reporting is a sales and administration tool as implemented now. In the future it may become customer accessible (probably a subset through emailed reports) as well. Currently the report granularity is for a single day, updated nightly. It's accessible to AGTEK staff through web based reports tied to the AGTEK database web site. The reports we have now show:
We need to add:
Checkout/Checkin must tie a checkout to a specific device for the length of the session to make it impossible to copy a checked out state to another device. The current system has vendor supplied code that samples the hardware for combinations of unique characteristics (MAC, processor ID, etc.?) to create a unique file (settings.bin) in the AGTEK folder on checkout. This file is removed on check in. Since we are moving away from this vendor, we will need a substitute. Phones could probably use MEID, etc as one of the identifiers. Concept Software used to sell a package for doing just this. It's explained here: http://www.softwarekey.com/help/plusman/concepts/enhanced_computer_id_algorithms.htm
Their approach seems pretty reasonable and in the most common cases of internet keys, the worst someone could do is check out a key, then not check it in and upgrade their system substantially (two major changes, one minor). At worst, they would not have key access for the maximum checkout period (3 days default). In those cases we would we would probably have the AGTEK Key administrator override the checkout. We use human judgement here because this should be an infrequent event and offending the user is worse than potentially giving them a system for 3 days. An abuse pattern would decrease the likelihood of us doing that again.
These don't show the interface for a date range. It's web based right now and uses presets like 1 day, 3 days, 1 week, etc. We'll want to vary that depending upon the report. The setting I used are generally fine for generalized knowledge. In relation to rental key reports (and maybe others), we'll want to be able to show usage by calendar month. For example, we'll bill on a monthly basis so we'd want all rentals for the month of December. The other instance is a user admin may want to see during that month how much usage they've had to date so they can estimate what their bill will be.
Rental keys questions These are questions we need to ask sales/marketing in order to give the correct answer for billing. These are billing reports and I can imagine that we'll need several versions including details and summaries.
Total Usage Summary
Report per company
This is the existing report. What's not shown that could be is which key a user used to accumulate those hours. We don't have that capability with the Solo Server.
The point of this report is to see where users are failing to get keys and identify who's running their keys to capacity. It'd done with a lot of inference that a failure on checking a key out is because someone has a key. If it's possible, a better way may be to measure utilization. If a key is checked out all the time it might represent just one user that never checks it in. It doesn't tell us much in that case. A more interesting one to us for marketing is when their are multiple users and the percentage of checkout time vs. the day. It would probably use the 8 hours out of every 24 as a baseline of full utilization. This is an area that we should think about in an effort to understand usage better.
We should have some logging capability accessible for debugging. We will also want to store things like AGTEK Administrator key overrides. The issue is not trust of the AGTEK Administrator but instead gives them some record of required overrides in cases where the administrator senses abuse of the system. This gives the administrator a record of overrides for the account (The AGTEK administrator has the ability to reset a key from checked out to checked in. It's an acknowledgement that technology is not perfect and requires occasional human intervention.)
We should also scan for true rental behaviors. One obvious one would be a frequent changing of passwords and or username and password. The question of how much of a filter (number of changes) we should use should probably be exposed to the user interface since our first attempt will be a EWAG (educated wild ass guess).
While there is probably no way to stop a determined hacker, there are things we can do to make it harder and prevent any casual hacking of the key system. Not being on a common system is also a level of security in itself. The biggest threat would probably be in third world distribution. A concerted attack by multiple, skilled hackers in the third world on the desktop software is probably not preventable. The server end is much less vulnerable because it is not within a user/hacker's machine and has very limited methods of communicating with the outside world. In fact the API to manage to the server is not in the end product at all.
Some things we can do to prevent hacking and casual copying. They are:
The key server is both critical yet somewhat tolerant of short downtimes. It's critical from the standpoint that it allows usage of our software. The tolerance comes a relatively low transaction rate per key. In the event of an outage, users currently in the software or with a key checked out would unaffected. The only affected users would be those trying to start the software that do not have a key checked out.
Ideally, we would have server redundancy where if a system failed, an automatic fall back to another instance would happen seamlessly from the user's point of view.
These are the interfaces for order entry, fulfillment, and management.
I'm imagining a Java interface to the Amazon server. We have an existing design that encapsulates the functionality needed. I'll get a copy and document the current capabilities.
Existing Application Screen Includes Hasp Support which we have no plans for on this server.
Functions
This allows the shipping department to actually create the keys. We have and existing interface that could be copied. I'll document that as well.
Existing Application Screen This supports HASP keys as well and will probably be simplified for Internet Keys
Functions
This should be a multiple platform solution. At minimum, we'll need an C++ API for Windows and a Java equivalent. Ideally the windows API would be compatible with VS 6.0 but that might not be possible. VS 2005 is the next stopping point. We are not currently using .Net at all. This will need further research on all the platforms we are developing on.
The Android key interface is defined in the SmartDirt project. This section describes the interface and flow for the desktop projects. This is derivative of the existing interface to minimize retraining and new documentation. By defining it here we also expose some of the elements needed to be transmitted and stored.
A typical user flow is:
Atypical user flow:
This is derived from our current interface to the Solo key server. I've customized the screens below to reflect the changed needs (user associated with keys). I'll try to call out the differences from the existing users next to screen.
After login, this is the first screen shown to the user. This differs from the existing Solo server in several ways.
User Key assignment This is a new admin screen for assigning users to key. It's accessed by selecting a key and pressing the User button. It displays all the users for a company, sorted first by users with the key enable, and alphabetically on the user login. This means it's easy for an admin to see who's on a key at the top of the list but find users that aren't enabled more easily in list below.
This is first release. It includes the internet keys (permanent, timed, and rental) for Windows desktops and android phone support. This is in fact the bulk of the product. Pieces that may be left out for this release are some reporting (some are critical like Rental reports). It does not require one time keys (ala' authorizations) or software keys (once a year authorization) for this release. We will be running in parallel with the Solo Server at this time and do not expect to physically turn the Solo Server off as we attempt to transition users. There will probably be some effort necessary to port existing users to the new system.