I always assumed so, since geth requires a new password for every account, but just want to be sure.
An attacker cannot spend your ETH without knowing your password. It is a smart design on the part of Ethereum. You cannot even access the private key using conventional means. Everything you see in the keystore is already encrypted using your password. Spending ETH requires both parts of the puzzle, the keystore and the password. Everything in the keystore is encrypted with 128-bit AES by default if you're using geth. Just be sure to use a strong password and store it securely.
I had a similar question (thanks @tjaden-hess): Do I need to encrypt the keystore file(s)?.
As the audience reading the answer to this question may have less background with cryptocurrencies, here are additional key points to consider:
- humans are not good at creating secure passwords consistently
- loss of cryptocurrency, such as ETH, is irreversible
- most common loss of cryptocurrency is probably forgotten passwords, so write them down
There is no "bank" that can give back stolen ETH. If someone else or a third-party service obtains a copy of your keystore files, it is highly recommended that you create
geth account new and transfer the ETH to it.