End to end encryption is already fully designed and partially implemented. I just had a baby and have no time to do it recently: https://github.com/binwiederhier/ntfy/issues/69
E2EE means that it's always encrypted from the sending device to the receiving device and nothing in the middle (including the service operator) can read it.