How easy it would be to break this setup (to decrypt the root filesystem and make it boot from any sd card)?
Como é difícil "quebrar" sua configuração depende do número de bits de entropia em qualquer método que você esteja usando para assinar / criptografar o próprio sistema de arquivos (pois isso determina o número total de combinações exclusivas que podem ser usadas para força bruta a senha).
What are the most weakest parts?
Sem dúvida, usando um CID predefinido como senha, bem como usando uma função personalizada de geração de números pseudo-aleatórios.
O CID de um cartão SD só é supostamente para ser somente leitura, mas não é incomum encontrar dispositivos de memória flash não compatíveis neste dia e idade. Algumas pessoas demonstraram a capacidade de substituir >> o CID por certos cartões SD . Isso tornaria mais fácil a força bruta da senha, especialmente se alguém estiver apenas emulando um cartão SD após clonar o seu (o que é algo que você pode querer considerar).
Finalmente, usar qualquer tipo de gerador de números pseudo-aleatórios já possui algumas falhas intrínsecas, precisamente porque é não aleatório - há uma razão pela qual é chamado de pseudo-aleatório . Talvez seja melhor usar um gerenciador de inicialização criptografado pré-feito (como o TrueCrypt ou o LUKS, ambos trabalhando no Raspberry Pi) e evitar para fazer quaisquer modificações manuais no kernel.
How easy is to decompile the kernel and find those custom encrypting functions?
É muito difícil descompilar qualquer coisa. Por outro lado, a desmontagem de um aplicativo compilado geralmente é trivial e há muitas ferramentas que podem ser usadas para auxiliar na montagem de engenharia reversa em outra linguagem de nível superior. Se um invasor tiver acesso até mesmo a um kernel compilado, analisar algo como um gerador de números pseudo-aleatórios provavelmente é trivial, a menos que o código seja ofuscado de propósito.
TL, DR : não reinvente a roda quando se trata de criptografia e segurança, siga o exemplo. Existem várias opções de criptografia de disco completo que já estão disponíveis e demonstraram funcionar bem no Raspberry Pi. Eu evitaria usar o CID do cartão SD como uma espécie de "senha" - mesmo que não possa ser alterado, existem maneiras de falsificar esse valor.
A proteção contra cópia já está incluída na especificação do cartão SD como CPRM .