Also, check box1 cannot be unchecked or checked manually.
Create a (hidden) text field with the following custom calculation script:
var a = this.getField("box2").valueAsString!="Off";
var b = this.getField("box3").valueAsString!="Off";
var c = this.getField("box4").valueAsString!="Off";
this.getField("box1").checkThisBox(0, a && b && c);