A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Segurança e Criptografia

Apresentações semelhantes


Apresentação em tema: "Segurança e Criptografia"— Transcrição da apresentação:

1 Segurança e Criptografia

2 Componentes

3 Algoritmos de Criptografia
O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados pelo Cryptographic Provider Manager (CPM)

4 Algoritmos de Criptografia
O provider padrão, que vem com o Palm OS Cobalt, foi desenvolvido pela RSA Security e inclui um gerador de números pseudo-randômicos e suporte a RC4 de 128 bits, SHA-1 hashing e RSA public key operations Se necessário, Providers adicionais podem ser adicionados tanto estática quanto dinamicamente (DLLs assinadas) ao Cryptographic Provider Manager

5 Cryptographic Provider Manager (CPM)
Provê uma API unificada para acesso a funções de criptografar, descriptografar, assinar e verificar assinaturas

6 Cryptographic Provider Manager (CPM)
Seu uso é simples, abstraindo os detalhes de implementação dos algoritmos de criptografia

7 CPM - Funcionalidades 1. Permite ao usuário descobrir quais os Providers presentes

8 CPM - Funcionalidades uint32_t *providers;
APProviderInfoType providerInfo; uint16_t nProviders = 0; CPMLibOpen(&nProviders); DbgPrintf("SSFD: CPMLibOpen - 0x%x providers returned\n", nProviders ); providers = MemPtrNew(sizeof(uint32_t) * nProviders ); CPMLibEnumerateProviders(providers, &nProviders ); DbgPrintf("SSFD: CPMLibEnumerateProviders - 0x%x providers returned\n", nProviders); for (i=0; i < temp; i++) { CPMLibGetProviderInfo(providers[i], &providerInfo); DbgPrintf("\t%s\n", providerInfo.name); DbgPrintf("\t%s\n", providerInfo.other); DbgPrintf("\tAlgs: %d\n",providerInfo.numAlgorithms); DbgPrintf("\tHardware?: %s\n", providerInfo.bHardware?"yes":"no"); }

9 CPM - Funcionalidades 2. Permite gerar chaves abstraindo o algoritmo utilizado

10 CPM - Funcionalidades APKeyInfoType keyInfo; uint8_t *seedData;
uint32_t seedDataLength; /* KeyInfo provê as funcionalidades para as chaves do algoritmo utilizado. */ MemSet(&keyInfo, sizeof(APKeyInfoType), 0); keyInfo.type = apSymmetricTypeRijndael; keyInfo.length = 32; /* bytes */ /* Pega uma seed do gerador pseudo-randomico padrão */ GetSomeSeedData(seedData, seedDataLength); /* Gera a chave e armazena em KeyInfo */ CPMLibGenerateKey(seedData, seedDataLength, &keyInfo);

11 CPM - Funcionalidades 3. Permite o uso de Message Digests (hashes)

12 CPM - Funcionalidades status_t err; uint32_t size;
uint8_t data[] = ( 'f', 'o', 'o' ); /* Aloca um buffer de 0 bytes */ uint8_t *md = NULL; size = 0; err = CPMLibHash(apHashTypeSHA1, NULL, data, sizeof(data), md, &size); /* Se o tamanho do buffer for menor que o necessário (que é o caso), o CPM modifica o valor de size para o tamanho mínimo e retorna um código de erro */ if (err == cpmErrBufTooSmall) { md = MemPtrNew(size); CPMLibHash(apHashTypeSHA1, NULL, data, sizeof(data), md, &size); }

13 CPM - Funcionalidades 4. Permite o uso de funções para encriptar dados a partir de uma chave gerada...

14 CPM - Funcionalidades status_t err;
uint8_t key[] = {0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E,0x57}; uint8_t plain[] = {0x01, 0xA1, 0xD6, 0xD0, 0x39, 0x77, 0x67,0x42}; uint32_t index, size; uint8_t *output = NULL; APKeyInfoType keyInfo; MemSet(&keyInfo, sizeof(APKeyInfoType), 0); keyInfo.type = apSymmetricTypeDES; CPMLibImportKeyInfo(IMPORT_EXPORT_TYPE_RAW, key, 8, &keyInfo); size = 0; err = CPMLibEncrypt(&keyInfo, NULL, plain, 8, output,&size); if (err = cpmErrBufTooSmall) { output = MemPtrNew(size); if (output != NULL) { err = CPMLibEncrypt(&keyInfo, NULL, plain, 8, output, &size); MemPtrFree(output); }

15 CPM - Funcionalidades E descriptografá-los.

16 CPM - Funcionalidades status_t err;
uint8_t key[] = {0x7C, 0xA1, 0x10, 0x45, 0x4A, 0x1A, 0x6E,0x57}; uint8_t cipher[] = {0x69, 0x0F, 0x5B, 0x0D, 0x9A, 0x26, 0x93,0x9B}; uint32_t index, size; uint8_t *output = NULL; /* Obtêm ou inicializa KeyInfo */ APKeyInfoType keyInfo; (...) size = 0; err = CPMLibDecrypt(&keyInfo, NULL, cipher, 8, output,&size); if (err = cpmErrBufTooSmall) { output = MemPtrNew(size); if (output != NULL) { err = CPMLibDecrypt(&keyInfo, NULL, cipher, 8, output, &size); MemPtrFree(output); }

17 Certificate Manager Armazena, importa, exporta e verifica certificados DER-encoded X.509 Por ter uma funcionalidade muito específica, normalmente é usado apenas pelas APIs de SSL e Signature Verify Library Quando necessário, utiliza as funcionalidades da Data Manager para evitar mudanças nos certificados armazenados

18 SSL O módulo de SSL provê suporte nativo ao protocolo de rede homônimo

19 Signature Verify Library
Provê um módulo para aplicações acessarem assinaturas e certificados de maneira simples

20 Autenticação e assinaturas de sistema

21 Código assinado Aplicações são assinadas quando a integridade do código é uma preocupação Dependendo do dispositivo, parte do código – como um patch do sistema – deve ser assinado Além disso, base de dados seguras podem ser configuradas de maneira a permitir acesso apenas a um grupo particular de aplicações assinadas

22 O que pode ser assinado? Applications System patches Shared libraries
System components System drivers

23 Para que servem assinaturas?
No Palm, assinaturas normalmente indicam aprovação e compatibilidade Não indicam necessariamente o autor do código ou recurso

24 Authentication Manager (AM)
Responsável por autenticar usuários ou aplicações Responde a questão “Você é X?” através de métodos como senhas e assinaturas de código

25 Authentication Manager (AM)
É o AM o responsável por verificar a assinatura do código, garantindo que os patches e objetos modificáveis mais importantes do sistema tenham uma assinatura de uma autoridade conhecida

26 Authorization Manager (AZM)

27 Authorization Manager (AZM)
Controla árvores baseadas em autenticações A árvore ao lado, dá autorização a uma aplicação com a assinatura “A” ou “B”

28 Data Manager Dá suporte a banco de dados seguros
Utiliza o Authorization Manager para tratar as permissões de acesso aos dados

29 Banco de dados seguros Quando se cria uma base de dados segura, o acesso aos dados é dado apenas ao criador, que é o único que tem permissão de modificar as regras de controle de acesso Dessa forma, uma aplicação que crie um banco de dados seguros deve modificar as regras de controle que desejar disponibilizar para outras aplicações

30 Banco de dados seguros AzmRuleSetType dbRuleSet;
AmTokenType usertoken; UInt32 action = dbActionRead | dbActionWrite | dbActionDelete | dbActionBackup | dbActionRestore | dbActionEditSchema; // Create DB – get AZM ruleset reference DbCreateSecureDatabase(“My DB”, ‘crea’, ‘type’, numSchemas, schemaList, &dbRuleSet, &dbID); // Set user password required for ALL actions AmGetTokenBySystemId(&usertoken, SysUserToken); AzmAddRule(dbRuleSet, action , "%t", usertoken);

31 Componentes

32 Segurança e Criptografia
Dúvidas?

33 Dúvidas


Carregar ppt "Segurança e Criptografia"

Apresentações semelhantes


Anúncios Google