Dec 14, 2008

Υπογράφοντας XML έγγραφα με το πρότυπο XML Signatures

Για τις ανάγκες του έργου κρυπτογράφησης εγγράφων με τη βοήθεια των καρτών του ΣΥΖΕΥΞΙΣ (http://serafeimk.blogspot.com/2008/11/oracle-xml-parser-xerces-xalan-oracle.html) χρειάστηκε να εξερευνήσω τις διαθέσιμες βιβλιοθήκες, προκειμένου να καταστεί εφικτή η ψηφιακή υπογραφή και επαλήθευση αυτής σε XML κείμενα. Το διαθέσιμο πρότυπο από το W3C είναι το XML Signatures, που περιγράφεται στο http://www.w3.org/Signature/

  1. Μια πρώτη επιλογή αποτελεί το project XML Security του Apache (http://santuario.apache.org/) που προσφέρει την υποστήριξη για το πρότυπο των υπογραφών καθώς και επιπλέον δυνατότητες για κρυπτογράφηση ευαίσθητων τμημάτων ενός εγγράφου XML.
  2. Μια δεύτερη επιλογή αποτελούν Security Developer Tools της Oracle (http://www.oracle.com/technology/products/id_mgmt/osdt/index.html) που απαρτίζουν στην ουσία τις βιβλιοθήκες της Phaos που περιήλθαν στην κατοχή της Oracle έπειτα από την εξαγορά. Οι βιβλιοθήκες της Phaos καλύπτουν διάφορες ανάγκες κρυπτογράφησης αρχείων XML, XML υπογραφών, κρυπτογράφησης ηλεκτρονικού ταχυδρομείου, Web Services, SAML, το Liberty SDK και πολλά άλλα, ενώ ένας εξαιρετικά αναλυτικός κατάλογος παραδειγμάτων (samples) βρίσκεται στο http://www.oracle.com/technology/sample_code/products/id_mgmt/security-developer-tools/index.html Η χρησιμοποίηση των βιβλιοθηκών είναι εύκολη υπόθεση στον JDeveloper και βρίσκονται στον κατάλογο $JDEV_HOME/jlib και ξεκινούν με το πρόθεμα osdt_*

Ως βιβλιοθήκες μου φάνηκαν πιο παραγωγικές και λιγότερο φλύαρες από αυτές του Apache, με μια παρατήρηση: όλες οι βασικές κλάσεις για τα κλειδιά (private/public) ή για τα ηλεκτρονικά πιστοποιητικά (certificates) δεν προέρχονται από τα standard Java πακέτα ή artifacts (π.χ. java.security.PublicKey) αλλά απεναντίας είναι ορισμένες μέσα στο πλαίσιο της Oracle, σε νέες, αυτόνομες κλάσεις. Αυτό έχει σημασία αν χρειαστεί κάποιος να διασυνδέσει τον κώδικα του με κώδικα πιστοποιητικών άλλης υλοποίησης. Προφανώς για να τις χρησιμοποιήσει κάποιος, θα πρέπει να έχει και την αντίστοιχή άδεια κτήσης του Oracle Application Server ή του Oracle Identity Management.
  1. Τέλος, με την έλευση του JDK 6, ανάλογες δυνατότητες έχουν προστεθεί στον πυρήνα της γλώσσας (http://java.sun.com/javase/6/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html), γεγονός όμως που μας αναγκάζει να έχουμε το περιβάλλον εκτέλεσης σε αυτήν την έκδοση ή ανώτερη.

No comments: