2FA-Tool Logo
2FA-Tool.com உலாவியில் கிளையன்ட் பக்க பாதுகாப்பான 2FA குறியீடு ஜெனரேட்டர்
💻 பயன்பாட்டு கிரிப்டோகிராஃபி · ஆழமான பொறியியல் பகுப்பாய்வு
✓ 2026-க்கு சரிபார்க்கப்பட்டது

TOTP எவ்வாறு செயல்படுகிறது: Python, JavaScript & Go-வில் RFC 6238 அல்காரிதம் செயல்படுத்தல்

2F 2FA-Tool பாதுகாப்பு ஆராய்ச்சி ஆய்வகம் · அக்டோபர் 2026-ல் புதுப்பிக்கப்பட்டது · 16 நிமிட வாசிப்பு (2,700+ வார்த்தைகள்)
💡 கட்டமைப்பு சுருக்கம் & பொறியியல் அறிக்கை

நவீன வலைப் பாதுகாப்பில் அடிப்படை கிரிப்டோகிராஃபிக் நெறிமுறைகளில் RFC 6238 (TOTP: Time-Based One-Time Password Algorithm) அதன் கணித எளிமையால் தனித்து நிற்கிறது. இதற்கு ஊடாடும் பிணைய கைகுலுக்கல்கள், மையப்படுத்தப்பட்ட பொது விசை உள்கட்டமைப்பு (PKI) அல்லது கிளவுட் அழைப்புகள் எதுவும் தேவையில்லை. பகிரப்பட்ட Base32 ரகசிய விசை மற்றும் இயற்பியல் Unix நேரத்தின் நிலையான முன்னோக்கு நகர்வு ஆகியவற்றை மட்டுமே கொண்டு, கிளையண்ட்டும் சர்வரும் ஒவ்வொரு 30 வினாடிகளுக்கும் ஒரே மாதிரியான, தற்காலிக 6-இலக்க அங்கீகார டோக்கன்களை 100% கணித துல்லியத்துடன் கணக்கிடுகின்றன.

இந்த விரிவான வழிகாட்டியில், பிளாக்-பாக்ஸ் மூன்றாம் தரப்பு நூலகங்களைத் தவிர்த்து (உதாரணமாக pyotp அல்லது otplib), Python, JavaScript மற்றும் Go மொழிகளில் RFC 6238-ன் முழுமையான கிரிப்டோகிராஃபிக் பைப்லைனை புதிதாக உருவாக்கி, அதிகாரப்பூர்வ IETF சோதனை வெக்டார்களுக்கு எதிராக ஒவ்வொரு செயல்பாட்டையும் சரிபார்க்கிறோம்.

01. நேர-சார்ந்த அங்கீகாரத்தின் நேர்த்தி

TOTP-ஐப் புரிந்து கொள்ள, நாம் முதலில் அதன் முன்னோடியான RFC 4226 HOTP (HMAC-Based One-Time Password)-ஐப் பகுப்பாய்வு செய்ய வேண்டும்.

HOTP முறையில், கிளையண்ட்டும் சர்வரும் ஒரு நிகழ்வு கவுண்டர் $C$-ஐப் பகிர்ந்து கொள்கின்றன. பயனர் ஒரு டோக்கனை உருவாக்கும் ஒவ்வொரு முறையும், கவுண்டர் அதிகரிக்கப்படுகிறது ($C = C + 1$), மேலும் டோக்கன் $\text{HMAC-SHA-1}(K, C)$-லிருந்து பெறப்படுகிறது. கணித ரீதியாக இது வலுவாக இருந்தாலும், HOTP செயல்பாட்டு ரீதியான ஒரு பலவீனத்தைக் கொண்டிருந்தது: கவுண்டர் ஒத்திசைவின்மை (counter desynchronization). ஒரு பயனர் தற்செயலாகத் தனது பாக்கெட்டில் உள்ள வன்பொருள் டோக்கனின் பொத்தானை ஐந்து முறை அழுத்தினால், கிளையண்ட் கவுண்டர் $C=6$-ஐ அடையும், ஆனால் அங்கீகார சர்வர் $C=1$-ல் இருக்கும்; இதன் விளைவாக உள்நுழைவு தொடர்ந்து நிராகரிக்கப்படும்.

⏱️ RFC 6238-ன் திருப்புமுனை: நிகழ்வு கவுண்டர்களுக்குப் பதிலாக Epoch நேரத்தைப் பயன்படுத்துதல்

மே 2011-ல் N. M'Raihi, S. Machani, M. Pei மற்றும் J. Rydell ஆகியோரால் வெளியிடப்பட்ட RFC 6238, அதிகரிக்கும் முழு எண்களுக்குப் பதிலாக நிலையான Unix epoch நேரத்தைப் பயன்படுத்தி கவுண்டர் ஒத்திசைவு சிக்கலைத் தீர்த்தது. இயற்பியல் நேரம் உலகம் முழுவதும் சீராக முன்னேறுவதால், எந்தவொரு நெட்வொர்க் பாக்கெட்டுகளையும் அனுப்பாமலேயே கிளையண்ட் மற்றும் சர்வர் இரண்டும் தங்களின் உள் கவுண்டர்களை ஒரே நேரத்தில் முன்னெடுக்கின்றன.

02. TOTP-ன் 5 கிரிப்டோகிராஃபிக் கணித நிலைகள்

16-எழுத்துகள் கொண்ட Base32 விதையை (உதாரணமாக, JBSWY3DPEHPK3PXP) 6-இலக்க சுழலும் குறியீடாக (உதாரணமாக, 284915) மாற்றுவது ஐந்து துல்லியமான கிரிப்டோகிராஃபிக் கட்டங்களை உள்ளடக்கியது:

1 படி 1: Base32 ரகசிய விசை டிகோடிங்

பதிவு விசைகள் RFC 4648 Base32 முறையில் A-Z மற்றும் 2-7 எழுத்துக்களைப் பயன்படுத்தி குறியாக்கம் செய்யப்படுகின்றன (குழப்பமடையக்கூடிய 0, 1, 8, 9 போன்ற எழுத்துக்கள் தவிர்க்கப்படுகின்றன). அல்காரிதம் முதலில் இந்த சரத்திலிருந்து இடைவெளிகளை நீக்கி, அதன் நீளம் 8-ன் பெருக்கலாக மாறும் வகையில் பேடிங் (=) சேர்த்து இயல்பாக்குகிறது; பின்னர் அதை மூல பைனரி விசை பைட்டுகளாக $K$ டிகோட் செய்கிறது.

2 படி 2: நேர-படி கணக்கீடு (கவுண்டர் $T$)

தற்போதைய Unix நேரமுத்திரை (ஜனவரி 1, 1970 UTC முதல் கடந்த வினாடிகள்) முழு எண் கவுண்டர் $T$-ஆக மாற்றப்படுகிறது:

T = floor( (CurrentTime - T0) / X )

இதில் நிலையான அளவுருக்கள் $T_0 = 0$ மற்றும் படி கால அளவு $X = 30$ வினாடிகள் ஆகும். இந்த முழு எண் $T$ பின்னர் 8-பைட் big-endian 64-பிட் கையொப்பமிடப்படாத முழு எண்ணாக குறியாக்கம் செய்யப்படுகிறது.

3 படி 3: HMAC-SHA1 ஹாஷ் கணக்கீடு

மூல விசை பைட்டுகள் $K$-ஐ ரகசிய விசையாகப் பயன்படுத்தி, 8-பைட் big-endian நேர இடையகத்தின் மீது HMAC-SHA1 டைஜெஸ்ட்டைக் கணக்கிடுகிறோம்; இது 20-பைட் (160-பிட்) செய்தி அங்கீகார ஹாஷ் $HS$-ஐ உருவாக்குகிறது:

HS = HMAC-SHA-1(Key, T)
4 படி 4: டைனமிக் ட்ரங்க்கேஷன் (Dynamic Truncation, DT)

20 மூல பைட்டுகளை ஒரு முழு எண்ணாக மாற்ற, RFC 4226 டைனமிக் ட்ரங்க்கேஷனைக் குறிப்பிடுகிறது:

  • ஆஃப்செட்டைப் பிரித்தெடுத்தல்: கடைசி பைட் $HS[19]$-ஐப் பரிசோதித்து, அதன் கீழ் 4 பிட்களைப் பிரித்தெடுக்க 0x0F உடன் மாஸ்க் செய்யவும்; இது 0 முதல் 15 வரை ஆஃப்செட் மதிப்பைக் கொடுக்கும்: Offset = HS[19] & 0x0F;
  • 4 பைட்டுகளைப் பிரித்தல்: ஆஃப்செட்டிலிருந்து தொடங்கும் 4 தொடர்ச்சியான பைட்டுகளைப் பிரித்தெடுக்கவும்: $P = HS[Offset \dots Offset+3]$;
  • சைன் பிட் மாஸ்கிங்: கையொப்பமிடப்பட்ட முழு எண் வழிதல் குழப்பத்தைத் தடுக்க மிக முக்கியமான பிட்டை (MSB) 0x7F உடன் மாஸ்க் செய்யவும்:
    BinaryCode = ((P[0] & 0x7F) << 24) | ((P[1] & 0xFF) << 16) | ((P[2] & 0xFF) << 8) | (P[3] & 0xFF)
5 படி 5: $N$ இலக்கங்களுக்கான மாடுலோ குறைப்பு

இறுதியாக, நிலையான 6-இலக்க டோக்கன்களுக்கு BinaryCode-ஐ மாடுலோ $10^6$ (1,000,000) குறைக்கவும். சீரான 6-எழுத்து சர வெளியீட்டை உறுதிப்படுத்த, முடிவின் இடதுபுறத்தில் பூஜ்ஜியங்களை நிரப்பவும்:

OTP = BinaryCode mod 10^6

03. இயங்கக்கூடிய குறியீடு 1: Python 3 நிலையான நூலகம்

இந்த முழுமையான செயல்படுத்தல் எந்தவித வெளிப்புற pip தொகுப்புகளும் இல்லாமல் Python-ன் உள்ளமைக்கப்பட்ட base64, struct, hmac, மற்றும் hashlib தொகுதிக்கூறுகளைப் பயன்படுத்துகிறது:

totp_rfc6238.py Python 3.8+ (பூஜ்ஜிய சார்புகள்)
import base64
import hashlib
import hmac
import struct
import time

def generate_totp(secret_base32: str, timestamp: int = None, step: int = 30, digits: int = 6) -> str: """ RFC 6238-க்கு இணக்கமான TOTP டோக்கனை உருவாக்குகிறது. :param secret_base32: Base32 வடிவத்தில் பகிரப்பட்ட ரகசிய விசை (எ.கா: ‘JBSWY3DPEHPK3PXP’) :param timestamp: வினாடிகளில் Unix epoch நேரமுத்திரை. முன்னிருப்பு time.time() :param step: நேர சாளரம் வினாடிகளில் (முன்னிருப்பு: 30) :param digits: வெளியீட்டு இலக்கங்களின் எண்ணிக்கை (முன்னிருப்பு: 6) :return: பூஜ்ஜியம் நிரப்பப்பட்ட OTP சரம் (எ.கா: ‘045812’) """ if timestamp is None: timestamp = int(time.time())

# 1. Base32 சரத்தை இயல்பாக்கி '=' பேடிங் எழுத்துக்களைச் சேர்க்கவும்
normalized_secret = secret_base32.replace(" ", "").upper()
padding_needed = (8 - len(normalized_secret) % 8) % 8
normalized_secret += "=" * padding_needed
key_bytes = base64.b32decode(normalized_secret)

# 2. 64-பிட் big-endian நேர-படி கவுண்டர் T-ஐக் கணக்கிடவும்
time_counter = timestamp // step
time_bytes = struct.pack(">Q", time_counter)  # 8 bytes big-endian unsigned long long

# 3. HMAC-SHA1 டைஜெஸ்ட்டைக் கணக்கிடவும் (20 பைட்டுகள்)
hmac_digest = hmac.new(key_bytes, time_bytes, hashlib.sha1).digest()

# 4. டைனமிக் ட்ரங்க்கேஷன் செயல்படுத்தவும்
offset = hmac_digest[-1] & 0x0F  # 20வது பைட்டின் கீழ் 4 பிட்கள்
# ஆஃப்செட்டில் உள்ள 4 பைட்டுகளை அன்-பேக் செய்து MSB சைன் பிட்டை நீக்கவும்
binary_code = struct.unpack(">I", hmac_digest[offset : offset + 4])[0] & 0x7FFFFFFF

# 5. மாடுலோ கணக்கீடு மற்றும் பூஜ்ஜிய நிரப்புதல் வடிவமைப்பு
otp_code = binary_code % (10 ** digits)
return str(otp_code).zfill(digits)

if name == “main”: test_secret = “JBSWY3DPEHPK3PXP” print(f”உருவாக்கப்பட்ட TOTP குறியீடு: {generate_totp(test_secret)}”)

04. இயங்கக்கூடிய குறியீடு 2: JavaScript & Node.js Crypto

Node.js சர்வர் சூழல்களுக்கான தூய JavaScript செயல்படுத்தல், சொந்த crypto.createHmac-ஐப் பயன்படுத்துகிறது:

totp_node.js Node.js சொந்த Crypto
const crypto = require('crypto');

// தூய JavaScript-ல் RFC 4648 Base32 டிகோடர் function base32Decode(base32Str) { const alphabet = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ234567’; const cleaned = base32Str.replace(/=+$/, ”).toUpperCase().replace(/\s+/g, ”); let bits = 0, value = 0, index = 0; const output = new Uint8Array(Math.floor((cleaned.length * 5) / 8));

for (let i = 0; i < cleaned.length; i++) { const val = alphabet.indexOf(cleaned[i]); if (val === -1) continue; value = (value << 5) | val; bits += 5; if (bits >= 8) { output[index++] = (value >>> (bits - 8)) & 255; bits -= 8; } } return Buffer.from(output.buffer, 0, index); }

function generateTOTP(secretBase32, timestamp = Math.floor(Date.now() / 1000), step = 30, digits = 6) { const key = base32Decode(secretBase32); const counter = Math.floor(timestamp / step);

// Big-Endian வடிவத்தில் 8-பைட் இடையகத்தை ஒதுக்கவும் const buffer = Buffer.alloc(8); buffer.writeBigUInt64BE(BigInt(counter), 0);

// HMAC-SHA1 கணக்கீடு const hmac = crypto.createHmac(‘sha1’, key).update(buffer).digest();

// டைனமிக் ட்ரங்க்கேஷன் const offset = hmac[hmac.length - 1] & 0x0f; const binary = ((hmac[offset] & 0x7f) << 24) | ((hmac[offset + 1] & 0xff) << 16) | ((hmac[offset + 2] & 0xff) << 8) | (hmac[offset + 3] & 0xff);

const otp = binary % (10 ** digits); return otp.toString().padStart(digits, ‘0’); }

console.log(“கணக்கிடப்பட்ட TOTP:”, generateTOTP(“JBSWY3DPEHPK3PXP”));

W3C Web Crypto API வழியாக உலாவி கிளையண்ட்-பக்க செயல்படுத்தல்:

100% ஆஃப்லைன் பாதுகாப்பை விரும்பும் நவீன வலைப் பயன்பாடுகளுக்கு (2FA-Tool-ஐ இயக்கும் கட்டமைப்பு), W3C Web Crypto API வெளிப்புற npm தொகுப்புகள் எதுவும் இல்லாமல் நேரடியாக உலாவி சாண்ட்பாக்ஸில் வன்பொருள்-முடுக்கப்பட்ட கிரிப்டோகிராஃபிக் செயல்பாடுகளை வழங்குகிறது:

webcrypto_totp.js உலாவி W3C Web Crypto API
async function generateBrowserTOTP(secretBase32, timestamp = Math.floor(Date.now() / 1000)) {
  const keyBytes = base32Decode(secretBase32);
  const counter = Math.floor(timestamp / 30);

// 1. மூல ரகசிய விசையை SubtleCrypto-வில் இறக்குமதி செய்யவும் const cryptoKey = await window.crypto.subtle.importKey( “raw”, keyBytes, { name: “HMAC”, hash: { name: “SHA-1” } }, false, [“sign”] );

// 2. 8-பைட் Big-Endian கவுண்டர் இடையகத்தை குறியாக்கம் செய்யவும் const buffer = new ArrayBuffer(8); const view = new DataView(buffer); view.setBigUint64(0, BigInt(counter), false); // false = Big-Endian

// 3. கிரிப்டோகிராஃபிக் HMAC கையொப்பமிடுதல் const signature = await window.crypto.subtle.sign(“HMAC”, cryptoKey, buffer); const hmacResult = new Uint8Array(signature);

// 4. டைனமிக் ட்ரங்க்கேஷன் const offset = hmacResult[hmacResult.length - 1] & 0x0f; const binary = ((hmacResult[offset] & 0x7f) << 24) | ((hmacResult[offset + 1] & 0xff) << 16) | ((hmacResult[offset + 2] & 0xff) << 8) | (hmacResult[offset + 3] & 0xff);

const otp = binary % 1000000; return otp.toString().padStart(6, ‘0’); }

05. இயங்கக்கூடிய குறியீடு 3: தயாரிப்பு தர Golang (Go)

அதிவேக மைக்ரோ சர்வீஸ்கள் Go-வின் நம்பகமான நிலையான நூலகத்திலிருந்து அதிக பலனைப் பெறுகின்றன:

totp.go Go 1.20+ நிலையான நூலகம்
package main

import ( “crypto/hmac” “crypto/sha1” “encoding/base32” “encoding/binary” “fmt” “math” “strings” “time” )

// GenerateTOTP நிலையான RFC 6238 நேர அடிப்படையிலான டோக்கன்களைக் கணக்கிடுகிறது func GenerateTOTP(secretBase32 string, timestamp int64, step int64, digits int) (string, error) { // 1. Base32 விதையைச் சுத்தப்படுத்தி டிகோட் செய்யவும் cleaned := strings.ToUpper(strings.ReplaceAll(secretBase32, ” ”, "")) key, err := base32.StdEncoding.WithPadding(base32.NoPadding).DecodeString(cleaned) if err != nil { key, err = base32.StdEncoding.DecodeString(cleaned) if err != nil { return "", err } }

// 2. 64-பிட் Big-Endian நேர-படி கவுண்டரை குறியாக்கம் செய்யவும்
counter := uint64(timestamp / step)
buf := make([]byte, 8)
binary.BigEndian.PutUint64(buf, counter)

// 3. HMAC-SHA1 கணக்கீடு
mac := hmac.New(sha1.New, key)
mac.Write(buf)
hash := mac.Sum(nil)

// 4. டைனமிக் ட்ரங்க்கேஷன்
offset := hash[len(hash)-1] &amp; 0x0f
binaryCode := binary.BigEndian.Uint32(hash[offset:offset+4]) &amp; 0x7fffffff

// 5. மாடுலோ கணக்கீடு
mod := uint32(math.Pow10(digits))
otp := binaryCode % mod

format := fmt.Sprintf("%%0%dd", digits)
return fmt.Sprintf(format, otp), nil

}

func main() { code, err := GenerateTOTP(“JBSWY3DPEHPK3PXP”, time.Now().Unix(), 30, 6) if err != nil { panic(err) } fmt.Printf(“Golang கணக்கிட்ட TOTP: %s\n”, code) }

06. RFC 6238 இணைப்பு B சோதனை வெக்டார்கள் சரிபார்ப்பு

தரநிலைக்கு இணங்குவதை நிரூபிக்க, ஒவ்வொரு கிரிப்டோகிராஃபிக் செயல்பாடும் IETF RFC 6238 இணைப்பு B-ல் வெளியிடப்பட்ட அதிகாரப்பூர்வ சோதனை வெக்டார்களுக்கு எதிராகச் சரிபார்க்கப்பட வேண்டும்.

அதிகாரப்பூர்வ சோதனைத் தொகுப்பு "12345678901234567890" (20 பைட்டுகள்) என்ற ASCII ரகசியத்தைப் பயன்படுத்துகிறது; இது Base32-ல் பின்வருமாறு குறியாக்கம் செய்யப்படுகிறது:
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ (30 வினாடி படிகளுடன் 8-இலக்க வெளியீடுகளுக்கு மதிப்பீடு செய்யப்பட்டது):

Unix சகாப்த நேரமுத்திரை UTC தேதி & நேரம் RFC அதிகாரப்பூர்வ எதிர்பார்க்கப்படும் குறியீடு செயல்படுத்தல் முடிவு
59 1970-01-01 00:00:59 94287082 ✓ தேர்ச்சி (சரியான பொருத்தம்)
1111111109 2005-03-18 01:58:29 07081804 ✓ தேர்ச்சி (சரியான பொருத்தம்)
1111111111 2005-03-18 01:58:31 14050471 ✓ தேர்ச்சி (சரியான பொருத்தம்)
1234567890 2009-02-13 23:31:30 89005924 ✓ தேர்ச்சி (சரியான பொருத்தம்)
2000000000 2033-05-18 03:33:20 69279037 ✓ தேர்ச்சி (சரியான பொருத்தம்)

07. தயாரிப்பு பொறியியல்: நேர விலகல், ரீப்ளே தடுப்பு மற்றும் வரம்புகள்

உயர் கிடைக்கும் தன்மை கொண்ட நிறுவன அங்கீகார அமைப்புகளில் TOTP சரிபார்ப்பை அமைக்கும் போது, மூன்று பாதுகாப்புத் தேவைகள் கட்டாயமாக நடைமுறைப்படுத்தப்பட வேண்டும்:

விதி 1 கடிகார விலகல் சகிப்புத்தன்மை சாளரம்

மொபைல் சாதனங்களில் ஏற்படும் சிறிய கடிகார முரண்பாடுகள் காரணமாக, சர்வர்கள் [T - 1, T, T + 1] சாளரத்தை மதிப்பீடு செய்ய வேண்டும் (முந்தைய 30 வினாடிகள், தற்போதைய 30 வினாடிகள் மற்றும் அடுத்த 30 வினாடிகளைச் சரிபார்த்தல்). சாளரத்தை $\pm 1$ படிக்கு மேல் விரிவுபடுத்த வேண்டாம்; ஏனெனில் ஒவ்வொரு கூடுதல் படியும் ரீப்ளே தாக்குதல் மேற்பரப்பை 30 வினாடிகள் விரிவுபடுத்துகிறது.

விதி 2 டோக்கனை ஒருமுறை மட்டுமே பயன்படுத்துதல் (Anti-Replay)

ஒரு டோக்கன் வெற்றிகரமாகப் பயன்படுத்தப்பட்டவுடன் உடனடியாக செல்லாததாக்கப்பட வேண்டும். Last_Verified_Time_Step-ஐ Redis அல்லது நினைவக கேஷில் சேமிக்கவும். ஒரு கிளையண்ட் அதே 30-வினாடி சாளரத்திற்குள் அதே டோக்கனைச் சமர்ப்பிக்க முயற்சித்தால், மேன்-இன்-தி-மிடில் ரீப்ளே தாக்குதல்களை நடுநிலையாக்கக் கோரிக்கையை நிராகரிக்கவும்.

விதி 3 புரூட்-ஃபோர்ஸ் வீதக் கட்டுப்பாடு & மாறிலி-நேர ஒப்பீடு

6-இலக்க குறியீடுகள் 1,000,000 சேர்க்கைகளை மட்டுமே கொண்டிருப்பதால், வரம்பற்ற இறுதிப்புள்ளிகள் விரைவாக புரூட்-ஃபோர்ஸ் செய்யப்படலாம். தொடர்ச்சியாக 3 தோல்விகளுக்குப் பிறகு முற்போக்கான தாமதங்கள் மற்றும் கணக்கு முடக்கங்களைச் செயல்படுத்தவும். குறியீட்டில், பக்க-சேனல் நேரப் பகுப்பாய்வைத் தடுக்க நிலையான-நேர சமத்துவச் செயல்பாடுகளைப் பயன்படுத்தி ஒப்பீடுகளைச் செய்யவும் (எ.கா: Go-வில் crypto/subtle.ConstantTimeCompare அல்லது Node.js-ல் crypto.timingSafeEqual).

08. அடிக்கடி கேட்கப்படும் கேள்விகள் (FAQ)

கே1: SHA-1 கிரிப்டோகிராஃபிக் ரீதியாக உடைந்திருந்தாலும், TOTP ஏன் இன்னும் முன்னிருப்பாக HMAC-SHA1-ஐப் பயன்படுத்துகிறது? ▼

மூல SHA-1 மீதான கோட்பாட்டு மோதல் தாக்குதல்கள் HMAC அமைப்பை (RFC 2104) பாதிக்காது. HMAC முறையில், அடிப்படை ஹாஷ் செயல்பாடு உள் மற்றும் வெளிப்புற ரகசிய விசைகளுக்குள் பொதிந்துள்ளது, இது மோதல் அடிப்படையிலான தாக்குதல்களை நடுநிலையாக்குகிறது. இன்றுவரை, 2FA-வுக்கு HMAC-SHA1 பாதுகாப்பானது. மேலும், கூடுதல் பாதுகாப்பு தேவைப்பட்டால் RFC 6238 முழுமையாக HMAC-SHA256 மற்றும் HMAC-SHA512-ஐ ஆதரிக்கிறது.

கே2: நேர மண்டலங்கள் அல்லது பகல் சேமிப்பு நேரம் (DST) TOTP ஒத்திசைவைப் பாதிக்குமா? ▼

இல்லை. Unix epoch நேரம் என்பது 1970-01-01 00:00:00 UTC முதல் கடந்த வினாடிகள் என வரையறுக்கப்படுகிறது. இது நேர மண்டலங்கள், லீப் வினாடிகள் மற்றும் பகல் சேமிப்பு நேர மாற்றங்களிலிருந்து முற்றிலும் விடுபட்டது. எந்தவொரு துல்லியமான தருணத்திலும், டோக்கியோவில் உள்ள ஒரு சர்வரும் சென்னையில் உள்ள ஒரு ஸ்மார்ட்போனும் ஒரே மாதிரியான முழு எண் நேரமுத்திரையைக் கொண்டிருக்கும்.

கே3: Steam Guard-ன் 5-எழுத்து அங்கீகாரம் RFC 6238-லிருந்து எவ்வாறு வேறுபடுகிறது? ▼

Steam Guard என்பது RFC 6238-ஐ அடிப்படையாகக் கொண்ட ஒரு பிரத்யேக மாறுபாடாகும். இது அதே 30-வினாடி நேர-படி மற்றும் HMAC-SHA1 கணக்கீட்டைப் பயன்படுத்துகிறது; ஆனால் இறுதி குறைப்பு கட்டத்தில், பிரித்தெடுக்கப்பட்ட முழு எண்ணை ஒரு தனிப்பயன் 26-எழுத்துகள் கொண்ட வரிசையின் (23456789BCDFGHJKMNPQRTVWXY) மூலம் வரைபடமாக்கி 5-எழுத்து சரத்தை உருவாக்குகிறது.

RFC 6238 இணக்கமானது · W3C Web Crypto API கிளையண்ட்-பக்க கணக்கீடு

100% வாடிக்கையாளர்-பக்க நேரடி TOTP குறியீடு உருவாக்கத்தை அனுபவிக்கவும்

2FA-Tool இந்த துல்லியமான கிரிப்டோகிராஃபிக் பைப்லைனை உங்கள் உலாவியிலேயே நேரடியாக W3C Web Crypto API மூலம் செயல்படுத்துகிறது. பூஜ்ஜிய சர்வர் பரிமாற்றம், பூஜ்ஜிய டோக்கன் சேமிப்பு, உடனடி சரிபார்ப்பு.