proteggere eprom possibile ?

Jan 17, 2013 27 Replies

"A.S" ha scritto nel messaggio news:kdbmao$qve$ snipped-for-privacy@news.newsland.it...

Infatti...

"A.S" ha scritto nel messaggio news:kdbk4k$n98$ snipped-for-privacy@news.newsland.it...

e se provassimo con un po' di quel prodotto in gel che si usa per togliere la vernice alla nitro? fonderebbe la superficie del chip quel tanto che basta per far scomparire la sigla e perfino nascondere la finestrella della eprom, cosi' da farlo diventare un anonimo "scarafaggio" ... pero' bisogna prestare attenzione, una volta l'ho usato senza guanti e mi ha ustionato una mano...

dimonio no e' dove lavoro io.... serve per aggiornamenti per nuove versione di fw su eprom.

quindi come si potrebbe fare ? il mio capo come pensavo io dice che impossibile proteggerle , ma con il tuo sistema ???

dici possibile ?

Visto che non hai altre informazioni da darmi, penso che il tuo capo abbia ragione.

Se si è disposti a montare la EPROM su uno stampatino che si frappone fra quest'ultima ed il circuito, allora è possibile. In pratica dovresti realizzare un ibrido che andrà poi resinato in modo da rendere inaccessibile il componente e con un pinout compatibile con lo zoccolo. Inoltre, si dovrà scrivere un minimo firmware in grado di interagire con il circuitino interposto. Lo scopo è quello di bloccare il CE della EPROM nel momento in cui avvengono accessi sequenziali (tipici del programmatore di EPROM) in una precisa porzione della EPROM. Questo implica che il firmware deve assicurare una serie di accessi ben definiti che rappresentano il codice di sblocco. Inutile dire che il circuitino ha una complessità media che va valutata in termini di costo/convenienza. Se poi il firmware non è modificabile, la cosa diviene ancor più complessa (ma non impossibile).

Faccio un esempio:

all'accensione si dovrebbe rendere accessibile solo la pagina (256 byte) relativa all'avvio (boot) che di solito, ma non sempre, inizia all'address 0x00000. Letture consecutive agli address 0x00000, 0x00001 0x00002, ecc non sbloccano il CE (tipico caso di lettura per la copia). Letture preordinate tipo 0x00000, 0x00001, 0x0001F, 0x00020, ecc rappresentano la chiave di sblocco del CE per l'intera memoria (caso ben definito di lettura della EPROM nìmontata sulla scheda finale).

Un metodo più semplice è quello di utilizzare un monostabile per creare un segnale di blocco del CE per un tempo prefissato. Il firmware deve creare un ritardo sufficiente o controllare l'esaurimento del tempo prima di procedere con l'esecuzione. Un programmatore non è in grado di governare una simile temporizzazione e leggerà dei buchi per un certo pezzo.

Problemi: occorre realizzare qualcosa che non dipenda dall'accensione (partenza del monostabile) perchè se rileggo la EPROM senza rimuoverla da un programmatore che non toglie alimentazione alla seconda lettura risulterà sbloccata.

La migliore chiave ritengo sia quella che blocca l'accesso in presenza di letture sequenziali e all'accensione il blocco risulti attivato.

Piccio.

Piccio.

...

Ho trovato una soluzione migliore e più compatta ma servono:

- una EPROM dello stesso tipo di quella da proteggere

- un contatore a 4 bit

- un multiplexer ad 8 ingressi (tipo 74ACT251)

- un flip/flop

- qualche porta logica

Lo scopo è di utilizzare la seconda EPROM come mappatura degli accessi/ chiave. Un accesso ad un determinato indirizzo causa il blocco della EPROM tranne la finestra in esecuzione (dovrà essere effettuato solo una volta quindi, al boot, la prima locazione ad essere eseguita) Successivi 6 accessi in sequenza determinano lo sblocco.

Questo metodo permette di non dover ritoccare il firmwar a patto di trovare una sequenza di 7 istruzioni non condizionali in modo da assicurare il flusso continuo di istruzioni (interrupt a parte).

Piccio.

...

Questo è uno schema di principio di quello che intendo...

[FIDOCAD] LI 55 125 60 130 LI 60 130 60 135 LI 65 210 60 205 LI 60 135 60 220 LI 60 220 65 225 LI 65 225 70 225 LI 70 235 70 250 RV 115 100 150 160 RV 115 180 150 240 TY 120 205 5 3 0 0 0 * CODE EPROM TY 120 125 5 3 0 0 0 * KEY EPROM MC 110 125 0 0 074 LI 150 210 160 210 LI 160 125 165 130 LI 165 130 165 135 LI 165 135 165 175 MC 210 180 0 0 074 LI 170 180 210 180 LI 165 175 170 180 TY 175 175 5 3 0 0 0 * D7 TY 170 120 5 3 0 0 0 * D0..D6 TY 215 175 5 3 0 0 0 * RST RV 215 145 255 105 MC 210 125 0 0 074 LI 150 125 210 125 TY 230 165 5 3 0 0 0 * 4 bit TY 225 170 5 3 0 0 0 * Counter TY 220 125 5 3 0 0 0 * Multiplexer TY 225 120 5 3 0 0 0 * 8 bit RV 215 160 255 185 RV 285 130 315 165 LI 200 200 300 200 TY 290 195 5 3 0 0 0 * D7 LI 300 200 300 170 MC 300 170 3 0 074 MC 300 125 1 0 074 MC 110 210 0 0 074 MC 110 230 0 0 074 LI 330 250 330 150 LI 330 150 315 150 LI 95 230 110 230 LI 65 210 110 210 TY 65 220 5 3 0 0 0 * A8 TY 75 205 5 3 0 0 0 * A9..A17 TY 75 200 5 3 0 0 0 * A0..A7, LI 160 210 160 215 LI 160 215 160 265 MC 40 265 2 0 074 TY 40 260 5 3 0 0 0 * Data LI 160 265 40 265 LI 40 125 110 125 MC 35 125 0 0 074 TY 45 120 5 3 0 0 0 * A0..A17 LI 200 180 200 200 LI 70 250 330 250 TY 310 145 5 3 0 0 0 * Q TY 305 125 5 3 0 0 0 * SET TY 305 170 5 3 0 0 0 * RST LI 235 160 235 150 MC 235 150 3 0 074 MC 70 225 0 0 690 MC 305 100 1 0 690 RV 250 35 280 70 MC 265 75 3 0 074 MC 265 30 1 0 074 TY 275 50 5 3 0 0 0 * Q LI 305 55 280 55 LI 305 55 305 60 LI 305 60 305 100 LI 245 160 245 155 LI 245 155 275 155 LI 275 155 275 100 LI 275 100 295 100 LI 265 75 265 125 LI 265 125 255 125 LI 200 180 200 25 LI 200 25 265 25 LI 265 25 265 30 SA 200 180 TY 265 30 5 3 0 0 0 * RST TY 265 70 5 3 0 0 0 * SET LI 235 280 235 275 MC 70 280 0 0 074 MC 45 275 0 0 710 LI 75 280 235 280 MC 35 275 0 0 074 MC 35 285 0 0 074 LI 40 275 45 275 LI 40 285 45 285 TY 25 270 5 3 0 0 0 * /CE TY 25 280 5 3 0 0 0 * /OE TY 215 150 5 3 0 0 0 * Q0..Q2 TY 265 150 5 3 0 0 0 * Q3 LI 235 275 235 235 MC 235 235 3 0 710 LI 245 235 245 240 LI 245 240 245 250 LI 240 210 240 185 TY 240 185 5 3 0 0 0 * Clk SA 245 250

Piccio.

...

Porta pazienza, ho un'idea migliore ed ancor più semplice (FIDOCAD(J))

Il tutto si basa su 8 "istruzioni" contenute nella KEY EPROM:

- Attivazione protezione Codice binario 1111100 Il toggle del bit(0) resetta l'ultimo flipflop della catena ed inibisce l'address A8 alla EPROM dati con conseguente malfunzionamento. Il toggle del bit(1) resetta tutta la catena iniziale dei 5 flipflop alla cui uscita Q si presenta uno zero logico. Questo codice lo si invoca all'inizio della sequenza di sblocco una sola volta

- Codice #1 sblocco Codice binario 01111111 Carica nel flipflop #1 un 1 logico

- Codice #2 sblocco Codice binario 10111111 Carica nel flipflop #2 un lo stato del precedente flipflop: se era stato eseguito il codice sblocco #1, allora carica un 1

- Codice #3, #4, #5, #6 sblocco Codice binario 11011111, 11101111, 11110111, 11111011 Come codice #2, trasportano il bit caricato dallo stato precedente. Se la sequenza è corretta, al termine si avrà un livello alto all'ingresso della porta AND (gate per A8) e gli address sulla EPROM dati risulteranno corretti.

- Il resto della EPROM KEY andrà riempito col codice 11111101 in modo da resettare la catena di flipflop ed invalidare la sequenza.

SI possono prevedere più ricorrenze di codice nei punti più svariati della EPROM (attenti agli interrupt ed ai salti condizionali, però!!!).

Un programmatore di EPROM quando legge non può conoscere la sequenza corretta e causa dei buchi (alias) di 256 byte. Solo conoscendo l'esatta esecuzione delle istruzioni si libera il codice.

Pace.

[FIDOCAD] LI 225 125 245 125 TY 221 122 5 3 0 0 0 * Q TY 207 122 5 3 0 0 0 * D TY 207 132 5 3 0 0 0 * Clk RV 205 115 225 150 TY 209 144 5 3 0 0 0 * /CLR LI 205 135 195 135 LI 215 150 215 160 LI 265 125 285 125 TY 261 122 5 3 0 0 0 * Q TY 247 122 5 3 0 0 0 * D TY 247 132 5 3 0 0 0 * Clk RV 245 115 265 150 TY 249 144 5 3 0 0 0 * /CLR LI 245 135 235 135 LI 255 150 255 160 LI 305 125 325 125 TY 301 122 5 3 0 0 0 * Q TY 287 122 5 3 0 0 0 * D TY 287 132 5 3 0 0 0 * Clk RV 285 115 305 150 TY 289 144 5 3 0 0 0 * /CLR LI 285 135 275 135 LI 295 150 295 160 LI 345 125 365 125 TY 341 122 5 3 0 0 0 * Q TY 327 122 5 3 0 0 0 * D TY 327 132 5 3 0 0 0 * Clk RV 325 115 345 150 TY 329 144 5 3 0 0 0 * /CLR LI 325 135 315 135 LI 335 150 335 160 LI 385 125 405 125 TY 381 122 5 3 0 0 0 * Q TY 367 122 5 3 0 0 0 * D TY 367 132 5 3 0 0 0 * Clk RV 365 115 385 150 TY 369 144 5 3 0 0 0 * /CLR LI 365 135 355 135 TY 421 122 5 3 0 0 0 * Q TY 407 122 5 3 0 0 0 * D TY 407 132 5 3 0 0 0 * Clk RV 405 115 425 150 TY 409 144 5 3 0 0 0 * /CLR LI 405 135 395 135 LI 215 160 220 160 SA 255 160 SA 295 160 SA 335 160 SA 215 160 LI 235 135 235 140 LI 235 140 235 175 LI 275 135 275 140 LI 275 140 275 185 LI 315 135 315 195 LI 355 135 355 205 LI 395 135 395 215 LI 195 135 195 165 LI 195 165 185 165 LI 235 175 185 175 LI 275 185 185 185 LI 315 195 185 195 LI 355 205 185 205 LI 395 215 185 215 TY 177 163 5 3 0 0 0 * D7 TY 177 173 5 3 0 0 0 * D6 TY 177 183 5 3 0 0 0 * D5 TY 177 193 5 3 0 0 0 * D4 TY 177 203 5 3 0 0 0 * D3 TY 177 213 5 3 0 0 0 * D2 TY 177 223 5 3 0 0 0 * D1 TY 177 233 5 3 0 0 0 * D0 LI 215 160 215 225 LI 215 225 185 225 LI 205 125 195 125 LI 195 125 195 110 MC 195 110 3 0 000 TY 190 100 5 3 0 0 0 * 1 LI 220 160 375 160 LI 375 150 375 160 LI 425 125 445 125 MC 445 115 0 0 690 LI 445 115 445 90 LI 415 150 415 235 LI 185 235 190 235 LI 190 235 415 235 MC 130 200 0 0 074 RV 185 155 135 245 TY 145 170 5 3 0 0 0 * KEY EPROM LI 445 90 120 90 LI 120 90 120 95 LI 120 95 120 195 LI 120 195 115 200 TY 113 177 5 3 0 0 0 * A8 TY 177 288 5 3 0 0 0 * D7 TY 177 298 5 3 0 0 0 * D6 TY 177 308 5 3 0 0 0 * D5 TY 177 318 5 3 0 0 0 * D4 TY 177 328 5 3 0 0 0 * D3 TY 177 338 5 3 0 0 0 * D2 TY 177 348 5 3 0 0 0 * D1 TY 177 358 5 3 0 0 0 * D0 MC 130 325 0 0 074 RV 185 280 135 370 TY 142 294 5 3 0 0 0 * DATA EPROM LI 470 120 470 125 LI 470 125 470 265 LI 470 265 120 265 LI 120 320 125 325 LI 120 265 120 320 LI 135 340 65 340 LI 65 340 65 215 LI 135 350 55 350 LI 55 350 55 225 SA 65 215 SA 55 225 LI 135 215 40 215 LI 135 225 40 225 LI 130 200 40 200 LI 130 325 95 325 LI 95 325 80 325 LI 80 325 75 320 LI 75 320 75 205 LI 75 205 70 200 MC 30 225 0 0 073 MC 30 215 0 0 073 MC 30 200 0 0 073 TY 21 222 5 3 0 0 0 * /CE TY 20 212 5 3 0 0 0 * /OE TY 10 197 5 3 0 0 0 * A0..A17 TY 120 260 5 3 0 0 0 * G_A8 TY 85 320 5 3 0 0 0 * (A0..A17)-A8

Piccio.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required