Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

SQL Server Encryption

Îåêßíçóå áðü ôï ìÝëïò it048. Τελευταία δημοσίευση από το μέλος spaceman στις 26-01-2011, 18:47. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  19-01-2011, 23:04 62520

    SQL Server Encryption

    Αυτό μπορώ να το χρησιμοποιήσω με Asp.net και να γίνεται το encryptio και decryption σε επίπεδο βάσης?

    http://dotnetslackers.com/articles/sql/IntroductionToSQLServerEncryptionAndSymmetricKeyEncryptionTutorial.aspx

  •  20-01-2011, 08:37 62527 σε απάντηση της 62520

    Απ: SQL Server Encryption

    κ α ν ο ν ι κ ό τ α τ α Cool


    Antonios Chatzipavlis

  •  20-01-2011, 20:42 62546 σε απάντηση της 62527

    Απ: SQL Server Encryption

    Μία βοήθεια για το πως θα γίνει αυτό?
  •  20-01-2011, 20:51 62547 σε απάντηση της 62546

    Απ: SQL Server Encryption

    Μια καλή τεχνική είναι για όλες τις CRUD λειτουργίες να φτιάξεις stored procedures η οποίες θα κάνουν το encryption στα δεδομένα σου και θα καλεις αυτές από την εφαρμογή σου. Όσο για το SELECT ένα view/function/stored proc που θα έκανε το decrypt θα ήταν αρκετό.


    Antonios Chatzipavlis

  •  20-01-2011, 21:37 62548 σε απάντηση της 62547

    Απ: SQL Server Encryption

    Όσον αφορά την ασφάλεια όμως αν κάποιος αποκτήσει πρόσβαση στον SQL Server έχοντας το symmetric key εκεί δε θα μπορέσει να κάνει decrypt τα δεδομένα

  •  20-01-2011, 22:44 62549 σε απάντηση της 62548

    Απ: SQL Server Encryption

    Πρόσβαση στον SQL Server έχουν οι admins και μόνο αυτοί. Για να αποκτήσει κάποιος πρόσβαση θα πρέπει κάποιος να του την δώσει σωστά?

    Και admin κάνουμε αυτόν ή αυτούς που εμπιστευόμαστε περισσότερο από τον ευατό μας. Εξάλλου δεν μπορεί κάποιος να είναι admin και να μην τον εμπιστευόμαστε σωστά?


    Antonios Chatzipavlis

  •  20-01-2011, 23:03 62550 σε απάντηση της 62549

    Απ: SQL Server Encryption

    Μιλάω για Hosted Περιβάλλον όπου φυσικά μόνο οι admins έχουν πρόσβαση. Εγώ εννοω αν κάποιος κανει hack τον SQL Server και πάρει τη βάση αν θα μπορέσει να αποκρυπτογραφήσει τα data

  •  21-01-2011, 18:00 62579 σε απάντηση της 62550

    Απ: SQL Server Encryption

    it048:

    Εγώ εννοω αν κάποιος κανει hack τον SQL Server και πάρει τη βάση αν θα μπορέσει να αποκρυπτογραφήσει τα data

    Για να μπορεσει καποιος να αποκρυπτογραφησει τα δεδομενα, θα πρεπει να αποκτησει ολα τα απαραιτητα κλειδια.
    Στο παραδειγμα που ανεφερες: dotnetslackers.com ..., εκτελουνται διεργασιες που δεν αναφερονται ρητα :
    1. Δημιουργειται database master key το οποιο προστατευεται/encrypted by password.  ** Επισης το database master key γινεται παραλληλα encrypted by service master key (default behavior of sql) και αποθηκευται/copy στην master database (this behavior can be altered though) **
    2. Δημιουργειται certificate το οποιο προστατευεται/encrypted απο το database master key.
    3. Δημιουργειται symmetric key το οποιο προστατευεται/encrypted απo το certificate.

    Σε αυτην την hierarchy, αν θελεις να απο/κρυπτογραφησεις δεδομενα θα πρεπει να ανοιξεις το symmetric key. Για να ανοιξεις το symmetric key θα πρεπει να χρησιμοποιησεις το certificate. Για να χρησιμοποιησεις το certificate θα πρεπει να ανοιξεις το database master key. Το database master key το ανοιγεις με το password ή εφοσον η default συμπεριφορα ειναι σε ισχυ, ΔΕΝ χρειαζεται να το ανοιξεις καθολου επειδη ο server το ανοιγει απο την κοπια που εχει αποθηκευμενη στην master database {στο παραδειγμα στο dotnetslackers δεν υπαρχει πουθενα OPEN MASTER KEY ....}.
    Το βασικο σημειο , στο αναφερομενο παραδειγμα, ειναι το database master key. Στο συγκεκριμενο παραδειγμα, για να μπορεσει καποιος {που εχει "μπει" στην βαση}  να αποκρυπτογραφησει τα δεδομενα θα πρεπει να μπορεσει να ανοιξει το database master key :
    1. Να βρει το password με το οποιο ειναι encrypted to database master key (σχετικα απιθανο): CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'this is the password for encrypt the database master key'
    ή
    2. Να δημιουργησει backup του database master key (σχετικα ευκολο, requires CONTROL permission on the database): BACKUP MASTER KEY TO FILE = 'path\temp\dbmasterkey' ENCRYPTION BY PASSWORD = 'I stole your database master key' (ο κακοβουλος χρηστης εχει elevated permissions, ο sql server ανοιγει το database key απο την κοπια που ειναι αποθηκευμενη στην master, το database key αποθηκευεται στο backup)


    Ετσι, αν ο κακοβουλος χρηστης, παρει την βαση κ το backup του database key, τοτε εχει αποκτησει ολα τα κλειδια:
    database master key : αποθηκευμενο στο backup key file
    certificate: stored in the database
    symmetric key: stored in the database
    και μπορει να αποκρυπτογραφησει τα δεδομενα.

    --ΗΤΗ--

  •  25-01-2011, 22:56 62691 σε απάντηση της 62579

    Απ: SQL Server Encryption

    Πολύ ενδιαφέρον όλο το παραπάνω, ευχαριστώ

    Οπότε πιστευεις ότι με αυτό τον τρόπο δεν θα έχω πρόβλημα. Εμένα με νοιάζει επειδή κάνω μία εφαρμογή με ιατρικά δεδομένα να μη μπορεί μετά κανείς να μου πει γιατί δεν έβαλες encryption και γενικά ασφάλεια στην εφαρμογή.

    Μπορώ βέβαια το  encryption να το κάνω και στην εφαρμογή απλά επειδή θέλω να μπορώ να κάνω search σε encrypted data με το like operator στο επίπεδο εφαρμογής είναι δύσκολο

  •  26-01-2011, 18:47 62709 σε απάντηση της 62691

    Απ: SQL Server Encryption


    Οπότε πιστευεις ότι με αυτό τον τρόπο δεν θα έχω πρόβλημα.

    Αν καποιος "αποκτησει προσβαση" στην βαση ενω δεν θα επρεπε, τοτε υπαρχει προβλημα το οποιο δεν λυνεται με encryption.
    Σε γενικες γραμμες, το encryption ΔΕΝ αντικαθιστα τo security/access στην βαση. Το encryption "προσθετει" ενα επιπλεον layer ασφαλειας στα δεδομενα
    :  μονο οσοι εχουν αδεια προσβασης στα δεδομενα κ μονο οσοι εχουν την αδεια να χρησιμοποιησουν τα κλειδια για αποκρυπτογραφηση (additional layer) μπορουν να διαβασουν τα πραγματικα δεδομενα.


    Ο ποιο "ασφαλης" τροπος για να κρυπτογραφησεις δεδομενα ειναι να χρησιμοποιησεις password για ενα κομματι της encryption hierarchy και αυτο το κομματι ΔΕΝ αποθηκευεται πουθενα.
    πχ. στο παραδειγμα του dotnetslackers,  αν αλλαξεις την default behavior του SQL, να μην αποθηκευει το database key στην master db,

    ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY

    τοτε ο μονος τροπος για να "ανοιξεις" το database key ειναι με χρηση του password.
    Admins, dbowners, other users που εχουν προσβαση στα δεδομενα αλλα ΔΕΝ γνωριζουν το password για το database key, ΔΕΝ μπορουν να τα αποκρυπτογραφησουν (επισης δεν μπορουν να παρουν backup του database key, να το τροποποιησουν κτλ)

    Ωστοσο, αλλαζοντας την default behavior, θυσιαζεις την ευκολια χρησης out of the box, επειδη καθε φορα που χρειαζεται να αποκρυπτογραφηθουν δεδομενα πρεπει να "δοθει/προσδιοριστει" το password οποτε η "δυσκολια της υλοποιησης" μεταφερεται στον τροπο με τον οποιο παρεχεις το password.


     θέλω να μπορώ να κάνω search σε encrypted data με το like operator

    Encryption και αναζητηση ειναι αντιφατικοι/αλληλοσυγκρουομενοι οροι. Για να μπορεσεις να κανεις αναζητηση μεσα στα δεδομενα θα πρεπει να τα αποκρυπτογραφησεις πρωτα (ολα) .
    Για μεγαλο ογκο δεδομενων σε περιβαλλον υψηλης χρησης, αυτο ισως να ειναι πρακτικα απαγορευτικο.
    Υπαρχουν καποια trick που χρησιμοποιουν indexes σε hashed data (εφοσον χρησιμοποιειται encryption σε επιπεδο στηλης/κελιου) αλλα αυτα τα trick μπορουν να χρησιμοποιηθουν μονο για exact matches (οχι για LIKE %..%)


    ...να μη μπορεί μετά κανείς να μου πει γιατί δεν έβαλες encryption και γενικά ασφάλεια στην εφαρμογή

    Σε καθε περιπτωση πρεπει να προσδιορισεις ποια δεδομενα (ιατρικοι φακελοι, ΑΦΜ etc) απαιτουν (βαση νομοθεσιας, απαιτηση πελατη, κοινης λογικης etc) επιπλεον προστασια και υπο/για ποιες συνθηκες (αν οι χρηστες εχουν προσβαση στα δεδομενα αλλα δεν θα πρεπει να μπορουν δουν καποια απο αυτα, αν η βαση βγει εκτος server etc).
    Το να εχεις encryption για να λες οτι εχεις encryption δεν ειναι λογος για να κρυπτογραφησεις τα δεδομενα.

    Τα παρακατω links παρεχουν πληροφοριες σχετικα με την κρυπτογραφηση στον SQL Server, διαφορετικους τροπους προσεγγισης υπο διαφορετικες συνθηκες και καποια trick για ταχυτερες αναζητησεις σε encrypted data (οχι ομως για ταχυτερες αναζητησεις LIKE %...% οι οποιες ειναι πρακτικα πολυ πολυ δυσκολες (εως ακατορθωτες) )

    http://msdn.microsoft.com/en-us/library/cc837966(v=sql.100).aspx
    http://blogs.msdn.com/b/raulga/archive/2006/03/11/549754.aspx

    --ΗΤΗ--

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems