Documentação das especificações do GT de Segurança do Open Banking Brasil. As especificações ainda estão em versão draft e não devem ser utilizadas para implementação.
66
stars
46
forks
source link
Ecossistema de Seguros Abertos - Poderá se conectar nos endpoints do Open Finance usando o mesmo certificados de cliente OPF? #252
Olá, observando o manual de segurança do OPIN(Open Insurance), no que tange a especificação de certificados de cliente e supondo que seja usado a mesma cadeia V10 do ICP para emissão dos certificados de clientes, como os participantes do Open Finance 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 Open Finance, 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 vulnerabilidades na camada de aplicação em meus API GW ou Auth Server; faz sentido o OPIN ter um atributo no certificado que possa nosso ecossitema possa fazer o bloqueio destas conexões, autorizando apenas conexões dos participantes do Open Finance?
Entendo que o uso dos templates de certificados do open finance deveria ser restrito ao ecossistema do Open Finance.
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
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
Olá, observando o manual de segurança do OPIN(Open Insurance), no que tange a especificação de certificados de cliente e supondo que seja usado a mesma cadeia V10 do ICP para emissão dos certificados de clientes, como os participantes do Open Finance 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 Open Finance, 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 vulnerabilidades na camada de aplicação em meus API GW ou Auth Server; faz sentido o OPIN ter um atributo no certificado que possa nosso ecossitema possa fazer o bloqueio destas conexões, autorizando apenas conexões dos participantes do Open Finance?
Entendo que o uso dos templates de certificados do open finance deveria ser restrito ao ecossistema do Open Finance.
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)
Links de apoio: https://br-openinsurance.github.io/areadesenvolvedor/files/Controles_t%C3%A9cnicos_de_Seguran%C3%A7a_da_Informa%C3%A7%C3%A3o_3.0.pdf https://openinsurance.susep.gov.br/ https://openinsurance.susep.gov.br/wp-content/uploads/2022/06/Manual-de-Seguranc%CC%A7a-v1-1.pdf
@OpenBankingBrasil-GtSeg PSI