ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1 - ደረጃ በደረጃ
- ደረጃ 2 - ስለ Atecc608a ማስጠንቀቂያ
- ደረጃ 3 1. የወረዳውን መሻት
- ደረጃ 4: 2. የቺፕ ውቅር (Atecc608a)
- ደረጃ 5: 3. የ AES CBC ሞዱል አጠቃቀም
- ደረጃ 6 5. ይህንን ቺፕ ለምን መጠቀም ያስፈልግዎታል?
- ደረጃ 7 መደምደሚያ
ቪዲዮ: ደህንነት ከአርዱዲኖ ጋር: Atecc608a: 7 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
ርዕስ
ሰላም ለሁላችሁ !
ይህ የመጀመሪያ አስተማሪ ጽሑፌ ነው ፣ ስለሆነም ለሁላችሁም አስደሳች እንደሚሆን ተስፋ አደርጋለሁ።
በዚህ ጽሑፍ ውስጥ ብዙ የደህንነት መሳሪያዎችን የሚያቀርብ “ATECC608A” የተባለ ማይክሮ ቺፕ እንዴት እንደሚጠቀሙ እነግርዎታለሁ።
ይህ ቺፕ በማይክሮ ቺፕ የተቀየሰ ሲሆን የ “CryptoAutrification ቺፕ” የመጨረሻው ስሪት ነው። ከዚህ ስሪት በፊት “ATSHA204A” እና “ATECC508A” ነበሩ።
የቀደመውን ስሪት ሳይሆን የመጨረሻውን ስሪት ለመጠቀም ለምን ወሰንኩ?
ይህ ስሪት በጣም የተራቀቀ ቺፕ እና የድሮው ስሪት የሌላቸውን ተግባራት አግኝቷል (ለምሳሌ - AES ሞዱል ፣ አይኦ ጥበቃ ሞዱል…)።
ይህ ፕሮጀክት ለምን?
እኔ በሳይበር ደህንነት ጎራ ውስጥ እሠራለሁ እና እንደ ሁሉም ሰው እኔ ፕሮግራምን እና ኤሌክትሮኒክስን እንደወደድኩ። በትምህርቴ ወቅት IoT Security ላይ ካለው ልዩ ባለሙያተኛ ጋር ኮንፈረንስ አገኘሁ (ኢንዱስትሪያል) በ IoT እቃቸው ውስጥ ደህንነትን አይጠቀምም። በብሉቱዝ በስማርትፎንዎ ሊከፈት የሚችል የቁልፍ ሰሌዳ አሳየን። በቁልፍ ሰሌዳው ላይ አንድ ዓረፍተ ነገር “ይህ የቁልፍ መቆለፊያ ከቁልፍ መቆለፊያ የበለጠ ደህንነቱ የተጠበቀ ነው!” አለ። ይህ ዓረፍተ ነገር ፈገግ እንዲል ያደርገዋል እና “ይህ የቁልፍ መቆለፊያ እስከ ዛሬ ከተገነባው በጣም የከፋ ቁልፍ ነው!” የሚለውን ዓረፍተ ነገር አሻሻለ።
እሱ በራሱ ፒሲ እና በብሉቱዝ አነፍናፊ በስማርትፎን የተላከው እያንዳንዱ ትዕዛዝ በእያንዳንዱ ጊዜ ተመሳሳይ መሆኑን እና ይህንን ትእዛዝ መቅዳት እና በእርስዎ ዘመናዊ ስልክ መላክ በጣም ቀላል ነው። ለ “ኢንዱስትሪያል” “ደህንነት” ዋናው ችግር እንዳልሆነ አብራርተውልናል። ለእነዚህ ነገሮች የደህንነት ንብርብር ሊጨምሩ የሚችሉ ቺፖችን (ከ 0.60 ዶላር በታች) አሳየን።
ከዚህ ማሳያ በኋላ ፣ በ IoT ነገር ላይ የደህንነት ንብርብር የሚጨምር አንዳንድ ክፍት ምንጭ ፕሮጀክት ለማግኘት ሞከርኩ ግን አላገኘሁትም።
ስለዚህ በሁለት IoT ነገር መካከል ለግንኙነት የደህንነት ንብርብርን በሚጠቀም ፕሮጀክት ላይ ለመሥራት ወሰንኩ።
ሀሳቤ ምንድነው?
በሁለት IoT Object መካከል በሚገናኝበት ጊዜ ብዙ ጥቃቶች ሊኖሩ ይችላሉ - Man Of the የዋህ ፣ የመረጃ ቅጂ እና ሌሎችም። ስለዚህ ሀሳቤ በጣም ቀላል ነው -
- በሁለት ወይም ከዚያ በላይ በአይዮት ነገር መካከል የተመሰጠረ ውሂብን መጠቀም።
- ዝቅተኛ ዋጋ አቅርቦቶች
- ከ Arduino UNO ጋር መሥራት ይችላል
አሁን ይህንን ረቂቅ ስዕል በአርዱዲኖ እና በ Atecc608a ቺፕ እንዴት እንደተገበርኩ እነግርዎታለሁ። በዚህ ጽሑፍ ውስጥ አርዱዲኖ UNO ን ከ ATECC608A ጋር እንዴት እንደሚጠቀሙበት እነግርዎታለሁ።
በሚቀጥለው ጊዜ ስለ ሁለት ነገር ግንኙነት አንድ ጽሑፍ እጽፋለሁ።
አቅርቦቶች
ለዚህ ፕሮጀክት ጥቂት ነገሮች ያስፈልጉዎታል
- አርዱዲኖ UNO ወይም ሜጋ (ቺፕ Atmega 328 ወይም ATMEGA 2560 መሆን አለበት)
- Atecc608A ቺፕ (እያንዳንዳቸው ከ 0.80 ዶላር ያነሰ ዋጋ ፣ በአቅራቢዎ ድር ጣቢያ ላይ በቀላሉ ማግኘት)
- 8-ፒን SOIC አስማሚ
- አንዳንድ ሽቦዎች እና ተከላካዮች
የዚህ ቺፕ (Atecc508a) የቀደመው ስሪት የውሂብ ሉህ እዚህ ይገኛል -> የውሂብ ስብስብ Atecc508a
ደረጃ 1 - ደረጃ በደረጃ
በዚህ ጽሑፍ ውስጥ የዚህን ቺፕ ውቅር እንዴት ማሻሻል እና እንዴት የ AES CBC ስልተ ቀመርን በመጠቀም መረጃን ኢንክሪፕት ማድረግ እንደሚቻል አሳያችኋለሁ።
እነዚህን ደረጃዎች እንከተላለን-
- የወረዳው ንድፍ
- የዚህ ቺፕ ውቅር
- የ AES CBC ሞዱል አጠቃቀም
- ይህንን ቺፕ ለምን መጠቀም ያስፈልግዎታል?
ለእያንዳንዱ እርምጃዎች ሁሉንም ነገር በዝርዝር እገልጻለሁ። እንዲሁም ፣ ለእያንዳንዱ ተግባራት ከአስተያየቶች ጋር በ Github ውስጥ ኮዴን ጨምሬያለሁ። ስለ የእኔ ኮድ ወይም ስለዚህ ፕሮጀክት አንዳንድ ጥያቄዎች ካሉዎት እሱን ለመመለስ ደስተኛ ነኝ።
የእኔ Github: የእኔ Github
ደረጃ 2 - ስለ Atecc608a ማስጠንቀቂያ
የ Atecc608a ቺፕ “ቀላል” ቺፕ አይደለም።
በመጀመሪያ ፣ የዚህ ቺፕ ሰነዶች በበይነመረብ ላይ ሙሉ በሙሉ እንዳያገኙት በኤንዲኤ ስር ነው። ግን ለዚህ ምንም ችግር የለም ፣ የቀደመው ስሪት የውሂብ ሉህ በበይነመረብ የመረጃ ቋት የተሟላ ATECC508A ላይ ይገኛል።
ሁለተኛ ፣ ይህንን ቺፕ ሲጠቀሙ ውቅረቱን መቆለፍ ያስፈልግዎታል እና ከተቆለፈ የቺፕውን ውቅር መለወጥ አይቻልም። ስለዚህ የ Config Zone ን እና የውሂብ ዞኑን ሲቆልፉ ይጠንቀቁ።
ሦስተኛ ፣ በ C ውስጥ የተፃፈው ቤተ -መጽሐፍት በጣም ትልቅ እና የተሟላ ነው ፣ ስለሆነም ከዚህ በፊት የሚጠቀሙባቸውን ተግባራት ሰነድ ማንበብ አለብዎት።
አራት ፣ ቤተ -መጽሐፍት ለዚህ ቺፕ ለአርዱዲኖ UNO እንዳይሠራ ጽፎ ነበር ፣ ግን እሱ ከአርዱዲኖ UNO ጋር እንዲሠራ የሚያስፈልጉትን ተግባራት አክሏል።
ቺፕ ATECC608A
ከዚህ ቺፕ ጋር በ I2C መገናኘት ይችላሉ። የዚህ ቺፕ አድራሻ በማዋቀሪያው ውስጥ ሊቀየር ይችላል።
ይህ ቺፕ የተለያዩ የውሂብ ዓይነቶችን ሊይዙ የሚችሉ 16 የተለያዩ ቦታዎችን ይ containsል-
- የኢሲሲ ቁልፍ (የግል ወይም የህዝብ)
- የ AES ቁልፍ
- ሌላ ውሂብ (እንደ ሻ ሃሽ ወይም ልክ ቃላት)
በእኛ ሁኔታ ፣ የ AES ቁልፍን በአንድ ማስገቢያ ውስጥ እናስቀምጣለን።
ደረጃ 3 1. የወረዳውን መሻት
1. የወረዳው ንድፍ
የዚህ ወረዳ ዕቅድ በጣም ቀላል ነው!
ምክሩ በ 2.0V እና 5.5V መካከል ስለሆነ 3.3V ኃይልን መጠቀም አለብዎት ፣ ግን እኔ 3.3V ን መጠቀም እመርጣለሁ።
ለዚህ ቺፕ ፣ በመደበኛነት በቺፕ ጥግ ላይ ነጥብ አለዎት ፣ ይህ ነጥብ የዚህ ሰሌዳ ፒን 1 ነው። የ Atecc608a ከፍተኛ እይታን በፒን ቁጥር አክዬአለሁ ምክንያቱም 8-Lead SOIC ስለሆነ ቺፕው በጣም ትንሽ ነው።
- ARDUINO 3.3V -> ፒን 8 (Atecc608a)
- ARDUINO GND -> ፒን 4 (Atecc608a)
- ARDUINO A4 (SDL) -> ፒን 5 (Atecc608a)
- ARDUINO A5 (SCL) -> ፒን 6 (Atecc608a)
ምክሩ በ 2.0V እና 5.5V መካከል ስለሆነ 3.3V ኃይልን መጠቀም አለብዎት ፣ ግን እኔ 3.3V ን መጠቀም እመርጣለሁ።
እኔ የ Atecc608a ከፍተኛ እይታን ጨመርኩ ምክንያቱም 8-Lead SOIC ስለሆነ ቺፕው በጣም ትንሽ ነው። ከፈለጉ ፣ ስለዚህ አቅራቢዎች አንዳንድ ሰሌዳ በቺፕ መሸጫ ይገነባሉ ፣ ለእርስዎ ቀላል ሊሆን ይችላል።
ማስጠንቀቂያ - በእኔ ሁኔታ ፣ በአርዲኖ እና በቺፕ ኤስዲኤ (እንዲሁም ለ SDL) መካከል ተከላካይ ማከል አለብኝ። ለእያንዳንዱ 4.7Kohm resistor አክዬአለሁ።
ደረጃ 4: 2. የቺፕ ውቅር (Atecc608a)
የምስጠራ ወይም ዲክሪፕት (ዲክሪፕት) ተግባር ከመጠቀምዎ በፊት ቺፕውን ማዋቀር ያስፈልግዎታል። በዚህ ደረጃ ፣ ለዚህ ቺፕ ውቅር ማድረግ ያለብዎትን እያንዳንዱን ደረጃዎች በዝርዝር እገልጻለሁ።
ማስጠንቀቂያ -ይህ እርምጃ በጣም ያስመጣል እና ዞኖችን ከማብቃቱ በፊት ከቆለፉ እነሱን ማሻሻል አይችሉም።
ቀደም ሲል እንደተገለፀው ይህ ቺፕ ሁለት ዞኖችን አግኝቷል-
- ዞን አዋቅር
- የውሂብ ዞን
ውቅረቱ ዞን የ 128 ባይት መጠን አግኝቷል ነገር ግን የመጀመሪያዎቹ 16 ባይቶች ሊቀየሩ አይችሉም።
ይህንን ቺፕ ለማዋቀር ሁለት እርምጃዎችን መከተል ያስፈልግዎታል። እያንዳንዱን ደረጃዎች በቅደም ተከተል መከተል በጣም አስፈላጊ ነው ፣ አለበለዚያ ውቅርዎ አይሰራም ፣ እና ቺፕዎ ተቆልፎ ጥቅም ላይ የማይውል ይሆናል። እነዚያ እርምጃዎች -
- የውቅረት አብነት ይፍጠሩ
- ይህንን አብነት ወደ ቺፕው ይፃፉ
- የ Config ዞን ይቆልፉ
- በአንድ AES ውስጥ የ AES ቁልፍዎን (128 ቢት) ይፃፉ
- የውሂብ ቀጠናን ቆልፍ
መረጃ
ከዚህ በታች የእነሱን የኮንሴፕሬሽን ደረጃ ከኮድዬ ጋር በዝርዝር እገልጻለሁ ፣ ግን ምንም አይጨነቅም ፣ በ Github ውስጥ ሙሉ የማዋቀር ምሳሌን ጨመርኩ። በእያንዳንዱ ተግባራት ላይ አስተያየቶችን አደርጋለሁ ፣ እና ለእርስዎ *.ino ፋይል ከእያንዳንዱ እርምጃ ጋር ለእርስዎ ይገኛል።
- የእኔ Github: የእኔ Github
- የምሳሌ ዱካ ውቅር: config_example.ino
የመጀመሪያው ደረጃ - የውቅረት አብነት ይፍጠሩ
ቀደም ሲል እንደተገለፀው ፣ የማዋቀሪያው ዞን የ 128 ቢት መጠን ያገኛል ፣ ግን የመጀመሪያዎቹ 16 ቢቶች ሊለወጡ አይችሉም። ይህ ዞን ከበርካታ ክፍሎች የተዋቀረ ነው ፣ ግን ለዚህ ፕሮጀክት የዚህን ውቅረት ዞን 3 ክፍሎች ብቻ ማወቅ ያስፈልግዎታል
- ባይቶች 16 -> ይህ የቺፕው I2C አድራሻ ነው
- ባይቶች ከ 20 እስከ 51 -> ለዚህ ቺፕ 16 ቦታዎች የመጫወቻውን ዓይነት እዚህ መለወጥ ይችላሉ
- ባይቶች ከ 96 እስከ 127 -> በእያንዳንዱ ማስገቢያ ውስጥ ጥቅም ላይ የዋለውን የቁልፍ ዓይነት ወይም የውሂብ ዓይነት እዚህ ማዘጋጀት ይችላሉ።
(የዚህ ሁሉ ዞን ተጨማሪ ማብራሪያ ከፈለጉ እባክዎን ሰነዱን ያንብቡ (ገጽ 13 ፣ ክፍል 2.2))
እዚህ ፣ እያንዳንዱ ቺፕ (ውቅር) የ 112 ባይት እያንዳንዱ ባይት/ክፍሎች በዝርዝር አስቀምጫለሁ። ይህ ምሳሌ ነው ፣ እያንዳንዱ የተገዛ ቺፕ የተለየ ውቅር ሊኖረው ይችላል-
0xC0 ፣ // I2C አድራሻ
0x00 ፣ 0x00 ፣ 0x00 ፣ 0x83 ፣ 0x20 ፣ // ማስገቢያ ውቅር መክተቻ 1 0x85 ፣ 0x20 ፣ // ማስገቢያ ውቅር ማስገቢያ 2 0x8F ፣ 0x20 ፣ // የቁማር ውቅር ማስገቢያ 3 0xC4 ፣ 0x8F ፣ // የቁማር ውቅር ማስገቢያ 4 0x8F ፣ 0x8F ፣ // Slot Config Slot 5 0x8F ፣ 0x8F ፣ // Slot Config Slot 6 0x9F ፣ 0x8F ፣ // Slot Config Slot 7 0x0F ፣ 0x0F ፣ // Slot Config Slot 8 0x8F ፣ 0x0F ፣ // Slot Config Slot 9 0x8F ፣ 0x0F ፣ // Slot Config Slot 10 0x8F ፣ 0x0F ፣ // Slot Config Slot 11 0x8F ፣ 0x0F ፣ // Slot Config Slot 12 0x8F ፣ 0x0F ፣ // Slot Config Slot 13 0x00 ፣ 0x00 ፣ // Slot Config Slot 14 0x00 ፣ 0x00 ፣ // ማስገቢያ Config ማስገቢያ 15 0xAF ፣ 0x8F ፣ // ማስገቢያ Config ማስገቢያ 16 0xFF ፣ 0xFF ፣ 0xFF ፣ 0xFF ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0xFF ፣ 0xFF ፣ 0xFF ፣ 0xFF ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0x00 ፣ 0xFF ፣ 0xFF ፣ 0x00 ፣ 0x00 ፣ 0x00 0x00 ፣ 0x00 ፣ 0x33 ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 1 0x33 ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 2 0x33 ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 3 0x1C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 4 0x1C ፣ 0x00 ፣ // ቁልፍ ውቅር ማስገቢያ 5 0x 1C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 6 0x1C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 7 0x3C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 8 0x1A ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 9 0x3A ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 10 0x1A ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 11 0x3A ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 12 0x3A ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 13 0x3C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 14 0x3C ፣ 0x00 ፣ // የቁልፍ ውቅር ማስገቢያ 15 0x1C ፣ 0x00 // የቁልፍ ውቅር ማስገቢያ 16
እንደሚታየው ፣ ይህንን ውቅር የበለጠ ለመረዳት በዚህ ኮድ ውስጥ አንዳንድ አስተያየቶችን አስቀምጫለሁ።
በጉዳይዎ ውስጥ ሶስት ነገሮችን ብቻ መረዳት ያስፈልግዎታል
- ባይቶች 16 -> ይህ የቺፕው I2C አድራሻ ነው
- ባይቶች ከ 20 እስከ 51 -> ለዚህ ቺፕ 16 ቦታዎች የመጫወቻውን ዓይነት እዚህ መለወጥ ይችላሉ
- ባይት 96 እስከ 127 -> በእያንዳንዱ ማስገቢያ ውስጥ ጥቅም ላይ የዋለውን የቁልፍ ዓይነት ወይም የውሂብ አይነት እዚህ ማዘጋጀት ይችላሉ።
ሁሉንም ነገር ለማብራራት የተወሳሰበ ስለሆነ እኔ የማዋቀሩን ዓይነት እና ለምን ይህን እንዳልጠቀምኩ እና ሌላ እንዳልጠቀምኩ አላብራራም። ተጨማሪ መረጃ ከፈለጉ ወደ ሰነዱ ይሂዱ ፣ ገጽ 16 ክፍል 2.2.1 ለ “SlotConfig” እና ገጽ 19 ክፍል 2.2.5 ለ “KeyConfig”
ለዚህ ምሳሌ ፣ የ AES ቁልፍን ለማከማቸት ማስገቢያ 9 ን ይጠቀማሉ።
ለእዚህ ፣ እኛ ማስቀመጥ አለብን (ከፈለጉ ፣ ከላይ ያለውን ምሳሌ መገልበጥ ይችላሉ ፣ ማሻሻያው በእሱ ውስጥ ተከናውኗል)
- ባይት 36 = 0x8F
- ባይት 37 = 0x0F
- ባይት 112 = 0x1A
- ባይት 113 = 0x00
ይህንን ውቅር ለምን አዘጋጀሁ - ለእያንዳንዱ የዚህ ቺፕ ማስገቢያ ፣ ለቺፕ ምን ዓይነት ውሂብ እንደሚከማች ለመናገር ግቤቶችን ማዘጋጀት ይችላሉ። በርካታ መለኪያዎች አሉዎት
- ማስገቢያ መጻፍ ወይም ማንበብ (ግልጽ ወይም ኢንክሪፕት እርምጃ)
- የተከማቸ የውሂብ አይነት (የኢሲሲ ቁልፍ ፣ የህዝብ ቁልፍ ፣ SHA ሃሽ ፣ AES ቁልፍ…)
- ማስገቢያ ሊቆለፍ ይችላል
- የቁልፍ ማመንጨት ይፈቀዳል
- …
በባይት 36 እና 37 ወደ "0x0F8F" ተዘጋጅቷል
- ውሂቡ በፅዳት ውስጥ ሊፃፍ ይችላል
- የዚህ ማስገቢያ ይዘቶች ምስጢራዊ ናቸው እና ሊነበቡ አይችሉም
- ማስገቢያ ለ CheckMac ቅጂ ትዕዛዝ ጥቅም ላይ ሊውል አይችልም
በባይት 112 እና 113 ወደ «0x001A» ተዘጋጅቷል
ማስገቢያ እስከ አራት AES 128-ቢት የተመጣጠነ ቁልፎችን (KeyType = 0x6) ማከማቸት ይችላል
ሁለተኛ ደረጃ - ይህንን ውቅር ይፃፉ
ቺፕ በእኛ ውቅረት ስለምናዘጋጅ ይህ እርምጃ በጣም አስፈላጊ ነው እና ይህ ውቅረት ጥሩ ካልሆነ ይህንን ቺፕ ይጠቀማሉ።
ግን አይጨነቁ ፣ ውቅሩ እስካልተቆለፈ ድረስ ፣ የእርስዎን ውቅር መለወጥ ይችላሉ።
እዚህ ፣ ይህ ኮድ ውቅሩን ወደ ቺፕ ለመፃፍ የሚያገለግል ነው-
/** / አጭር ወደ ቺፕ አዲስ ውቅር ይጻፉ።
* / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅር። አንዳንድ አስቀድሞ የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [in] config Array uint8_t ውቅረት (ርዝመት 112) * / param [in] ሌን የውቅረት ድርድር መጠን * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS write_configuration (ATCAIfaceCfg *cfg ፣ uint8_t *config, size_t len) {ከሆነ (ሌን! = 112) ATCA_BAD_PARAM ን ይመልሱ ፤ ATCA_STATUS ሁኔታ; ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {// ውቅሩን ድርድር ወደ ቺፕ // መፃፍ በ 16 ባይት (16 የመጀመሪያ ባይት ሊፃፍ አይችልም) ሁኔታ = atcab_write_bytes_zone (ATCA_ZONE_CONFIG ፣ 0 ፣ 16 ፣ (uint8_t *) ማዋቀር ፣ ሌን) ፤ የመመለሻ ሁኔታ; } የመመለስ ሁኔታ; }
ይህ ተግባር በቺፕ ውስጥ ውቅርዎን ይጽፋል።
ሦስተኛ ደረጃ - የማዋቀሪያውን ዞን ይቆልፉ
ማስጠንቀቂያ -በዚህ ደረጃ ይጠንቀቁ ፣ ይህንን ዞን ከቆለፉ እና ውቅረትዎ ጥሩ ካልሆነ ፣ ቺፕው ጥቅም ላይ የማይውል እና ይህንን ዞን ማሻሻል አልቻሉም።
ለዚህ እርምጃ ይህንን ተግባር እንጠቀማለን-
/** አጭር መግለጫ አንድ DATA_ZONE ወይም CONFIG_ZONE ተቆልፎ እንደሆነ ያረጋግጡ
* / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅር። አንዳንድ አስቀድሞ የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [በ] ዞን LOCK_ZONE_DATA ወይም LOCK_ZONE_CONFIG * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS check_lock_zone (ATCAIfaceCfg *cfg ፣ uint8_t ዞን) {ATCA_STATUS ሁኔታ; bool lock = ሐሰት; ከሆነ (ዞን! = (uint8_t) LOCK_ZONE_CONFIG && zone! = (uint8_t) LOCK_ZONE_DATA) ATCA_BAD_PARAM ከተመለሰ; ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {if (ATCA_SUCCESS! = (status = atcab_is_locked (ዞን ፣ & lock)))) {ATCA_FUNC_FAIL ን ይመልሱ ፤ } ከሆነ (! መቆለፊያ) {ATCA_NOT_LOCKED ን ይመልሱ ፤ } ATCA_SUCCESS ን ይመልሱ ፤ } ATCA_BAD_PARAM ን ይመልሱ ፤ } check_lock_zone (& cfg ፣ LOCK_ZONE_CONFIG) ፤
አራተኛ ደረጃ - በአንድ ማስገቢያ ውስጥ የ AES ቁልፍ ይፃፉ
በዚህ ክፍል ውስጥ በቺፕ ውቅረት ውስጥ በገለፁት ማስገቢያ ውስጥ የግል የ AES ቁልፍን ያስቀምጣሉ።
ለዚህ ምሳሌ ፣ እኔ የቺፕውን የመጫወቻ ቁጥር 9 ን እጠቀማለሁ።
ማወቅ ያለብዎት -የዚህ ቺፕ ልዩ ባህሪ በ 4 ባይት ወይም በ 32 ባይት ብቻ በመያዣ ውስጥ ውሂብ መፃፍ ይችላሉ። ለ AES እኛ 128 ቢት ቁልፍ ስለዚህ 16 ባይት ውሂብ ያስፈልገናል። ስለዚህ 32 ባይት ውሂብ እንዲኖረን በዚህ ማስገቢያ ውስጥ እያንዳንዳቸው በ 16 ባይት ቁልፍ ለመጻፍ ወሰንኩ።
አሁን ፣ ያገለገለውን ኮድ አሳያችኋለሁ -
/** / አጭር መግለጫ በተሰጠው ማስገቢያ ውስጥ የ AES ቁልፍ ይፃፉ። * / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅር። አንዳንድ ቅድመ -የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [በ] ቁልፍ ቁልፍ ማስገቢያ ቁጥር * / param [ውስጥ] የውሂብ ቁልፍ ቁልፍ ድርድር uint8_t * / param [in] ሌን የቁልፍ ድርድር መጠን * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS write_key_slot (ATCAIfaceCfg *cfg ፣ uint8_t ቁልፍ ፣ uint8_t *datakey ፣ size_t ሌን) {ከሆነ (ቁልፍ 16) ATCA_BAD_PARAM ቢመለስ ፤ ከሆነ (ሌን! = 32) ATCA_BAD_PARAM ን ይመልሱ ፤ ATCA_STATUS ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {status = atcab_write_zone (ATCA_ZONE_DATA ፣ (uint16_t) ቁልፍ ፣ 0 ፣ 0 ፣ የውሂብ ቁልፍ ፣ 32); ከሆነ (ሁኔታ! = ATCA_SUCCESS) የመመለሻ ሁኔታ; } የመመለስ ሁኔታ; }
ለዚህ ምሳሌ ፣ እያንዳንዳቸው 16 ባይት ሁለት የ AES ቁልፎችን እጠቀማለሁ-
// የ AES ቁልፍ (ሌን 32) uint8_t example_of_key [32] = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; _key_slot ጻፍ (& cfg ፣ 9 ፣ ምሳሌ_የቁልፍ ፣ የመጠን (ምሳሌ_ቁልፍ));
ይህ እርምጃ ጥሩ ከሆነ ፣ አሁን “የውሂብ ቀጠናውን ቆልፍ” የመጨረሻውን ደረጃ ማለፍ አለብዎት
የመጨረሻው ደረጃ የውሂብ ቀጠናውን ይቆልፉ
ማስጠንቀቂያ -በዚህ ደረጃ ይጠንቀቁ ፣ ይህንን ዞን ከቆለፉ እና ውሂብዎ ካልተዋቀረ ፣ ቺፕው ጥቅም ላይ የማይውል ሲሆን ይህንን ዞን ማሻሻል አይችሉም።
ለዚህ እርምጃ ይህንን ተግባር እንጠቀማለን-
/** አጭር መግለጫ አንድ DATA_ZONE ወይም CONFIG_ZONE ተቆልፎ እንደሆነ ያረጋግጡ
* / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅር። አንዳንድ አስቀድሞ የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [በ] ዞን LOCK_ZONE_DATA ወይም LOCK_ZONE_CONFIG * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS check_lock_zone (ATCAIfaceCfg *cfg ፣ uint8_t ዞን) {ATCA_STATUS ሁኔታ; bool lock = ሐሰት; (ዞን! = (uint8_t) LOCK_ZONE_CONFIG && zone! = (uint8_t) LOCK_ZONE_DATA) ATCA_BAD_PARAM ን ይመልሱ ፤ ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {if (ATCA_SUCCESS! = (status = atcab_is_locked (ዞን ፣ & lock)))) {ATCA_FUNC_FAIL ን ይመልሱ ፤ } ከሆነ (! መቆለፊያ) {ATCA_NOT_LOCKED ን ይመልሱ ፤ } ATCA_SUCCESS ን ይመልሱ ፤ } ATCA_BAD_PARAM ን ይመልሱ ፤ } check_lock_zone (& cfg ፣ LOCK_ZONE_DATA) ፤
ይህ እርምጃ ጥሩ ከሆነ ፣ ቺፕዎ ለመጠቀም ዝግጁ ነው
ደረጃ 5: 3. የ AES CBC ሞዱል አጠቃቀም
በአልጎሪዝም AES CBC እና ቺፕ Atecc608a እንዴት መረጃን ኢንክሪፕት ማድረግ እና ዲክሪፕት ማድረግ እንደሚቻል እገልጻለሁ።
ያስታውሱ -ይህንን ተግባር ከመጠቀምዎ በፊት ቺፕውን ማዘጋጀት ያስፈልግዎታል። ለዚህ ፣ የዚህን ጽሑፍ ደረጃ 2 ይከተሉ
ይህ ቺፕ ብዙ ዓይነት የ AES ሞዱል (AES 128 ቢት) አግኝቷል ፣ AES 128 ቢት ብቻ ይቻላል
- AES የተለመደ
- AES ሲቢሲ
- AES GCM (ከጂኤፍኤም ሃሽ ጋር) (ለበለጠ ማብራሪያ wikipedia ን ይመልከቱ)
ለመጠቀም ቀላል ለማድረግ ሁለት ተግባሮችን ፈጠርኩ-
- aes_cbc_encrypt
- aes_cbc_decrypt
እነዚያ ሁለት ተግባራት በእኔ Github ላይ ይገኛሉ።
ገለፃ
የ AES CBC አልጎሪዝም ለመጠቀም እመርጣለሁ ምክንያቱም ከመሠረታዊ AES 128 ቢት የበለጠ ደህንነቱ የተጠበቀ ነው። ይህ ስልተ ቀመር የእርስዎን ውሂብ ኢንክሪፕት ለማድረግ የመጀመሪያ ቬክተር ይጠቀማል።
መረጃ
ከዚህ በታች እያንዳንዱን የኢንክሪፕሽን እና ዲክሪፕት ዘዴን በዝርዝር እገልጻለሁ። ግን እነዚያ ሁለቱንም ተግባራት የሚጠቀም ለአርዱዲኖ ኮድ ጻፍኩ። በ Github ውስጥ ይህንን ኮድ ማየት ይችላሉ-
- Github: የእኔ Github
- የኮድ ምሳሌ “ኢንክሪፕት/ዲክሪፕት” - AES_crypto_example.ino
የመጀመሪያው ደረጃ - ውሂብዎን ኢንክሪፕት ያድርጉ
በዚህ ክፍል ውስጥ እንዴት ውሂብዎን ኢንክሪፕት እንደሚያደርጉ አሳያችኋለሁ።
በመጀመሪያ ይህንን ተግባር ያስፈልግዎታል
/** / አጭር የ AES CBC ስልተ ቀመር* / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅርን በመጠቀም መረጃን ኢንክሪፕት ያድርጉ። አንዳንድ ቅድመ -የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [ውስጥ] ውሂብ ሊገባቸው የሚገቡ ቃላት (በ 16 መከፋፈል አለባቸው ፣ ከፍተኛው ርዝመት 240) ፣ ከፍተኛው ርዝመት 240) * / param [out] iv በ AES CBC ውስጥ ጥቅም ላይ የዋለ የመጀመሪያ ቬክተር (በዚህ var ውስጥ ያለውን ቬክተር ይመልሱ) * / param [out] ciphertext እዚህ ይመለሱ የሳይፈር ጽሑፍ * / param [in] ቁልፍ ማስገቢያ ቁጥር ቁልፍ * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS aes_cbc_encrypt (ATCAIfaceCfg *cfg ፣ uint8_t *ውሂብ ፣ int ሌን ፣ uint8_t *iv ፣ uint8_t *ciphertext ፣ uint8_t ቁልፍ) {atca_aes_cbc_ctx_t ctx; ከሆነ (ሌን> LIMIT_DATA_SIZE_CBC && len % 16! = 0) {Serial.print (F ("ስህተት ፦ ATCA_BAD_PARAM")); ተመለስ ATCA_BAD_PARAM; } uint8_t tmp_iv [IV_LENGTH_CBC]; uint8_t tmp_data [ሌን]; ATCA_STATUS ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {status = atcab_aes_cbc_init (& ctx ፣ key ፣ 0 ፣ tmp_iv); ከሆነ (ሁኔታ! Serial.println (ሁኔታ ፣ HEX); መመለስ; } memcpy (iv ፣ tmp_iv ፣ IV_LENGTH_CBC); memcpy (tmp_data ፣ ውሂብ ፣ ሌን); int max = len / 16; ለ (int j = 0; j <max; j ++) {status = atcab_aes_cbc_encrypt_block (& ctx, & tmp_data [j * 16] ፣ & ciphertext [j * 16]); } ከሆነ (ሁኔታ! = ATCA_SUCCESS) {Serial.print (F ("ERROR Encrypt: atcab_aes_cbc_encrypt_block, Code Erx 0x")); Serial.println (ሁኔታ ፣ HEX); } የመመለስ ሁኔታ; } የመመለስ ሁኔታ; }
ይህ ተግባር ለመጠቀም ቀላል ነው ፣ ሁለት ነገሮችን ማዘጋጀት አለብዎት
- የ 16 ባይት ባዶ IV (የመጀመሪያ ቬክተር)
- ለማመስጠር ውሂብ (ከፍተኛ መጠን 240 ባይት)
እዚህ ምሳሌ “ይህንን ተግባር እንዴት እንደሚጠቀሙበት”።
በቁልፍ ቁጥሩ "9" ውስጥ በተፃፈበት "AAAAAAAAAAAAAAA" የሚለውን ቃል ማመስጠር እፈልጋለሁ።
ATCA_STATUS ሁኔታ = atcab_init (& cfg); (ሁኔታ! = ATCA_SUCCESS) {Serial.println (F ("atcab_init () አልተሳካም ኮድ -> 0x"))); Serial.println (ሁኔታ ፣ HEX); } uint8_t plaintext [16] = "AAAAAAAAAAAAAAA"; // የመጀመሪያው ጽሑፍ uint8_t iv [IV_LENGTH_CBC]; // የመጀመሪያ ቬክተር uint8_t cypherdata [sizeof (plaintext)]; // የውሂብ ኢንክሪፕት የተደረገ ሁኔታ = aes_cbc_encrypt (& cfg ፣ ግልፅ ጽሑፍ ፣ መጠን (ተራ ጽሑፍ) ፣ iv ፣ cypherdata ፣ 9);
ድርጊቱ ጥሩ ከሆነ ፣ በተለዋዋጭ “ሳይፈርፋታ” እና በተለዋዋጭ “IV” ውስጥ የመጀመሪያ ቬክተር ውስጥ ኢንክሪፕት የተደረገ ውሂብ ይኖርዎታል።
ጽሑፍዎን ዲክሪፕት ለማድረግ እነዚያን ሁለት ተለዋዋጮች ያቆዩዋቸው!
ሁለተኛው ደረጃ - ውሂብዎን ዲክሪፕት ያድርጉ
ውሂብዎን ዲክሪፕት ለማድረግ ሁለት ነገሮች ያስፈልጉዎታል
- የመጀመሪያው ቬክተር
- የሳይፈር ውሂብ (ኢንክሪፕት የተደረገ ውሂብ)
ውሂብዎን ዲክሪፕት ለማድረግ ፣ ይህንን ተግባር ያስፈልግዎታል
/** / አጭር የ AES CBC ስልተ ቀመር* / param [ውስጥ] cfg ሎጂካዊ በይነገጽ ውቅርን በመጠቀም መረጃን ዲክሪፕት ያድርጉ። አንዳንድ ቅድመ -የተገለጹ * ውቅሮች በ atca_cfgs.h * / param [in] ciphertext ቃላትን ለመተርጎም (በ 16 መከፋፈል አለበት ፣ ከፍተኛው ርዝመት 240), ከፍተኛ ርዝመት 240) * / param [in] iv የመጀመሪያ ቬክተር በ AES CBC * / param [out] ዓረፍተ -ነገር እዚህ ዲክሪፕት የተደረገውን ጽሑፍ * / param [in] ቁልፍ የቁልፍ ቁልፍ ቁጥር * / ATCA_SUCCESS ን በስኬት ይመልሱ ፣ አለበለዚያ የስህተት ኮድ። */ ATCA_STATUS aes_cbc_decrypt (ATCAIfaceCfg *cfg ፣ uint8_t *ciphertext ፣ int len, uint8_t *iv ፣ uint8_t *plaintext ፣ uint8_t ቁልፍ) {atca_aes_cbc_ctx_t ctx; ከሆነ (ሌን> LIMIT_DATA_SIZE_CBC || ሌን % 16! = 0) {Serial.print (ኤፍ ("ስህተት ዲክሪፕት: ATCA_BAD_PARAM")); ተመለስ ATCA_BAD_PARAM; } ATCA_STATUS ሁኔታ = atcab_init (cfg); ከሆነ (ሁኔታ == ATCA_SUCCESS) {status = atcab_aes_cbc_init (& ctx ፣ key ፣ 0 ፣ iv); ከሆነ (ሁኔታ! = ATCA_SUCCESS) {Serial.print (F ("ERROR ዲክሪፕት Serial.println (ሁኔታ ፣ HEX); መመለስ; } int max = len / 16; ለ (int j = 0; j <max; j ++) {status = atcab_aes_cbc_decrypt_block (& ctx ፣ & ciphertext [j * 16] ፣ & plaintext [j * 16]); } ከሆነ (ሁኔታ! = ATCA_SUCCESS) {Serial.print (F ("ERROR ዲክሪፕት Serial.println (ሁኔታ ፣ HEX); } የመመለስ ሁኔታ; } የመመለስ ሁኔታ; }
የቀድሞውን መረጃዬን ዲክሪፕት ማድረግ እፈልጋለሁ (ከዚህ በታች ይመልከቱ ፣ የመጀመሪያ ደረጃ)። ለዚህ እኔ ይህንን አደርጋለሁ-
uint8_t plaintext [16] = "AAAAAAAAAAAAAAAAA"; uint8_t iv [IV_LENGTH_CBC]; uint8_t cypherdata [መጠን (ተራ ጽሑፍ)]; uint8_t decryptdata [sizeof (plaintext)]; ሁኔታ = aes_cbc_decrypt (& cfg ፣ cypherdata ፣ sizeof (cypherdata) ፣ iv ፣ decryptdata ፣ 9); ከሆነ (ሁኔታ == ATCA_SUCCESS) {Serial.print ("ዲክሪፕት የተደረገ ጽሑፍ ነው"); ለ (size_t i = 0; i <sizeof (decryptdata); i ++) {Serial.print ((char) decryptdata ); } Serial.println (""); } ሌላ {// ለ ኮድ Error Serial.print (ኤፍ ("ዲክሪፕት ማድረግ | ኮድ ስህተት 0x") ፋይል atca_status.h ን ይመልከቱ); Serial.println (ሁኔታ ፣ HEX); መመለስ; }
ድርጊቱ ጥሩ ከሆነ ፣ በተለዋዋጭ “ዲክሪፕታታ” ውስጥ ዲክሪፕት የተደረገ ውሂብ ይኖርዎታል።
አሁን ከቺፕ Atecc608a ጋር ምስጠራ እና ዲክሪፕት እንዴት እንደሚጠቀሙ ያውቃሉ
ደረጃ 6 5. ይህንን ቺፕ ለምን መጠቀም ያስፈልግዎታል?
መረጃዎን መደበቅ እና በገመድ አልባ መላክ ወይም በቀላሉ ማከማቸት ስለሚችሉ የተመሰጠረ ውሂብ በጣም ጠቃሚ ነው።
አንዳንድ የአጠቃቀም ምሳሌ እዚህ አለ
- የተከማቸ ውሂብ ወደ ውጫዊ EEPROM - የውጫዊ EEPROM መረጃን ደህንነት መጠበቅ ይችላሉ እና አንድ ሰው አሁንም ይህ EEPROM ከሆነ ፣ ዲክሪፕት ለማድረግ ቁልፉን እና IV ን ይፈልጋል።
- የገመድ አልባ ውሂብን ይላኩ - ይህንን ኢንክሪፕት የተደረገ ውሂብ በገመድ አልባ (nrf24L01 ፣ RFM95W…) መላክ ይችላሉ እና የሆነ ሰው ውሂብዎን ከጠለፈ ይህ ውሂብ ደህንነቱ የተጠበቀ ይሆናል
- የተከማቸ የይለፍ ቃል
- …
በዚህ ቺፕ ብዙ ነገሮችን ማድረግ ይችላሉ። በበርካታ ፕሮጀክቶች ውስጥ ሊያገለግል ይችላል። ጊዜ ካለዎት ይህንን ቺፕ የሚጠቀሙት በየትኛው ፕሮጀክት ነው በሉኝ?
አንድ የመጨረሻ ምክር ፣ አንዳንድ ገመድ አልባ ፕሮጀክት ከገነቡ ወይም አንዳንድ ጥሬ መረጃዎችን ካከማቹ ፣ ጥንቃቄ ያድርጉ ፣ ደህንነት በጣም አስፈላጊ ነው እና “ኖቢ” ውሂብዎን ለመጥለፍ ወይም ለመስረቅ እንዴት ቀላል እንደሆነ ካወቁ። አሁን በይነመረብ ፣ እርስዎን “ለመጥለፍ” ብቻ በኮምፒውተራቸው ላይ ለማስጀመር ሁሉም ስክሪፕቶች ሊኖራቸው ይችላል!
ደረጃ 7 መደምደሚያ
ይህ ጽሑፍ ለእርስዎ ጠቃሚ እንደሚሆን ተስፋ አደርጋለሁ። በጽሑፌ ላይ ስህተት ከሠራሁ ግን እንግሊዝኛ ዋናው ቋንቋዬ ካልሆነ እና እኔ ከምጽፈው በተሻለ እናገራለሁ።
ሁሉንም በማንበብዎ እናመሰግናለን።
ተዝናናበት.
የሚመከር:
የቁልፍ ሰሌዳ መሣሪያ ከአርዱዲኖ ጋር (ከአርዱዲኖ መጽሐፍ) 6 ደረጃዎች
የቁልፍ ሰሌዳ መሣሪያ ከአርዱዲኖ ጋር (ከአርዲኖ መጽሐፍ) - የቁልፍ ሰሌዳ መሣሪያን ከአርዱዲኖ ጋር እንዴት መፍጠር እንደሚቻል እነሆ። ለጀማሪዎች በአርዱዲኖ ለመጀመር ቀላል የሆኑ 6 እርምጃዎችን ብቻ ይወስዳል። የፕሮጀክቱ ውጤት እንደ ሕብረቁምፊዎች ከበሮ የበለጠ የመጫወቻ መሣሪያ ይመስላል። 4 ማስታወሻዎች አሉ
የስልክ ደህንነት ስርዓት ከአርዱዲኖ ጋር - 5 ደረጃዎች
የስልክ ደህንነት ስርዓት ከአርዲኖ ጋር - ይህንን ፕሮጀክት ተግባራዊ ካላደረጉ ቤትዎ ጥበቃ አይደረግለትም። አንድ ወራሪ ወደ ቤትዎ ሲገባ ይህ ፕሮጀክት በሞባይል ስልክ ማንቂያ እንዲነቃቁ ይረዳዎታል። በዚህ መንገድ ይህንን ፕሮጀክት የሚጠቀሙ ከሆነ በሞባይል ስልክ በኩል ኤስኤምኤስ ይቀበላሉ እና እርስዎ ይሆናሉ
ለ PLC ደህንነት የገመድ አልባ ደህንነት ቁልፍ 6 ደረጃዎች (ከስዕሎች ጋር)
ለ PLC ደህንነት የገመድ አልባ ደህንነት ቁልፍ - ይህ ፕሮጀክት ለአደገኛ የማምረቻ ተቋማት ተጨማሪ የደህንነት ንብርብር ለመፍጠር IoT ን እና (በመጨረሻም) ሮቦቶችን ለመጠቀም የእኔ ጽንሰ -ሀሳብ ማረጋገጫ ነው። ይህ ቁልፍ የምልክት መቆጣጠሪያን ጨምሮ በርካታ ሂደቶችን ለመጀመር ወይም ለማቆም ሊያገለግል ይችላል
አንድ ንክኪ የሴቶች ደህንነት ደህንነት ስርዓት 3 ደረጃዎች
አንድ ንክኪ የሴቶች ደህንነት ደህንነት ስርዓት - አንድ ንክኪ ማንቂያ 8051 ማይክሮ መቆጣጠሪያን በመጠቀም የሴቶች ደህንነት ስርዓት በዛሬው ዓለም የሴቶች ደህንነት በጣም ሀገር ውስጥ በጣም አስፈላጊ ጉዳይ ነው። ዛሬ ሴቶች ተረበሹ እና ተቸግረዋል እና አንዳንድ ጊዜ አስቸኳይ እርዳታ ሲያስፈልግ። የሚፈለግ Locati የለም
ስልክዎን እና መግብርዎን እንዴት ደህንነት እና ደህንነት እንደሚጠብቁ - 4 ደረጃዎች
ስልክዎን እና መግብርዎን እንዴት ደህንነቱ የተጠበቀ እና ደህንነቱ የተጠበቀ - ሁሉንም ማለት ይቻላል ከጠፋ ሰው (በእርግጥ የተጋነነ)። ስለዚህ ፣ የቀደመው ዓረፍተ ነገሬ እንደተናገረው ፣ እኔ በጣም ዘግናኝ ነኝ። የሆነ ነገር ከእኔ ጋር ካልተያያዘ ፣ እሱን የማስወገድ ትልቅ ዕድል አለ ፣ መርሳት የሆነ ቦታ አለ