Eu estou trabalhando com DKIM e tentando calcular o tamanho da chave pública de algumas assinaturas DKIM. Eu sei de ferramentas que o Gmail é agora 2048, mas como eu poderia ter descoberto isso sozinho (ou seja, quais comandos exatos do Linux e por quê)?
user@host$ dig txt 20120113._domainkey.gmail.com
; <<>> DiG 9.8.3-P1 <<>> txt 20120113._domainkey.gmail.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52228
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;20120113._domainkey.gmail.com. IN TXT
;; ANSWER SECTION:
20120113._domainkey.gmail.com. 300 IN TXT "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3FgD2Ap3ZB5DekAo5wMmk4wimDO+U8QzI3SD0" "7y2+07wlNWwIt8svnxgdxGkVbbhzY8i+RQ9DpSVpPbF7ykQxtKXkv/ahW3KjViiAH+ghvvIhkx4xYSIc9oSwVmAl5OctMEeWUwg8Istjqz8BZeTWbf41fbNhte7Y+YqZOwq1Sd0DbvYAD9NOZK9vlfuac0598HY+vtSBczUiKERHv1yRbcaQtZFh5wtiRrN04BLUTD21MycBX5jYchHjPY/wIDAQAB"
;; Query time: 262 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Nov 19 10:52:06 2012
;; MSG SIZE rcvd: 462
cryptography
dkim
eb80
fonte
fonte
Respostas:
1) Recorte o objeto de chave pública codificado em base64:
2) Base64 decodifica e ASN1 analisa:
3) Observe que o BIT STRING é 4 + 2 + 13 + 9 = 28 bytes na estrutura.
4) Analise a cadeia de bits:
5) Observe que a chave é 257 bytes. Mas começa com um
D
(alto bit set), então o byte inicial tem que ser um zero para mostrar que é positivo. Portanto, ele contém 256 bytes não assinados ou 2.048 bits.fonte