Δείτε το βίντεο του μαθήματος: Ασφάλεια Πρακτόρων AI με Κρυπτογραφικές Αποδείξεις
(Το βίντεο του μαθήματος και το μικρογραφία θα προστεθούν από την ομάδα περιεχομένου της Microsoft μετά τη συγχώνευση, σύμφωνα με το πρότυπο των μαθημάτων 14 / 15.)
Αυτό το μάθημα θα καλύψει:
Μετά την ολοκλήρωση αυτού του μαθήματος, θα γνωρίζετε πώς να:
Φανταστείτε ότι έχετε αναπτύξει έναν πράκτορα AI για την Contoso Travel. Ο πράκτορας διαβάζει αιτήματα πελατών, καλεί ένα API πτήσεων για να βρει επιλογές και κλείνει θέσεις εκ μέρους του πελάτη. Το προηγούμενο τρίμηνο, ο πράκτορας επεξεργάστηκε 50.000 κρατήσεις.
Σήμερα φτάνει ένας ελεγκτής. Κάνει μια απλή ερώτηση: “Δείξτε μου τι έκανε ο πράκτοράς σας.”
Παραδίδετε τα αρχεία καταγραφής σας. Ο ελεγκτής τα εξετάζει και ρωτά την πιο δύσκολη ερώτηση: “Πώς ξέρω ότι αυτά τα αρχεία δεν έχουν τροποποιηθεί;”
Αυτό είναι το πρόβλημα της ιχνηλασίας ελέγχου. Η περισσότερη ανάπτυξη πρακτόρων σήμερα στηρίζεται σε:
Καμία από αυτές δεν μπορεί να απαντήσει στο ερώτημα του ελεγκτή χωρίς να απαιτείται εμπιστοσύνη σε κάποιον (εσάς, τον πάροχο του cloud, τον προμηθευτή της βάσης δεδομένων). Για εσωτερική χρήση, αυτή η εμπιστοσύνη είναι συχνά αποδεκτή. Για ρυθμιζόμενα φορτία εργασίας (χρηματοοικονομικά, υγειονομική περίθαλψη, οτιδήποτε υπόκειται στον EU AI Act), δεν είναι.
Οι κρυπτογραφικές αποδείξεις λύνουν αυτό το πρόβλημα καθιστώντας κάθε ενέργεια πράκτορα ανεξάρτητα επαληθεύσιμη. Ο ελεγκτής δεν χρειάζεται να σας εμπιστευτεί. Χρειάζεται μόνο το δημόσιο κλειδί σας και την ίδια την απόδειξη.
Μια απόδειξη είναι ένα αντικείμενο JSON που καταγράφει τι έκανε ένας πράκτορας, υπογεγραμμένο με μια ψηφιακή υπογραφή.
flowchart LR
A[Ο πράκτορας καλεί ένα εργαλείο] --> B[Δημιουργία φορτίου αποδείξεων]
B --> C[Κανoνικοποίηση JSON RFC 8785]
C --> D[Κατακερματισμός SHA-256]
D --> E[Υπογραφή Ed25519]
E --> F[Απόδειξη με υπογραφή]
F --> G[Ο ελεγκτής επαληθεύει εκτός σύνδεσης]
G --> H{Η υπογραφή είναι έγκυρη;}
H -- yes --> I[Απόδειξη με δυνατότητα ανίχνευσης παραποίησης]
H -- no --> J[Απόδειξη απορρίφθηκε]
Μια ελάχιστη απόδειξη φαίνεται έτσι:
{
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": "sha256:a3f9c1...",
"result_hash": "sha256:7b2e1d...",
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 47,
"previous_receipt_hash": "sha256:9d4e6a...",
"signature": {
"alg": "EdDSA",
"sig": "c5af83...",
"public_key": "8f3b2c..."
}
}
Τρεις ιδιότητες κάνουν τη δουλειά:
Η υπογραφή. Η απόδειξη υπογράφεται από την πύλη του πράκτορα χρησιμοποιώντας ένα ιδιωτικό κλειδί Ed25519. Οποιοσδήποτε με το αντίστοιχο δημόσιο κλειδί μπορεί να επαληθεύσει την υπογραφή εκτός σύνδεσης. Η παραποίηση οποιουδήποτε πεδίου καθιστά την υπογραφή άκυρη.
Κανονικοποιημένη κωδικοποίηση. Πριν την υπογραφή, η απόδειξη σειριοποιείται χρησιμοποιώντας το JSON Canonicalization Scheme (JCS, RFC 8785). Αυτό εξασφαλίζει ότι δύο υλοποιήσεις που παράγουν την ίδια λογική απόδειξη παράγουν ταυτόσημη έξοδο byte προς byte. Χωρίς κανονικοποίηση, διαφορετικοί σειριοποιητές JSON θα παρήγαγαν διαφορετικές υπογραφές για το ίδιο περιεχόμενο.
Αλυσιδωτός κατακερματισμός. Το πεδίο previous_receipt_hash συνδέει κάθε απόδειξη με την προηγούμενη. Η αφαίρεση ή αναδιάταξη μιας απόδειξης σπάει κάθε απόδειξη που ακολουθεί. Η παραποίηση γίνεται ορατή σε επίπεδο αλυσίδας ακόμα και αν οι μεμονωμένες υπογραφές παρακαμφθούν.
Μαζί αυτές οι ιδιότητες παρέχουν τρεις εγγυήσεις:
Δεν χρειάζεστε κάποια ειδική βιβλιοθήκη για να δημιουργήσετε μια απόδειξη. Οι κρυπτογραφικές πρωτόγονες λειτουργίες είναι ευρέως διαθέσιμες και η λογική είναι μερικές δεκάδες γραμμές Python.
Οι πρακτικές ασκήσεις στο code_samples/18-signed-receipts.ipynb οδηγούν σε όλη τη ροή. Η περίληψη:
import json
import hashlib
import base64
from nacl import signing
from jcs import canonicalize # RFC 8785 κανονικό JSON
def b64url_nopad(data: bytes) -> str:
return base64.urlsafe_b64encode(data).decode("ascii").rstrip("=")
def sha256_canonical(obj) -> str:
"""SHA-256 of a Python object's JCS-canonical JSON form."""
return f"sha256:{hashlib.sha256(canonicalize(obj)).hexdigest()}"
# Δημιουργήστε ή φορτώστε ένα κλειδί υπογραφής (σε παραγωγή, αποθηκεύστε το σε θησαυροφυλάκιο κλειδιών)
signing_key = signing.SigningKey.generate()
verify_key = signing_key.verify_key
# Δημιουργήστε το φορτίο απόδειξης (χωρίς υπογραφή ακόμα)
tool_args = {"origin": "SYD", "destination": "LAX"}
tool_result = [{"flight": "QF11", "price": 1850, "stops": 0}]
payload = {
"type": "agent.tool_call.v1",
"agent_id": "contoso-travel-bot",
"tool_name": "lookup_flights",
"tool_args_hash": sha256_canonical(tool_args),
"result_hash": sha256_canonical(tool_result),
"policy_id": "contoso-travel-policy-v3",
"timestamp": "2026-04-25T14:30:00Z",
"sequence": 0,
"previous_receipt_hash": None,
}
# Κανονικοποιήστε, δημιουργήστε κατακερματισμό, υπογράψτε.
canonical_bytes = canonicalize(payload)
message_hash = hashlib.sha256(canonical_bytes).digest()
signature_bytes = signing_key.sign(message_hash).signature
# Επισυνάψτε ένα δομημένο αντικείμενο υπογραφής.
receipt = {
**payload,
"signature": {
"alg": "EdDSA",
"sig": b64url_nopad(signature_bytes),
"public_key": b64url_nopad(bytes(verify_key)),
},
}
Αυτή είναι όλη η διαδικασία υπογραφής. Οι ασκήσεις στο notebook περνούν κάθε βήμα.
Η επαλήθευση είναι η αντίστροφη λειτουργία:
import base64
import hashlib
from nacl import signing
from nacl.exceptions import BadSignatureError
from jcs import canonicalize
def b64url_decode(s: str) -> bytes:
padding = "=" * ((4 - len(s) % 4) % 4)
return base64.urlsafe_b64decode(s + padding)
def verify_receipt(receipt: dict) -> bool:
# Η υπογραφή είναι ένα δομημένο αντικείμενο: {"alg", "sig", "public_key"}.
sig_obj = receipt.get("signature")
if not sig_obj or sig_obj.get("alg") != "EdDSA":
return False
# Ανακατασκευάστε το φορτίο που υπογράφηκε πραγματικά (όλα εκτός από την υπογραφή).
payload = {k: v for k, v in receipt.items() if k != "signature"}
canonical_bytes = canonicalize(payload)
message_hash = hashlib.sha256(canonical_bytes).digest()
try:
verify_key = signing.VerifyKey(b64url_decode(sig_obj["public_key"]))
verify_key.verify(message_hash, b64url_decode(sig_obj["sig"]))
return True
except BadSignatureError:
return False
Αυτή η συνάρτηση παίρνει μια απόδειξη και επιστρέφει True αν η υπογραφή είναι έγκυρη, False διαφορετικά. Δεν υπάρχει κλήση δικτύου, δεν υπάρχει εξάρτηση υπηρεσίας, δεν απαιτείται εμπιστοσύνη σε τρίτο μέρος.
Για να δείτε τον εντοπισμό παραποίησης σε δράση, το notebook περνάει από:
tool_args_hash.Αυτή είναι η πρακτική επίδειξη ότι οι αποδείξεις είναι εντοπιστικές παραποίησης: οποιαδήποτε τροποποίηση, έστω και μικρή, σπάει την υπογραφή.
Μια υπογεγραμμένη απόδειξη προστατεύει μια ενέργεια. Μια αλυσίδα αποδείξεων προστατεύει μια ακολουθία.
flowchart LR
R0[Απόδειξη 0<br/>γένεση] --> R1[Απόδειξη 1]
R1 --> R2[Απόδειξη 2]
R2 --> R3[Απόδειξη 3]
R1 -. previous_receipt_hash .-> R0
R2 -. previous_receipt_hash .-> R1
R3 -. previous_receipt_hash .-> R2
Κάθε απόδειξη καταγράφει το κατακερματισμό της προηγούμενης απόδειξης. Για να αφαιρεθεί η απόδειξη 2 αθόρυβα, ένας επιτιθέμενος θα χρειαστεί είτε:
previous_receipt_hash της απόδειξης 3 (σπάει την υπογραφή της απόδειξης 3), ΉΑν το ιδιωτικό κλειδί βρίσκεται σε θωρακισμένο αποθηκευτικό χώρο υλικού και δημοσιεύετε το δημόσιο κλειδί με κάθε απόδειξη, καμία από αυτές τις επιθέσεις δεν είναι εφικτή χωρίς ανίχνευση.
Το notebook δείχνει:
previous_receipt_hash κάθε απόδειξης ταιριάζει με τον πραγματικό κατακερματισμό της προηγούμενης.Έτσι παράγετε μια ιχνηλασία ελέγχου που ένας εξωτερικός ελεγκτής μπορεί να επαληθεύσει χωρίς να σας εμπιστεύεται.
Αυτή είναι η πιο σημαντική ενότητα του μαθήματος. Οι αποδείξεις είναι ισχυρές αλλά η ισχύς τους είναι περιορισμένη.
Οι αποδείξεις αποδεικνύουν τρία πράγματα:
Οι αποδείξεις ΔΕΝ αποδεικνύουν:
policy_id αξιολογήθηκε πραγματικά ή ότι θα επέτρεπε αυτή την ενέργεια αν είχε ελεγχθεί. Η απόδειξη καταγράφει τι ισχυρίστηκε, όχι τι επιβλήθηκε.Αυτό το όριο έχει σημασία για δύο λόγους:
Ένα κοινό λάθος είναι να υποθέσετε ότι “έχουμε αποδείξεις” σημαίνει “είμαστε κυβερνημένοι.” Δεν σημαίνει. Οι αποδείξεις είναι η βάση. Η διακυβέρνηση είναι το σύστημα που χτίζετε από πάνω.
Το στοιχείο 3 πιο πάνω αξίζει τη δική του ενότητα: μια απόδειξη ενέργειας λέει “αυτό το κλειδί υπέγραψε αυτό το περιεχόμενο,” ποτέ “ένας άνθρωπος ενέκρινε αυτό.” Για ενέργειες υψηλού κινδύνου (επιστροφές χρημάτων, διαγραφές, μεταφορές χρημάτων), τα πλαίσια διακυβέρνησης απαιτούν όλο και περισσότερο ακριβώς αυτή τη δηλωμένη έγκριση, και μπορεί να παραχθεί με τα ίδια πρωτόγονα που ήδη δημιουργήσατε σε αυτό το μάθημα.
Το επόμενο notebook code_samples/human-authorization-receipts.ipynb προσθέτει ένα δεύτερο τύπο απόδειξης, human.approval.v1, στην ίδια μορφή φακέλου με τις αποδείξεις του μαθήματος (ένα τυποποιημένο φορτίο υπογεγραμμένο με Ed25519 πάνω στην κανονική SHA-256 του, με το αντικείμενο signature έξω από τα υπογεγραμμένα bytes). Ένας προβλεπόμενος υπογράφων υπογράφει την πλήρη κανονική ενέργεια και το αποτύπωμά της πριν την εκτέλεση· η απόδειξη ενέργειας του πράκτορα φέρει το ίδιο αποτύπωμα ενέργειας και ένα parent_approval_ref, το receipt_hash της έγκρισης, την ίδια συμβατική χρήση με το previous_receipt_hash στην αλυσίδα που φτιάξατε παραπάνω. Μια verify_chain διατρέχει και τα δύο αντικείμενα υπό ξεχωριστά μητρώα κλειδιών (κλειδιά εγκρίνοντα εναντίον κλειδιών πράκτορα), έτσι η διαδρομή στον κώδικα είναι κοινή αλλά οι αρχές ποτέ.
Η ιδιότητα που προσφέρει αυτό, διατυπωμένη με ακρίβεια: ο άνθρωπος ενέκρινε αυτή την ακριβή ενέργεια, και ο πράκτορας εκτέλεσε ακριβώς αυτή την εγκεκριμένη ενέργεια. Τα fixtures απόρριψης στο notebook είναι αυτά που κάνουν την ιδιότητα πραγματική αντί για υποστηριζόμενη:
Κάθε αποτυχία αρνείται με διαφορετικό λόγο, έτσι ένας ελεγκτής που διαβάζει μια απόρριψη μπορεί να πει εάν η αρχή έγινε παλαιά ή αν η εκτελεσθείσα ενέργεια άλλαξε. Ο κανόνας που διδάσκει το notebook: μια υπογεγραμμένη έγκριση δεν είναι η ίδια η αρχή. Η αρχή υπάρχει μόνο αν και οι δύο αποδείξεις εξακολουθούν να δεσμεύουν την ίδια κανονική ενέργεια κατά τον χρόνο εκτέλεσης. Η διαδρομή κοινής υπογραφής στο ίδιο Internet-Draft που ακολουθεί αυτό το μάθημα (draft-farley-acta-signed-receipts) είναι το υπό τυποποίηση σχήμα αυτού του προτύπου.
Ο κώδικας Python σε αυτό το μάθημα είναι σκόπιμα ελάχιστος ώστε να μπορείτε να διαβάσετε κάθε γραμμή και να κατανοήσετε ακριβώς τι συμβαίνει. Στη παραγωγή, έχετε δύο επιλογές:
Να χτίσετε απευθείας πάνω στις κρυπτογραφικές πρωτόγονες λειτουργίες. Οι 50 γραμμές που είδατε είναι επαρκείς για πολλές περιπτώσεις χρήσης. Οι PyNaCl (Ed25519) και το πακέτο jcs (κανονικό JSON) είναι καλά συντηρημένες και ελεγμένες βιβλιοθήκες.
Να χρησιμοποιήσετε μια βιβλιοθήκη αποδείξεων παραγωγής. Πολλά έργα ανοιχτού κώδικα υλοποιούν το ίδιο πρότυπο με επιπλέον χαρακτηριστικά (περιστροφή κλειδιών, παρτίδα επαλήθευσης, διανομή JWK Set, ενσωμάτωση με μηχανές πολιτικής):
draft-farley-acta-signed-receipts, αναθεώρηση 02) που βρίσκεται αυτή τη στιγμή στη διαδικασία τυποποίησης, με μια κοινή σουίτα συμμόρφωσης (agent-governance-testvectors) που ανεξάρτητες υλοποιήσεις επαληθεύουν διασταυρωμένα για ταυτόσημη κανονική έξοδο byte.protect-mcp (npm) και @veritasacta/verify (npm) παρέχουν υλοποίηση υπογραφής απόδειξης και εκτός σύνδεσης επαλήθευση με βάση Node, προορίζονται για το τύλιγμα οποιουδήποτε MCP server με ιχνηλάσιο ελέγχου ανίχνευσης παραποίησης, συμπεριλαμβανομένης ροής κρατημένης για κοινή υπογραφή όπου μια παύση δράσης εκπέμπει απόδειξη έγκρισης που δεσμεύεται στο αποτύπωμα δράσης (υποστηριζόμενο από WebAuthn στη ροή desktop), το ίδιο μοτίβο απόδειξης-έγκρισης με το ανθρώπινο-εξουσιοδότηση notebook παραπάνω.pip install nobulex) παρέχει το ίδιο μοτίβο υπογραφής Ed25519 + JCS σε Python με ενσωματώσεις LangChain και CrewAI, συμπεριλαμβανομένων δημοσιευμένων διανύσματος δοκιμών διασταυρούμενης επαλήθευσης και αντιστοίχισης συμμόρφωσης που συνέβαλε μέσω OWASP PR #2210.Η απόφαση μεταξύ απευθείας υλοποίησης και χρήσης βιβλιοθήκης μοιάζει με την απόφαση μεταξύ γραφής δικής σας βιβλιοθήκης JWT και χρήσης μιας ελεγμένης: και τα δύο είναι λογικά· η βιβλιοθήκη εξοικονομεί χρόνο και μειώνει την επιφάνεια ελέγχου· η προσέγγιση από το μηδέν σας αναγκάζει να κατανοήσετε κάθε πρωτόγονο. Αυτό το μάθημα διδάσκει την προσέγγιση από μηδέν ώστε να έχετε τη βάση για οποιαδήποτε επιλογή.
Ελέγξτε την κατανόησή σας πριν προχωρήσετε στην πρακτική άσκηση.
1. Μια απόδειξη υπογράφεται με το ιδιωτικό κλειδί Ed25519 του πράκτορα. Ο ελεγκτής έχει μόνο το δημόσιο κλειδί. Μπορεί ο ελεγκτής να επαληθεύσει την απόδειξη εκτός σύνδεσης;
2. Ένας επιτιθέμενος τροποποιεί το πεδίο policy_id μιας απόδειξης για να ισχυριστεί ότι κυβερνιόταν από μια πιο ελαστική πολιτική. Η υπογραφή έγινε πάνω στο αρχικό φορτίο. Τι συμβαίνει κατά την επαλήθευση;
3. Γιατί η απόδειξη περιλαμβάνει tool_args_hash και result_hash αντί για τα ακατέργαστα επιχειρήματα και το αποτέλεσμα;
4. Το πεδίο previous_receipt_hash συνδέει κάθε απόδειξη με την προηγούμενή της. Αν ένας επιτιθέμενος διαγράψει αθόρυβα μια απόδειξη από τη μέση μιας αλυσίδας, τι καθίσταται άκυρο;
5. Μια απόδειξη επαληθεύεται καθαρά. Αποδεικνύει αυτό ότι η ενέργεια του πράκτορα ήταν σωστή, λογική ή συμβατή με την πολιτική;
Ανοίξτε το code_samples/18-signed-receipts.ipynb και ολοκληρώστε και τις τέσσερις ενότητες:
Πρόκληση επιμήκυνσης 1: επεκτείνετε το σχήμα της απόδειξης με ένα επιπλέον πεδίο της επιλογής σας (π.χ. ένα αναγνωριστικό αιτήματος για ανίχνευση), ενημερώστε τη λογική υπογραφής κανονικά ώστε να το συμπεριλάβει, και επιβεβαιώστε ότι η απόδειξη εξακολουθεί να περνάει επαλήθευση. Έπειτα τροποποιήστε το πεδίο μετά την υπογραφή και επιβεβαιώστε ότι η επαλήθευση αποτυγχάνει. Αυτό σας αναγκάζει να κατανοήσετε πώς κάθε byte της κανονικής κωδικοποίησης συμβάλλει στην υπογραφή.
Πρόκληση επιμήκυνσης 2: κατακερματίστε SHA-256 δύο από τις αποδείξεις σας μαζί (συνενώστε τα κανονικά bytes τους σε μια ντετερμινιστική σειρά) και ενσωματώστε το αποτέλεσμα ως νέο πεδίο σε μια τρίτη απόδειξη πριν την υπογράψετε. Επαληθεύστε ότι και οι τρεις αποδείξεις εξακολουθούν να επαληθεύονται. Μόλις δημιουργήσατε μια απόδειξη ένταξης ενός βήματος: οποιοσδήποτε έχει την τρίτη απόδειξη μπορεί να αποδείξει ότι οι δύο πρώτες υπήρχαν τη στιγμή της υπογραφής, χωρίς την ανάγκη να αποκαλύψει το περιεχόμενό τους. Αυτό είναι το μοτίβο που χρησιμοποιούν οι αποδείξεις επιλεκτικής αποκάλυψης σε κλίμακα (δεσμεύσεις Merkle, RFC 6962).
Οι κρυπτογραφικές αποδείξεις δίνουν στους πράκτορες AI ένα ίχνος ελέγχου που είναι:
Δεν αποτελούν υποκατάστατο για επικύρωση εισόδου, επιβολή πολιτικής ή υποδομή ταυτότητας. Είναι η βάση για αυτά τα επίπεδα. Όταν αναπτύσσετε πράκτορες σε περιβάλλοντα με κανονισμούς, ροές εργασίας πολλαπλών οργανισμών ή όπου ένας μελλοντικός ελεγκτής δεν μπορεί να εμπιστευτεί εσάς, οι αποδείξεις είναι ο τρόπος που καθιστούν το ίχνος ελέγχου ειλικρινές.
Το πιο σημαντικό συμπέρασμα: οι αποδείξεις αποδεικνύουν ποιος είπε τι και πότε. Δεν αποδεικνύουν ότι αυτά που ειπώθηκαν ήταν αληθή ή σωστά. Κρατήστε αυτή τη διάκριση σφικτά. Είναι η διαφορά μεταξύ ενός ειλικρινούς συστήματος προέλευσης και ενός παραπλανητικού.
Όταν είστε έτοιμοι να προχωρήσετε από αυτό το μάθημα στην ανάπτυξη πρακτόρων που υπογράφουν αποδείξεις σε πραγματικό περιβάλλον:
https://your-org.example.com/.well-known/agent-keys.json.Ενταχθείτε στο Microsoft Foundry Discord για να συναντήσετε άλλους μαθητές, να παρακολουθήσετε ώρες γραφείου και να λάβετε απαντήσεις για τους Πράκτορες AI.
Αυτό το μάθημα καλύπτει την υπογραφή μεμονωμένης απόδειξης και αλυσιδωτές ακολουθίες κατακερματισμού. Οι ίδιες πρωτοπόρες τεχνικές συνθέτουν αρκετά πιο προχωρημένα μοτίβα που μπορεί να συναντήσετε καθώς ωριμάζει η διακυβέρνησή σας:
authorization_*) και μετα-εκτέλεσης (result_*) μισά με ανεξάρτητες υπογραφές, χρήσιμο όταν η απόφαση εξουσιοδότησης και το παρατηρούμενο αποτέλεσμα παράγονται από διαφορετικούς φορείς ή σε διαφορετικές χρονικές στιγμές. Αυτό προστίθεται επάνω στο μορφότυπο απόδειξης που διδάσκεται σε αυτό το μάθημα.result_hash. Τα πραγματικά φορτία είναι συχνά πιο πλούσια από ένα μοναδικό αποτέλεσμα κλήσης εργαλείου: προ-αποφασιστική αιτιολόγηση (πρόβλεψη μοντέλου, επιλογές που εξετάστηκαν, αποδείξεις και η πληρότητά τους, στάση ρίσκου, αλυσίδα ευθυνών, αποτέλεσμα ελέγχου) μπορούν όλα να ζουν μέσα στο φορτίο, σφραγισμένα με μια μόνο απόδειξη. Αυτό κρατά το μορφότυπο απόδειξης ελάχιστο ενώ επιτρέπει την εξέλιξη των σχημάτων φορτίου ανά τομέα.signature.alg μπορεί να έχει ML-DSA-65 (το επίσημο κβαντικό πρότυπο υπογραφής NIST) όταν χρειαστεί να μεταβείτε. Σχεδιάστε μια μεταβατική περίοδο όπου οι αποδείξεις υπογράφονται διπλά.Δημιουργία τοπικών Πρακτόρων AI
Αποποίηση ευθυνών: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη Co-op Translator. Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.