Forum: Mikrocontroller und Digitale Elektronik EEPROM Schreibschutz gegen Manipulation


von Matthias K. (oskito)


Lesenswert?

Hallo,
Es sind EEPROMs gegen beabsichtigtes und unbeabsichtigtes Verändern zu 
schützen - vorzugweise als Hardware-Lösung.
Lötbrücke wurde bereits abgelehnt, Leiterbahn durchtrennen soll auch 
keine Lösung sein.
Es muß doch Bauteile geben, die genau für den Zweck „Schutz gegen 
Manipulation des EEPROM-Inhaltes” geeignet sind.
Noch habe ich keine Vorstellung davon, was da ginge.

von holger (Gast)


Lesenswert?

Was für EEPROMs? Parallel, I2C, SPI?

von Sven S. (boldie)


Lesenswert?

Soll das reversibel sein, oder dann dauerhaft write protected?

Evtl eine ganz kleine SMD-Sicherung nutzen und die nach dem 
Schreibvorgang durchbrennen?
Oder den Klassiker: Jumper.

von Paul (Gast)


Lesenswert?

Versteckte Prüüfsumme, nach einer Änderung läuft nichts mehr.

von Paul (Gast)


Lesenswert?

Warum eigentlich keinen nicht wieder beschreibbaren Speicher?

von GL (Gast)


Lesenswert?

Wie groß ist der Inhalt? Wie oft soll dieser geändert werden?

von Hannes (Gast)


Lesenswert?

Matthias K. schrieb:
> Hallo, Es sind EEPROMs gegen beabsichtigtes und unbeabsichtigtes
> Verändern zu schützen

Ist nicht möglich.

von Joachim B. (jar)


Lesenswert?

Matthias K. schrieb:
> Es sind EEPROMs gegen beabsichtigtes und unbeabsichtigtes Verändern zu
> schützen - vorzugweise als Hardware-Lösung

einfach die R/!W Leitung auf High schalten.

Mein EEPROM im PC1500 hat alles vergessen, Programmiert 2005, Datenblatt 
sagt garantierte Datenerhaltung 10 Jahre, die waren wohl um.

Kennt einer OTP ROMs auf Fuse Basis?, AND oder NOR egal, hauptsache 
JEDEC

: Bearbeitet durch User
von A. B. (Gast)


Lesenswert?

Klar gibt's das, z. B. manche (spezielle!) Varianten bei I2C- oder SPI-
EPROMS: M24128 oder M95512.
Die haben eine "Identification Page", ein spezieller kleiner 
Speicherbereich, der durch ein spezielles Kommando irreversibel 
schreibgeschützt werden kann.
Berechnet man einen Hash über den "normalen" Speicherinhalt und schreibt 
den Hash in diese Identification Page ...

Oder AT24MAC402, da gibt's permanenten Schreibschutz für eine Hälfte des 
Speichers.

Das einzig ärgerliche bei allen Varianten dabei ist: man legt sich auf 
einen Hersteller fest.

Oder man nimmt gleich einen STM32G030J6, der hat ein 1K OTP drin. Als 
I2C- oder SPI-Slave ...
Da kann man natürlich auch gleich softwaremäßig ein größeres EEPROM mit 
simulieren.

von Peter D. (peda)


Lesenswert?

Matthias K. schrieb:
> Es sind EEPROMs gegen beabsichtigtes und unbeabsichtigtes Verändern zu
> schützen - vorzugweise als Hardware-Lösung.

Viele I2C-EEPROM haben einen WP-Pin (Write Protect), z.B. AT24C512C
http://ww1.microchip.com/downloads/en/devicedoc/atmel-8720-seeprom-at24c512c-datasheet.pdf

von Peter D. (peda)


Lesenswert?

Joachim B. schrieb:
> Mein EEPROM im PC1500 hat alles vergessen, Programmiert 2005, Datenblatt
> sagt garantierte Datenerhaltung 10 Jahre, die waren wohl um.

Da hat viel eher der PC1500 rumgesponnen und den EEPROM gelöscht.
Oder wars im RAM und die Stützbatterie war leer?

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> Da hat viel eher der PC1500 rumgesponnen und den EEPROM gelöscht.

nein der lag 14 Jahre in der Schublade!
also nix EEPROM gelöscht oder rumgesponnen.
Nach dem Einbau mit Befehlserweiterung neue ROM Table funktionierte 
alles einwandfrei!

Peter D. schrieb:
> Oder wars im RAM und die Stützbatterie war leer?

Nein ein EEPROM braucht keine Stützbatterie, das weisst du aber und im 
RAM war nichts.

Das EEPROM hat einfach teilweise Daten verloren, was sich nach Reset in 
einen Absturz äusserte, die ROM Table wurde wohl noch angesprungen, aber 
danach hing er.
Dann habe ich die /CS Leitung abgelötet und siehe da kaum ist die ROM 
Table in meinem EEPROM nicht mehr eingebunden funktioniert er wieder.

Das OS hat ja echte ROMs, aber für Erweiterungen prüft das OS ob 
Erweiterungen, CE-150, CE-158 angeschlossen sind, sowie meine 
ROM(EEPROM) Erweiterung, das ging dann halt schief.

Idee /CS mit dem freien PB1 auf LH5811 undieren, erst Reset, Neustart 
ohne EEPROM, dann /CS freischalten und EEPROM neu bespielen.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Matthias K. schrieb:
> Es sind EEPROMs gegen beabsichtigtes und unbeabsichtigtes Verändern zu
> schützen - vorzugweise als Hardware-Lösung.
> Lötbrücke wurde bereits abgelehnt, Leiterbahn durchtrennen soll auch
> keine Lösung sein.

Und was ist mit einem DIP-Switch oder Jumper? WE (write enable) Pins 
haben viele EEPROMs. Größe? Interface?

Ansonsten mal wieder viel viel zu wenig Informationen. Soll das ein 
Selbstschutz gegen ein amoklaufendes Programm sein? Oder eine 
Sicherheitsmaßnahme gegen einen Angreifer? Und soll es den Bengel von 
nebenan fern halten oder den CCC oder die NSA?

"Hardware-Lösung" klingt so, als wäre es akzeptabel, wenn man zum 
Setzen/Entfernen des Schreibschutzes physisch an das Gerät muß.
Das ist gut, weil es im Gegensatz zu irgendwelchen Soft-Locks mit Magic 
Patterns zumindest überhaupt funktionieren kann. Der beste Schreibschutz 
wäre natürlich ein OTP Speicher. Wobei ein Angreifer den natürlich auch 
auslöten und ersetzen könnte.

von abc.def (Gast)


Lesenswert?

die alten 2864 EEPROMS hatten einen Schreibschutz:
Wenn man in einer (abenteuerlichen) Sequenz geschrieben oder gelesen 
hat, dann wurde dieser aktiviert oder deaktiviert.
Siehe Datenblatt Beispiel: 
https://www.microchip.com/wwwproducts/en/AT28C64B

von Peter D. (peda)


Lesenswert?

Joachim B. schrieb:
> nein der lag 14 Jahre in der Schublade!
> also nix EEPROM gelöscht oder rumgesponnen.

Ich glaub trotzdem nicht, daß der EEPROM vergeßlich wurde. So ein Glitch 
auf dem /WE ist schnell passiert.
Viele Geräte haben oft auch keinen richtigen Reset-IC, sondern nur ein 
arme-Leute-Reset mit RC-Glied. Wenn da die VCC nicht schnell von 0V an 
ansteigt, macht die CPU alles Mögliche.

Es gibt daher EEPROMs mit Software Data Protection, z.B. AT28C256. Vor 
jedem Pagewrite muß mit einer speziellen 3-Byte Sequenz das Schreiben 
enabled werden. Die SDP muß aber erst eingeschaltet werden, ab Werk ist 
sie das nicht.

von Joachim B. (jar)


Lesenswert?

abc.def schrieb:
> die alten 2864 EEPROMS hatten einen Schreibschutz:
> Wenn man in einer (abenteuerlichen) Sequenz geschrieben oder gelesen
> hat, dann wurde dieser aktiviert oder deaktiviert.
> Siehe Datenblatt Beispiel:
> https://www.microchip.com/wwwproducts/en/AT28C64B

interssant aber, lt. Datenblatt:
Data Retention (Years) 10

nicht unbedingt brauchbar (jedenfalls für mich)

Joachim B. schrieb:
> Mein EEPROM im PC1500 hat alles vergessen, Programmiert 2005, Datenblatt
> sagt garantierte Datenerhaltung 10 Jahre, die waren wohl um.

ich suche also immer noch ein OTP auf fuse Basis

Dem TO mag ein simpler Schreibschutzschalter helfen
1x UM auch als DIP Switch mit pulldown und einem NAND Gatter

R/!W & pulldown über DIP Switch gibt am NAND Ausgang immer high am R/!W 
und damit wäre der schreibgeschützt.

muss man noch mal aufmalen, vermutlich braucht man ein oder mehr Gatter

Zum Programmieren den Schalter umlegen

Wahrheitstabelle

switch_low, write low, CS low -> !W & !CS
switch_low, write low, CS high -> !W & CS
switch_low, write high, CS low -> R & !CS
switch_low, write high, CS high -> R & CS

usw. kann jemand anderes fertig stellen

3 Bits 8 Zustände auf !CS und R/!W ausgeben

Schreibschutz bei switch low (oder high nach belieben)
!CS und R/!W muss erhalten bleiben bei Schreibschutz nicht geschaltet.

von Joachim B. (jar)


Lesenswert?

Peter D. schrieb:
> So ein Glitch
> auf dem /WE ist schnell passiert.

Glitchdetect war beschaltet, die Zeitkonstante ausreichend für alle 
PC1500, da wurde weder RAM noch EEPROM selectiert!

Ist im Original immer funktionierend gewesen seit dem Erscheinen!

Du erklärst damit nicht warum mein EEPROM Inhalt etliche Einschaltungen 
überlebt hat aber nicht die Jahre in der Schublade!

OK du glaubst an Glitch ich an EEPROM Verlust einzelner Bits durch 
Langzeitlagerung.

Peter D. schrieb:
> Es gibt daher EEPROMs mit Software Data Protection, z.B. AT28C256

und immer noch 10 Jahre in Datenblatt die lange vorbei sind und das 
schreibt nur Atmel, keine Ahnung was ich eingebaut hatte 28C64 halt

: Bearbeitet durch User
von Matthias K. (oskito)


Lesenswert?

A. B. schrieb:
> Klar gibt's das, z. B. manche (spezielle!) Varianten bei I2C- oder
> SPI-
> EPROMS: M24128 oder M95512.
> Die haben eine "Identification Page", ein spezieller kleiner
> Speicherbereich, der durch ein spezielles Kommando irreversibel
> schreibgeschützt werden kann.
> Berechnet man einen Hash über den "normalen" Speicherinhalt und schreibt
> den Hash in diese Identification Page ...

Es sind EEPROMS, die per i2c angesprochen werden. (bisher 24LC32; 
24LC128)
Es wir nun ein Schreibschutz gefordert, der folgende Eigenschaften haben 
soll
- nach dem Eintragen von Meßwerten und Iderntifikationsnummer darf der 
Inhalt des EEPROM nicht mehr (einfach) verändert werden können.
- Das Schützen des Inhaltes soll vorzugsweise per Hardware erfolgen (= 
Wunsch des Auftraggebers)
- Das Schützen des Inhaltes muß für den Operator, der die Baugruppen 
prüft und verschließt, einfach und schnell zu erledigen sein (Löten ist 
zu umständlich).
- Die Daten sollen mit dem Schutz fälschungssicher sein (Es gibt da eine 
Norm, die einzuhalten ist - muß ich mal erfragen)
- auf den bestehenden Leiterplatten ist nur sehr wenig Platz

CRC32 wurde als Lösung bereits erwogen, aber nicht sehr begrüßt

> Das einzig ärgerliche bei allen Varianten dabei ist: man legt sich auf
> einen Hersteller fest.
das ist wirklich ein Problem

> Oder man nimmt gleich einen STM32G030J6, der hat ein 1K OTP drin. Als
> I2C- oder SPI-Slave ...
> Da kann man natürlich auch gleich softwaremäßig ein größeres EEPROM mit
> simulieren.
(STM32G030J6 könnte für ein zukünftiges Projekt gut sein.)

OTP ist ein gutes Stichwort. Es gibt wohl OTP-EPROMs mit nur wenigen 
Bytes. So ein Mini-EPROM ohne Löschfenster könnte die Lösung sein.
Das ist vielleicht noch besser als eine reine Hardware-Lösung.
(Ich hatte mir ein Bauteil vorgestellt, bei dem z.B. ein verborgener 
Kontakt durchstoßen wird.)

Vielleicht gibt es sogar EEPROMS für i2c-Bus mit OTP, die mit dem 
MSOP-Footprint der 24LC32 kompatibel sind. Ich werde mich auf die Suche 
begeben.

Wenn ich ohnehin das Layout ändern muß, könnte schon ein m24128-df in 
die engere Wahl kommen.

von Matthias K. (oskito)


Lesenswert?

Paul schrieb:
> Warum eigentlich keinen nicht wieder beschreibbaren Speicher?

Zunächst müssen Werte an verschiedenen Stationen geändert werden können.
Doch das läßt sich vielleicht durch andere Organisation auf einmaliges 
Beschreiben reduzieren. - wäre zu prüfen.

von Matthias K. (oskito)


Lesenswert?

Joachim B. schrieb:> einfach die R/!W Leitung auf High schalten.
Für solch eine Lösung hatte ich den "Einmal-Schalter" gedacht.

…
> Kennt einer OTP ROMs auf Fuse Basis?,…

OTP-EEPRROM oder Fuse-bit-Gechichten - muß ich mal verfolgen

von Matthias K. (oskito)


Lesenswert?

Axel S. schrieb:> "Hardware-Lösung" klingt so, als wäre es akzeptabel, wenn man zum
> Setzen/Entfernen des Schreibschutzes physisch an das Gerät muß.
> Das ist gut, weil es im Gegensatz zu irgendwelchen Soft-Locks mit Magic
> Patterns zumindest überhaupt funktionieren kann. Der beste Schreibschutz
> wäre natürlich ein OTP Speicher. Wobei ein Angreifer den natürlich auch
> auslöten und ersetzen könnte.

- ja, es wäre akzeptabel, wenn zur Manipulation das verklebte Gehäuse 
geöffnet und ein Bauteil ersetzt werden muß. (Jumper reicht nicht.)

OTP-Speicher ist ein gutes Stichwort.
Es wird wohl darauf hinauslaufen, entweder ein EEPROM mit OTP-Funktion 
zu finden oder einen kleinen OTP-EPROM, der wie eine Hardware-Lösung 
oder Sicherung wirkt.

(bisherige EEPROM sind 24LC32 und 24LC128)

von Peter D. (peda)


Lesenswert?

Man könnte einen kleinen MC nehmen, der nach außen I2C spricht und die 
Daten im internen Flash ablegt. Über ein I2C-Kommando werden die dann 
für alle Zeit schreibgeschützt.
Z.B. der ATtiny85 im QFN (4*4mm²) hat 8kB Flash und läuft mit 1,8..5,5V.

von A. B. (Gast)


Lesenswert?

Matthias K. schrieb:
> CRC32 wurde als Lösung bereits erwogen, aber nicht sehr begrüßt

Ja, das ist auch vergleichsweise schwach. Eher SHA256 oder so. Außedem 
muss man dabei natürlich Padding beachten: ggf. nicht benötigte Bereiche 
MÜSSEN mit einem vorgegebenen Muster gefüllt und auf Veränderungen 
geprüft werden.
Oder der Hash wird nur über die tatsächlich benutzten Bereiche 
berechnet.

Sonst hat ein Angreifer zu viele Freiheitsgrade.

von Matthias K. (oskito)


Lesenswert?

holger schrieb:
> Was für EEPROMs? Parallel, I2C, SPI?

i2c ist verbaut. Die Schaltung soll "nur" noch um die 
Sicherheitsfunktion ergänzt werden.

von Matthias K. (oskito)


Lesenswert?

Sven S. schrieb:
> Soll das reversibel sein, oder dann dauerhaft write protected?
>
> Evtl eine ganz kleine SMD-Sicherung nutzen und die nach dem
> Schreibvorgang durchbrennen?
…

es gibt zwar extrem kleine SMD-Sicherungen, ich habe aber
A - noch keine Idee, wo ich die sinnvoll in der Schaltung plazieren 
sollte.
B - noch keine Idee, wie der Operator die ohne Aufwand durchbrennen soll

Ich stelle mir ienen Aufwand vor, der ähnlich dem Setzen eines 
Lötpunktes wäre. Solch ein Aufwand ist bereits abgelehnt.

von Matthias K. (oskito)


Lesenswert?

Vorstellung zu OTP-Ergänzung - kleiner OTP-EPROM im SOT23 (oder kleiner) 
Gehäuse könnte noch auf die LP zu kriegen sein.
Doch bisher habe ich kleine OTP-EPROM nur für 1wire gefunden.
i2c zu 1wire sprengt wahrscheinlich Kostenrahmen und Platzbedarf.

Die Lösungsmöglichkeit verdichtet sich zu m24128-df und ähnlichen ICs

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Matthias K. schrieb:
> A - noch keine Idee, wo ich die sinnvoll in der Schaltung plazieren
> sollte.

Mal was voellig abgefahrenes: vielleicht am WP(=WriteProtect) Pin?

> B - noch keine Idee, wie der Operator die ohne Aufwand durchbrennen soll

Einen Spannungsteiler zwischen Vss und Vcc aus 0402 Widerstaenden mit 
z.B. einem 4k7 nach Vcc und einem 47 Ohm nach Vss. Abriff auf den WP Pin 
und ein Loetpad. Schreibschutz wird aktiviert, indem das Loetpad so 
lange mit Vcc verbunden wird, bis die 47 Ohm durchgeschmurgelt sind...
Schreiben wird wieder ermoeglicht durch Wechseln des 47 Ohm Widerstands.

Gruss
WK

Beitrag #6000822 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.