none
Qual a melhor ferramenta para criptografar *.mdf (criptografar o banco de dados do sql server) RRS feed

  • Pergunta

  • Olá pesquisando uma maneira de proteger um banco de dados contra acesso não autorizado encontrei uma ferramenta chamada dbdefence, ela criptografa o banco de dados impedindo que os dados e esquema sejam expostos.

    http://www.dbdefence.com/

    alguém já usou/viu alguma outra ferramenta deste tipo?
    Paulo Moreira
    terça-feira, 9 de março de 2010 21:45

Respostas

  • Olá Paulo,

    O fato é que se você não controla o servidor, se você não controla a rede e se você não controla o SO, você não pode assegurar que o SGBD estará seguro (essa afirmação não é restrita a SQL Server). Não adiantará ter um ORACLE ou DB2 superprotegido, pois, basta que alguém tenha permissões de administração no SO e certamente poderá burlar vários pontos de segurança desses SGBDs. Não adiantará ter o SGBD seguro e o banco seguro, pois, uma rede não monitorada poderá pegar o tráfego de rede possibilitando visualizar estrutura e dados trafegados.

    Para clientes com o SAP isso não representa problemas, pois, normalmente eles terão controle sobre todos esses componentes. E tecnicamente falando, não penso que a SAP tente descobrir como "bloquear o SQL Server para que o próprio cliente não veja os dados". Seria uma enorme contradição, pois, afinal os dados são do cliente. Se ele quiser, ele vai ver. Se ele quiser, ele vai mudá-los. A questão é que a estrutura do SAP é tão complexa que uma "mexida" seria facilmente identificada pelo fabricante (mesmo que ele não possa impedí-lo) e isso "quebra" as possibilidades de suporte. A SAP não vai impedir que ele mexa, vai apenas dizer: "Se você mexer eu não dou suporte e tenho como descobrir que você mexeu".

    No seu caso, não vejo como assegurar que seu banco não será fuçado, pois, se você distribuir o seu software, você terá controle apenas sobre o software. Seu cliente terá o controle sobre o SO dele, sobre a rede dele e sobre o servidor dele. Se o cliente tem controle sobre esses componentes, certamente não terá dificuldades para ter controle sobre sua base de dados (independente do que você estiver fazendo para protegê-la).

    Mesmo ferramentas como a citada (http://www.dbdefence.com/) podem proteger o acesso, mas basta um sniffer para capturar o pacote de rede que a aplicação enviou para descobrir a senha e fazer um acesso direto. Acho que o propósito da ferramenta é impedir acessos não autorizados, mas não simplesmente "impedir que o cliente acesse sua própria base". Se você realmente necessita impedir o acesso não autorizado ao seu banco de dados, terá que ter o controle do SO, servidor e rede. E nesse caso, a questão é bem maior do que simplesmente "distribuir uma DLL". Você teria que prover serviços de hospedagem, etc. É o que iniciativas como Cloud Computing estão trabalhando.

    Vale a pena lembrar que embora você distribua sua DLL, normalmente você não pode incorporar DLLs de softwares que exijam licenciamento sem pagar por elas. Não creio que a ferramenta (http://www.dbdefence.com/) diga simplesmente "compre minha licença e embuta meus componentes no seu software e venda-o a vontade"

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta paulo3011 quinta-feira, 11 de março de 2010 12:30
    quarta-feira, 10 de março de 2010 19:08
  • Olá Paulo,



    Mesmo ferramentas como a citada (http://www.dbdefence.com/ ) podem proteger o acesso, mas basta um sniffer para capturar o pacote de rede que a aplicação enviou para descobrir a senha e fazer um acesso direto. Acho que o propósito da ferramenta é impedir acessos não autorizados, mas não simplesmente "impedir que o cliente acesse sua própria base". Se você realmente necessita impedir o acesso não autorizado ao seu banco de dados, terá que ter o controle do SO, servidor e rede. E nesse caso, a questão é bem maior do que simplesmente "distribuir uma DLL". Você teria que prover serviços de hospedagem, etc. É o que iniciativas como Cloud Computing estão trabalhando.

    Vale a pena lembrar que embora você distribua sua DLL, normalmente você não pode incorporar DLLs de softwares que exijam licenciamento sem pagar por elas. Não creio que a ferramenta (http://www.dbdefence.com/ ) diga simplesmente "compre minha licença e embuta meus componentes no seu software e venda-o a vontade"

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    Olá Gustavo, obrigado por detalhada explicação. Sobre o sniffer e a utilização da ferramenta dbdefence, mesmo que a pessoa descubra a senha do SA ele não consegue ver a estrutura nem o dados do banco porque o arquivo do banco de dados fica critpografado e é só descriptografado pela ferramenta por meio de uma chave. Sobre a licença, no site do dbdefence diz que comprando a licença você pode distribuir a DLL livremente com seu software. Já licenças como estas nos obfuscadores do .net...

    Sobre prover serviços de hospedagem, uma grande barreira é a questão da desconfiança sobre a confiabilidade dos dados por parte dos clientes, um argumento seria "não vou enviar meus dados sigilosos para um servidor de um terceiro", mas seria uma boa solução.


    Paulo Moreira
    • Marcado como Resposta paulo3011 quinta-feira, 11 de março de 2010 12:39
    quinta-feira, 11 de março de 2010 12:38

Todas as Respostas

  • Boa Noite,

    Não conheço a ferramenta, mas a julgar que você está utilizando uma edição Express, imagino que você esteja querendo economizar no custo de licenciamento. Como seria colocar o banco e sua solução e ainda solicitar que o cliente adquira um software de criptografia para proteger o software "dele mesmo" ?

    Mas enfim... O negócio é pesquisar.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 9 de março de 2010 22:01
  • Eu não conheço a ferramenta que você citou também, mas dependendo dos valores da licença desta ferramenta poderia ser muito mais interessante utilizar o proprio esquema de criptografia do SQL (Transparent Database Encryption ).

    Ou ainda você podeira utilziar alguma ferramenta de criptografia a nivel de sistema operaciona, mas acho que você irá perder muito em performance. Direto no SQL é muito mais seguro e rápido.
    Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.
    quarta-feira, 10 de março de 2010 12:02
  • Boa Noite,

    Não conheço a ferramenta, mas a julgar que você está utilizando uma edição Express, imagino que você esteja querendo economizar no custo de licenciamento. Como seria colocar o banco e sua solução e ainda solicitar que o cliente adquira um software de criptografia para proteger o software "dele mesmo" ?

    Mas enfim... O negócio é pesquisar.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    O cliente não precisa comprar a ferramenta de criptografia. O desenvolvedor ou empresa que faz o software é quem compra e é livre para distribuir a DLL que faz o trabalho... não importa se estou usando uma versão paga ou free do sql serve o problema de segurança ainda existirá. É muito simples quebrar a segurança do sql server com apenas $ 30 consigo uma ferramenta que reseta a senha do sa ou ainda apenas fazendo uma cópia do arquivo mdf e ldf consigo anexar o banco a outra instância e ter acesso a um banco de um terceiro que foi instalado na minha máquina. A microsoft realmente deveria estar pensando e disponibilizar este tipo de banco para ambientes de desenvolvimento interno ou web. Outra dúvida é como fazem os grandes ERP como SAP que usam sql server? eles não devem ter preocupação em proteger o seu banco de dados, ate mesmo porque ele deve ser flexível sei lá...

    Paulo Moreira
    quarta-feira, 10 de março de 2010 12:32
  • Eu não conheço a ferramenta que você citou também, mas dependendo dos valores da licença desta ferramenta poderia ser muito mais interessante utilizar o proprio esquema de criptografia do SQL (Transparent Database Encryption ).

    Ou ainda você podeira utilziar alguma ferramenta de criptografia a nivel de sistema operaciona, mas acho que você irá perder muito em performance. Direto no SQL é muito mais seguro e rápido.
    Alexandre Baseio Se a minha ajuda lhe for útil não esqueça de classificar.

    Bom dia Baseio, bom eu já sei da possibilidade de usar a criptografia do sql server, eu só gostaria que não fosse tão fácil ver a estrutura do meu banco de dados... mas isso infelizmente não é possível. Não testei o dbdefence, mas no site eles afirmam que impedem a visualização da estrutura do banco. Uma forma que encontrei de evitar que o meu banco seja anexado em outra instância seria migrar de sql server express 2005 para 2008 porque ele possui um recurso novo de criptografia que criptografa o arquivo .mdf e .ldf impedindo que ele seja anexado:

    http://www.devmedia.com.br/articles/viewcomp.asp?comp=12987

    Isso seria uma forma boa de evita o problema de anexar, mas como evitar que a senha do usuário sa seja resetada? será que existe uma forma de também criptografar a tabela master de forma a impedir que aplicativos como este:
    http://www.bestshareware.net/download/ms-sql-server-password-unlocker.htm
    abram o banco master?

    Paulo Moreira
    • Editado paulo3011 quarta-feira, 10 de março de 2010 15:04 alterado dbdefender para dbdefence
    quarta-feira, 10 de março de 2010 12:45
  • Paulo,

    Eu também não conheço ferramentas que possam realizar a criptografia, sempre utilizei os recursos do próprio SQL Server, principalmente agora no SQL Server 2008 através TDS, como já foi destacado.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 10 de março de 2010 14:14
    Moderador
  • Olá Paulo,

    O fato é que se você não controla o servidor, se você não controla a rede e se você não controla o SO, você não pode assegurar que o SGBD estará seguro (essa afirmação não é restrita a SQL Server). Não adiantará ter um ORACLE ou DB2 superprotegido, pois, basta que alguém tenha permissões de administração no SO e certamente poderá burlar vários pontos de segurança desses SGBDs. Não adiantará ter o SGBD seguro e o banco seguro, pois, uma rede não monitorada poderá pegar o tráfego de rede possibilitando visualizar estrutura e dados trafegados.

    Para clientes com o SAP isso não representa problemas, pois, normalmente eles terão controle sobre todos esses componentes. E tecnicamente falando, não penso que a SAP tente descobrir como "bloquear o SQL Server para que o próprio cliente não veja os dados". Seria uma enorme contradição, pois, afinal os dados são do cliente. Se ele quiser, ele vai ver. Se ele quiser, ele vai mudá-los. A questão é que a estrutura do SAP é tão complexa que uma "mexida" seria facilmente identificada pelo fabricante (mesmo que ele não possa impedí-lo) e isso "quebra" as possibilidades de suporte. A SAP não vai impedir que ele mexa, vai apenas dizer: "Se você mexer eu não dou suporte e tenho como descobrir que você mexeu".

    No seu caso, não vejo como assegurar que seu banco não será fuçado, pois, se você distribuir o seu software, você terá controle apenas sobre o software. Seu cliente terá o controle sobre o SO dele, sobre a rede dele e sobre o servidor dele. Se o cliente tem controle sobre esses componentes, certamente não terá dificuldades para ter controle sobre sua base de dados (independente do que você estiver fazendo para protegê-la).

    Mesmo ferramentas como a citada (http://www.dbdefence.com/) podem proteger o acesso, mas basta um sniffer para capturar o pacote de rede que a aplicação enviou para descobrir a senha e fazer um acesso direto. Acho que o propósito da ferramenta é impedir acessos não autorizados, mas não simplesmente "impedir que o cliente acesse sua própria base". Se você realmente necessita impedir o acesso não autorizado ao seu banco de dados, terá que ter o controle do SO, servidor e rede. E nesse caso, a questão é bem maior do que simplesmente "distribuir uma DLL". Você teria que prover serviços de hospedagem, etc. É o que iniciativas como Cloud Computing estão trabalhando.

    Vale a pena lembrar que embora você distribua sua DLL, normalmente você não pode incorporar DLLs de softwares que exijam licenciamento sem pagar por elas. Não creio que a ferramenta (http://www.dbdefence.com/) diga simplesmente "compre minha licença e embuta meus componentes no seu software e venda-o a vontade"

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta paulo3011 quinta-feira, 11 de março de 2010 12:30
    quarta-feira, 10 de março de 2010 19:08
  • Olá Paulo,



    Mesmo ferramentas como a citada (http://www.dbdefence.com/ ) podem proteger o acesso, mas basta um sniffer para capturar o pacote de rede que a aplicação enviou para descobrir a senha e fazer um acesso direto. Acho que o propósito da ferramenta é impedir acessos não autorizados, mas não simplesmente "impedir que o cliente acesse sua própria base". Se você realmente necessita impedir o acesso não autorizado ao seu banco de dados, terá que ter o controle do SO, servidor e rede. E nesse caso, a questão é bem maior do que simplesmente "distribuir uma DLL". Você teria que prover serviços de hospedagem, etc. É o que iniciativas como Cloud Computing estão trabalhando.

    Vale a pena lembrar que embora você distribua sua DLL, normalmente você não pode incorporar DLLs de softwares que exijam licenciamento sem pagar por elas. Não creio que a ferramenta (http://www.dbdefence.com/ ) diga simplesmente "compre minha licença e embuta meus componentes no seu software e venda-o a vontade"

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como descobrir a data do último acesso a uma tabela ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!964.entry


    Classifique as respostas. O seu feedback é imprescindível
    Olá Gustavo, obrigado por detalhada explicação. Sobre o sniffer e a utilização da ferramenta dbdefence, mesmo que a pessoa descubra a senha do SA ele não consegue ver a estrutura nem o dados do banco porque o arquivo do banco de dados fica critpografado e é só descriptografado pela ferramenta por meio de uma chave. Sobre a licença, no site do dbdefence diz que comprando a licença você pode distribuir a DLL livremente com seu software. Já licenças como estas nos obfuscadores do .net...

    Sobre prover serviços de hospedagem, uma grande barreira é a questão da desconfiança sobre a confiabilidade dos dados por parte dos clientes, um argumento seria "não vou enviar meus dados sigilosos para um servidor de um terceiro", mas seria uma boa solução.


    Paulo Moreira
    • Marcado como Resposta paulo3011 quinta-feira, 11 de março de 2010 12:39
    quinta-feira, 11 de março de 2010 12:38