Protecció Actual (Sentinel)

S'utilitza una clau USB Sentinel SuperPro. La clau conté 64 cel·les, cada cel·la amagatzema 16bits. S'utilitzen de la següent manera:

Cel·la(Hex) Dades Exemple
0x00 Nº de clau 0x00d9
0x01 developer ID 0xd4e9
0x02
.
.
0x07
RESERVAT -
0x08 nº de execucions restants de la demo
Si és la versió completa conté 0xffff
0xffff
0x09
0x0a
0x0b
0x0c
0x0d
nº de serie de la clau codificat en ASCII
2 caracters per cel·la en BigEndian.
Ex:4628L00124
0x3436
0x3238
0x4c30
0x3031
0x3432
0x0e
.
.
0x3f
DISPONIBLE -

Procediment per validar la clau

Per poder treballar amb la clau primer s'ha de inicialitzar la lliberia amb els següents passos:

RNBOsproFormatPacket(packet, SPRO_APIPACKET_SIZE); // Inicialitzem el buffer que usarà la llibreria per comunicar-se amb la clau
RNBOsproInitialize(packet);                        // Inicialitzem la llibreria

Un cop inicialitzada, s'ha de buscar la clau amb les funcions RNBOsproFindFirstUnit(packet, dev_id) per trobar la primera clau, i RNBOsproFindNextUnit(packet) per passar a la següent clau.

Per validar la clau es procedeix de la següent manera:

  1. llegir la posició 0x08 (amb RNBOsproRead) i:
    1. si el valor llegit és 0 -> Error la demo s'ha acabat
    2. si el valor és diferent de 0xffff, decrementar-lo usant RNBOsproDecrement
  2. llegir les posicions 0x09 a 0x0d per obtenir el nº de serie de la clau
  3. verificar que clau_registre ^ password_secret == nº de serie de la clau Exemple:
Nom ASCII Hex
clau registre - 64 59 45 5d 3e 10 64 5e 14 66
Password Power To The Penguin 50 6f 77 65 72 20 54 6f 20 54
clau_registre ^ password - 34 36 32 38 4c 30 30 31 34 32
Nº serie 4628L00142 34 36 32 38 4c 30 30 31 34 32

Alternatives

Opció Descripció Requeriments HW Pros Contres
A Usar nº de serie + dades en la EEPROM del FT2232H
  • Cap
  • Barat
  • Es pot usar el FT2232H_miniModule
  • Fàcil de piratejar (FTProg permet modificar la EEPROM des de una bonica GUI)
  • Probable que la versió de demo acabi durant eternament (usar FTProg per salvar l'estat de la EEPROM i restaurar-lo cada cop que la demo s'acabi)
B FT2232H + sentinel
  • clau Sentinel
  • Es pot usar el FT2232H_miniModule
  • Compatiblitat total amb versions anteriors del programa
  • Relativament segur
  • La clau Sentinel pot convertir-se a mitjà plaç en un producte descatalogat
  • Més car que altres alternatives
C FT2232H + PIC18F88 emulant EEPROM
  • PIC18F88
  • Requereix usar directament el xip FT2232H (més complexitat al PCB)
  • Control precís de la memòria de la EEPROM
  • Possibilitat de implementar un sistema relativament difícil de piratejar (Ex:Challange/Response)
  • Complexitat extra del PCB
  • Pas extra de programació inicial de HW
  • Requereix implementar el codi de control del PIC18F88
  • Pot causar problemes d'inicialització del FT2232H
D FT2232H + PIC connectat a linies lliures del port serie
(Ex:PortB.RTS,PortB.CD,PortB.DSR)
  • Es pot usar el FT2232H_miniModule
  • Requereix un PIC
  • Relativament senzill d'implementar
  • Requereix implementar el codi de control del PIC
  • Lent
  • Pot interferir amb les comunicacions del port
  • Pas extra de programació inicial de HW (pot ser fet de manera automàtica)

Finalment l'opció que s'està explorant és la D. Ja que té pinta que es pot usar el propi FT2232H per programar el PIC en aquesta opció. Malgrat que usem el FT2232H com a port RS232, auqest xip soporta molts altres modes de treball (RS485, MPSSE, Bit-Bang, FT245, Bus Emulation, ...). Sembla factible usar un d'aquests modes ( segurament Bit-Bang o MPSSE ) per programar el PIC , sense necessitat de components extres.

S'ha optat per usar el PIC12F1840, ja que ens ofereix:

  • Programació a baix voltatge, que ens estalvia el generador de voltatge de programació i la seva lògica de control
  • Memòria de dades EEPROM integrada. Ens permet guardar dadedes que canvien al llarg del temps Ex:nº execucions restants de la demo,...
  • 256 Bytes de RAM i 4K(Instruccions) de ROM. Que ens donen espai suficient per implementar els algoritmes criptogràfics necessaris.
  • Protecció de la memòria EEPROM i la ROM de codi.
  • Requereix poc espai. Hi ha versió SOIC-8.

Implementació protecció FT323+PIC