Table of Contents

Forced Update Revisions 9-28-2018

Revision 1

Desktop

  1. Add Export - Sitework 3D compatible file function instead of using IP Grid Compatible
  2. Check for Update to be run on program start - also user command on Help - Check for Updates
    1. Requires checking with server for version
    2. Download of server provided link
    3. Closing of the program, checkin of the key, and running of provided installer
  3. Updated fingerprinter provided (MA)
    1. Remove Mac Address from use
    2. Does the following link reference also generate a unique ID Unique ID? We no longer need to support Windows XP. Vista is a question but not a big one. Or is this also Machine ID ( I don't think so).
    3. Add physical hard drive serial# Code example?
    4. Require Machine ID on start and heavily weight. Does Machine ID have an issue with 32 bit Tony Reynolds 32bit comment
    5. Decrease weight of userlogin for addition but cause negative points for difference (does it nuke now?)
    6. Up weight of machine name and cause negative points for different machine name
    7. Lower BIOS version weight and remove memory points if bios version changes
    8. Verify OS version code because of visible differences (not sure of check method. Windows class Here) Question of whether the current version handles 32 bit correctly Here and Here
  4. Detect checked out keys on install and prompt/or do checkin before install. Clean Bin files.
  5. Remove the ability to run more than one session
  6. Fix Bug #810 where existing process with stale key causes key lockup when new process with new key is started
  7. Move and obfuscate bin files from c:\AGTEK to a more user specific location
  8. Adding a randomized non-ui thread time check to the software independent of the mode switching.This requires a different server call when internet connectivity exists that checks the key status uniquely and provides the server with the next random time value. Rechecks before expected will be flagged and logged for future reports
  9. Perform routine maintenance of bin files to prevent stale values from long past checkouts from causing fingerprint mismatches.
  10. Store passwords only as tokens instead of encrypted text. This is a security problem bigger than us.

Server

Task list, including FingerPrinter: LicenseKey refactor tasks 2018

  1. Server planning for rejection of of designated older versions. Faculty to designate said versions and tracking
  2. Setting up limited Company with limited user access to files for all versions. Currently we store under Current Versions of the AGTEK Corporate Company (MC)
  3. Creation of a Web Update page to be used for this campaign with clear messaging and direct links to versions both 64 bit and 32 bit. Not behind Firewall but set to not web index or link directly to the site.(MC)
  4. Creation of a check key status (verify? name?) for use by the desktop code to verify the current key status at a random range and generate back to desktop when the next check time will be. This is distinguished from other calls in order to log possible dual use of keys. Server will at this time just log situations where the same key number is checking in too early. The absence of a checkin would not constitute a log situation necessarily as the user could have closed the program but retained the key. Make the bounds configurable from the server.
  5. Add support for messaging with links, basic html.
  6. Add support for specific to the user messaging. In the future the baked in ability for the server to respond with a message to a specific user based upon something they've done or not done (update your version for example).
  7. Add total checkouts for report period to reset report to give problem context.

Designate Programs and Version

Check Web and mobile for compatibility.

Versions that will be updated

Program New Version Version Cutoff (still works)
Earthwork 4D 1.20.2 1.20.2
Materials 4D 1.14.6 1.14.6
Gradework 4D 1.2.3 1.2.3
Trackwork 4D 2.15.3 2.15.3
Protect32 None Kill all
Not Supported
GradeModel 1.79.2 1.79.2
Material 3D 1.67.2 1.67.2

Will ask again for clarity on GradeModel and Materials 3D. At this point I'm saying no.

The New Version column may be redundant since it pretty much matches the cutoff version

Cutoff date at this point is set for November 13th.

Revision 2

  1. Adjustments based on Revision 1 experience
  2. Tells and other information based on Citrix experience
  3. Process limiting?
  4. Monitoring of older versions being used and later rejected.

Timeline

  1. Version - soft release web & new versions
  2. Registered Letter - 9th
  3. Email - October 22nd
  4. Message
  5. Server version Monitoring for older versions - method of reporting/notifications
  6. Cutoff
  7. Messaging

Total Revision List

Proposed Steps/Features of Key Revision ( Sitework, Materials, Trackwork, any others?)

Dispersion, Obfuscation, and Cleanup of Bin Files

The current versions store their files in \AGTEK along with other individualized AGTEK data like Materials and Structure lists. This is asking for an inadvertent or purposeful backup of bin files with checked out keys that will cause problems.

We apparently also don't do any cleaning of Bin files which have slots for multiple key opens and old stale settings may persist.

Application Updater built in to software

With few exception (Hasp), 4D key users are all required to have technical support and should have access to software updates. The android software (non play store) has the ability for us to push an update and notify the user. It's not possible to force the install but yo can remind them whenever the software starts.

My guess is we can use part of the server system for that side of the process. On the desktop side we'd have to create the method, be able to run it separately from the desktop code so that code can be shut down for updating.

Messaging

We have some messaging built into the server now. It was primarily designed to announce Server maintenance. A suggestion is to add more capability like links.

Key checking and Verification

We currently mainly check at startup and mode start. This is a legacy of hardware keys, single processes, and non-internet connected computers. We don't intend to disallow non-connected computers but most are connected. We need to check more often just a mode switch and should introduce a timed check of connection and then check of the key. This should not be on the UI thread as to not cause interruption to work and it can't be so often as to cause server loading issues. A possible other use for this is if we use a timed connection then it might be a tell of more than one key usage on different machines. If a test checked every 22 minutes and then a machine checked in five minutes later then that could be an indication of two separate machines. This checkin would need to be distinguishable from a normal checkin/checkout(Something we monitor only at first).

We also need to connect and leave a marker when the user exits software but retains the key.

Fingerprinter refinement

Some of the anomalies showing up with logging show a need to refine the fingerprinter. These refinements include review of the weighting, removing some items like Mac Addresses and counts, looking for other markers, and checking the quality of the values we're seeing

Potential methods to identify key scofflaws Use set key timer checks (connected) to verify whether more than one key is in use and notify us of that case.

?Use computer name in key checks with server?

Fix Log issues on Fingerprinter

Register when the software is checking in a key for a fingerprinter violation

Set time checks to identify usage more often the

Keeping Key message - Exit from software.

Require that the computer get a machine ID to run

Version requires key to be checked in before install (no support of existing BIN files)

2018-09-19

This note describes reccomendations for changes to the management of LicenseKeys on desktop (Windows) applications.

Issues we've seen:

Goals:

Reccomendations:

Implications:

2018-09-19 Weights

Value Weight Example Notes
CPU Count 5 2 Not currently used
Machine ID 5 {710EB72B-488C-4F7E-ADBD-1E73122BC945} Should use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography, or both
CPU description 2 Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz Not currently used (will add compare for first core)
MAC Addr Count 4 5 Not reliable
MAC Address 5 {9A427519-B1A2-45B9-B6DF-0392C6724526}:48:ba:4e:ea:84:a7:0:0 Not reliable
BIOS Version 5 05/02/2018 Bios dates are changing. Both Dell and HP have automatic BIOS updates possible
OS Version 4 Windows 10 Enterprise We're seeing variations, need to check reliability of check
Memory size 3 17053204480 Bios changes may affect available memory number from being exact
Computer Name 5 John's laptop
User ID 9 user@example.com

Notes about compare:

Characterizing fingerprint values - Specific vs Unique Values

Part of the weighting strategy has to take into account the characteristics of values being compared.

New Fingerprinter Weights October 2018

Value Weight Ratio Negative Weight Negative Ratio
Machine ID 8 .21 -20 -.52
Computer Name 8 .21 -8 -.21
OS Install Key 8 .21
Hard Drive Serial 1 4 .10
CPU Description 2 .05 -5 -.13
OS Name 2 .05
CPU Core Count 2 .05
Memory Size 2 .05
BIOS Date 2 .05
Total Possible 38
Passing Value 22

Original Spreadsheet with scenarios here:

fingerprinting_values_and_scenarios.xlsx

fingerprinting_values_and_scenarios_-_finger_print_model.pdf

New concept is negative weights. Removed User ID because it isn't always available when the fingerprinter is run and could cause issues by not being available. Since the fingerprinter is really about identifying the machine not the user, it should not be part of the fingerprinter code. Instead it should be used with the time check and verify if used at all. Decisions on whether to make a username mismatch a problem for the user still needs to be decided but it is not part of the fingerprinter.