IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

DECRYPTBYPASSPHRASE non déterministe


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut DECRYPTBYPASSPHRASE non déterministe
    Bonjour à tous,

    Je viens de constater quelque chose qui m'étonne. La fonction DECRYPTBYPASSPHRASE n'est pas déterministe, empêchant ainsi son utilisation dans une vue indexée par exemple.

    J'avoue être très surpris de cet état de fait et aimerait savoir si quelqu'un sait le pourquoi de la chose ? Autant pour ENCRYPTBYPASSPHRASE je le conçois parfaitement, autant pour DECRYPTBYPASSPHRASE c'est inquiétant car c'est une fonction de déchiffrage...

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    C'est parfaitement normal... Si vous connaissez l'historique du cassage de code par Turing à Bletchley, vous devriez savoir que la plus simple attaque pour déchiffrer est celle par analyse fréquentielle.

    Connaissant la fréquence des noms des personnes, vous pourriez en déterminer la clef !!!!

    Donc, SQL Server auto sale les cryptogramme de manière à éviter de casser le code.

    Néanmoins, il vous reste "allwaysEncrypted" qui supporte une méthode non salée....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Merci pour la réponse, mais je crois qu'on ne s'est pas compris. Que le chiffrement ne soit pas déterministe, j'en convient parfaitement (notamment pour la raison que tu cites).

    Mais le déchiffrement ?

    Néanmoins, il vous reste "allwaysEncrypted" qui supporte une méthode non salée....
    Malheureusement non. Always Encrypted n'est disponible qu'à partir de la version 2016 de SQL Server. Je suis actuellement bloqué sur une version 2012. Et je ne peux pas installer une version ultérieure car c'est dans le domaine de la santé (donc avec un hébergement agréé de santé) et que le serveur est bloqué sur Windows 2008r2 à cause des logiciels de supervision...

    Pourtant, j'ai déjà demandé des devis pour une monté en gamme. La temporalisation des données m'intéresse fortement par exemple !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Merci pour la réponse, mais je crois qu'on ne s'est pas compris. Que le chiffrement ne soit pas déterministe, j'en convient parfaitement (notamment pour la raison que tu cites).

    Mais le déchiffrement ?
    C'est pareil puis que la fonction d'entrée n'est pas déterministe, celle de sortie (fonction inverse) non plus, car il faut désaler. Elle ne dépend donc pas seulement du cryptogramme et de la clef mais d'un facteur complémentaire non présent en tant qu'argument de la fonction et donc susceptible de varier !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    C'est pareil puis que la fonction d'entrée n'est pas déterministe, celle de sortie (fonction inverse) non plus
    Euh... Ca c'est du n'importe quoi. Désolé de te le dire

    La fonction "inverse" peut très bien être déterministe alors que la fonction initiale ne l'est pas. Plutôt qu'un long discours, voici deux fonctions qui illustre mes propos :

    Exemple tout bête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE OR ALTER FUNCTION F(@Str VARCHAR(50)) RETURNS VARCHAR(54)
    AS BEGIN
       RETURN SUBSTRING(CONVERT(VARCHAR(50), HASHBYTES('MD5', CONVERT(VARCHAR(50), SYSDATETIME())), 1), 1 ,4) + @Str;
       END
    GO
    CREATE OR ALTER FUNCTION F_inv(@Str VARCHAR(50)) RETURNS VARCHAR(50)
    AS BEGIN
       RETURN SUBSTRING(@Str, 5, LEN(@Str) - 4);
    END

    f n'est pas déterministe (elle ajoute 4 caractères aléatoires), tandis que f_inv (qui retire les caractères) l'est !


    Citation Envoyé par SQLpro Voir le message
    , car il faut désaler. Elle ne dépend donc pas seulement du cryptogramme et de la clef mais d'un facteur complémentaire non présent en tant qu'argument de la fonction et donc susceptible de varier !
    Je pense tu ne t'es pas relu, car ce que tu dis implique :
    • qu'une chaîne encodée via ENCRYPTBYPASSPHRASE n'est garantie d'être déchiffrable que sur la base de données où elle a été chiffrée (l'aspect facteur complémentaire);
    • qu'une chaîne chiffrée peut demain ne plus être déchiffrable (car le facteur complémentaire est susceptible de varier) !

    Et heureusement que ni l'un ni l'autre n'est vrai !


    Je suis 100% d'accord pour dire que l'opération de salage créé de l'indéterminisme (et donc que l'opération de chiffrement soit non déterministe). Par contre, pour l'opération inverse non, car si c'était le cas, alors cela sous-entendrait que la valeur obtenue après déchiffrement puisse être différente de la valeur initiale ! D'où mon incompréhension sur le fait que la fonction DECRYPTBYPASPHRASE soit non déterministe. Pour expliquer cela, je vois deux cas possibles :
    • il y a une raison qui m'échappe, car mathématiquement parlant, la fonction doit être déterministe
    • il s'agit d'une "erreur" (parler d'un bug serait peut être un peu fort) liée à la définition de la fonction (par exemple, les fonctions CLR peuvent être définies comme déterministe ou non via l'ajout d'un simple attribut sur une méthode)

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Après une rapide discussion sur les forums Microsoft, le MVP Ronen Ariely me confirme que la fonction devrait être déterministe et a ouvert un rapport de bug pour interroger l'équipe de développement de SQL Sever. Il est disponible ici : https://connect.microsoft.com/SQLSer...-deterministic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer un automate fini non déterministe en automate fini déterministe
    Par souheyeb dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 06/04/2008, 03h56
  2. automate non déterministe.
    Par naniate dans le forum C
    Réponses: 4
    Dernier message: 02/12/2007, 10h25
  3. [java] probleme non déterministe
    Par Sp4ce dans le forum 2D
    Réponses: 4
    Dernier message: 07/09/2007, 08h32
  4. automate fini non déterministe
    Par lastrecrue dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 14/11/2006, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo