33
Segurança e Criptografia

Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Embed Size (px)

Citation preview

Page 1: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Segurança e Criptografia

Page 2: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Componentes

Page 3: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Algoritmos de Criptografia• O Palm OS

Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados pelo Cryptographic Provider Manager (CPM)

Page 4: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 5: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Cryptographic Provider Manager (CPM)• Provê uma API

unificada para acesso a funções de criptografar, descriptografar, assinar e verificar assinaturas

Page 6: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Cryptographic Provider Manager (CPM)• Seu uso é simples, abstraindo

os detalhes de implementação dos algoritmos de criptografia

Page 7: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidades

1. Permite ao usuário descobrir quais os Providers presentes

Page 8: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidadesuint32_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");

}

Page 9: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidades

2. Permite gerar chaves abstraindo o algoritmo utilizado

Page 10: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - FuncionalidadesAPKeyInfoType 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);

Page 11: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidades

3. Permite o uso de Message Digests (hashes)

Page 12: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidadesstatus_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);}

Page 13: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidades

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

Page 14: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidadesstatus_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);

}

Page 15: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidades

5. ...E descriptografá-los.

Page 16: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

CPM - Funcionalidadesstatus_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);}

Page 17: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 18: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

SSL• O módulo de

SSL provê suporte nativo ao protocolo de rede homônimo

Page 19: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Signature Verify Library• Provê um

módulo para aplicações acessarem assinaturas e certificados de maneira simples

Page 20: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Autenticação e assinaturas de sistema

Page 21: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 22: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

O que pode ser assinado?• Applications

• System patches

• Shared libraries

• System components

• System drivers

Page 23: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Para que servem assinaturas?• No Palm, assinaturas

normalmente indicam aprovação e compatibilidade

• Não indicam necessariamente o autor do código ou recurso

Page 24: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 25: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 26: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Authorization Manager (AZM)

Page 27: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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”

Page 28: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Data Manager• Dá suporte a

banco de dados seguros

• Utiliza o Authorization Manager para tratar as permissões de acesso aos dados

Page 29: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

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

Page 30: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Banco de dados segurosAzmRuleSetType dbRuleSet;AmTokenType usertoken;

UInt32 action = dbActionRead | dbActionWrite | dbActionDelete

| dbActionBackup | dbActionRestore | dbActionEditSchema;

// Create DB – get AZM ruleset referenceDbCreateSecureDatabase(“My DB”, ‘crea’, ‘type’,

numSchemas, schemaList, &dbRuleSet, &dbID);

// Set user password required for ALL actionsAmGetTokenBySystemId(&usertoken,

SysUserToken);AzmAddRule(dbRuleSet, action , "%t", usertoken);

Page 31: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Componentes

Page 32: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Segurança e Criptografia

Dúvidas?

Page 33: Segurança e Criptografia. Componentes Algoritmos de Criptografia O Palm OS Cobalt prevê suporte ao uso de diversos algoritmos de criptografia, integrados

Dúvidas