Que dados são transmitidos à Canonical para livepatch?

7

Acabei de atualizar para o 18.04 e queria testar o livepatch. Depois de ler a página da Web dos Termos de Serviço do Livepatch ( link ), perguntei um pouco sobre esses dois parágrafos na seção de dados pessoais:

We may also collect certain non-personally-identifiable information, which is located on your computer. The information collected may include statistics relating to how often data is transferred, and performance metrics in relation to software and configuration. You agree this information may be retained and used by Canonical.

Canonical may disclose any or all personal data and content you have sent, posted or published if required to comply with applicable law or the order or requirement of a court, administrative agency or other governmental body. All other use of your personal data is subject to the Privacy Policy.

Eu entendo que, para fazer o patch ao vivo, a Canonical precisa saber algumas coisas sobre o meu sistema, como a versão do kernel. Além disso, por meio da minha conta do SSO e do token, eles sabem meu endereço de e-mail e nome.

Até aí tudo bem. Mas eu me pergunto o que mais a Canonical precisa saber sobre o meu sistema. O texto acima é vago sobre isso. "Estatísticas" e "métricas de desempenho" não parecem necessárias para o serviço de correção em tempo real. Além disso, se esses dados forem realmente "não pessoalmente identificáveis", por que a Canonical está solicitando um parágrafo mais tarde para concordar que eles podem divulgá-los a agências administrativas ou órgãos governamentais mediante solicitação?

Quais são os dados transmitidos para a Canonical, uma vez e regularmente? Como posso investigar o que é transmitido? Como posso ter certeza de que não mudará de repente para transmitir mais do que eu quero?

Esta é uma questão técnica. Eu não quero discutir o TOS da Canonical ou questões legais. Eu realmente quero uma maneira técnica de encontrar o que é transmitido antes de me inscrever.

    
por Sebastian Stark 11.05.2018 / 21:03

1 resposta

8

Dado que o cliente livepatch é proprietário, não tenho uma resposta completa.

Dito isto, o cliente ( /snap/canonical-livepatch/*/canonical-livepatchd ) está escrito em Go. Depurando com Delve , aqui estão algumas informações para começar:

(dlv) bt
0  0x00000000006ad140 in main.(*client).check
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:212
1  0x00000000006acfeb in main.(*client).Check
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/client.go:200
2  0x00000000006b8415 in main.refresh
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:60
3  0x00000000006bf957 in main.newDaemon.func1
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/daemon.go:76
4  0x00000000006b86a3 in main.(*refreshLoop).loop
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/refresh.go:120
5  0x00000000006c0bfd in main.(*service).Start.func1
   at /home/c/Canonical/go/livepatch/src/github.com/CanonicalLtd/livepatch-client/parts/canonical-livepatch/build/daemon/service.go:151
6  0x0000000000457b31 in runtime.goexit
   at /home/c/.gobrew/versions/1.10/src/runtime/asm_amd64.s:2361
(dlv) locals
rendered.cap = 0
rendered.len = 0
rendered.ptr = *uint8 nil
status = main.ClientStatus {ClientVersion: "8.0.1", MachineId: "bfcf169468f641528ac653c41ff1797d", MachineToken: "",...+7 more}
(dlv) print status
main.ClientStatus {
    ClientVersion: "8.0.1",
    MachineId: "bfcf169468f641528ac653c41ff1797d",
    MachineToken: "",
    Architecture: "x86_64",
    CpuModel: "Intel(R) Core(TM) i7-6920HQ CPU @ 2.90GHz",
    LastCheck: time.Time {
        wall: 0,
        ext: 0,
        loc: *time.Location nil,},
    BootTime: time.Time {
        wall: 0,
        ext: 63662149770,
        loc: *(*time.Location)(0x963f60),},
    ApplyTime: time.Time {
        wall: 0,
        ext: 0,
        loc: *time.Location nil,},
    Uptime: 3472,
    Kernels: []main.KernelStatus len: 1, cap: 1, [
        (*main.KernelStatus)(0xc4201883c0),
    ],}

Os campos na variável status são:

  • Versão do cliente
  • ID da máquina (o valor de /etc/machine-id )
  • Token de máquina (token do Ubuntu One?)
  • Modelo de CPU e arquitetura (OS?)
  • Hora da última verificação
  • Tempo de inicialização (tempo gasto para inicializar?)
  • Aplicar hora (? - possivelmente, quando a última atualização foi aplicada?)
  • Tempo de atividade
  • Lista de Kernels

O tempo de inicialização e o tempo de atividade podem ser considerados incluídos nas estatísticas e nas métricas de desempenho.

Mais uma vez, este é um ponto de partida. Faça o que você quiser, e esperamos que alguém possa fornecer informações mais definidas.

How can I be sure it will not change suddenly to transmit more than I want?

Você não pode. O código-fonte não está disponível e os snaps são atualizados automaticamente, IIRC.

    
por muru 17.05.2018 / 13:54