కోర్సు కోసం కొత్త నమోదు ప్రారంభానికి ఎదురుచూస్తూ
ఈ సిరీస్లోని మునుపటి కథనంలో (
ఎన్వలప్ ఎన్క్రిప్షన్ వెనుక ఉన్న ఆలోచన ఏమిటంటే, ఎన్క్రిప్షన్ కోసం ఉపయోగించే కీలు (టేబుల్స్పేస్ కీలు) మరొక కీ (మాస్టర్ కీ)తో గుప్తీకరించబడతాయి. టేబుల్స్పేస్ కీలు వాస్తవానికి డేటాను గుప్తీకరించడానికి ఉపయోగించబడతాయి. గ్రాఫికల్గా దీనిని ఇలా సూచించవచ్చు:
మాస్టర్ కీ కీరింగ్లో ఉంది మరియు టేబుల్స్పేస్ కీలు ఎన్క్రిప్టెడ్ టేబుల్స్పేస్ హెడర్లలో ఉంటాయి (టేబుల్స్పేస్ పేజీ 0లో).
పై చిత్రంలో:
-
పట్టిక A కీ 1 (కీ 1)తో గుప్తీకరించబడింది. కీ 1 మాస్టర్ కీని ఉపయోగించి గుప్తీకరించబడింది మరియు పట్టిక A యొక్క హెడర్లో గుప్తీకరించబడి నిల్వ చేయబడుతుంది.
-
పట్టిక B కీ 2తో గుప్తీకరించబడింది. కీ 2 మాస్టర్ కీ (మాస్కర్ కీ) ఉపయోగించి ఎన్క్రిప్ట్ చేయబడింది మరియు టేబుల్ B యొక్క హెడర్లో గుప్తీకరించబడి నిల్వ చేయబడుతుంది.
-
అందువలన న.
సర్వర్ టేబుల్ Aని డీక్రిప్ట్ చేయవలసి వచ్చినప్పుడు, అది స్టోరేజ్ నుండి మాస్టర్ కీని తిరిగి పొందుతుంది, టేబుల్ A యొక్క హెడర్ నుండి గుప్తీకరించిన కీ 1ని రీడ్ చేస్తుంది మరియు కీ 1ని డీక్రిప్ట్ చేస్తుంది. డీక్రిప్ట్ చేయబడిన కీ 1 సర్వర్ మెమరీలో కాష్ చేయబడుతుంది మరియు టేబుల్ Aని డీక్రిప్ట్ చేయడానికి ఉపయోగించబడుతుంది. .
InnoDB
InnoDBలో, వాస్తవ ఎన్క్రిప్షన్ మరియు డీక్రిప్షన్ I/O లేయర్లో జరుగుతుంది. అంటే, పేజీ డిస్క్కి ఫ్లష్ చేయడానికి ముందు గుప్తీకరించబడుతుంది మరియు డిస్క్ నుండి చదివిన వెంటనే డీక్రిప్ట్ చేయబడుతుంది.
InnoDBలో, ఎన్క్రిప్షన్ టేబుల్స్పేస్ స్థాయిలో మాత్రమే పని చేస్తుంది. మరియు డిఫాల్ట్గా, అన్ని పట్టికలు ప్రత్యేక టేబుల్స్పేస్లలో సృష్టించబడతాయి (
కొన్ని కారణాల వల్ల మీరు ఫైల్-పర్-టేబుల్ డిసేబుల్ చేసి ఉంటే, అప్పుడు అన్ని టేబుల్లు సిస్టమ్ టేబుల్స్పేస్ లోపల సృష్టించబడతాయి. IN
మేము కొనసాగడానికి ముందు, మేము మాస్టర్ కీ ID యొక్క నిర్మాణాన్ని చూడాలి. ఇది UUID, KEYని కలిగి ఉంటుందిID మరియు ఉపసర్గ "INNODBKey". ఇది ఇలా కనిపిస్తుంది: INNODBKey-UUID-KEYID
UUID అనేది ఎన్క్రిప్టెడ్ టేబుల్స్పేస్తో సర్వర్ యొక్క uuid. కీID అనేది ఎప్పుడూ పెరుగుతున్న విలువ. మొదటి సారి మాస్టర్ కీ KEYని సృష్టించేటప్పుడుID 1. కీ రొటేషన్ సమయంలో, కొత్త మాస్టర్ కీ సృష్టించబడినప్పుడు, KEYID = 2 మరియు మొదలైనవి. మేము ఈ సిరీస్లోని తదుపరి కథనాలలో మాస్టర్ కీ రొటేషన్ గురించి మరింత మాట్లాడుతాము.
మాస్టర్ కీ ఐడెంటిఫైయర్ ఎలా ఉంటుందో ఇప్పుడు మనకు తెలుసు, గుప్తీకరించిన టేబుల్స్పేస్ హెడర్ని చూద్దాం. టేబుల్స్పేస్ ఎన్క్రిప్ట్ చేయబడినప్పుడు, హెడర్కి ఎన్క్రిప్షన్ సమాచారం జోడించబడుతుంది. ఇది ఇలా కనిపిస్తుంది:
KEY ID కీమేము ఇప్పటికే చర్చించిన మాస్టర్ కీ ID నుండి ID. UUID అనేది సర్వర్ యొక్క uuid, ఇది మాస్టర్ కీ ఐడెంటిఫైయర్లో కూడా ఉపయోగించబడుతుంది. టేబుల్స్పేస్ కీ - టేబుల్ స్పేస్ కీ, ఇది సర్వర్ ద్వారా యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన 256 బిట్లను కలిగి ఉంటుంది. ఇనిషియలైజేషన్ వెక్టర్ (IV) కూడా 256 యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన బిట్లను కలిగి ఉంటుంది (అయితే ఇది 128 బిట్లుగా ఉండాలి). AES ఎన్క్రిప్షన్ మరియు డిక్రిప్షన్ను ప్రారంభించేందుకు IV ఉపయోగించబడుతుంది (256 బిట్లలో, 128 మాత్రమే ఉపయోగించబడతాయి). చివరిలో TABLESPACE KEY మరియు IV కోసం CRC32 చెక్సమ్ ఉంది.
ఈ సమయంలో నేను హెడర్లో టేబుల్స్పేస్ యొక్క ఎన్క్రిప్టెడ్ కీ ఉందని చెప్పడం ద్వారా కొద్దిగా సరళీకృతం చేస్తున్నాను. నిజానికి, టేబుల్స్పేస్ కీ మరియు ఇనిషియలైజేషన్ వెక్టార్లు మాస్టర్ కీని ఉపయోగించి నిల్వ చేయబడతాయి మరియు ఎన్క్రిప్ట్ చేయబడతాయి. టేబుల్స్పేస్ కీ మరియు ఇనిషియలైజేషన్ వెక్టర్ను గుప్తీకరించడానికి ముందు, వాటి కోసం CRC32 లెక్కించబడుతుందని గుర్తుంచుకోండి.
CRC32 ఎందుకు అవసరం?
క్లుప్తంగా, మాస్టర్ కీ యొక్క చెల్లుబాటును నిర్ధారించడానికి. టేబుల్స్పేస్ కీ మరియు ఇనిషియలైజేషన్ వెక్టర్ను డీక్రిప్ట్ చేసిన తర్వాత, చెక్సమ్ లెక్కించబడుతుంది మరియు హెడర్లో నిల్వ చేయబడిన CRC32తో పోల్చబడుతుంది. చెక్సమ్లు సరిపోలితే, మా వద్ద సరైన మాస్టర్ కీ మరియు టేబుల్స్పేస్ కీ ఉంటాయి. లేకపోతే, టేబుల్స్పేస్ మిస్ అయినట్లు గుర్తు పెట్టబడుతుంది (మేము దానిని ఎలాగైనా డీక్రిప్ట్ చేయలేము).
మీరు అడగవచ్చు: కీ ధృవీకరణ ఏ సమయంలో జరుగుతుంది? సర్వర్ ఎప్పుడు ప్రారంభమవుతుంది అనేది సమాధానం. ఎన్క్రిప్టెడ్ టేబుల్లు/టేబుల్స్పేస్లతో కూడిన సర్వర్ స్టార్టప్లో UUID, కీని చదువుతుందిహెడర్ నుండి ID మరియు మాస్టర్ కీ IDని ఉత్పత్తి చేస్తుంది. ఇది కీరింగ్ నుండి అవసరమైన మాస్టర్ కీని పొందుతుంది, టేబుల్స్పేస్ కీని డీక్రిప్ట్ చేస్తుంది మరియు చెక్సమ్ను ధృవీకరిస్తుంది. మరోసారి, చెక్సమ్ సరిపోలితే, అంతా బాగానే ఉంది, లేకపోతే, టేబుల్స్పేస్ మిస్ అయినట్లు గుర్తు పెట్టబడుతుంది.
మీరు ఈ సిరీస్లోని మునుపటి కథనాన్ని చదివితే (
మాస్టర్ కీ ఎన్క్రిప్షన్ యొక్క లాభాలు మరియు నష్టాల గురించి కొంచెం మాట్లాడవలసిన సమయం ఇది. అతిపెద్ద ప్రయోజనం ఏమిటంటే, మీకు ఒక ఎన్క్రిప్షన్ కీ (మాస్టర్ కీ) మాత్రమే అవసరం, ఇది మీ గుప్తీకరించిన డేటా నుండి విడిగా నిల్వ చేయబడుతుంది. ఇది సర్వర్ స్టార్టప్ను వేగవంతం చేస్తుంది మరియు నిల్వను చిన్నదిగా చేస్తుంది, ఇది నిర్వహించడం సులభం చేస్తుంది. మరియు సింగిల్ మాస్టర్ కీ పునరుత్పత్తి చేయడం సులభం.
అయితే, మాస్టర్ కీ ఎన్క్రిప్షన్లో ఒక పెద్ద లోపం ఉంది: టేబుల్స్పేస్ని టేబుల్స్పేస్_కీతో ఎన్క్రిప్ట్ చేసిన తర్వాత, అది ఎల్లప్పుడూ అదే కీతో ఎన్క్రిప్ట్ చేయబడి ఉంటుంది. మాస్టర్ కీని తిప్పడం ఇక్కడ సహాయం చేయదు. ఇది ఎందుకు ప్రతికూలత? MySQLలో ఆకస్మిక క్రాష్ మరియు కోర్ ఫైల్ సృష్టికి దారితీసే బగ్లు ఉన్నాయని మాకు తెలుసు. కోర్ ఫైల్ సర్వర్ మెమరీ డంప్ని కలిగి ఉన్నందున, డంప్ డీక్రిప్టెడ్ టేబుల్స్పేస్ కీని కలిగి ఉండవచ్చు. విషయాలను మరింత దిగజార్చడానికి, డీక్రిప్ట్ చేయబడిన టేబుల్స్పేస్ కీలు మెమరీలో నిల్వ చేయబడతాయి, వీటిని డిస్క్కి మార్చుకోవచ్చు. ఈ ఫైల్లను మరియు స్వాప్ విభజనను యాక్సెస్ చేయడానికి మీకు రూట్ హక్కులు అవసరం కాబట్టి ఇది ప్రతికూలత కాదని మీరు చెప్పవచ్చు. అవును. కానీ రూట్ కాసేపు మాత్రమే అవసరం. ఎవరైనా డీక్రిప్టెడ్ టేబుల్స్పేస్ కీకి యాక్సెస్ను పొందిన తర్వాత, అతను/ఆమె రూట్ అధికారాలు లేకుండా కూడా డేటాను డీక్రిప్ట్ చేయడానికి దాన్ని ఉపయోగించడం కొనసాగించవచ్చు. అదనంగా, డిస్క్ దొంగిలించబడవచ్చు మరియు స్వాప్ విభజన/కోర్ ఫైల్లను మూడవ పక్ష సాధనాలను ఉపయోగించి చదవవచ్చు. డిస్క్ దొంగిలించబడినా దాన్ని చదవకుండా చేయడమే TDE లక్ష్యం. IN
ఇంకా చదవండి:
మూలం: www.habr.com