I have been able to test a write of a characteristic without pairing/encryption of the communication. I found one issue with the BCM20732TAG. It sounds that I need to recover the tag before loading my code in case I redefine/change the GATT table. I modified couple of times the GATT table yesterday and I never got the write working properly. The same code worked after a recovery of the TAG board.
To answer this question, I believe the encryption is not needed to do a write of the GATT from the peer device/iPhone. I commented a call to lesmp_sendSecurityRequest() when the link is UP and I also set the .encr_required to 0 in BLE_PROFILE_CFG structure. All the characteristics have the following parameters:
Properties: LEGATTDB_CHAR_PROP_READ | LEGATTDB_CHAR_PROP_WRITE,
Permissions: LEGATTDB_PERM_READABLE | LEGATTDB_PERM_WRITE_CMD | LEGATTDB_PERM_WRITE_REQ,
My code is very minimalist with handling of the advertisement at boot and when the connection is up.