Assuming you have a block cipher that (when given a 128-bit key) yields an instance of a true pseudorandom permutation... how can you use that block cipher within the above constraints to achieve practically perfect secrecy?
"Secrecy" depends on the context. Secrecy of what, where, when, against who ?
If you have an ideal block cipher, then you can use it in a mode of operation which turns it into an encryption system for data messages of arbitrary length. If the block cipher is ideal (there is no way to distinguish the block cipher from a randomly selected permutation that is easier than trying all possible keys), and the blocks are large enough, then encryption will ensure confidentiality up to the exhaustive search effort.
Note the subtle points, though:
- Most block cipher modes require an IV with some mode-dependent requirements. For instance, CBC requires a uniformly random unpredictable IV. Some other modes are less strict and need only a non-repeating IV (e.g. a message counter suffices).
- Encryption does not include integrity. However, some modes include an integrity check, which is a good idea (e.g. GCM).
- Depending on the mode, it may be possible to leak information upon decryption; CBC in particular got attacked many times (see padding oracles). There again, modes with integrity checks like GCM tend to fare better.
- Encryption hides data contents, not data length. Length can leak information, in particular when used with compression (because compression makes data length depend on data contents).
- Encryption does not create secrecy, it just moves it around. With encryption, you can reduce the problem of keeping gigabytes of data confidential, into the problem of keeping a single 128-bit key confidential. Supposedly, the latter is easier than the former, but you still have to do something (that's called "key management").