Shop OBEX P1 Docs P2 Docs Learn Events
How to protect the program from copying? — Parallax Forums

How to protect the program from copying?

AlarusAlarus Posts: 48
edited 2013-01-18 04:44 in Propeller 1
A propeller EEPROM located separately from the main crystal. Its easy to read.
How to protect the program from copying, or make it not working on another crystal?

Comments

  • cavelambcavelamb Posts: 720
    edited 2013-01-17 22:18
    Why would you want to do that?
  • AlarusAlarus Posts: 48
    edited 2013-01-17 22:21
    Protect their work.
  • SRLMSRLM Posts: 5,045
    edited 2013-01-17 22:34
    No, the current Propeller doesn't have any code protection features. The Prop 2 (due out in many months) does have code protection features.

    You could make the program obscure by adding a ROM on the board with a key, and write the program so that it must first decrypt itself. This would prevent people from copying the EEPROM directly to a different board, but it wouldn't stop a dedicated thief.

    One thing to note is that your code is relatively safe from reverse engineering from the EEPROM binary due simply to the effort needed.
  • Heater.Heater. Posts: 21,230
    edited 2013-01-18 00:16
    There was no copy protection on early 8 bit micros.
    That did'nt prevent Garry Kildall, Bill Gates and others building significant business on those platforms and making some decent pocket money.

    There was no copy protection on later 16, 32 and 64 bit computers. These empires grew bigger.
    Edit: Not to mention Apple.

    I conclude that copy protection is not required.
  • TorTor Posts: 2,010
    edited 2013-01-18 01:02
    Heater,
    I think you meant didn't.. :)

    -Tor
  • Heater.Heater. Posts: 21,230
    edited 2013-01-18 01:11
    Uh, yeah. Cheers.
  • dMajodMajo Posts: 855
    edited 2013-01-18 01:16
    I have done it my way. Originally the product was based on the first FM31L278 but with the product revision the FM31T378 was adopted.

    - I use the Ramtron FM31T378 in place of classic eeprom.
    - The built-in non volatile otp serial number identifies my product.
    - The built-in battery-backed counters are used to store the encryption key combined with the s/n.
    - The counter inputs are used for protection: connected to the enclosure switch and a photo-element thus if the enclosure is opened or the pcb receive light the counters counts and the key is changed.
    - In the fram the only unencrypted part is the decryption code and a basic I2C driver. Once the the prog is transferred to the hub and starts, the key is read and 6 cogs are launched to read-decrypt-write the hub, each-one a 4K window, then the real thing starts.

    In this way the system upgrade or additional options must be purchased for each s/n separately. Perhaps is not the best way but is the one we came to. Till now the costumer is happy. Of course I would have used a pic or some other micocontroller that guarantee the code protection but the propeller multicore architecture with its capabilities was what was needed. Indirectly I must thanks also Kuroneko because his puzzles opened my mind in many directions
  • Heater.Heater. Posts: 21,230
    edited 2013-01-18 01:23
    Seems like a lot of effort and expense. Are you sure it was worth it?
    Also when those batteries die and you are no longer in business your customer has a brick.
  • dMajodMajo Posts: 855
    edited 2013-01-18 02:42
    Heater. wrote: »
    Seems like a lot of effort and expense. Are you sure it was worth it?
    Also when those batteries die and you are no longer in business your customer has a brick.

    The RTC was mandatory and with the eeprom you need to ad it. With the last fram that have a built-in crystal, INT and FOUT signals also the protection circuit is made from 3 inexpensive parts.
    The battery is not a problem, because the product is supposed to be continuously powered but still is dimensioned to survive more than 6 month in absence of power. The product, in this case is supposed to be installed and maintained by the provider.
  • BeanBean Posts: 8,129
    edited 2013-01-18 04:44
    If your device has any 1-wire devices, they all have a unique serial number that can be polled and the code stopped if it does not match.
    Or there are 1-wire devices that are just a unique serial number.

    Someone would have to reverse engineer your code to find where to check for the serial number to copy it. Of course do NOT put the serial number directly into your program encode it in some way.

    Bean
Sign In or Register to comment.