Skip to Content
கட்டமைப்புநிறுவன அம்சங்கள்

நிறுவன அம்சங்கள்

இராணுவ கண்காணிப்பு, HIPAA-இணக்கமான நோயாளி கண்காணிப்பு மற்றும் கிரிப்டோகிராஃபிகலாக சரிபார்க்கப்பட்ட தளவாடங்கள் போன்ற நிறுவன பயன்பாட்டு நிகழ்வுகளுக்காக வடிவமைக்கப்பட்ட பல உயர்-பாதுகாப்பு அம்சங்களை ட்ரேஸ்லெட் கொண்டுள்ளது.


1. தரவு குறியாக்கம் (SQLCipher)

ட்ரேஸ்லெட் ஒரு இருப்பிடத்தை பின்னணியில் பதிவு செய்யும் போது, ​​அதை உங்கள் சர்வரில் ஒத்திசைக்கும் முன் தற்காலிகமாக உள் SQLite தரவுத்தளத்தில் சேமிக்கும். ஒரு சாதனம் திருடப்பட்டால், உடல் அணுகல் இந்த வரலாற்று வழிகளைப் படிக்க தாக்குபவர் அனுமதிக்கும்.

SQLCipher ஐப் பயன்படுத்தி அட்-ரெஸ்ட் டேட்டாபேஸ் என்க்ரிப்ஷனை வழங்குவதன் மூலம் ட்ரேஸ்லெட் இதைத் தீர்க்கிறது.

தரவு குறியாக்கம் எவ்வாறு செயல்படுகிறது

  1. நீங்கள் encryptDatabase கொடியை இயக்கும் போது, ​​SQLCipher வழியாக AES-256 உடன் அடிப்படையான Rust SQLite தரவுத்தளம் உடனடியாக குறியாக்கம் செய்யப்படுகிறது.
  2. இயல்பாக, ட்ரேஸ்லெட் தானாகவே பாதுகாப்பான 256-பிட் விசையை உருவாக்கி, தளத்தின் சொந்த பாதுகாப்பான சேமிப்பகத்தில் (Android Keystore / iOS Keychain) பாதுகாப்பாக சேமிக்கிறது. நீங்கள் சாவியை கைமுறையாக நிர்வகிக்க வேண்டியதில்லை!
  3. வட்டில் எழுதப்பட்ட அனைத்து தரவுகளும் விசை இல்லாமல் முழுமையாக படிக்க முடியாததாகிவிடும்.
  4. தற்போதுள்ள மறைகுறியாக்கப்படாத தரவுத்தளங்கள், கொடி இயக்கப்படும் போது, ​​தானாகவே குறியாக்கம் செய்யப்பட்டதாக மாற்றப்படும்.

செயல்படுத்தல்

இயங்குதளத்தில் நிர்வகிக்கப்படும் பாதுகாப்பான விசையைப் பயன்படுத்தி குறியாக்கத்தை இயக்க (பரிந்துரைக்கப்படுகிறது):

final config = Config.balanced( security: tl.SecurityConfig( encryptDatabase: true, // This MUST be true to enable encryption ), );

தனிப்பயன் விசை மேலாண்மை (மேம்பட்டது)

உங்கள் பயன்பாடு அதன் சொந்த முக்கிய உள்ளடக்கத்தை நிர்வகிக்க விரும்பினால் (எ.கா., flutter_secure_storage ஐப் பயன்படுத்துதல்), நீங்கள் தனிப்பயன் encryptionKey ஐ வழங்கலாம். encryptDatabase இன்னும் உண்மையாக இருக்க வேண்டும் என்பதை நினைவில் கொள்ளவும்.

// Generate a secure random key final customKey = await tl.Tracelet.generateEncryptionKey(); await secureStorage.write(key: 'my_db_key', value: customKey); // Pass it to Tracelet final config = Config.balanced( security: tl.SecurityConfig( encryptDatabase: true, encryptionKey: await secureStorage.read(key: 'my_db_key'), ), );

2. தணிக்கை பாதை மேலாண்மை & சரிபார்ப்பு

உணர்திறன் தளவாடங்கள் அல்லது சட்ட அமலாக்கத்தில், இருப்பிடப் பதிவேட்டில் சிதைக்கப்படவில்லை, ஏமாற்றப்படவில்லை அல்லது உண்மைக்குப் பிறகு மாற்றப்படவில்லை என்பதை நீங்கள் கணித ரீதியாக நிரூபிக்க முடியும். ட்ரேஸ்லெட் ஒரு கிரிப்டோகிராஃபிக் செயின் ஆஃப் காவலை உருவாக்க ஆடிட் டிரெயில் அம்சத்தை வழங்குகிறது.

தணிக்கை பாதை மேலாண்மை எவ்வாறு செயல்படுகிறது

AuditConfig.enabled true என அமைக்கப்பட்டால், ட்ரேஸ்லெட் அட்சரேகை மற்றும் தீர்க்கரேகையை மட்டும் சேமிக்காது. இது ஒவ்வொரு இருப்பிடத்திற்கும் “பிளாக்செயின் போன்ற” பதிவை உருவாக்குகிறது. அடிப்படை ரஸ்ட் இயந்திரம் இந்த செயல்முறையை அணு மற்றும் முட்டாள்தனமாக உறுதி செய்கிறது:

  1. த ஜெனிசிஸ் பிளாக்: ஒரு புதிய சாதனத்தில் எஞ்சின் முதலில் தொடங்கும் போது, ​​அது ஜெனிசிஸ் ஹாஷை கணக்கிடுகிறது: SHA-256("tracelet:genesis:{device_id}").
  2. கேனானிகல் ஸ்ட்ரிங் ஜெனரேஷன்: ஒவ்வொரு இருப்பிடத்திற்கும், முந்தைய ஹாஷ் மற்றும் புதிய இருப்பிடத்தின் சரியான தரவை ஒருங்கிணைத்து ட்ரேஸ்லெட் கண்டிப்பான, உறுதியான சரம் வடிவமைப்பை உருவாக்குகிறது.
  3. ஹேஷிங்: இந்த கேனானிகல் சரம் ஹாஷ் செய்யப்பட்டது (இயல்புநிலையாக SHA-256 ஐப் பயன்படுத்தி), தற்போதைய இருப்பிடத்திற்கு hash ஐ உருவாக்குகிறது.
  4. தி செயின்: இந்த ஹாஷ் அடுத்த இடத்திற்கான previous_hash ஆக மாறி, உடைக்கப்படாத சங்கிலியை உருவாக்குகிறது. டேட்டாபேஸில் கடந்த கால இடத்தின் ஒரு ஒருங்கிணைப்பை கூட தாக்குபவர் மாற்றினால், அந்த இடத்தின் ஹாஷ் மாறி, அடுத்தடுத்த ஹாஷ்களின் முழு சங்கிலியையும் உடைத்துவிடும்.

கட்டமைப்பு

final config = Config.highAccuracy( audit: tl.AuditConfig( enabled: true, hashAlgorithm: tl.HashAlgorithm.sha256, ), );

JSON பேலோட்

Tracelet இந்த இருப்பிடங்களை உங்கள் பின்தளத்தில் ஒத்திசைக்கும்போது, ​​ஒவ்வொரு இருப்பிடத்திற்கும் JSON பேலோட் நேரடியாக தணிக்கைப் புலங்களைக் கொண்டிருக்கும்.

{ "device": "tracelet-example", "locationCount": 1, "locations": [ { "uuid": "loc-1234-abcd", "timestamp": "2024-01-01T00:00:00Z", "is_moving": true, "coords": { "latitude": 37.774900, "longitude": -122.419400, "accuracy": 10.0, "speed": 15.5, "heading": 90.0, "altitude": 100.0 }, "audit_hash": "a1b2c3d4e5f6...", "audit_previous_hash": "f6e5d4c3b2a1...", "audit_chain_index": 42 } ] }

சர்வர் பக்க சரிபார்ப்பு (குறியீட்டை எவ்வாறு சரிபார்ப்பது)

உங்கள் சர்வரில் உள்ள தரவின் ஒருமைப்பாட்டை சரிபார்க்க, ட்ரேஸ்லெட் ரஸ்ட் கோர் பயன்படுத்தும் சரியான நியமன சரத்தை நீங்கள் மீண்டும் உருவாக்க வேண்டும் மற்றும் பேலோடில் உள்ள audit_hash புலத்துடன் அதன் விளைவாக வரும் ஹாஷை ஒப்பிட வேண்டும்.

1. நியமன சரத்தை உருவாக்கவும்

சரம் சரியாக இப்படி வடிவமைக்கப்பட வேண்டும், குழாய் | எழுத்து மூலம் பிரிக்கப்பட்டிருக்கும்: தாமதமாக இல்லை

முக்கியமான வடிவமைப்பு விதிகள் (டிரேஸ்லெட்டின் ரஸ்ட் கோர் அடிப்படையில்):

  • latitude மற்றும் longitude: சரியாக 6 தசம இடங்களுக்கு வடிவமைக்கப்பட்டது (எ.கா., 37.774900).
  • accuracy, speed, heading, altitude: சரியாக 2 தசம இடங்களுக்கு (எ.கா., 10.00) வடிவமைக்கப்பட்டது.
  • is_moving: 1 (உண்மை) அல்லது 0 (தவறு) என வடிவமைக்கப்பட்டது.

உதாரணம் நியமன சரம்:

f6e5d4c3b2a1...|TRACELET_AUDIT|42|loc-1234-abcd|37.774900|-122.419400|2024-01-01T00:00:00Z|10.00|15.50|90.00|100.00|1

2. ஹாஷ் மற்றும் ஒப்பிடு

நிலையான SHA-256 ஹாஷிங் செயல்பாட்டின் மூலம் கட்டமைக்கப்பட்ட கேனானிகல் சரத்தை கடந்து, அதை ஒரு சிறிய ஹெக்ஸாடெசிமல் சரமாக மாற்றவும்.

  • நீங்கள் கணக்கிடப்பட்ட ஹாஷ் ** audit_hash புலத்துடன் பொருந்தினால்: இருப்பிடம் சேதமடையவில்லை என கணித ரீதியாக நிரூபிக்கப்பட்டுள்ளது.
  • இது பொருந்தவில்லை என்றால்: இருப்பிடத் தரவு மாற்றப்பட்டது. நீங்கள் உடனடியாக இந்தப் பதிவைக் கொடியிட்டு, சாதனத்தை ஆராய வேண்டும்.

3. இருப்பிடத் துல்லிய விவரங்கள் (HF / LF)

ட்ரேஸ்லெட் எடுத்துக்காட்டு பயன்பாட்டை மதிப்பாய்வு செய்யும் போது, ​​LF துல்லியம் மற்றும் HF துல்லியம்க்கான பொத்தான்களை நீங்கள் கவனிப்பீர்கள். இவை நேரடியாக ட்ரேஸ்லெட்டின் முன் கட்டமைக்கப்பட்ட உள்ளமைவு சுயவிவரங்களுக்கு வரைபடமாகும்.

  • LF (குறைந்த அதிர்வெண் / குறைந்த துல்லியம்): இது Config.lowPower() சுயவிவரத்தை வரைபடமாக்குகிறது. இது செல்-டவர் மற்றும் Wi-Fi முக்கோணத்தை மட்டுமே பயன்படுத்த இயந்திரத்தை கட்டுப்படுத்துகிறது (ஜிபிஎஸ் இல்லை). இது அதிக பேட்டரி திறன் கொண்டது ஆனால் ஒரு பரந்த துல்லியமான ஆரம் வழங்குகிறது.
  • HF (உயர் அதிர்வெண் / உயர் துல்லியம்): இது Config.highAccuracy() சுயவிவரத்திற்கு வரைபடமாகும். இது இயற்பியல் ஜிபிஎஸ் சிப்பை இயக்குகிறது, அதிக பேட்டரி வடிகால் செலவில் 1-5 மீட்டர் துல்லியத்தை வழங்குகிறது.

4. கார்பன் தடம் மதிப்பீட்டாளர் & பயண அறிக்கைகள்

ட்ரேஸ்லெட்டில் உள்ளமைக்கப்பட்ட CarbonEstimator பயன்பாடு உள்ளது. இது ஒரு பயணத்திற்கான மதிப்பிடப்பட்ட CO₂ உமிழ்வைக் கணக்கிடுவதற்கு துல்லியமான புவியியல் தூரத்துடன் செயல்பாட்டு அங்கீகாரத்தை (பயனர் வாகனம் ஓட்டுகிறாரா, நடக்கிறாரா அல்லது சைக்கிள் ஓட்டுகிறாரா என்பதைக் கண்டறிதல்) இணைக்கிறது. நிலைத்தன்மை அறிக்கையிடல், கார்பன்-ஆஃப்செட் திட்டங்கள் அல்லது ESG (சுற்றுச்சூழல், சமூகம் மற்றும் ஆளுமை) இணக்கத்திற்கு இது முக்கியமானது.

இது எப்படி வேலை செய்கிறது

  1. நீங்கள் ஒரு CarbonEstimator ஐ உடனடியாக உருவாக்குகிறீர்கள்.
  2. பயனர் நகரத் தொடங்கும் போது (isMoving == true), நீங்கள் startTrip() ஐ அழைக்கிறீர்கள்.
  3. நீங்கள் நிகழ்நேர செயல்பாடு மாற்றங்களை (எ.கா., நடைபயிற்சியிலிருந்து வாகனம் ஓட்டுவதற்கு மாறுதல்) மற்றும் இருப்பிடங்களை மதிப்பீட்டாளருக்கு வழங்குகிறீர்கள்.
  4. பயனர் நகர்வதை நிறுத்தும்போது (isMoving == false), நீங்கள் TripCarbonSummary ஐ உருவாக்க endTrip() ஐ அழைக்கிறீர்கள்.

செயல்படுத்தல் உதாரணம்

final carbonEstimator = tl.CarbonEstimator(); // 1. Listen for motion changes to start and end trips Tracelet.onMotionChange((loc) { if (loc.isMoving) { carbonEstimator.startTrip(); } else { final summary = carbonEstimator.endTrip(); if (summary != null) { print('Trip ended: \${summary.totalCarbonGrams}g CO2'); print('Total Distance: \${summary.totalDistanceMeters}m'); print('Dominant Mode: \${summary.dominantMode}'); // e.g. "driving" } } }); // 2. Feed Activity Recognition data to detect the transport mode Tracelet.onActivityChange((evt) { // Activity names map to emissions factors internally (e.g., driving vs walking) carbonEstimator.setActivity(evt.activity.name); }); // 3. Feed location coordinates to accumulate distance accurately Tracelet.onLocation((loc) { carbonEstimator.onLocationReceived( loc.coords.latitude, loc.coords.longitude, ); });

இதன் விளைவாக வரும் TripCarbonSummary ஆனது உங்கள் சர்வரில் ஒத்திசைக்கப்படலாம் அல்லது சூழல் நட்பு போக்குவரத்துத் தேர்வுகளை ஊக்குவிக்க பயனருக்கு நேரடியாகக் காட்டப்படும்.


5. தொலைநிலை கட்டமைப்பு

3.6.2 முதல் iOS மற்றும் Android இரண்டிலும் பெறப்பட்டு பயன்படுத்தப்பட்டது. முந்தைய பதிப்புகள் remoteConfigUrl ஐ ஏற்றுக்கொண்டன, ஆனால் ஒருபோதும் அதைப் பெறவில்லை - சொந்த பக்கம் அமைதியாக உள்ளூர் கட்டமைப்பிற்கு திரும்பியது.

கடற்படைகள் மற்றும் பெரிய வரிசைப்படுத்தல்களுக்கு, நீங்கள் அடிக்கடி கண்காணிப்பு நடத்தையை மாற்ற வேண்டும் - துல்லியம், ஒத்திசைவு, ஜியோஃபென்ஸ் ஆரம், பேட்டரி பட்ஜெட் - பயன்பாட்டு புதுப்பிப்பை அனுப்பாமல். ட்ரேஸ்லெட்டின் ரிமோட் உள்ளமைவு உங்கள் சொந்த HTTPS எண்ட்பாயிண்டிலிருந்து ஒரு கட்டமைப்பு ஆவணத்தை இழுத்து, இயக்க நேரத்தில் உள்ளூர் கட்டமைப்பின் மேல் பயன்படுத்த SDK ஐ அனுமதிக்கிறது.

தொலைநிலை கட்டமைப்பு எவ்வாறு செயல்படுகிறது

  1. உங்கள் AppConfig இல் remoteConfigUrl (மற்றும் விருப்பத் தலைப்புகள்) அமைத்தீர்கள்.
  2. ready() இல், சாதனத்தில் உள்ள தற்காலிக சேமிப்பிலிருந்து கடைசியாகப் பெறப்பட்ட உள்ளமைவை SDK முதலில் பயன்படுத்துகிறது - எனவே எந்த நெட்வொர்க் அழைப்புக்கு முன்பாகவும், ready() ஐத் தடுக்காமல், உங்கள் சமீபத்திய வெளியிடப்பட்ட அமைப்புகளில் உடனடியாகவும் ஆஃப்லைனில் மறுதொடக்கம் மீண்டும் தொடங்கும்.
  3. இது பின்னணியில் உள்ள உங்கள் இறுதிப் புள்ளியிலிருந்து ஒரு புதிய நகலைப் பெற்று, setConfig() போன்ற அதே இயக்க நேரப் பாதை வழியாகப் பயன்படுத்துகிறது - கண்காணிப்பு தொடர்பான விசை உண்மையில் மாறும்போது மட்டுமே செயலில் உள்ள கண்காணிப்பு பைப்லைனை மறுதொடக்கம் செய்கிறது.
  4. இது remoteConfigRefreshInterval கேடன்ஸை (நிமிடங்களில்) மீண்டும் பெறுவதன் மூலம் கட்டமைப்பை புதியதாக வைத்திருக்கும்.

HTTPS URLகள் மட்டுமே மதிக்கப்படுகின்றன - http:// URL நிராகரிக்கப்பட்டது மற்றும் உள்நுழைந்தது, ஏனெனில் உள்ளமைவு கண்காணிப்பு நடத்தையைக் கட்டுப்படுத்துகிறது மற்றும் போக்குவரத்தில் சேதமடையக்கூடாது.

இறுதிப்புள்ளி ஒப்பந்தம்

ட்ரேஸ்லெட் கட்டமைப்பு வரைபடம் போன்ற வடிவிலான JSON பொருளுடன் உங்கள் எண்ட்பாயிண்ட் GET-க்கு பதிலளிக்கும் - பிளாட், அல்லது Config.toMap() உருவாக்கும் உள்ளு { "geo": {…}, "app": {…}, "http": {…} } படிவம். நீங்கள் சேர்க்கும் விசைகள் மட்டுமே மேலெழுதப்படுகின்றன; மற்ற ஒவ்வொரு அமைப்பும் அதன் உள்ளூர் மதிப்பை வைத்திருக்கிறது.

{ "geo": { "distanceFilter": 25.0, "desiredAccuracy": 0 }, "app": { "heartbeatInterval": 120 }, "http": { "autoSync": true } }

கட்டமைப்பு

final config = Config.balanced().copyWith( app: tl.AppConfig( remoteConfigUrl: 'https://config.mycompany.com/tracelet/fleet-a.json', remoteConfigHeaders: {'Authorization': 'Bearer $token'}, remoteConfigTimeout: 15000, // milliseconds remoteConfigRefreshInterval: 60, // minutes ), );
புலம்வகைஇயல்புநிலைவிளக்கம்
நோட்ரான்ஸ்0லேட்நோட்ரான்ஸ்1லேட்நோட்ரான்ஸ்2லேட்HTTPS இறுதிப்புள்ளி JSON கட்டமைப்பு வரைபடத்தை வழங்குகிறது. null தொலைநிலை கட்டமைப்பை முடக்குகிறது.
நோட்ரான்ஸ்0லேட்நோட்ரான்ஸ்1லேட்நோட்ரான்ஸ்2லேட்பெறுதலுடன் அனுப்பப்பட்ட தலைப்புகள் (எ.கா. அங்கீகார டோக்கன்).
நோட்ரான்ஸ்0லேட்நோட்ரான்ஸ்1லேட்நோட்ரான்ஸ்2லேட்மில்லி விநாடிகளில் காலாவதியைப் பெறவும்.
நோட்ரான்ஸ்0லேட்நோட்ரான்ஸ்1லேட்நோட்ரான்ஸ்2லேட்பின்னணி புதுப்பிப்புகளுக்கு இடையே உள்ள நிமிடங்கள் (சொந்தமாக 15 நிமிடங்களில் தரையிறக்கப்பட்டது). 0 ஒருமுறை பெறுகிறது மற்றும் மீண்டும் மீண்டும் வராது.

பயன்படுத்தப்பட்ட ரிமோட் மதிப்புகள் சாதனத்தின் நீடித்த உள்ளமைவில் ஒன்றிணைக்கப்படுகின்றன, மேலும் தொலைநிலை மேலெழுதல்கள் உள்ளூர் மதிப்புகளை வெல்லும். அந்த URL ஐப் பெற நீங்கள் உத்தேசித்துள்ள ஒவ்வொரு சாதனமும் - ஸ்கோப் பெர்-ஃப்ளீட் அல்லது பர்-கோஹார்ட் என ஒவ்வொரு கட்டமைப்பையும் வெவ்வேறு URL-ல் சுட்டிக்காட்டி மதிப்புகளை மட்டும் வெளியிடவும்.

டார்ட்டிலிருந்து பயன்படுத்தப்பட்ட ரிமோட் கட்டமைப்பைக் கவனித்தல்

தொலைநிலை கட்டமைப்பு பெறப்பட்டு, சொந்த பக்கத்தில் பயன்படுத்தப்படுகிறது. 3.6.10 என்பதால், ஒவ்வொரு முறையும் ரிமோட் ஓவர்ரைடு பயன்படுத்தப்படும் - ready() மற்றும் ஒவ்வொரு பின்புல புதுப்பித்தலிலும் தேக்ககப்படுத்தப்பட்ட நகல் இரண்டும் மீட்டமைக்கப்பட்டது - SDK அதை டார்ட்டிற்குத் திருப்பி அனுப்புகிறது:

  • Tracelet.activeConfig (எனவே tracelet_doctor மற்றும் டார்ட்-பக்க பேட்டரி-பட்ஜெட் எஞ்சின்) இப்போது நீங்கள் உள்நாட்டில் அமைத்த கடைசி கட்டமைப்பிற்குப் பதிலாக பெறப்பட்ட மதிப்புகளைப் பிரதிபலிக்கிறது.
  • சேவையகத்தால் இயக்கப்படும் மாற்றம் தரையிறங்கும்போது எதிர்வினையாற்ற குழுசேரவும்:
// Callback — fires after a remote override is applied. // Tracelet.activeConfig already reflects the new values when this fires. Tracelet.onRemoteConfig((Config config) { print('Remote battery budget: ${config.geo.batteryBudgetPerHour}%/hr'); }); // …or listen to the broadcast stream directly. final sub = Tracelet.remoteConfigStream.listen((config) { // react to the merged, now-active config });

3.6.10 க்கு முன், தொலைநிலை மதிப்புகள் நேட்டிவ் டிராக்கிங்கிற்குப் பயன்படுத்தப்பட்டன, ஆனால் அவை இல்லை Tracelet.activeConfig இல் பிரதிபலிக்கப்பட்டன, எனவே கண்காணிப்பு ஏற்கனவே தொலைநிலை ஒன்றைப் பயன்படுத்தினாலும் உள்ளூரில் அமைக்கப்பட்ட கடைசி மதிப்பைக் கண்டறியும்.