I agree that checkboxes are perfect; but that's because I never try to fill forms on a smartphone. Native browser checkboxes are often unusable on smartphones; too small to hit with a thumb.
It seems like an odd historical problem though. We could just render checkboxes bigger or with more white space around them, and make the touch area bigger in any case.
Then you have the modern smartphone-driven practice of using multipart forms, with one field on each part. You can't see the whole form at once; you eventually find out that the very last field is a date-field with three badly-behaved drop-downs that you can't interact with.
I just don't try to fill forms on my smartphone. In fact I only use it as a (shock!) phone.
It shouldn't need designing; but I have a suspicion that an unstyled HTML checkbox input doesn't behave like that.
Seriously, why not bigger checkboxes?