I think you mean ownership chain rather than permission chain. When the owners of indirectly referenced objects are the same as the directly referenced object (proc, view, etc.), permissions on indirectly referenced objects are not checked. Users only need permission on the directly referenced object.
To avoid ownership chaining behavior, change the owner (authorization) of at least one of the indirectly referenced objects. This will break the ownership chain so that GRANT and DENY permissions permission are honored as if the objects were accessed directly. Keep in mind that no access is permitted unless a GRANT without an overriding DENY exists.
Alternatively, simply do not grant permissions on a directly referenced object unless you want someone to use the encapsulated functionality. This allows you to leverage ownership chaining as a security measure, granting permissions only on procs or views while preventing direct ad-hoc access to underlying tables.