Kysymys:
Suojaatko AVR-salamaa lukemasta Internet-palveluntarjoajalta?
Pablo
2013-01-08 05:40:14 UTC
view on stackexchange narkive permalink

Yritän suojata koko salamaa Internet-palveluntarjoajan lukemiselta. Siinä on käynnistyslatain, joka pystyy itse ohjelmoimaan sovellusosion.

Lukitustavun asettaminen:

LB1 / LB2 ei anna käyttäjän käyttää käynnistyslatainta uuden laiteohjelmiston lataamiseen.

BLB12 / BLB11 ja BLB01&BLB02 eivät estä salaman lukemista Internet-palveluntarjoajan kautta, jos en erehdy.

Joten ei ole mitään tapaa antaa käyttäjän päivittää laiteohjelmistoa mukautetun käynnistysohjelman avulla ja suojata salamaa lukemiselta samanaikaisesti?

Kaksi vastused:
Garrett Fogerlie
2013-01-08 09:30:08 UTC
view on stackexchange narkive permalink

Et määritä sirua, seuraava on enimmäkseen suunnattu 8-bittisille atmega-laitteille, mutta se on yleistä tietoa. Lue tarkemmat tiedot kohdasta Muistin ohjelmointi tietyn sirun tietolomakkeesta!

Sanottiin, ja kuten sanoitte, kaikki AVR-laitteet sisältävät kaksi lukobittiä nimeltä LB1 ja LB2. Näiden ohjelmointi (arvoon 0, matala) lisää suojaa Flash- ja EEPROM-muistiin kirjoitettuihin sisältöihin alla olevan taulukon mukaisesti. Suojaustaso on jaettu kolmeen tilaan, joissa tila 1 ei tarjoa suojaa ja tila 3 tarjoaa maksimaalisen suojan. On mahdollista siirtyä korkeammalle suojaustilalle yksinkertaisesti ohjelmoimalla uudelleen lukitusbitit.

AVR sallii korkean bitin vaihtamisen matalaksi, mutta ei päinvastoin. "Matalaa" lukitusbittiä ei ole mahdollista muuttaa "korkeaksi", joten suojaustason alentaminen ei ole mahdollista. Lukitusbittien tyhjentämiseksi tarvitaan täydellinen sirun poisto, joka tyhjentää Flash-muistin.

AVR lock bit table

Nämä kaksi lukitusbittiä yksin (LB1 ja LB2) kun alhainen estää 99,9% ihmisistä varastamasta firmwareasi! Todennäköisesti yli 99,9%. Koodisi suunnittelu on melkein aina helpompaa.

Joten ei ole mitään tapaa antaa käyttäjän päivittää laiteohjelmistoa mukautetulla käynnistyslataimella ja suojata salamaa samanaikaiselta lukemiselta?

Parhaan tietoni mukaan (voisin erehtyä, mutta mielestäni minulla olisi ollut ongelmia tämän kanssa aiemmin) laitteissa, joissa on käynnistyslataimen suojavarokkeet (BLB12 ja BLB11), voit lukita mukautetun käynnistyslataimen osiosta, poista SPI käytöstä ja ole suojattu 97-98% ihmisiltä.

Kuitenkin, kun mitään lukitusbitistä ei ole ohjelmoitu, muistilukko-ominaisuuksia ei ole otettu käyttöön !!! ISP-käytöstä poistaminen riittää vain 70%: n ihmisten estämiseen.

Joidenkin lisätietojen vuoksi lukitusbitit ja sulakkeet eivät ole tavallisessa salaman tai EEPROM-tilassa, eivätkä ne ole käytettävissä ohjelmistosta lukuun ottamatta Käynnistyslataajaan liittyviä lukobittejä laitteissa, joissa on itseohjelmointi. Tämän sovelluksen huomautuksen taulukko 2 auttaa sinua tunnistamaan, mitä voit tehdä omalle laitteellesi!

Atmelin AVR-linja ei ole korkean turvallisuuden laite (ellei sitä nimenomaisesti mainita!) ja sellaisenaan heillä ei ehdottomasti ole mitään kooditurvatakuuta, eikä heidän pitäisi! Kuten kaikki suojaamattomat laitteet (ja valitettavasti jopa jotkut suojatut laitteet), he ovat alttiita tavallisille hyökkäyksille!


Muokkaa

Aion laittaa HV-ohjelmointirajapinnan otsikon. Mutta voiko joku käyttää HV-ohjelmoijaa lukemaan salaman? Tiedän, että HV-ohjelmoija voi tehdä sirun poiston, vaikka ISP / Jtag on pois käytöstä.

En usko, että sinun pitäisi sisällyttää HV-ohjelmoijaa piirilevysi suunnitteluun, ellei se ole ehdottoman välttämätöntä ja tiedät varma, että se ei aiheuta ongelmia mihinkään. HV-ohjelmoijan ohjelmat (12 voltin signaalit) ovat käytettävissä vain turvatoimenpiteenä lukittujen (virhelukitettujen, enimmäkseen) sirujen ohjelmoimiseksi. Teoriassa tämä on vain tarkoitettu ohjelmoimaan laite lukemaan mitään. Enkä ole koskaan kuullut hyödyntämisestä, joka mahdollistaisi lukemisen.

Käynnistysohjelman päivittämiseen (joskus) laitan HV-ohjelmointirajapinnan otsikon. Mutta voiko joku käyttää HV-ohjelmoijaa lukemaan salaman? Tiedän, että HV-ohjelmoija voi tehdä sirun poiston, vaikka ISP / Jtag on pois käytöstä.

Luulen, että voi olla tapa päivittää lukittu salama käynnistyslataimen kautta (jotain tekemistä sisäisen kirjoituslipun ja / tai ISR: n kanssa ehkä ???) Mutta minun on etsittävä muistiinpanoni ja ehkä täytyy testata se. En voi tehdä tätä ~ 20 tuntia; joten suosittelen erittäin uuden kysymyksen esittämistä , joka keskittyi vain tähän ja mainitsemallesi prosessorille. Se on erittäin hyvä kysymys !

+1 viimeiselle kommentille, jos kaikki muu epäonnistuu, jokin virhe voi vain tyhjentää sirun ja liittää sen meille AVR-virheenkorjaajaan / ohjelmoijaan lukitusbittien nollaamiseksi ja tietoturvasi on kadonnut.
@Garrett Fogerlie: ei ole varma, mikä sai sinut ajattelemaan, että yritän varastaa koodin. Pyydä minulle asiaa ja korjaan kysymykseni, jotta muut eivät ajattele samalla tavalla. Yritän antaa mahdollisimman vähän suojaa omalle koodilleni, omalle käynnistyslataimelleni. Joka tapauksessa, pari muuta kysymystä tästä. Chip on ATMega328, luultiin, että perheellä on yhteinen lukitusbittien käyttö. Olet selittänyt `` LB1`` ja `` LB2``, jotka kuvasin myös kysymyksessäni rajoittavaksi vaihtoehdoksi käyttää käynnistyslatainta päivitystarkoituksiin. Joten se ei ole vaihtoehto. Mitä tulee `` BLB12`` ja `` BLB11 '' - sitä en ymmärrä. (jatkuu)
Näiden bittien asettaminen EI estä ketään lukemasta salamaa (sovellus + käynnistyslatain) ulkopuolelta. Datalehdestä näyttää siltä, ​​että nämä bitit vain estävät LPM / SPM-komennot, mutta sarjaohjelmoija ei käytä sitä. Sarjaohjelmoinnin ja jtagin poistaminen käytöstä on toinen iso kysymys minulle. Käynnistyslataimen päivittämiseksi (joskus) laitan HV-ohjelmointirajapinnan otsikon. Mutta voiko joku käyttää HV-ohjelmoijaa lukemaan salaman? Tiedän, että HV-ohjelmoija voi tehdä sirun poiston, vaikka ISP / Jtag on pois käytöstä.
@pablo, anteeksi, en tarkoittanut mitään loukkausta. Kun näin ensimmäisen kerran kysymyksesi, varkausidea ei tullut minulle; ja kirjoitin kirjoitin vastauksen, joka keskittyi jonkin verran lukitun koodin hakemiseen. Olin kuitenkin töissä ja ennen vastauksen lähettämistä minulla oli ~ 2 tunnin tauko. Sitten kun palasin, huomasin, ettei vastausta ollut vieläkään, ja olin hieman yllättynyt. Sitten kun luin kysymyksesi uudelleen, ajattelin, että 'varkaus' on voinut olla miksi. Ei lainkaan sinun syytäsi, olen nyt poistanut vastuuvapauslausekkeen. Suorittimen mallia tarvittiin taulukossa lueteltujen erojen vuoksi ja koska 8/16/32-bittisiä AVR-laitteita on ...
@Pablo kysymyksiisi liittyen, katso ** Muokkaa ** viestini alaosasta.
@Pablo jostain syystä muokkaukseni alaosassa ei ollut lähettänyt! Lisäsin sen uudelleen, anteeksi.
ъGarrett Fogerlie: En tarkoittanut laittaa HV-ohjelmoijaa alukseen, vain otsikkoa :) Mutta tajusin, että se ei ole välttämätöntä, koska lukkobitit toimivat ja vain siinä tapauksessa, että voin käyttää ISP-otsikkoa sirun poistamiseen ja kirjoittaa koko salama laitteeseen. Joten yhteenvetona vastauksesta alkuperäiseen kysymykseeni - LB1: n ja LB2: n asettaminen estää ketään lukemasta koko salama-aluetta JA samalla ei estä minua kirjoittamasta ohjelmamuistia käynnistyslataimen kautta.
@Pablo HV-liitännän ottaminen taululle voi aiheuttaa ongelmia muille levyn osille, kuten jännitesäätimelle jne., Vastaatko yhteenvetokysymykseesi nyt? En voi aivan erottaa siitä, mitä sanoit. Jos ei, suosittelen todella kyselemään uuden yksityiskohtaisen ja jättämään linkin minulle, tai poistamaan tämän vastauksen merkinnän ja päivittämään kysymyksesi, jotta kysymyksesi olisi selkeämpi. Lisäksi, +1 en tajunnut, etten ollut tehnyt sitä, anteeksi.
Gandalf
2015-08-14 22:55:59 UTC
view on stackexchange narkive permalink

Voit käyttää lukitusbittejä joissakin ATMega-laitteissa ja silti päivittää koodisi käynnistyslataimella.

Ohjelmoin LB1: n ja LB2: n ATMega 328: een. Käynnistin käynnistyslataimen, päivitin pääohjelman toimi täydellisesti.

Internet-palveluntarjoaja ei voi lukea eikä kirjoittaa mitään flash / eeprom / sulakkeita, mutta käynnistyslatausohjelma voi silti kirjoittaa sovellusosan.

ISP: llä oleva sirun poisto tyhjentää lukitusbitit (LB1 ja LB2), mutta poistaa myös koko flash / eepromin, joten saatat suojata koodiasi (sinun on kuitenkin varmistettava, että käynnistyslatainta ei voida hakata)

Kuinka tämä parantaa tällä hetkellä hyväksyttyä vastausta?
Huomaa, että niin kauan kuin sinulla on tavallinen Arduino-tyylinen käynnistyslataimen asukas, lukemisen lukeminen olisi melkein turhaa, koska käynnistyslataimella itsellään on lukutoiminto, ellet käytä edistynyttä vain 328P-tilaa, joka poistaa käynnistyslataimen LPM: n käytöstä sovelluksen muistiin.Muussa tapauksessa joudut muokkaamaan käynnistyslatainta sen poistamiseksi kustannuksella, ettet enää pysty vahvistamaan ohjelmointia.(Voisit mahdollisesti luoda toisen vahvistusmekanismin, mutta se ei ole tavallista, että sinun on myös muokattava / korvattava avrdude)


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...