It is a common misconception that private
type variables cannot be read. Even if your contract is not published, attackers can look at contract transactions to determine values stored in the state of the contract. For this reason, it's important that unencrypted private data is not stored in the contract code or state.
Any private data should either be stored off-chain, or carefully encrypted.