br-openinsurance / areadesenvolvedor

6 stars 5 forks source link

Como indentificar participantes OPIN vs OpenBanking usando atributos dos certificados de Cliente? #130

Open joaorodolfo opened 2 years ago

joaorodolfo commented 2 years ago

Olá, considerando a especificação de certificados de cliente, e observando que ele usa a mesma cadeia V10 do ICP para emissão dos certificados de clientes, como os participantes do OPIN irão poder identificar usando apenas os atributos do certificado quem é um participante OPIN e um participante OpenFinance? A especificação atual de ambos é igual, impossibilita o filtro de conexão na camada de infraestrutura TLS usando uma REGEX para filtrar os atributos UUID ou ORGID contidos no atributo do certificado, limitando a conexão apenas aos participantes do OPIN, desta maneira não é possível realizar bloqueios na camada de infraestrutura, sendo necessário que requisições sejam tratadas por processos de autenticação e autorização de minhas APIs (auth server ou minhas api de recurso)

Se eu necessito fechar esse escopo na camada de infraestrutura para reduzir ataques de Dia 0 que explorem problema na camada de aplicaçãom em meus API GW ou Auth Server, faz sentido ter um atributo no certificado que possa ser utilizado para autorizar as conexões apenas dos participantes do OPIN?

Detalhes:

Abaixo os atributos do certificado de cliente:

Atributos Open Insurance • serialNumber: Cadastro Nacional de Pessoal Jurídica (CNPJ) da pessoa jurídica titular do certificado e associado ao atributo UID e Software Statement ID, durante validação junto ao Serviço de Diretório do Open Insurance; • organizationalUnitName: Código de Participante associado ao CNPJ listado no Serviço de Diretório do Open Insurance; • UID: Software Statement ID cadastrado no Serviço de Diretório do Open Insurance e pertencente ao CNPJ e Código de Participante. O Certificado Cliente deve ser emitido através de cadeia V10, e deve obrigatoriamente conter os seguintes atributos:

Distinguished Name • businessCategory (OID 2.5.4.15): Tipo de categoria comercial, devendo conter: "Private Organization" ou "Government Entity" ou "Business Entity" ou "Non-Commercial Entity" • jurisdictionCountryName (OID: 1.3.6.1.4.1.311.60.2.1.3): BR • serialNumber (OID 2.5.4.5): CNPJ • countryName (OID 2.5.4.6): BR • organizationName (OID 2.5.4.10): Razão Social • stateOrProvinceName (OID 2.5.4.8): Unidade da federação do endereço físico do titular do certificado • localityName (OID 2.5.4.7): Cidade do endereço físico do titular • organizationalUnitName (OID 2.5.4.11): Código de Participante associado ao CNPJ listado no Serviço de Diretório do Open Insurance • UID (OID 0.9.2342.19200300.100.1.1): Software Statement ID gerado pelo Diretório do Open Insurance • commonName (OID 2.5.4.3): FQDN ou Wildcard

Certificate Extensions • keyUsage: critical,digitalSignature,keyEncipherment • extendedKeyUsage: clientAuth Subject Alternative Name • dNSName: FQDN ou Wildcard Ref Técnica https://br-openinsurance.github.io/areadesenvolvedor/files/Controles_t%C3%A9cnicos_de_Seguran%C3%A7a_da_Informa%C3%A7%C3%A3o_3.0.pdf

Atributos Open Finance • serialNumber: Cadastro Nacional de Pessoal Jurídica (CNPJ) da pessoa jurídica titular do certificado e associado ao atributo UID e Software Statement ID, durante validação junto ao Serviço de Diretório do Open Finance Brasil; • organizationalUnitName: Código de Participante associado ao CNPJ listado no Serviço de Diretório do Open Finance Brasil; • UID: Software Statement ID cadastrado no Serviço de Diretório do Open Finance Brasil e pertencente ao CNPJ e Código de Participante. O Certificado Cliente deve ser emitido através de cadeia V10, e deve obrigatoriamente conter os seguintes atributos:

Distinguished Name • businessCategory (OID 2.5.4.15): Tipo de categoria comercial, devendo conter: "Private Organization" ou "Government Entity" ou "Business Entity" ou "Non-Commercial Entity" • jurisdictionCountryName (OID: 1.3.6.1.4.1.311.60.2.1.3): BR • serialNumber (OID 2.5.4.5): CNPJ • countryName (OID 2.5.4.6): BR • organizationName (OID 2.5.4.10): Razão Social • stateOrProvinceName (OID 2.5.4.8): Unidade da federação do endereço físico do titular do certificado • localityName (OID 2.5.4.7): Cidade do endereço físico do titular • organizationalUnitName (OID 2.5.4.11): Código de Participante associado ao CNPJ listado no Serviço de Diretório do Open Finance Brasil • UID (OID 0.9.2342.19200300.100.1.1): Software Statement ID gerado pelo Diretório do Open Finance Brasil • commonName (OID 2.5.4.3): FQDN ou Wildcard

Certificate Extensions • keyUsage: critical,digitalSignature,keyEncipherment • extendedKeyUsage: clientAuth Subject Alternative Name • dNSName: FQDN ou Wildcard Ref Técnica: specs-seguranca/open-banking-brasil-certificate-standards-1_ID1-ptbr.md at main · OpenBanking-Brasil/specs-seguranca (github.com)

carlosjustino commented 1 year ago

Estou com a mesma duvida