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:
- llegir la posició 0x08 (amb RNBOsproRead) i:
- si el valor llegit és 0 -> Error la demo s'ha acabat
- si el valor és diferent de 0xffff, decrementar-lo usant RNBOsproDecrement
- llegir les posicions 0x09 a 0x0d per obtenir el nº de serie de la clau
- 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 |
|
|
|
| B | FT2232H + sentinel |
|
|
|
| C | FT2232H + PIC18F88 emulant EEPROM |
|
|
|
| D | FT2232H + PIC connectat a linies lliures del port serie (Ex:PortB.RTS,PortB.CD,PortB.DSR) |
|
|
|
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.