a) I'm afraid it's not currently possible to do this in MultiChain. Bitcoin Core has added an API signmessagewithprivkey that we may adopt in a future version of MultiChain, or we might just allow a private key to be passed to signmessage instead of an address. For now you'll have to use an external bitcoin-compatible library to do the signing.
b) For protecting private keys stored in the node, take a look at encryptwallet and walletpassphrase APIs.