What you're describing sounds like geofencing. To do this, you probably want to decide if you want the white areas to be one polygon, a collection of polygons (a Multipolygon type), or separate polygons. If you're tracking ships in maritime waters, you probably want to know exactly what areas they're transiting through, but if not, I'd recommend @BradHards suggestion to just draw a large polygon for the whole extent and then subtract the area of the polygons to get the white area you're interested in.
To draw a large polygon in QGIS, follow these directions from the QGIS manual. You can also use this method to manually draw your polygons if that's easier for you. Use the union and difference tools in QGIS to get the polygon or polygons you want.
To create a large polygon directly in PostGIS, you'll want to use ST_GeomFromText and pass in your type, coordinates, and SRID. You'll then want to use ST_Difference to subtract the area of the other polygons. Here's an interesting reference from BostonGIS.
To get one multipolygon of the white area, I'd use ST_Union to get the union of the three areas and then use ST_Difference and hope PostGIS automatically casts the object to a multipolygon. I'm not near a computer to test this, but it would look like:
INSERT INTO table (id, geom)
ST_GeomFromText(POLYGON(<point1>,<point2>, <point3>,<point4>), 4326),
ST_Union(poly1, poly2, poly3)
The "id" value is just a dummy assuming your polygons have a serial from 1-3. The four points (, ...,) will define the larger polygon. You can nest the ST_Union call if it doesn't like three geometries:
ST_Union(poly1, ST_Union(poly2, poly3))
If you want to create separate polygons for each white area, you can split the multipolygon with ST_Dump or instead of starting with one large polygon, use smaller polygons that cover the particular white area and do the ST_Union and ST_Difference trick above for each area to get distinct polygons for each white area.