|
Como para recuperar
chaves particulares para Microsoft Internet Explorer, Internet
Servidor De Informação, Perspectiva Expressa, e muitos outros
- ou -
Onde suas chaves do encryption desejam ir hoje?
[Isto é um ligeiramente formulário
atualizado da versão Eu originalmente circulei]
Peter Gutmann, [email protected]
Resumo
-------
Microsoft usa dois arquivo diferente formata proteger
os usuários chaves particulares quando
armazenado em disco, o original (unnamed) formata que esteve utilizado
em versões mais velhas
de MSIE, IIS, e outro software e que é ainda suportado para
para trás-compatibilidade razões em mais novas versões,
e as mais novas PFX/PKCS #12
formato. Devido para um número de projeto e falhas de implementação
nas Microsofts
software, isto é possível para quebrar a segurança
de ambas destes formatos e
recupere usuários chaves particulares, freqüentemente em uma
matéria de segundos. Em adição, um major
buraco de segurança em meios do CryptoAPI Das Microsofts que muitas
chaves que não são armazenadas
em um arquivo de disco pode ser recuperado sem até mesmo necessitando
quebrar o encryption.
Esses ataques não confiam para seu sucesso na presença de
fraca,
NÓS-EXPORTABLE encryption, eles também afetam NÓS
versões.
Como um resultado destas falhas, nenhuma Microsoft
produto internet é capaz de
protegendo umas chaves dos usuários de ataque hostil. Por combinar
os ataques
descrito baixo com amplamente-publicised bugs no MSIE que permite sites
hostis
para ler os conteúdos de usuários duros dirige ou com um
controle do ActiveX, ou uns novos
bug que colhido para cima unicamente horas depois este artigo foi primeiro
publicado que
permite qualquer um para correr código arbitrário em uma
máquina das vítimas com nenhum caminho de
parando eles, uma vítima pode ter sua chave particular chupada
desligado sua máquina e
o encryption que "protege" isto quebrou em um site remoto sem
seu
conhecimento.
Uma Vez um attacker tem obtido uns usuários
chave particular nesta maneira, eles têm
efetivamente roubado seu (digitial) identidade, e pode usar isto para
digitalmente sinal
contrata e acordos, para recuperar toda chave de sessão do encryption
isto está sempre
protegido no passado e sempre protegerá no futuro, para acessar
particular
e email confidencial, e assim em e assim em. A facilidade com que este
ataque
está
componentes do encryption em servidores de web e browsers - uma vez a
chave particular está
comprometido, todos serviços de segurança que contam com
isto são também comprometidos.
Um realmente attacker inteligente o seguinte:
- Uso (diz) um bug do MSIE para roubar código
do someones ActiveX assinando chave.
- Decrypt isto usando um dos ataques descritos baixo.
- Usa isto para assinar um ActiveX controla que rouba outras chaves de
pessoas.
- Colocado isto em uma web page e espera.
Na oportunidade remota que o controle do ActiveX
é descoberto (que está extremamente
improvável, desde isto corre e apaga si mesmo quase instantaneamente,
e não pode ser
parado até mesmo com o o mais alto "segurança"
valor no MSIE), a vontade de ataque é
culpado na pessoa a chave foi roubada de em vez do attacker real.
Isto demonstra problemas maiores em segurança
chave particular de ambas Microsoft (uns
attacker pode decrypt, e portanto emprega mal, sua chave particular),
e ActiveX
segurança (um attacker pode criar um efetivamente unstoppable malicious
ActiveX
controle e, na oportunidade remota que isto é sempre descoberto,
assegura isso
alguém senão toma a culpa).
Fundo
----------
Sobre um ano atrás Eu postei um artigo em
como para quebrar a Netscape (então) servidor
encryption chave à lista do cypherpunks (Netscape corrigida este
problema em
sobre o mesmo tempo como Eu postei o artigo). Entretanto mais que um ano
depois
o código foi publicado, e 2 1/2 anos depois um problema parecido
com o Windows
.PWL arquiva encryption foi publicised, Microsoft estão ainda usando
exatamente o mesmo
dados facilmente-quebrados,fracos formatam para "protegem" usuários
chaves particulares. Para quebrar isto
formate Eu simplesmente espanei desligado meu ano-velho software, mudado
o "Netscape" fios
para "Microsoft", e teve um encryption-breaker que poderia recuperar
a maioria da particular
chaves "protegidas" com este formato em uma matéria de
segundos.
Além Do formato mais velho, mais novos produtos
da Microsoft também suportam o PKCS
#12 formato (que eles originalmente PFX chamado), que render da Microsoft
como
inseguro como o formato mais velho por empregar o RC2 cifra com uma 40-bit
chave.
Este mesmo nível de "segurança" é global
utilizada, de modo que até mesmo NÓS usuários obtêm
nenhum
segurança qualquer que quando armazenando suas chaves particulares.
Entretanto até mesmo RC2/40 pode
tome um pouco para quebrar (a definição exata de "uma
enquanto" conta com quanto
força computacional você tem disponível, para a maioria
do não-financiado attackers isto varia
de umas horas poucas para uns dias poucos). Afortunadamente, há
falhas de projeto bastantes em
PKCS #12 e bugs em implementação das Microsofts para assegurar
que nós podemos ignorar o
encryption tamanho chave. Isto tem o útil - para um attacker -
efeito colateral que
mesmo que Microsoft muda usar RC2/128 ou DES triplo ao encryption, isto
não faz a tarefa do attackers qualquer mais difícil. Por
combinar o código para
quebre o PKCS #12 formata com o código mencionado acima que quebra
o mais velho
formato, nós obtemos um programa único que, quando continua
tipo um ou outro de arquivo chave,
segundos.
Um (algo limitado) exemplo deste tipo de programa
é disponível em fonte
código forma do http://www.cs.auckland.ac.nz/~pgut001/pubs/breakms.c,
com um
executable do DOS DO precompiled em
http://www.cs.auckland.ac.nz/~pgut001/pubs/breakms.exe. Porque isto é
pretendido como
um prova-de-conceito programa isto está algo cru, e restringiu
recuperar
senhas que são palavras de dicionário únicas. Nota:
Isto faz não meio que
usando (diz) duas palavras como uma senha ao invés de uma vontade
protege suas particulares
chave. Todo isto meios é que Eu tenho não bothered para
escrever algo mais
sofisticado - sem dúvida qualquer um esteve sério sobre
isto podia adaptar
alguma coisa regras senha-geração do cracklib igual e rotinas
para fornecer uma
mais tipo poderoso e compreensivo de ataque. Parecidamente, por fabricação
trivial
muda aos dados de arquivo chaves formatam isto é possível
para enganar o programa até
alguém faz um igualmente mudança trivial ao programa para
seguir a pista o formato
mudança - isto é pretendida como um demonstrator unicamente,
não um feito-tudo encryption
breaker.
Para usar o programa, compila (ou usa a versão
do precompiled) e invoca isto
com:
breakms
Aqui É que a saída deveria olhar
gosta de (alguma das linhas têm sido trimmed uma
bit):
Arquivo é um PFX/PKCS #12 arquivo chave.
Codificado dados está 1048 bytes ambicionam.
A senha que esteve utilizada para codificar esta Microsoft PFX/PKCS #12
arquivo está
'orthogonality'.
Módulo = 00BB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644D
[...]
Expoente Público = 010001
Expoente Particular = 6F05EAD2F27FFAEC84BEC360C4B928FD5F3A9865D0FCAAD291E2
[...]
Prime 1 = 00F3929B9435608F8A22C208D86795271D54EBDFB09DDEF539AB083DA912D
[...]
Prime 2 = 00C50016F89DFF2561347ED1186A46E150E28BF2D0F539A1594BBD7FE4674
[...]
Expoente 1 = 009E7D4326C924AFC1DEA40B45650134966D6F9DFA3A7F9D698CD4ABEA
[...]
Expoente 2 = 00BA84003BB95355AFB7C50DF140C60513D0BA51D637272E355E397779
[...]
Coefficient = 30B9E4F2AFA5AC679F920FC83F1F2DF1BAF1779CF989447FABC2F5628
[...]
Alguém enviado me uma chave da Microsoft
De teste eles tinham criado com o MSIE 3.0 e o
programa pegou somente uns segundos poucos para recuperar a senha utilizada
para codificar o
arquivo.
Um desculpa oferecido por Microsoft é aquele
Windows Nt tem acessado listas de controle
(ACL) para arquivos que podem estar utilizados para proteger contra este
ataques e o um
descrito baixo. Entretanto isto está não notavelmente útil:
A Maioria Da vontade dos usuários seja corrida
Windows '95 que não tem ACL, do pequeno restante usando maior do
NT
não mais ambos valor o ACL, e em qualquer caso desde o ataque estará
virá de
software corre como o usuário corrente (que tem acesso cheio ao
arquivo), o
doACL tem nenhum efeito. A questão do ACL está meramente
um herring vermelho, e oferece nenhuma
além disso proteção.
Além Disso Ataques (informação fornecida por Steve
Henson )
---------------
Há um além disso ataca possível
que trabalha porque segurança da Microsoft
produtos confiam na presença do CryptoAPI Da Microsoft, que tem
uns maravilhosos
função chamada CryptExportKey(). Esta mãos de função
acima de uns usuários chave particular
para qualquer um que pede isto. A chave é codificada sob o usuário
corrente, assim qualquer
outro programa corre sob o usuário pode obter sua chave particular
com um solteiro
funcione chamada. Por Exemplo um ActiveX controla em uma web page podia
pedir o
chave dos usuários corrente, despacha isto fora para um site remoto,
e então apaga si mesmo de
o sistema deixando nenhum traço de que acontecido, um bit gosta
do mail.exe programa Eu
escreveu sobre 2 anos atrás que fizeram a mesma coisa para senhas
do Windows. Se o
controle é assinado, não há caminho para parar isto
de corrida até mesmo com o o mais alto
nível de segurança selecionado no MSIE, e desde isto imediatamente
apaga todos traços de
sua existência o código assinando é sem valor.
Mais Novas versões do CryptoAPI que vem com
o MSIE 4 permite o usuário para atribuir umas
bandeira (CRYPT_USER_PROTECTED) que especifica que a função
de exportação chave deve
proteção. Entretanto o caminho isto
é implementado faz isto principalmente ineficaz.
Primeiramente, se o certificado solicita escrita utilizada para gerar
a chave não atribui
esta bandeira, você acaba com o default de "nenhuma proteção"
(e a maioria de
usuários somente usarão o default de "nenhuma proteção"
de qualquer modo). Embora Microsoft
reclame que " vontade do CA honroso não esquece atribuir esta
bandeira", um número de CA
testado (incluindo Verisign) faz não mais ambos para atribuir isto
(faz este meio que
Microsoft considera Verisign como um CA não respeitável?
:-). Por Causa De isto, eles
não até mesmo fornece o usuário com a opção
de selecionar alguma coisa que não
"nenhuma segurança qualquer que".
Em adição ao menos uma versão
de CryptoAPI poderia permitir o "usuário
notificação" nivela de segurança para seja desviada
por apagar a notificação
recurso de diálogo de memória de modo que a chamada poderia
calmamente falhar e a chave
estaria
mecanismo de proteção de página da CPU, há
caminhos mais fáceis para obter a chave que
isto).
Finalmente, o " proteção de senha"
nivela de segurança pede a senha uma
whopping 16 (sim, *sixteen*) tempos quando exportando a chave, ainda que
isto unicamente
necessita fazer isto uma vez. Depois sobre o quinto tempo o usuário
provavelmente pressionará
no "recorda senha" caixa, movendo eles retorna para zero segurança
até eles
reboot a máquina e limpa o valor, desde a vontade chave seja exportada
com
nenhuma notificação ou senha checa uma vez a caixa é
pressionada.
Para checar que nivela de segurança você
tem, tentativa exportando seu certificado chave.
Se não há warning/password diálogo, você tem
zero segurança para sua chave, e
não necessidade par para usa a encryption-quebrada técnica
Eu descrevo em qualquer outra parte
neste artigo. Qualquer web page você folheia podia estar roubando
sua chave (através de
um controle do ActiveX embutido) sem você sempre sendo atento disto.
Obtendo Acesso para Chaves
------------------------
Por coincidência, umas horas poucas depois
Eu postei este artigo o seguinte aparecido
na lista do Bugtraq:
>O Microsoft Internet Explorer 4.0(1) Suíte,
incluindo todos programas fornecidos
>com isto que lê and/or processa HTML de máquinas locais
um ou outro, intranet
>máquinas, ou máquinas internet remotas são assunto
para um buffer transborda nas
>HTML decodificando processo. A inundação do buffer pode
causar a aplicação para paginar
>falta, ou no caso pior, executa precompiled arbitrário código
nativo.
>
>Diferente Do res:// bug, encontrado uns meses poucos atrás,
este bug _does_ afeta Windows
>NT assim como Windows 95.
>
>Isto tem também sido relatado que este bug afeta Internet Explorer
3.0 se você
>tem Estúdio Visual (VC++/J++ etc) instalado em seu sistema.
[A mensagem continua incluir uma descrição
de um programa que executará
código arbitrário em sua máquina]
>Correntemente, não há solução
disponível para esta falha. Você não pode atribuir
qualquer
> opções de Internet Explorer para evitar isto, e você
não são protegidas por qualquer nível
>de segurança de zona. Simplesmente não surfa a web,
lê email ou vê notícias de rede usando
>Internet Explorer 4.0(1) até a Microsoft levantada um hotfix.
Isto está precisamente o espécie de
problema Eu referi para no resumo acima. Por
combinando este tipo de buraco de segurança do unstoppable com
os problemas de segurança
descrito neste artigo, qualquer um pode acessar suas chaves, e não
há caminho para
pare eles à parte de (como o consultivo acima diz) não surfando
a web ou
correspondência de leitura ou notícias.
Com este bug, os ataques exatos Eu descrevo neste
artigo pode ser implementado,
por usar o bug para correr código arbitrário na máquina
dos usuários que um ou outro agarra
o arquivo chave ao decryption ou chama CryptExportKey() para obter as
vítimas
chave particular. Alguém pode roubar sua chave particular(s) sem
seu conhecimento,
simplesmente por ter você acessa sua web page.
Detalha em Quebrar o Formato Mais Velho
------------------------------------
A Microsoft formato chave utilizado por softare
mais velho tal como MSIE 3.0 é muita
suscetível para ambos um dicionário ataca e para recuperação
do keystream. Isto usa o
PKCS #8 formata para chaves particulares, que fornece uma quantia grande
de sabida
plaintext no começo dos dados, em combinação com
RC4 sem qualquer formulário de
IV ou outro preprocessing (ainda que PKCS #8 recomenda aquele PKCS #5
senha-baseado encryption está utilizado), que meios você
pode recuperar o primeiro
100-odd bytes de corrente chave com um XOR simples (o mesmo erro eles
fizeram com
seu . Arquivos do PWL, que foi publicised 2 1/2 anos mais antecipados).
Embora o
senha é hashed com MD5 (permitindo eles para reclamar o uso de
um 128-bit chave),
o caminho a chave é aplicada fornece quase nenhuma segurança.
Este meios duas coisas:
1. Isto É muito simples para escrever um
programa para desempenhar um dicionário ataca no
chave de servidor (isto originalmente leve-me sobre meia hora usando cryptlib,
http://www.cs.auckland.ac.nz/~pgut001/cryptlib/, outra hora meia para
rasgar
o código apropriado fora de cryptlib para criar um programa do
standalone, e um
minutos poucos ao retarget o programa da Netscape à Microsoft).
2. A corrente chave recuperada da chave de servidor
codificada pode estar utilizada para
decrypt qualquer outro recurso codificado com a senha de servidor, *without
sabendo o password*. Isto está porque há bastante sabido
plaintext
(ASN.1 objetos, contestam identifiers, e componentes chaves públicos)
no começo
dos dados codificados para recuperar quantidades grandes de corrente chave.
Este meios
que mesmo que você usa uma milhão-bit chave do encryption,
um attacker pode ainda
recupere ao menos o primeiro 100 bytes de algo você codifica sem
necessitar
para saber sua chave ( Stevenson Franco glide.exe programa usa este para
recuperar
senhas do Windows .PWL arquiva em uma fração de um segundo).
O problema aqui é causado por uma combinação
do PKCS #8 formato (que está
melhor nonoptimal para proteger chaves particulares) e o uso de RC4 ao
encryt
fixado, sabido plaintext. Desde tudo é constante, você faz
não necessidade par para
corra o senha-transformação processo mais que uma vez -
somente armazena um
dicionário da corrente chave resultada para cada senha em um banco
de dados, e
você pode quebrar o encryption com uma pesquisa única (isto
poderia seria evitar por
o uso de PKCS #5 senha-baseado encryption, que reitera a atribuição
chave e
use um sal para fazer um dicionário do precomputed ataca impossível.
PKCS #5
declara que seu primário pretendido aplicação está
para proteger chaves particulares,
mas a Microsoft (e Netscape) escolheu não para usar esta e foi
com reta RC4
encryption ao invés). Isto está exatamente o mesmo problema
que subiu com
Microsoft .PWL arquiva encryption em 1995, e ainda no 2 1/2 anos desde
Eu
exposto este problema eles ainda não têm aprendido de seus
erros prévios.
Ao curioso (e ASN.1-aware), aqui é que os
dados formata olhar gosta de.
Primeiro há o encapsulation exterior que Microsoft usa movimentar
para cima o
codificado chave:
MicrosoftKey ::= SEQÜÊNCIA {
FIO DO identifier OCTET ('particular-chave'),
encryptedPrivateKeyInfo
EncryptedPrivateKeyInfo
}
Interior isto é um PKCS #8 chave particular:
EncryptedPrivateKeyInfo ::= SEQÜÊNCIA
{
encryptionAlgorithm EncryptionAlgorithmIdentifier,
encryptedData EncryptedData
}
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
EncryptedData = FIO DO OCTET
Agora o EncryptionAlgorithmIdentifier é suposto
ser alguma coisa igual
pbeWithMD5AndDES, com um associado 64-bit sal e conta do iteration, mas
Microsoft (e Netscape) ignorada esta e reta utilizada rc4 com nenhum sal
ou
conta do iteration. O EncryptedData decrypts para:
PrivateKeyInfo ::= SEQÜÊNCIA {
Versão De versão
privateKeyAlgorithm PrivateKeyAlgorithmIdentifier
privateKey PrivateKey
atributos [ 0 ] Atributos IMPLÍCITOS OPCIONAIS
}
Versão ::= INTEIRO
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
PrivateKey ::= FIO DO OCTET
Atributos ::= ATRIBUA DE Atributo
(e assim em e assim em, Eu tenho não bothered
descendo mais além). Uma coisa
noting digno é aquela Microsoft codifica o AlgorithmIdentifier
incorretamente por
omitindo os parâmetros, esses deveriam seriam codificar como um
valor NULO se há
nenhuns parâmetros. Neste eles diferem da Netscape, indicando que
ambos
companhias administradas para independentemente sobem com a mesma armazenamento
chave quebrada
formato. Wow.
Para pessoas escolhendo à parte a chave interiora,
Microsoft também codifica sua ASN.1
INTEIROS incorretamente, assim você necessita estar atento deste
quando lendo fora os
dados.
Detalha em Quebrar o PFX/PKCS #12 Formato
-------------------------------------------
O PFX/PKCS #12 formato está vastamente mais
complexo (e braindamaged) que o
formato mais velho. Você pode encontrar um resumo de algum do bletcherousness
neste
formate no http://www.cs.auckland.ac.nz/~pgut001/pubs/pfx.html. Depois
Microsoft
originalmente projetado o formato (chamando isto PFX) e apresentado isto
ao mundo
como um fait accompli, tripulações de limpeza de outras
companhias aceleradas em e fixadas algum
dos problemas piores e falhas de segurança. De Fato PFX esteve
assim ruim que isto foi
unimplementable como projetado, assim isto foi renamed e transmogrified
dentro o PKCS #12
(embora há várias reclamações em literatura
do vendedor que que está sendo
suportado é PFX and/or PKCS #12 - a situação exata
é complexo e
confundindo). Pelo tempo isto foi finalised, Microsoft tinha já
despachada um
implementação que foi baseada em uma versão mais
antecipada com um número de falhas e
buracos, e não desejaram mudar seu código qualquer mais.
Um efeito colateral deste
que para estava estando vendedores outros, compatíveis tiveram
copiar bugs das Microsofts melhor
que produzimos uma implementação em conformidade com o padrão.
Mais Novas versões
do padrão tem agora estado emendado definir os bugs de implementação
como um
separe do padrão.
De Qualquer Modo, como um resultado deste isto é
possível para montar três independant digita de
ataque na Microsoft PFX/PKCS #12 chaves:
1. Ataque o RC2/40 encryption utilizado em todas
versões, até mesmo o NÓS-UNICAMENTE um.
2. Ataque o MAC utilizado para proteger o arquivo inteiro. Desde a mesma
senha está
utilizado ao MAC e a chave codificada, recuperando a senha do MAC também
recupera a senha utilizada para codificar a chave particular. As tripulações
de limpeza
somado um MAC iteration conta fazer este ataque mais duro, mas a Microsoft
ignorado isto.
3. Ataque a chave do encryption chave particular diretamente. Goste Do
MAC, isto também
tem uma conta do interation. Microsoft não usa isto.
Mesmo Que um destas falhas é fixado, um attacker
pode simplesmente mudar e
concentre em uma falha diferente.
Eu decidi ver que um podia ser implementado o maior
eficientemente.
Obviamente (1) esteve ausente (você necessita desempenhar 2^39 RC2
horários chaves em média
para encontrar a chave), que esquerda (2) e (3). Com os refinamentos Eu
Estou sobre para
descreva, isto despede que um ataque no encryption chave particular está
significativamente mais eficiente que um ataque no MAC.
Para compreender como os trabalhos de ataque, você
necessita olhar como PKCS #12 faz seus
chave processando. O PFX spec original incluido unicamente alguns muitos
pensamentos vagos
em como para fazer isto. Em mais tarde PKCS #12 versões isto desenvolvidas
dentro umas algo
truncado rebento do PKCS #5 e chave do TLS processando métodos.
Ao decrypt
dados que está "protegidos" usando o PKCS #12 chave processando,
você necessita fazer os
seguinte:
construa um 64-byte "diversifier" (que
difere contando com seja você
deseje montar uma chave ou um IV) e hash isto;
estique o sal fora para 64 bytes e hash isto depois o hash do diversifier;
estique a senha fora para 64 bytes (usando incorretos processando da
fio de texto, isto é um de bugs de implementação
das Microsofts que têm
agora torna-se enshrined no padrão) e hash isto depois o hash de
sal;
complete o hash e volta o valor resultado como um ou outro a chave ou
o
IV, contando com o valor do diversifier;
(isto está realmente melhor mais complexo
que que, isto é uma desnudada-abaixo versão
que é equivalente para que uso da Microsoft).
Este processo é levado a cabo duas vezes,
uma vez pela chave e uma vez pelo IV. O
hashing é desempenhado usando SHA-1, e cada do dois invocations
do
processo requer 4 passa através do SHA-1 função de
compressão, para um total
de 8 passa através da função. Porque o PKCS #12 spec
convenientemente
requer aqueles todos dados sejam esticados fora para 64 bytes, que acontece
ser os
dados bloqueiam tamanho para SHA-1, não há necessidade à
entrada processando que está
usualmente requerido para SHA-1 assim nós podemos desnudar este
código fora e alimenta os dados
diretamente dentro o SHA-1 função de compressão.
Assim a função de compressão
(junto com o RC2 atribuição chave) é o fator limitado
à velocidade de uma
ataque. Obviamente nós desejamos reduzir o esforço requerido
como muito como possível.
Como isto despede, nós podemos eliminar 6
dos 8 passagens, incisivo nossa carga de trabalho por
75%. Primeiro, nós observamos que o diversifier é um valor
constante, assim
ao invés de valor isto para cima e hashing isto, nós precompute
o hash e armazena o
valor de hash. Isto elimina o diversifier, e uma passagem através
de SHA-1.
Próximo, nós observamos que o sal
nunca muda à existência de arquivo atacada, assim
outra vez ao invés de valor isto para cima e hashing isto, nós
precompute o hash e
armazene o valor de hash. Isto elimina o diversifier, e outra passagem
através de SHA-1.
Finalmente, todo que é deixado é a
senha. Isto requer duas passagens através de
a função de compressão, um à senha (outra
vez convenientemente esticada
para 64 bytes) e uns segundo para movimentar para cima o hashing.
Em teoria nós tínhamos necessitado
repetir este processo duas vezes, uma vez para gerar a
chave do decryption e um segundo tempo para gerar o decryption IV que
é utilizada
para codificar os dados em modo do CBC. Entretanto o começo do
decrypted plaintext
está:
SEQÜÊNCIA {
SEQÜÊNCIA {
CONTESTE IDENTIFIER,
...
e a SEQÜÊNCIA é codificada como
30 82 xx xx (onde xx xx são o comprimento
bytes). Este meios o primeiro 8 vontade de bytes é 30 82 xx xx
30 82 xx xx, e
vontade seja seguida pelo identifier de objeto. Nós podemos portanto
pular o primeiro 8
bytes e, usando eles como o IV, decrypt o segundo 8 bytes e checam aos
conteste identifier. Isto elimina o segundo PKCS #12 initialisation chave
chame que é normalmente requerido gerar o IV.
Como esta análise (e o programa) espetáculos,
Microsoft administrada projetar e
implemente um "segurança" formata em que você pode
eliminar 75% do encryption
processando trabalho enquanto ainda permitindo um ataque nos dados codificados.
Para fazer
isto até mesmo mais fácil para um attacker, eles então
reduzia a chave para unicamente 40 bits, par
na NÓS-UNICAMENTE versão do software. De Fato isto faz não
realmente tem qualquer
efetue em segurança, mesmo que eles utilizados 128-bit RC2 ou DES
triplo ou qualquer que, isto
Soluções ao Problema
------------------------
Remendando o bug do MSIE corrente um banda-ajuda
rápido fixa para
aquele problema particular, mas este só está não
ambos bastante porque há
ainda números significantes de pessoas usando versões mais
velhas de software com outro
vulnerabilidades que permitem acesso para suas chaves, e porque há
uniram
para estar mais caminhos de chegar a arquivos em uns usuários dirigem
ou dados em uma máquina dos usuários
que colhe para cima no futuro. O bug do MSIE corrente somente acontecido
aparecer em
o tempo direito ao mesh com os problemas Eu descrevi, para realmente endereço
esses
Microsoft poderia necessitar para:
1. Arranje seu PKCS #12 implementação
para evitar as várias ponto fraco Eu
descreva. Até Mesmo melhor poderia ser ao redo PKCS #12 (por exemplo
por submeter
isto ao processo do IETF standardisation), porque a versão corrente
é um
projeto horroroso bonito que parece dirigir mais por político e
negociando considerações que requerimentos de segurança.
2. Faz alguma coisa sobre CryptExportKey(). Eu Estou
não seguro que a melhor solução
, desde Eu estou não estou sabendo quanto software poderia seria
afetar por mudar isto.
Eu faço não realmente vejo que propósito uma função
com a capacidade para mão acima de
sua chave particular para qualquer um que pede isto tem - por que pode
um API DE segurança
até mesmo tem uma função que suporta esta capacidade?
|